diff --git a/l1-contracts/src/core/interfaces/IRollup.sol b/l1-contracts/src/core/interfaces/IRollup.sol index dc1174027e7f..d6aae2158955 100644 --- a/l1-contracts/src/core/interfaces/IRollup.sol +++ b/l1-contracts/src/core/interfaces/IRollup.sol @@ -35,6 +35,7 @@ struct SubmitEpochRootProofArgs { struct BlockLog { bytes32 archive; + bytes32 headerHash; // hash of the proposed block header Slot slotNumber; } diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol index 07c295296ee0..463e62f168c6 100644 --- a/l1-contracts/src/core/libraries/ConstantsGen.sol +++ b/l1-contracts/src/core/libraries/ConstantsGen.sol @@ -193,6 +193,8 @@ library Constants { uint256 internal constant TOTAL_MANA_USED_LENGTH = 1; uint256 internal constant BLOCK_HEADER_LENGTH = 25; uint256 internal constant BLOCK_HEADER_LENGTH_BYTES = 648; + uint256 internal constant PROPOSED_BLOCK_HEADER_LENGTH = 12; + uint256 internal constant PROPOSED_BLOCK_HEADER_LENGTH_BYTES = 348; uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 724; uint256 internal constant PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 908; uint256 internal constant PRIVATE_CONTEXT_INPUTS_LENGTH = 40; @@ -214,8 +216,8 @@ library Constants { uint256 internal constant PRIVATE_TO_ROLLUP_KERNEL_CIRCUIT_PUBLIC_INPUTS_LENGTH = 782; uint256 internal constant CONSTANT_ROLLUP_DATA_LENGTH = 13; uint256 internal constant BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH = 52; - uint256 internal constant BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 984; - uint256 internal constant ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 970; + uint256 internal constant BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 1032; + uint256 internal constant ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 1020; uint256 internal constant GET_NOTES_ORACLE_RETURN_LENGTH = 674; uint256 internal constant NOTE_HASHES_NUM_BYTES_PER_BASE_ROLLUP = 2048; uint256 internal constant NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 2048; diff --git a/l1-contracts/src/core/libraries/Errors.sol b/l1-contracts/src/core/libraries/Errors.sol index 7833c2ad0e97..70496d9fd07d 100644 --- a/l1-contracts/src/core/libraries/Errors.sol +++ b/l1-contracts/src/core/libraries/Errors.sol @@ -52,13 +52,11 @@ library Errors { error Rollup__InsufficientFundsInEscrow(uint256 required, uint256 available); // 0xa165f276 error Rollup__InvalidArchive(bytes32 expected, bytes32 actual); // 0xb682a40e error Rollup__InvalidBlockNumber(uint256 expected, uint256 actual); // 0xe5edf847 - error Rollup__InvalidChainId(uint256 expected, uint256 actual); // 0x37b5bc12 error Rollup__InvalidInHash(bytes32 expected, bytes32 actual); // 0xcd6f4233 error Rollup__InvalidPreviousArchive(bytes32 expected, bytes32 actual); // 0xb682a40e error Rollup__InvalidProof(); // 0xa5b2ba17 error Rollup__InvalidProposedArchive(bytes32 expected, bytes32 actual); // 0x32532e73 error Rollup__InvalidTimestamp(Timestamp expected, Timestamp actual); // 0x3132e895 - error Rollup__InvalidVersion(uint256 expected, uint256 actual); // 0x9ef30794 error Rollup__InvalidBlobHash(bytes32 blobHash); // 0xc4a168c6 error Rollup__InvalidBlobProof(bytes32 blobHash); // 0x5ca17bef error Rollup__InvalidBlobPublicInputsHash(bytes32 expected, bytes32 actual); // 0xfe6b4994 diff --git a/l1-contracts/src/core/libraries/rollup/EpochProofLib.sol b/l1-contracts/src/core/libraries/rollup/EpochProofLib.sol index f3238a23bb4b..ae9767563411 100644 --- a/l1-contracts/src/core/libraries/rollup/EpochProofLib.sol +++ b/l1-contracts/src/core/libraries/rollup/EpochProofLib.sol @@ -116,12 +116,6 @@ library EpochProofLib { bytes calldata _blobPublicInputs ) internal view returns (bytes32[] memory) { RollupStore storage rollupStore = STFLib.getStorage(); - // Args are defined as an array because Solidity complains with "stack too deep" otherwise - // 0 bytes32 _previousArchive, - // 1 bytes32 _endArchive, - // 2 bytes32 _endTimestamp, - // 3 bytes32 _outHash, - // 4 bytes32 _proverId, // TODO(#7373): Public inputs are not fully verified @@ -154,7 +148,10 @@ library EpochProofLib { // end_timestamp: u64, // end_block_number: Field, // out_hash: Field, + // proposedBlockHeaderHashes: [Field; Constants.AZTEC_MAX_EPOCH_DURATION], // fees: [FeeRecipient; Constants.AZTEC_MAX_EPOCH_DURATION], + // chain_id: Field, + // version: Field, // vk_tree_root: Field, // protocol_contract_tree_root: Field, // prover_id: Field, @@ -185,12 +182,26 @@ library EpochProofLib { publicInputs[6] = _args.outHash; } + uint256 numBlocks = _end - _start + 1; + + for (uint256 i = 0; i < numBlocks; i++) { + publicInputs[7 + i] = rollupStore.blocks[_start + i].headerHash; + } + + uint256 offset = 7 + Constants.AZTEC_MAX_EPOCH_DURATION; + uint256 feesLength = Constants.AZTEC_MAX_EPOCH_DURATION * 2; - // fees[9 to (9+feesLength-1)]: array of recipient-value pairs + // fees[2n to 2n + 1]: a fee element, which contains of a recipient and a value for (uint256 i = 0; i < feesLength; i++) { - publicInputs[7 + i] = _fees[i]; + publicInputs[offset + i] = _fees[i]; } - uint256 offset = 7 + feesLength; + offset += feesLength; + + publicInputs[offset] = bytes32(block.chainid); + offset += 1; + + publicInputs[offset] = bytes32(rollupStore.config.version); + offset += 1; // vk_tree_root publicInputs[offset] = rollupStore.config.vkTreeRoot; @@ -207,7 +218,7 @@ library EpochProofLib { { BlobVarsTemp memory tmp = BlobVarsTemp({blobOffset: 0, offset: offset, i: 0}); // blob_public_inputs - for (; tmp.i < _end - _start + 1; tmp.i++) { + for (; tmp.i < numBlocks; tmp.i++) { uint8 blobsInBlock = uint8(_blobPublicInputs[tmp.blobOffset++]); for (uint256 j = 0; j < Constants.BLOBS_PER_BLOCK; j++) { if (j < blobsInBlock) { diff --git a/l1-contracts/src/core/libraries/rollup/HeaderLib.sol b/l1-contracts/src/core/libraries/rollup/HeaderLib.sol index 5db6291fc0a5..c881bade194c 100644 --- a/l1-contracts/src/core/libraries/rollup/HeaderLib.sol +++ b/l1-contracts/src/core/libraries/rollup/HeaderLib.sol @@ -3,44 +3,16 @@ pragma solidity >=0.8.27; import {Constants} from "@aztec/core/libraries/ConstantsGen.sol"; +import {Hash} from "@aztec/core/libraries/crypto/Hash.sol"; import {Errors} from "@aztec/core/libraries/Errors.sol"; import {Slot, Timestamp} from "@aztec/core/libraries/TimeLib.sol"; -struct AppendOnlyTreeSnapshot { - bytes32 root; - uint32 nextAvailableLeafIndex; -} - -struct PartialStateReference { - AppendOnlyTreeSnapshot noteHashTree; - AppendOnlyTreeSnapshot nullifierTree; - AppendOnlyTreeSnapshot contractTree; - AppendOnlyTreeSnapshot publicDataTree; -} - -struct StateReference { - AppendOnlyTreeSnapshot l1ToL2MessageTree; - // Note: Can't use "partial" name here as in protocol specs because it is a reserved solidity keyword - PartialStateReference partialStateReference; -} - struct GasFees { uint256 feePerDaGas; uint256 feePerL2Gas; } -struct GlobalVariables { - uint256 chainId; - uint256 version; - uint256 blockNumber; - Slot slotNumber; - Timestamp timestamp; - address coinbase; - bytes32 feeRecipient; - GasFees gasFees; -} - struct ContentCommitment { uint256 numTxs; bytes32 blobsHash; @@ -49,11 +21,13 @@ struct ContentCommitment { } struct Header { - AppendOnlyTreeSnapshot lastArchive; + bytes32 lastArchiveRoot; ContentCommitment contentCommitment; - StateReference stateReference; - GlobalVariables globalVariables; - uint256 totalFees; + Slot slotNumber; + Timestamp timestamp; + address coinbase; + bytes32 feeRecipient; + GasFees gasFees; uint256 totalManaUsed; } @@ -71,44 +45,24 @@ struct Header { * * | byte start | num bytes | name * | --- | --- | --- - * | | | Header { - * | 0x0000 | 0x20 | lastArchive.root - * | 0x0020 | 0x04 | lastArchive.nextAvailableLeafIndex - * | | | ContentCommitment { - * | 0x0024 | 0x20 | numTxs - * | 0x0044 | 0x20 | blobsHash - * | 0x0064 | 0x20 | inHash - * | 0x0084 | 0x20 | outHash - * | | | StateReference { - * | 0x00a4 | 0x20 | l1ToL2MessageTree.root - * | 0x00c4 | 0x04 | l1ToL2MessageTree.nextAvailableLeafIndex - * | | | PartialStateReference { - * | 0x00c8 | 0x20 | noteHashTree.root - * | 0x00e8 | 0x04 | noteHashTree.nextAvailableLeafIndex - * | 0x00ec | 0x20 | nullifierTree.root - * | 0x010c | 0x04 | nullifierTree.nextAvailableLeafIndex - * | 0x0110 | 0x20 | publicDataTree.root - * | 0x0130 | 0x04 | publicDataTree.nextAvailableLeafIndex - * | | | } - * | | | } - * | | | GlobalVariables { - * | 0x0134 | 0x20 | chainId - * | 0x0154 | 0x20 | version - * | 0x0174 | 0x20 | blockNumber - * | 0x0194 | 0x20 | slotNumber - * | 0x01b4 | 0x20 | timestamp - * | 0x01d4 | 0x14 | coinbase - * | 0x01e8 | 0x20 | feeRecipient - * | 0x0208 | 0x20 | gasFees.feePerDaGas - * | 0x0228 | 0x20 | gasFees.feePerL2Gas - * | | | } + * | 0x0000 | 0x20 | lastArchiveRoot + * | | | ContentCommitment { + * | 0x0020 | 0x20 | numTxs + * | 0x0040 | 0x20 | blobsHash + * | 0x0060 | 0x20 | inHash + * | 0x0080 | 0x20 | outHash * | | | } - * | 0x0248 | 0x20 | total_fees - * | 0x0268 | 0x20 | total_mana_used + * | 0x00a0 | 0x20 | slotNumber + * | 0x00c0 | 0x08 | timestamp + * | 0x00c8 | 0x14 | coinbase + * | 0x00dc | 0x20 | feeRecipient + * | 0x00fc | 0x20 | gasFees.feePerDaGas + * | 0x011c | 0x20 | gasFees.feePerL2Gas + * | 0x013c | 0x20 | totalManaUsed * | --- | --- | --- */ library HeaderLib { - uint256 private constant HEADER_LENGTH = Constants.BLOCK_HEADER_LENGTH_BYTES; // Header byte length + uint256 private constant HEADER_LENGTH = Constants.PROPOSED_BLOCK_HEADER_LENGTH_BYTES; // Header byte length /** * @notice Decodes the header @@ -124,47 +78,29 @@ library HeaderLib { Header memory header; // Reading lastArchive - header.lastArchive = AppendOnlyTreeSnapshot( - bytes32(_header[0x0000:0x0020]), uint32(bytes4(_header[0x0020:0x0024])) - ); + header.lastArchiveRoot = bytes32(_header[0x0000:0x0020]); // Reading ContentCommitment - header.contentCommitment.numTxs = uint256(bytes32(_header[0x0024:0x0044])); - header.contentCommitment.blobsHash = bytes32(_header[0x0044:0x0064]); - header.contentCommitment.inHash = bytes32(_header[0x0064:0x0084]); - header.contentCommitment.outHash = bytes32(_header[0x0084:0x00a4]); - - // Reading StateReference - header.stateReference.l1ToL2MessageTree = AppendOnlyTreeSnapshot( - bytes32(_header[0x00a4:0x00c4]), uint32(bytes4(_header[0x00c4:0x00c8])) - ); - header.stateReference.partialStateReference.noteHashTree = AppendOnlyTreeSnapshot( - bytes32(_header[0x00c8:0x00e8]), uint32(bytes4(_header[0x00e8:0x00ec])) - ); - header.stateReference.partialStateReference.nullifierTree = AppendOnlyTreeSnapshot( - bytes32(_header[0x00ec:0x010c]), uint32(bytes4(_header[0x010c:0x0110])) - ); - header.stateReference.partialStateReference.publicDataTree = AppendOnlyTreeSnapshot( - bytes32(_header[0x0110:0x0130]), uint32(bytes4(_header[0x0130:0x0134])) - ); - - // Reading GlobalVariables - header.globalVariables.chainId = uint256(bytes32(_header[0x0134:0x0154])); - header.globalVariables.version = uint256(bytes32(_header[0x0154:0x0174])); - header.globalVariables.blockNumber = uint256(bytes32(_header[0x0174:0x0194])); - header.globalVariables.slotNumber = Slot.wrap(uint256(bytes32(_header[0x0194:0x01b4]))); - header.globalVariables.timestamp = Timestamp.wrap(uint256(bytes32(_header[0x01b4:0x01d4]))); - header.globalVariables.coinbase = address(bytes20(_header[0x01d4:0x01e8])); - header.globalVariables.feeRecipient = bytes32(_header[0x01e8:0x0208]); - header.globalVariables.gasFees.feePerDaGas = uint256(bytes32(_header[0x0208:0x0228])); - header.globalVariables.gasFees.feePerL2Gas = uint256(bytes32(_header[0x0228:0x0248])); - - // Reading totalFees - header.totalFees = uint256(bytes32(_header[0x0248:0x0268])); + header.contentCommitment.numTxs = uint256(bytes32(_header[0x0020:0x0040])); + header.contentCommitment.blobsHash = bytes32(_header[0x0040:0x0060]); + header.contentCommitment.inHash = bytes32(_header[0x0060:0x0080]); + header.contentCommitment.outHash = bytes32(_header[0x0080:0x00a0]); + + // Reading partial GlobalVariables + header.slotNumber = Slot.wrap(uint256(bytes32(_header[0x00a0:0x00c0]))); + header.timestamp = Timestamp.wrap(uint256(uint64(bytes8(_header[0x00c0:0x00c8])))); + header.coinbase = address(bytes20(_header[0x00c8:0x00dc])); + header.feeRecipient = bytes32(_header[0x00dc:0x00fc]); + header.gasFees.feePerDaGas = uint256(bytes32(_header[0x00fc:0x011c])); + header.gasFees.feePerL2Gas = uint256(bytes32(_header[0x011c:0x013c])); // Reading totalManaUsed - header.totalManaUsed = uint256(bytes32(_header[0x0268:0x0288])); + header.totalManaUsed = uint256(bytes32(_header[0x013c:0x015c])); return header; } + + function hash(bytes memory _header) internal pure returns (bytes32) { + return Hash.sha256ToField(_header); + } } diff --git a/l1-contracts/src/core/libraries/rollup/ProposeLib.sol b/l1-contracts/src/core/libraries/rollup/ProposeLib.sol index 2ad05a1a704e..21717af2ad91 100644 --- a/l1-contracts/src/core/libraries/rollup/ProposeLib.sol +++ b/l1-contracts/src/core/libraries/rollup/ProposeLib.sol @@ -23,17 +23,31 @@ import {STFLib} from "./STFLib.sol"; struct ProposeArgs { bytes32 archive; + // Including stateReference here so that the archiver can reconstruct the full block header. + // It doesn't need to be in the proposed header as the values are not used in propose() and they are committed to + // by the last archive and blobs hash. + // It can be removed if the archiver can refer to world state for the updated roots. + bytes stateReference; OracleInput oracleInput; bytes header; bytes32[] txHashes; } +struct ProposePayload { + bytes32 archive; + bytes stateReference; + OracleInput oracleInput; + bytes32 headerHash; + bytes32[] txHashes; +} + struct InterimProposeValues { bytes32[] blobHashes; bytes32 blobsHashesCommitment; bytes32 blobPublicInputsHash; bytes32 inHash; uint256 outboxMinsize; + bytes32 headerHash; } /** @@ -86,6 +100,8 @@ library ProposeLib { Header memory header = HeaderLib.decode(_args.header); + v.headerHash = HeaderLib.hash(_args.header); + ValidatorSelectionLib.setupEpoch(StakingLib.getStorage()); ManaBaseFeeComponents memory components = @@ -95,7 +111,15 @@ library ProposeLib { ValidateHeaderArgs({ header: header, attestations: _signatures, - digest: digest(_args), + digest: digest( + ProposePayload({ + archive: _args.archive, + stateReference: _args.stateReference, + oracleInput: _args.oracleInput, + headerHash: v.headerHash, + txHashes: _args.txHashes + }) + ), currentTime: Timestamp.wrap(block.timestamp), manaBaseFee: FeeLib.summedBaseFee(components), blobsHashesCommitment: v.blobsHashesCommitment, @@ -107,7 +131,7 @@ library ProposeLib { uint256 blockNumber = ++rollupStore.tips.pendingBlockNumber; rollupStore.blocks[blockNumber] = - BlockLog({archive: _args.archive, slotNumber: header.globalVariables.slotNumber}); + BlockLog({archive: _args.archive, headerHash: v.headerHash, slotNumber: header.slotNumber}); FeeLib.writeFeeHeader( blockNumber, @@ -138,38 +162,19 @@ library ProposeLib { // @note: not view as sampling validators uses tstore function validateHeader(ValidateHeaderArgs memory _args) internal { - require( - block.chainid == _args.header.globalVariables.chainId, - Errors.Rollup__InvalidChainId(block.chainid, _args.header.globalVariables.chainId) - ); - require(_args.header.totalManaUsed <= FeeLib.getManaLimit(), Errors.Rollup__ManaLimitExceeded()); RollupStore storage rollupStore = STFLib.getStorage(); - require( - _args.header.globalVariables.version == rollupStore.config.version, - Errors.Rollup__InvalidVersion( - rollupStore.config.version, _args.header.globalVariables.version - ) - ); - uint256 pendingBlockNumber = STFLib.getEffectivePendingBlockNumber(_args.currentTime); - require( - _args.header.globalVariables.blockNumber == pendingBlockNumber + 1, - Errors.Rollup__InvalidBlockNumber( - pendingBlockNumber + 1, _args.header.globalVariables.blockNumber - ) - ); - bytes32 tipArchive = rollupStore.blocks[pendingBlockNumber].archive; require( - tipArchive == _args.header.lastArchive.root, - Errors.Rollup__InvalidArchive(tipArchive, _args.header.lastArchive.root) + tipArchive == _args.header.lastArchiveRoot, + Errors.Rollup__InvalidArchive(tipArchive, _args.header.lastArchiveRoot) ); - Slot slot = _args.header.globalVariables.slotNumber; + Slot slot = _args.header.slotNumber; Slot lastSlot = rollupStore.blocks[pendingBlockNumber].slotNumber; require(slot > lastSlot, Errors.Rollup__SlotAlreadyInChain(lastSlot, slot)); @@ -178,8 +183,8 @@ library ProposeLib { Timestamp timestamp = TimeLib.toTimestamp(slot); require( - _args.header.globalVariables.timestamp == timestamp, - Errors.Rollup__InvalidTimestamp(timestamp, _args.header.globalVariables.timestamp) + _args.header.timestamp == timestamp, + Errors.Rollup__InvalidTimestamp(timestamp, _args.header.timestamp) ); require( @@ -192,12 +197,10 @@ library ProposeLib { Errors.Rollup__UnavailableTxs(_args.header.contentCommitment.blobsHash) ); - require(_args.header.globalVariables.gasFees.feePerDaGas == 0, Errors.Rollup__NonZeroDaFee()); + require(_args.header.gasFees.feePerDaGas == 0, Errors.Rollup__NonZeroDaFee()); require( - _args.header.globalVariables.gasFees.feePerL2Gas == _args.manaBaseFee, - Errors.Rollup__InvalidManaBaseFee( - _args.manaBaseFee, _args.header.globalVariables.gasFees.feePerL2Gas - ) + _args.header.gasFees.feePerL2Gas == _args.manaBaseFee, + Errors.Rollup__InvalidManaBaseFee(_args.manaBaseFee, _args.header.gasFees.feePerL2Gas) ); ValidatorSelectionLib.verify( @@ -229,7 +232,7 @@ library ProposeLib { return FeeLib.getManaBaseFeeComponentsAt(blockOfInterest, _timestamp, _inFeeAsset); } - function digest(ProposeArgs memory _args) internal pure returns (bytes32) { + function digest(ProposePayload memory _args) internal pure returns (bytes32) { return keccak256(abi.encode(SignatureLib.SignatureDomainSeparator.blockAttestation, _args)); } } diff --git a/l1-contracts/src/core/libraries/rollup/STFLib.sol b/l1-contracts/src/core/libraries/rollup/STFLib.sol index 92c47761a2ac..68cefdaf3102 100644 --- a/l1-contracts/src/core/libraries/rollup/STFLib.sol +++ b/l1-contracts/src/core/libraries/rollup/STFLib.sol @@ -23,7 +23,7 @@ library STFLib { rollupStore.config.protocolContractTreeRoot = _genesisState.protocolContractTreeRoot; rollupStore.blocks[0] = - BlockLog({archive: _genesisState.genesisArchiveRoot, slotNumber: Slot.wrap(0)}); + BlockLog({archive: _genesisState.genesisArchiveRoot, headerHash: 0, slotNumber: Slot.wrap(0)}); } function prune() internal { diff --git a/l1-contracts/test/MultiProof.t.sol b/l1-contracts/test/MultiProof.t.sol index 13a3b8c52952..3471d2333c60 100644 --- a/l1-contracts/test/MultiProof.t.sol +++ b/l1-contracts/test/MultiProof.t.sol @@ -64,9 +64,8 @@ contract MultiProofTest is RollupBase { testERC20 = new TestERC20("test", "TEST", address(this)); DecoderBase.Full memory full = load(_name); - uint256 slotNumber = full.block.decodedHeader.globalVariables.slotNumber; - uint256 initialTime = - full.block.decodedHeader.globalVariables.timestamp - slotNumber * SLOT_DURATION; + uint256 slotNumber = full.block.decodedHeader.slotNumber; + uint256 initialTime = full.block.decodedHeader.timestamp - slotNumber * SLOT_DURATION; vm.warp(initialTime); } diff --git a/l1-contracts/test/Rollup.t.sol b/l1-contracts/test/Rollup.t.sol index 8d8baebc594a..864420b19e99 100644 --- a/l1-contracts/test/Rollup.t.sol +++ b/l1-contracts/test/Rollup.t.sol @@ -80,9 +80,8 @@ contract RollupTest is RollupBase { testERC20 = new TestERC20("test", "TEST", address(this)); DecoderBase.Full memory full = load(_name); - uint256 slotNumber = full.block.decodedHeader.globalVariables.slotNumber; - uint256 initialTime = - full.block.decodedHeader.globalVariables.timestamp - slotNumber * SLOT_DURATION; + uint256 slotNumber = full.block.decodedHeader.slotNumber; + uint256 initialTime = full.block.decodedHeader.timestamp - slotNumber * SLOT_DURATION; vm.warp(initialTime); } @@ -213,6 +212,7 @@ contract RollupTest is RollupBase { ProposeArgs memory args = ProposeArgs({ header: header, archive: data.archive, + stateReference: new bytes(0), oracleInput: OracleInput(0), txHashes: new bytes32[](0) }); @@ -240,6 +240,7 @@ contract RollupTest is RollupBase { ProposeArgs memory args = ProposeArgs({ header: header, archive: data.archive, + stateReference: new bytes(0), oracleInput: OracleInput(0), txHashes: new bytes32[](0) }); @@ -290,14 +291,13 @@ contract RollupTest is RollupBase { DecoderBase.Full memory full = load("mixed_block_1"); DecoderBase.Data memory data = full.block; bytes memory header = data.header; - assembly { - mstore(add(header, add(0x20, 0x0208)), 1) - } - header = _updateHeaderVersion(header, rollup.getVersion()); bytes32[] memory txHashes = new bytes32[](0); + // Tweak the da fee. + header = DecoderBase.updateHeaderDaFee(header, 1); + // We jump to the time of the block. (unless it is in the past) - vm.warp(max(block.timestamp, data.decodedHeader.globalVariables.timestamp)); + vm.warp(max(block.timestamp, data.decodedHeader.timestamp)); skipBlobCheck(address(rollup)); @@ -305,6 +305,7 @@ contract RollupTest is RollupBase { ProposeArgs memory args = ProposeArgs({ header: header, archive: data.archive, + stateReference: new bytes(0), oracleInput: OracleInput(0), txHashes: txHashes }); @@ -315,14 +316,13 @@ contract RollupTest is RollupBase { DecoderBase.Full memory full = load("mixed_block_1"); DecoderBase.Data memory data = full.block; bytes memory header = data.header; - assembly { - mstore(add(header, add(0x20, 0x0228)), 1) - } - header = _updateHeaderVersion(header, rollup.getVersion()); bytes32[] memory txHashes = new bytes32[](0); + // Tweak the base fee. + header = DecoderBase.updateHeaderBaseFee(header, 1); + // We jump to the time of the block. (unless it is in the past) - vm.warp(max(block.timestamp, data.decodedHeader.globalVariables.timestamp)); + vm.warp(max(block.timestamp, data.decodedHeader.timestamp)); skipBlobCheck(address(rollup)); @@ -335,6 +335,7 @@ contract RollupTest is RollupBase { ProposeArgs memory args = ProposeArgs({ header: header, archive: data.archive, + stateReference: new bytes(0), oracleInput: OracleInput(0), txHashes: txHashes }); @@ -386,7 +387,7 @@ contract RollupTest is RollupBase { interim.manaUsed = 1e6; // Progress time as necessary - vm.warp(max(block.timestamp, data.decodedHeader.globalVariables.timestamp)); + vm.warp(max(block.timestamp, data.decodedHeader.timestamp)); interim.time = block.timestamp; @@ -395,33 +396,28 @@ contract RollupTest is RollupBase { assertEq(testERC20.balanceOf(address(rollup)), 0, "invalid rollup balance"); // We jump to the time of the block. (unless it is in the past) - vm.warp(max(block.timestamp, data.decodedHeader.globalVariables.timestamp)); + vm.warp(max(block.timestamp, data.decodedHeader.timestamp)); - uint256 coinbaseBalance = testERC20.balanceOf(data.decodedHeader.globalVariables.coinbase); + uint256 coinbaseBalance = testERC20.balanceOf(data.decodedHeader.coinbase); assertEq(coinbaseBalance, 0, "invalid initial coinbase balance"); skipBlobCheck(address(rollup)); interim.baseFee = rollup.getManaBaseFeeAt(Timestamp.wrap(block.timestamp), true); - header = _updateHeaderVersion(header, rollup.getVersion()); - header = _updateHeaderBaseFee(header, interim.baseFee); - header = _updateHeaderManaUsed(header, interim.manaUsed); + header = DecoderBase.updateHeaderBaseFee(header, interim.baseFee); + header = DecoderBase.updateHeaderManaUsed(header, interim.manaUsed); // We mess up the fees and say that someone is paying a massive priority which surpass the amount available. interim.feeAmount = interim.manaUsed * interim.baseFee + interim.portalBalance; - header = _updateHeaderTotalFees(header, interim.feeAmount); // Assert that balance have NOT been increased by proposing the block ProposeArgs memory args = ProposeArgs({ header: header, archive: data.archive, + stateReference: new bytes(0), oracleInput: OracleInput(0), txHashes: new bytes32[](0) }); rollup.propose(args, signatures, data.blobInputs); - assertEq( - testERC20.balanceOf(data.decodedHeader.globalVariables.coinbase), - 0, - "invalid coinbase balance" - ); + assertEq(testERC20.balanceOf(data.decodedHeader.coinbase), 0, "invalid coinbase balance"); } BlockLog memory blockLog = rollup.getBlock(0); @@ -446,19 +442,13 @@ contract RollupTest is RollupBase { data.archive, blobPublicInputs, prover, - data.decodedHeader.globalVariables.coinbase, + data.decodedHeader.coinbase, interim.feeAmount ); } + assertEq(testERC20.balanceOf(data.decodedHeader.coinbase), 0, "invalid coinbase balance"); assertEq( - testERC20.balanceOf(data.decodedHeader.globalVariables.coinbase), - 0, - "invalid coinbase balance" - ); - assertEq( - rollup.getSequencerRewards(data.decodedHeader.globalVariables.coinbase), - 0, - "invalid sequencer rewards" + rollup.getSequencerRewards(data.decodedHeader.coinbase), 0, "invalid sequencer rewards" ); assertEq(testERC20.balanceOf(prover), 0, "invalid prover balance"); assertEq(rollup.getCollectiveProverRewardsForEpoch(Epoch.wrap(0)), 0, "invalid prover rewards"); @@ -474,7 +464,7 @@ contract RollupTest is RollupBase { data.archive, this.getBlobPublicInputs(data.blobInputs), address(42), - data.decodedHeader.globalVariables.coinbase, + data.decodedHeader.coinbase, interim.feeAmount ); @@ -496,7 +486,7 @@ contract RollupTest is RollupBase { - FeeAssetValue.unwrap(interim.provingCostPerManaInFeeAsset) * interim.manaUsed; assertEq( - rollup.getSequencerRewards(data.decodedHeader.globalVariables.coinbase), + rollup.getSequencerRewards(data.decodedHeader.coinbase), expectedSequencerReward, "invalid sequencer rewards" ); @@ -671,98 +661,33 @@ contract RollupTest is RollupBase { assertEq(rollup.getProvenBlockNumber(), 0 + toProve, "Invalid proven block number"); } - function testRevertInvalidBlockNumber() public setUpFor("empty_block_1") { - DecoderBase.Data memory data = load("empty_block_1").block; - bytes memory header = data.header; - bytes32 archive = data.archive; - bytes32[] memory txHashes = new bytes32[](0); - - assembly { - // TODO: Hardcoding offsets in the middle of tests is annoying to say the least. - mstore(add(header, add(0x20, 0x0174)), 0x420) - } - header = _updateHeaderVersion(header, rollup.getVersion()); - skipBlobCheck(address(rollup)); - vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidBlockNumber.selector, 1, 0x420)); - ProposeArgs memory args = ProposeArgs({ - header: header, - archive: archive, - oracleInput: OracleInput(0), - txHashes: txHashes - }); - rollup.propose(args, signatures, data.blobInputs); - } - - function testRevertInvalidChainId() public setUpFor("empty_block_1") { - DecoderBase.Data memory data = load("empty_block_1").block; - bytes memory header = data.header; - header = _updateHeaderVersion(header, rollup.getVersion()); - bytes32 archive = data.archive; - bytes32[] memory txHashes = new bytes32[](0); - - assembly { - mstore(add(header, add(0x20, 0x0134)), 0x420) - } - skipBlobCheck(address(rollup)); - vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidChainId.selector, 31337, 0x420)); - ProposeArgs memory args = ProposeArgs({ - header: header, - archive: archive, - oracleInput: OracleInput(0), - txHashes: txHashes - }); - rollup.propose(args, signatures, data.blobInputs); - } - - function testRevertInvalidVersion() public setUpFor("empty_block_1") { - DecoderBase.Data memory data = load("empty_block_1").block; - bytes memory header = data.header; - bytes32 archive = data.archive; - bytes32[] memory txHashes = new bytes32[](0); - - assembly { - mstore(add(header, add(0x20, 0x0154)), 0x420) - } - skipBlobCheck(address(rollup)); - vm.expectRevert( - abi.encodeWithSelector(Errors.Rollup__InvalidVersion.selector, rollup.getVersion(), 0x420) - ); - ProposeArgs memory args = ProposeArgs({ - header: header, - archive: archive, - oracleInput: OracleInput(0), - txHashes: txHashes - }); - rollup.propose(args, signatures, data.blobInputs); - } - function testRevertInvalidTimestamp() public setUpFor("empty_block_1") { DecoderBase.Data memory data = load("empty_block_1").block; bytes memory header = data.header; - header = _updateHeaderVersion(header, rollup.getVersion()); bytes32 archive = data.archive; bytes32[] memory txHashes = new bytes32[](0); - uint256 realTs = data.decodedHeader.globalVariables.timestamp; + uint256 realTs = data.decodedHeader.timestamp; uint256 badTs = realTs + 1; vm.warp(max(block.timestamp, realTs)); - assembly { - mstore(add(header, add(0x20, 0x01b4)), badTs) - } + // Tweak the timestamp. + header = DecoderBase.updateHeaderTimestamp(header, badTs); + skipBlobCheck(address(rollup)); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidTimestamp.selector, realTs, badTs)); ProposeArgs memory args = ProposeArgs({ header: header, archive: archive, + stateReference: new bytes(0), oracleInput: OracleInput(0), txHashes: txHashes }); rollup.propose(args, signatures, new bytes(144)); } - function testSubmitProofNonExistantBlock() public setUpFor("empty_block_1") { + function testSubmitProofNonExistentBlock() public setUpFor("empty_block_1") { _proposeBlock("empty_block_1", 1); DecoderBase.Data memory data = load("empty_block_1").block; bytes memory blobPublicInputs = this.getBlobPublicInputs(data.blobInputs); @@ -800,8 +725,7 @@ contract RollupTest is RollupBase { blobPublicInputs[100] = 0x01; BlockLog memory blockLog = rollup.getBlock(0); - bytes32 actualBlobPublicInputsHash = - rollup.getBlobPublicInputsHash(data.decodedHeader.globalVariables.blockNumber); + bytes32 actualBlobPublicInputsHash = rollup.getBlobPublicInputsHash(data.blockNumber); bytes32 wrongBlobPublicInputsHash = this.getBlobPublicInputsHash(blobPublicInputs); vm.expectRevert( abi.encodeWithSelector( diff --git a/l1-contracts/test/base/DecoderBase.sol b/l1-contracts/test/base/DecoderBase.sol index 840362d591e0..35a68b3fee69 100644 --- a/l1-contracts/test/base/DecoderBase.sol +++ b/l1-contracts/test/base/DecoderBase.sol @@ -4,16 +4,12 @@ pragma solidity >=0.8.27; import {TestBase} from "../base/Base.sol"; +import {Timestamp, Slot} from "@aztec/core/libraries/TimeLib.sol"; // Many of the structs in here match what you see in `header` but with very important exceptions! // The order of variables is sorted alphabetically in the structs in here to work with the // JSON cheatcodes. contract DecoderBase is TestBase { - struct AppendOnlyTreeSnapshot { - uint32 nextAvailableLeafIndex; - bytes32 root; - } - // When I had data and messages as one combined struct it failed, but I can have this top-layer and it works :shrug: // Note: Members of the struct (and substructs) have to be in ALPHABETICAL order! struct Full { @@ -35,43 +31,29 @@ contract DecoderBase is TestBase { struct Data { bytes32 archive; bytes blobInputs; + uint256 blockNumber; bytes body; DecodedHeader decodedHeader; bytes header; // Note: The following could be decoded from body but having it explicitaly here makes tests more robust against // decoder changes uint32 numTxs; - bytes32 publicInputsHash; } struct DecodedHeader { - ContentCommitment contentCommitment; - GlobalVariables globalVariables; - AppendOnlyTreeSnapshot lastArchive; - StateReference stateReference; - uint256 totalFees; - uint256 totalManaUsed; - } - - struct GasFees { - uint256 feePerDaGas; - uint256 feePerL2Gas; - } - - struct GlobalVariables { - uint256 blockNumber; - uint256 chainId; address coinbase; + ContentCommitment contentCommitment; bytes32 feeRecipient; GasFees gasFees; + bytes32 lastArchiveRoot; uint256 slotNumber; uint256 timestamp; - uint256 version; + uint256 totalManaUsed; } - struct StateReference { - AppendOnlyTreeSnapshot l1ToL2MessageTree; - PartialStateReference partialStateReference; + struct GasFees { + uint256 feePerDaGas; + uint256 feePerL2Gas; } struct ContentCommitment { @@ -81,12 +63,6 @@ contract DecoderBase is TestBase { bytes32 outHash; } - struct PartialStateReference { - AppendOnlyTreeSnapshot noteHashTree; - AppendOnlyTreeSnapshot nullifierTree; - AppendOnlyTreeSnapshot publicDataTree; - } - function load(string memory name) internal view returns (Full memory) { string memory root = vm.projectRoot(); string memory path = string.concat(root, "/test/fixtures/", name, ".json"); @@ -99,4 +75,158 @@ contract DecoderBase is TestBase { function max(uint256 a, uint256 b) internal pure returns (uint256) { return a > b ? a : b; } + + function updateHeaderArchive(bytes memory _header, bytes32 _archive) + internal + pure + returns (bytes memory) + { + assembly { + mstore(add(_header, 0x20), _archive) + } + return _header; + } + + function updateHeaderNumTxs(bytes memory _header, uint256 _numTxs) + internal + pure + returns (bytes memory) + { + assembly { + mstore(add(_header, add(0x20, 0x0020)), _numTxs) + } + return _header; + } + + function updateHeaderBlobsHash(bytes memory _header, bytes32 _blobsHash) + internal + pure + returns (bytes memory) + { + assembly { + mstore(add(_header, add(0x20, 0x0040)), _blobsHash) + } + return _header; + } + + function updateHeaderInboxRoot(bytes memory _header, bytes32 _inboxRoot) + internal + pure + returns (bytes memory) + { + assembly { + mstore(add(_header, add(0x20, 0x0060)), _inboxRoot) + } + return _header; + } + + function updateHeaderOutboxRoot(bytes memory _header, bytes32 _outboxRoot) + internal + pure + returns (bytes memory) + { + assembly { + mstore(add(_header, add(0x20, 0x0080)), _outboxRoot) + } + return _header; + } + + function updateHeaderSlot(bytes memory _header, Slot _slot) internal pure returns (bytes memory) { + assembly { + mstore(add(_header, add(0x20, 0x00a0)), _slot) + } + return _header; + } + + function getHeaderSlot(bytes memory _header) internal pure returns (Slot) { + Slot slot; + assembly { + slot := mload(add(_header, add(0x20, 0x00a0))) + } + return slot; + } + + function updateHeaderTimestamp(bytes memory _header, Timestamp _timestamp) + internal + pure + returns (bytes memory) + { + return updateHeaderTimestamp(_header, Timestamp.unwrap(_timestamp)); + } + + function updateHeaderTimestamp(bytes memory _header, uint256 _timestamp) + internal + pure + returns (bytes memory) + { + assembly { + let ptr := add(_header, add(0x20, 0x00c0)) + // Timestamp is only 8 bytes, so we need to keep the the other 24 bytes. + let prev := mload(ptr) + let mask := shr(mul(8, 8), not(0)) + let updated := or(and(prev, mask), shl(mul(24, 8), _timestamp)) + mstore(ptr, updated) + } + return _header; + } + + function updateHeaderCoinbase(bytes memory _header, address _coinbase) + internal + pure + returns (bytes memory) + { + assembly { + let ptr := add(_header, add(0x20, 0x00c8)) + // Coinbase is only 20 bytes, so we need to keep the the other 12 bytes. + let prev := mload(ptr) + let mask := shr(mul(20, 8), not(0)) + let updated := or(and(prev, mask), shl(mul(12, 8), _coinbase)) + mstore(ptr, updated) + } + return _header; + } + + function updateHeaderFeeRecipient(bytes memory _header, address _feeRecipient) + internal + pure + returns (bytes memory) + { + assembly { + mstore(add(_header, add(0x20, 0x00dc)), _feeRecipient) + } + return _header; + } + + function updateHeaderDaFee(bytes memory _header, uint256 _fee) + internal + pure + returns (bytes memory) + { + assembly { + mstore(add(_header, add(0x20, 0x00fc)), _fee) + } + return _header; + } + + function updateHeaderBaseFee(bytes memory _header, uint256 _baseFee) + internal + pure + returns (bytes memory) + { + assembly { + mstore(add(_header, add(0x20, 0x011c)), _baseFee) + } + return _header; + } + + function updateHeaderManaUsed(bytes memory _header, uint256 _manaUsed) + internal + pure + returns (bytes memory) + { + assembly { + mstore(add(_header, add(0x20, 0x013c)), _manaUsed) + } + return _header; + } } diff --git a/l1-contracts/test/base/RollupBase.sol b/l1-contracts/test/base/RollupBase.sol index eb9875cdabac..e04699ae9cf4 100644 --- a/l1-contracts/test/base/RollupBase.sol +++ b/l1-contracts/test/base/RollupBase.sol @@ -59,8 +59,8 @@ contract RollupBase is DecoderBase { DecoderBase.Full memory startFull = load(string.concat(_name, Strings.toString(_start))); DecoderBase.Full memory endFull = load(string.concat(_name, Strings.toString(_end))); - uint256 startBlockNumber = uint256(startFull.block.decodedHeader.globalVariables.blockNumber); - uint256 endBlockNumber = uint256(endFull.block.decodedHeader.globalVariables.blockNumber); + uint256 startBlockNumber = uint256(startFull.block.blockNumber); + uint256 endBlockNumber = uint256(endFull.block.blockNumber); assertEq(startBlockNumber, _start, "Invalid start block number"); assertEq(endBlockNumber, _end, "Invalid end block number"); @@ -108,61 +108,6 @@ contract RollupBase is DecoderBase { ); } - function _updateHeaderVersion(bytes memory _header, uint256 _version) - internal - pure - returns (bytes memory) - { - assembly { - mstore(add(_header, add(0x20, 0x0154)), _version) - } - return _header; - } - - function _updateHeaderBaseFee(bytes memory _header, uint256 _baseFee) - internal - pure - returns (bytes memory) - { - assembly { - mstore(add(_header, add(0x20, 0x0228)), _baseFee) - } - return _header; - } - - function _updateHeaderManaUsed(bytes memory _header, uint256 _manaUsed) - internal - pure - returns (bytes memory) - { - assembly { - mstore(add(_header, add(0x20, 0x0268)), _manaUsed) - } - return _header; - } - - function _updateHeaderInboxRoot(bytes memory _header, bytes32 _inboxRoot) - internal - pure - returns (bytes memory) - { - assembly { - mstore(add(_header, add(0x20, 0x0064)), _inboxRoot) - } - return _header; - } - - function _updateHeaderTotalFees(bytes memory _header, uint256 _totalFees) - internal - pure - returns (bytes memory) - { - assembly { - mstore(add(_header, add(0x20, 0x0248)), _totalFees) - } - return _header; - } - function _proposeBlock(string memory _name, uint256 _slotNumber) public { _proposeBlock(_name, _slotNumber, 0); } @@ -196,31 +141,26 @@ contract RollupBase is DecoderBase { if (slotNumber != Slot.wrap(0)) { Timestamp ts = rollup.getTimestampForSlot(slotNumber); - full.block.decodedHeader.globalVariables.timestamp = Timestamp.unwrap(ts); - full.block.decodedHeader.globalVariables.slotNumber = Slot.unwrap(slotNumber); - assembly { - mstore(add(header, add(0x20, 0x0194)), slotNumber) - mstore(add(header, add(0x20, 0x01b4)), ts) - } + full.block.decodedHeader.timestamp = Timestamp.unwrap(ts); + full.block.decodedHeader.slotNumber = Slot.unwrap(slotNumber); + + header = DecoderBase.updateHeaderTimestamp(header, ts); + header = DecoderBase.updateHeaderSlot(header, slotNumber); } - uint256 baseFee = rollup.getManaBaseFeeAt( - Timestamp.wrap(full.block.decodedHeader.globalVariables.timestamp), true - ); - header = _updateHeaderVersion(header, rollup.getVersion()); - header = _updateHeaderBaseFee(header, baseFee); - header = _updateHeaderManaUsed(header, _manaUsed); - header = _updateHeaderTotalFees(header, _manaUsed * baseFee); + uint256 baseFee = + rollup.getManaBaseFeeAt(Timestamp.wrap(full.block.decodedHeader.timestamp), true); + header = DecoderBase.updateHeaderBaseFee(header, baseFee); + header = DecoderBase.updateHeaderManaUsed(header, _manaUsed); - blockFees[full.block.decodedHeader.globalVariables.blockNumber] = _manaUsed * baseFee; + blockFees[full.block.blockNumber] = _manaUsed * baseFee; // We jump to the time of the block. (unless it is in the past) - vm.warp(max(block.timestamp, full.block.decodedHeader.globalVariables.timestamp)); + vm.warp(max(block.timestamp, full.block.decodedHeader.timestamp)); _populateInbox(full.populate.sender, full.populate.recipient, full.populate.l1ToL2Content); - header = _updateHeaderInboxRoot( - header, rollup.getInbox().getRoot(full.block.decodedHeader.globalVariables.blockNumber) - ); + header = + DecoderBase.updateHeaderInboxRoot(header, rollup.getInbox().getRoot(full.block.blockNumber)); { bytes32[] memory blobHashes = new bytes32[](1); @@ -243,6 +183,7 @@ contract RollupBase is DecoderBase { ProposeArgs memory args = ProposeArgs({ header: header, archive: full.block.archive, + stateReference: new bytes(0), oracleInput: OracleInput(0), txHashes: new bytes32[](0) }); @@ -287,10 +228,10 @@ contract RollupBase is DecoderBase { } outbox = Outbox(address(rollup.getOutbox())); - (bytes32 root,) = outbox.getRootData(full.block.decodedHeader.globalVariables.blockNumber); + (bytes32 root,) = outbox.getRootData(full.block.blockNumber); // If we are trying to read a block beyond the proven chain, we should see "nothing". - if (rollup.getProvenBlockNumber() >= full.block.decodedHeader.globalVariables.blockNumber) { + if (rollup.getProvenBlockNumber() >= full.block.blockNumber) { assertEq(l2ToL1MessageTreeRoot, root, "Invalid l2 to l1 message tree root"); } else { assertEq(root, bytes32(0), "Invalid outbox root"); diff --git a/l1-contracts/test/benchmark/happy.t.sol b/l1-contracts/test/benchmark/happy.t.sol index 98a05160dd5e..5f423d6370e2 100644 --- a/l1-contracts/test/benchmark/happy.t.sol +++ b/l1-contracts/test/benchmark/happy.t.sol @@ -33,7 +33,13 @@ import {IERC20Errors} from "@oz/interfaces/draft-IERC6093.sol"; import {IFeeJuicePortal} from "@aztec/core/interfaces/IFeeJuicePortal.sol"; import {IRewardDistributor} from "@aztec/governance/interfaces/IRewardDistributor.sol"; import {IRegistry} from "@aztec/governance/interfaces/IRegistry.sol"; -import {ProposeArgs, OracleInput, ProposeLib} from "@aztec/core/libraries/rollup/ProposeLib.sol"; +import {HeaderLib} from "@aztec/core/libraries/rollup/HeaderLib.sol"; +import { + ProposeArgs, + ProposePayload, + OracleInput, + ProposeLib +} from "@aztec/core/libraries/rollup/ProposeLib.sol"; import {IERC20} from "@oz/token/ERC20/IERC20.sol"; import { FeeLib, @@ -212,43 +218,25 @@ contract BenchmarkRollupTest is FeeModelTestPoints, DecoderBase { TestPoint memory point = points[slotNumber.unwrap() - 1]; Timestamp ts = rollup.getTimestampForSlot(slotNumber); - uint256 bn = rollup.getPendingBlockNumber() + 1; uint256 manaBaseFee = rollup.getManaBaseFeeAt(Timestamp.wrap(block.timestamp), true); uint256 manaSpent = point.block_header.mana_spent; address proposer = rollup.getCurrentProposer(); - uint256 version = rollup.getVersion(); - // Updating the header with important information! - assembly { - let headerRef := add(header, 0x20) - - mstore(add(headerRef, 0x0000), archiveRoot) - // Load the full word at 0x20 (which contains lastArchive.nextAvailableLeafIndex and start of numTxs) - let word := mload(add(headerRef, 0x20)) - // Clear just the first 4 bytes from the left (most significant bytes) - word := and(word, 0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff) - // Set the new value for nextAvailableLeafIndex (bn) in the first 4 bytes from left - word := or(word, shl(224, bn)) - // Store the modified word back - mstore(add(headerRef, 0x20), word) - - mstore(add(headerRef, 0x0154), version) - mstore(add(headerRef, 0x0174), bn) - mstore(add(headerRef, 0x0194), slotNumber) - mstore(add(headerRef, 0x01b4), ts) - mstore(add(headerRef, 0x01d4), proposer) // coinbase - mstore(add(headerRef, 0x01e8), 0) // fee recipient - mstore(add(headerRef, 0x0208), 0) // fee per da gas - mstore(add(headerRef, 0x0228), manaBaseFee) // fee per l2 gas - mstore(add(headerRef, 0x0268), manaSpent) // total mana used - } + header = DecoderBase.updateHeaderArchive(header, archiveRoot); + header = DecoderBase.updateHeaderSlot(header, slotNumber); + header = DecoderBase.updateHeaderTimestamp(header, ts); + header = DecoderBase.updateHeaderCoinbase(header, proposer); + header = DecoderBase.updateHeaderFeeRecipient(header, address(0)); + header = DecoderBase.updateHeaderBaseFee(header, manaBaseFee); + header = DecoderBase.updateHeaderManaUsed(header, manaSpent); ProposeArgs memory proposeArgs = ProposeArgs({ header: header, archive: archiveRoot, + stateReference: new bytes(0), oracleInput: OracleInput({feeAssetPriceModifier: point.oracle_input.fee_asset_price_modifier}), txHashes: txHashes }); @@ -260,7 +248,17 @@ contract BenchmarkRollupTest is FeeModelTestPoints, DecoderBase { uint256 needed = validators.length * 2 / 3 + 1; signatures = new Signature[](validators.length); - bytes32 digest = ProposeLib.digest(proposeArgs); + bytes32 headerHash = HeaderLib.hash(proposeArgs.header); + + ProposePayload memory proposePayload = ProposePayload({ + archive: proposeArgs.archive, + stateReference: proposeArgs.stateReference, + oracleInput: proposeArgs.oracleInput, + headerHash: headerHash, + txHashes: proposeArgs.txHashes + }); + + bytes32 digest = ProposeLib.digest(proposePayload); for (uint256 i = 0; i < validators.length; i++) { if (i < needed) { diff --git a/l1-contracts/test/decoders/Decoders.t.sol b/l1-contracts/test/decoders/Decoders.t.sol index 9fa5761bdf05..91fa893108f2 100644 --- a/l1-contracts/test/decoders/Decoders.t.sol +++ b/l1-contracts/test/decoders/Decoders.t.sol @@ -37,32 +37,20 @@ contract DecodersTest is DecoderBase { // GlobalVariables { - DecoderBase.GlobalVariables memory globalVariables = referenceHeader.globalVariables; - - assertEq( - header.globalVariables.blockNumber, globalVariables.blockNumber, "Invalid block number" - ); - assertEq( - header.globalVariables.slotNumber, globalVariables.slotNumber, "Invalid slot number" - ); - assertEq(header.globalVariables.chainId, globalVariables.chainId, "Invalid chain Id"); - assertEq(header.globalVariables.timestamp, globalVariables.timestamp, "Invalid timestamp"); - assertEq(header.globalVariables.version, globalVariables.version, "Invalid version"); - assertEq(header.globalVariables.coinbase, globalVariables.coinbase, "Invalid coinbase"); + assertEq(header.slotNumber, referenceHeader.slotNumber, "Invalid slot number"); + assertEq(header.timestamp, referenceHeader.timestamp, "Invalid timestamp"); + assertEq(header.coinbase, referenceHeader.coinbase, "Invalid coinbase"); assertEq( - header.globalVariables.feeRecipient, globalVariables.feeRecipient, "Invalid feeRecipient" + header.gasFees.feePerL2Gas, + referenceHeader.gasFees.feePerL2Gas, + "Invalid gasFees.feePerL2Gas" ); assertEq( - header.globalVariables.gasFees.feePerDaGas, - globalVariables.gasFees.feePerDaGas, + header.gasFees.feePerDaGas, + referenceHeader.gasFees.feePerDaGas, "Invalid gasFees.feePerDaGas" ); - assertEq( - header.globalVariables.feeRecipient, globalVariables.feeRecipient, "Invalid feeRecipient" - ); - assertEq( - header.globalVariables.feeRecipient, globalVariables.feeRecipient, "Invalid feeRecipient" - ); + assertEq(header.feeRecipient, referenceHeader.feeRecipient, "Invalid feeRecipient"); } // ContentCommitment @@ -77,73 +65,9 @@ contract DecodersTest is DecoderBase { assertEq(header.contentCommitment.outHash, contentCommitment.outHash, "Invalid outHash"); } - // StateReference - { - DecoderBase.StateReference memory stateReference = referenceHeader.stateReference; - - // L1 -> L2 messages - assertEq( - header.stateReference.l1ToL2MessageTree.nextAvailableLeafIndex, - stateReference.l1ToL2MessageTree.nextAvailableLeafIndex, - "Invalid l1ToL2MessageTree.nextAvailableLeafIndex" - ); - assertEq( - header.stateReference.l1ToL2MessageTree.root, - stateReference.l1ToL2MessageTree.root, - "Invalid l1ToL2MessageTree.root" - ); - - // PartialStateReference - { - DecoderBase.PartialStateReference memory partialStateReference = - referenceHeader.stateReference.partialStateReference; - - // NoteHashTree - assertEq( - header.stateReference.partialStateReference.noteHashTree.nextAvailableLeafIndex, - partialStateReference.noteHashTree.nextAvailableLeafIndex, - "Invalid noteHashTree.nextAvailableLeafIndex" - ); - assertEq( - header.stateReference.partialStateReference.noteHashTree.root, - partialStateReference.noteHashTree.root, - "Invalid noteHashTree.root" - ); - - // NullifierTree - assertEq( - header.stateReference.partialStateReference.nullifierTree.nextAvailableLeafIndex, - partialStateReference.nullifierTree.nextAvailableLeafIndex, - "Invalid nullifierTree.nextAvailableLeafIndex" - ); - assertEq( - header.stateReference.partialStateReference.nullifierTree.root, - partialStateReference.nullifierTree.root, - "Invalid nullifierTree.root" - ); - - // PublicDataTree - assertEq( - header.stateReference.partialStateReference.publicDataTree.nextAvailableLeafIndex, - partialStateReference.publicDataTree.nextAvailableLeafIndex, - "Invalid publicDataTree.nextAvailableLeafIndex" - ); - assertEq( - header.stateReference.partialStateReference.publicDataTree.root, - partialStateReference.publicDataTree.root, - "Invalid publicDataTree.root" - ); - } - } + assertEq(header.lastArchiveRoot, referenceHeader.lastArchiveRoot, "Invalid lastArchiveRoot"); - assertEq( - header.lastArchive.nextAvailableLeafIndex, - referenceHeader.lastArchive.nextAvailableLeafIndex, - "Invalid lastArchive.nextAvailableLeafIndex" - ); - assertEq( - header.lastArchive.root, referenceHeader.lastArchive.root, "Invalid lastArchive.root" - ); + assertEq(header.totalManaUsed, referenceHeader.totalManaUsed, "Invalid totalManaUsed"); } // The public inputs are computed based of these values, but not directly part of the decoding per say. } diff --git a/l1-contracts/test/fees/FeeRollup.t.sol b/l1-contracts/test/fees/FeeRollup.t.sol index 4c8f4c899667..3862be1f56da 100644 --- a/l1-contracts/test/fees/FeeRollup.t.sol +++ b/l1-contracts/test/fees/FeeRollup.t.sol @@ -160,7 +160,6 @@ contract FeeRollupTest is FeeModelTestPoints, DecoderBase { TestPoint memory point = points[slotNumber.unwrap() - 1]; Timestamp ts = rollup.getTimestampForSlot(slotNumber); - uint256 bn = rollup.getPendingBlockNumber() + 1; uint256 manaBaseFee = ( point.outputs.mana_base_fee_components_in_fee_asset.data_cost @@ -180,32 +179,14 @@ contract FeeRollupTest is FeeModelTestPoints, DecoderBase { // Put coinbase onto the stack address cb = coinbase; - uint256 version = rollup.getVersion(); - // Updating the header with important information! - assembly { - let headerRef := add(header, 0x20) - - mstore(add(headerRef, 0x0000), archiveRoot) - // Load the full word at 0x20 (which contains lastArchive.nextAvailableLeafIndex and start of numTxs) - let word := mload(add(headerRef, 0x20)) - // Clear just the first 4 bytes from the left (most significant bytes) - word := and(word, 0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff) - // Set the new value for nextAvailableLeafIndex (bn) in the first 4 bytes from left - word := or(word, shl(224, bn)) - // Store the modified word back - mstore(add(headerRef, 0x20), word) - - mstore(add(headerRef, 0x0154), version) - mstore(add(headerRef, 0x0174), bn) - mstore(add(headerRef, 0x0194), slotNumber) - mstore(add(headerRef, 0x01b4), ts) - mstore(add(headerRef, 0x01d4), cb) // coinbase - mstore(add(headerRef, 0x01e8), 0) // fee recipient - mstore(add(headerRef, 0x0208), 0) // fee per da gas - mstore(add(headerRef, 0x0228), manaBaseFee) // fee per l2 gas - mstore(add(headerRef, 0x0268), manaSpent) // total mana used - } + header = DecoderBase.updateHeaderArchive(header, archiveRoot); + header = DecoderBase.updateHeaderSlot(header, slotNumber); + header = DecoderBase.updateHeaderTimestamp(header, ts); + header = DecoderBase.updateHeaderCoinbase(header, cb); + header = DecoderBase.updateHeaderFeeRecipient(header, address(0)); + header = DecoderBase.updateHeaderBaseFee(header, manaBaseFee); + header = DecoderBase.updateHeaderManaUsed(header, manaSpent); return Block({ archive: archiveRoot, @@ -235,6 +216,7 @@ contract FeeRollupTest is FeeModelTestPoints, DecoderBase { ProposeArgs({ header: b.header, archive: b.archive, + stateReference: new bytes(0), oracleInput: OracleInput({ feeAssetPriceModifier: point.oracle_input.fee_asset_price_modifier }), @@ -337,6 +319,7 @@ contract FeeRollupTest is FeeModelTestPoints, DecoderBase { ProposeArgs({ header: b.header, archive: b.archive, + stateReference: new bytes(0), oracleInput: OracleInput({ feeAssetPriceModifier: point.oracle_input.fee_asset_price_modifier }), diff --git a/l1-contracts/test/fixtures/empty_block_1.json b/l1-contracts/test/fixtures/empty_block_1.json index d92d41437919..9f0e80bee7ea 100644 --- a/l1-contracts/test/fixtures/empty_block_1.json +++ b/l1-contracts/test/fixtures/empty_block_1.json @@ -25,58 +25,29 @@ "l2ToL1Messages": [] }, "block": { - "archive": "0x2367b56a44f1cc971a7a48ee0e3fb63854613261bf995e02cf15b80eb7a49e09", + "archive": "0x038cad86d02ba459db8245a1ce4cbb6dbb8ffe019b7fcf6496da7a25dae8c570", + "blobInputs": "0x01010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440140ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb0000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": 1, "body": "0x00000000", "decodedHeader": { + "lastArchiveRoot": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae", "contentCommitment": { "blobsHash": "0x001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d9", "inHash": "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c", "outHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "numTxs": 0 }, - "globalVariables": { - "blockNumber": 1, - "slotNumber": "0x000000000000000000000000000000000000000000000000000000000000001a", - "chainId": 31337, - "timestamp": 1742997649, - "version": 1, - "coinbase": "0x2d2b1a3e7cece64518bdf12bc2893b3072ded721", - "feeRecipient": "0x24e7c1eb8df59749e6d1005b7dcc23e8c768593e87065c4134a0ce43c94335b3", - "gasFees": { - "feePerDaGas": 0, - "feePerL2Gas": 5425370 - } - }, - "totalFees": "0x0000000000000000000000000000000000000000000000000000000000000000", - "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000", - "lastArchive": { - "nextAvailableLeafIndex": 1, - "root": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae" + "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000019", + "timestamp": 1744910618, + "coinbase": "0x46555d1c6cb9c5bb83254b645c4f74e16fb90a3d", + "feeRecipient": "0x1ca8799e7e43d6a84f0e7e5f7ac029a8faf8602835ab21cd24a071c363ece0de", + "gasFees": { + "feePerDaGas": 0, + "feePerL2Gas": 2590 }, - "stateReference": { - "l1ToL2MessageTree": { - "nextAvailableLeafIndex": 16, - "root": "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" - }, - "partialStateReference": { - "noteHashTree": { - "nextAvailableLeafIndex": 0, - "root": "0x1fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb" - }, - "nullifierTree": { - "nextAvailableLeafIndex": 128, - "root": "0x0c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d639073" - }, - "publicDataTree": { - "nextAvailableLeafIndex": 128, - "root": "0x23c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9" - } - } - } + "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000" }, - "header": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae000000010000000000000000000000000000000000000000000000000000000000000000001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00000000000000000000000000000000000000000000000000000000000000002e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6000000101fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb000000000c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d6390730000008023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9000000800000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000067e408912d2b1a3e7cece64518bdf12bc2893b3072ded72124e7c1eb8df59749e6d1005b7dcc23e8c768593e87065c4134a0ce43c94335b30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052c8da00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x007ba02fdeb67f22a3dd1cfe8baa8d221ad67fbb9fcfafc6e0bc1ebc4d20f100", - "blobInputs": "0x01010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440140ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb0000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "header": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae0000000000000000000000000000000000000000000000000000000000000000001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019000000006801391a46555d1c6cb9c5bb83254b645c4f74e16fb90a3d1ca8799e7e43d6a84f0e7e5f7ac029a8faf8602835ab21cd24a071c363ece0de00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1e0000000000000000000000000000000000000000000000000000000000000000", "numTxs": 0 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/empty_block_2.json b/l1-contracts/test/fixtures/empty_block_2.json index aaf0075fd476..193582eb4f95 100644 --- a/l1-contracts/test/fixtures/empty_block_2.json +++ b/l1-contracts/test/fixtures/empty_block_2.json @@ -25,58 +25,29 @@ "l2ToL1Messages": [] }, "block": { - "archive": "0x277fad8742d641aa1e99af417d082739dc39bab49298997cab17c501996e6171", + "archive": "0x0eb9fcf0ceeda2ba35871d8fddb4cf925877f4325737e057073a573afb740185", + "blobInputs": "0x01010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440140ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb0000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": 2, "body": "0x00000000", "decodedHeader": { + "lastArchiveRoot": "0x038cad86d02ba459db8245a1ce4cbb6dbb8ffe019b7fcf6496da7a25dae8c570", "contentCommitment": { "blobsHash": "0x001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d9", - "inHash": "0x00e1371045bd7d2c3e1f19cba5f536f0e82042ba4bc257d4ba19c146215e8242", + "inHash": "0x00b44392a09618ffd1fdab69b79e96c4f9af905d57c62fb8028ed0fbb55efe80", "outHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "numTxs": 0 }, - "globalVariables": { - "blockNumber": 2, - "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000023", - "chainId": 31337, - "timestamp": 1742997865, - "version": 1, - "coinbase": "0x2d2b1a3e7cece64518bdf12bc2893b3072ded721", - "feeRecipient": "0x24e7c1eb8df59749e6d1005b7dcc23e8c768593e87065c4134a0ce43c94335b3", - "gasFees": { - "feePerDaGas": 0, - "feePerL2Gas": 316120 - } - }, - "totalFees": "0x0000000000000000000000000000000000000000000000000000000000000000", - "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000", - "lastArchive": { - "nextAvailableLeafIndex": 2, - "root": "0x2367b56a44f1cc971a7a48ee0e3fb63854613261bf995e02cf15b80eb7a49e09" + "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000022", + "timestamp": 1744910834, + "coinbase": "0x46555d1c6cb9c5bb83254b645c4f74e16fb90a3d", + "feeRecipient": "0x1ca8799e7e43d6a84f0e7e5f7ac029a8faf8602835ab21cd24a071c363ece0de", + "gasFees": { + "feePerDaGas": 0, + "feePerL2Gas": 1120 }, - "stateReference": { - "l1ToL2MessageTree": { - "nextAvailableLeafIndex": 32, - "root": "0x026efb6c2a517de2448119d0f1255757265dbec7cdd2952df929ede666e10944" - }, - "partialStateReference": { - "noteHashTree": { - "nextAvailableLeafIndex": 0, - "root": "0x1fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb" - }, - "nullifierTree": { - "nextAvailableLeafIndex": 128, - "root": "0x0c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d639073" - }, - "publicDataTree": { - "nextAvailableLeafIndex": 128, - "root": "0x23c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9" - } - } - } + "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000" }, - "header": "0x2367b56a44f1cc971a7a48ee0e3fb63854613261bf995e02cf15b80eb7a49e09000000020000000000000000000000000000000000000000000000000000000000000000001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d900e1371045bd7d2c3e1f19cba5f536f0e82042ba4bc257d4ba19c146215e82420000000000000000000000000000000000000000000000000000000000000000026efb6c2a517de2448119d0f1255757265dbec7cdd2952df929ede666e10944000000201fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb000000000c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d6390730000008023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9000000800000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000230000000000000000000000000000000000000000000000000000000067e409692d2b1a3e7cece64518bdf12bc2893b3072ded72124e7c1eb8df59749e6d1005b7dcc23e8c768593e87065c4134a0ce43c94335b30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004d2d800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x00b31d2b0d772b021222c4de2484f9f4db0fc33837d14312664f0aae6f51c636", - "blobInputs": "0x01010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440140ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb0000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "header": "0x038cad86d02ba459db8245a1ce4cbb6dbb8ffe019b7fcf6496da7a25dae8c5700000000000000000000000000000000000000000000000000000000000000000001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d900b44392a09618ffd1fdab69b79e96c4f9af905d57c62fb8028ed0fbb55efe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002200000000680139f246555d1c6cb9c5bb83254b645c4f74e16fb90a3d1ca8799e7e43d6a84f0e7e5f7ac029a8faf8602835ab21cd24a071c363ece0de000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004600000000000000000000000000000000000000000000000000000000000000000", "numTxs": 0 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/mixed_block_1.json b/l1-contracts/test/fixtures/mixed_block_1.json index b46a22e4465c..fe74213cfc80 100644 --- a/l1-contracts/test/fixtures/mixed_block_1.json +++ b/l1-contracts/test/fixtures/mixed_block_1.json @@ -23,93 +23,64 @@ }, "messages": { "l2ToL1Messages": [ - "0x0097a6ec570e9b8e257647c9c74c5ad3edc57ca5ef6ae44d80b3c30d1d99b9b3", - "0x00ce48ec41d1edde0066fab553a456ae2f380d14fa8f956af1fb0217513a5989", - "0x00619ff12eaf97f63aa2a2311de3b6571a7b880a5247cb33b6a74787bf3f9bd5", - "0x007854a2fad4e1801c6404394bf3d37ab08c135ea38a1974242e39a21273685f", - "0x000f55796e72957a819e68a22e8602d73c3ba3718a5a4bd92b80b0aa444b182a", - "0x00788b6e9874fb040ee679a7fae257190099a605229b948334e54a57739535d4", - "0x004f1658ee3c1a91627e5d72f5a731f0796299df82ab41e72c88eee0c82fa85e", - "0x003ee802add96628c693ed71afa9908138ba5a6fbf0a5f29a9c74e4e42aba671", - "0x003c0472260790b0bdfb8ae4dc4d437e7686b73643f2198970d84e1059a5f135", - "0x00bfd46275a318e438726ff2765ae154b63ab8a0daebcbed668a5f58a0e63dc1", - "0x007906b9418dc758c6b4f8454c69baa48b7889b6b511d707abe8e2cb8f7c3973", - "0x00aeb60c4d65a44f122e58bf9565dfe2024b3ae654d5cf2e47ecb035d53c9270", - "0x00bf82e8cda20345f37bbb1de3932172324b57f0b98be483392697b168e3bba8", - "0x000fb4bbad884ef30edf68e45a6cf2733fcf50310c69d7c1432b29af2c0aa804", - "0x0023e1622d27fee3b4a40ab975ae0eb2e31619ef3dc76eb858f7fddb6a056131", - "0x004689cd7007daf98dd3218b839b8e6a29f957154347b391fdb376bd0b344be2", - "0x00f8029be42ec3f25204907ca981fb71e5b357093eb5db10fc01ca98a4e4154c", - "0x0030e13d351a5bf1d5a040e82a163ca57017f39162693f85c571e441e36d702d", - "0x00a550ae0f39f977d9473d6de1be3232fc68ed0c4a601d53542148695102cfc9", - "0x005580bc65e4bff9c8fffa64db02c0fa6af14d9d26fd962f4c5904cbd3ddec25", - "0x00758c4a0d43dfec788b2f580877c4f473adec8f168ea24424f2600e4eb4916f", - "0x00342602bf90d10f8ca8e582a894dcc4c02bb89fe458532e0c632b53bae54b4d", - "0x00ca43ab78ab834337e9964d84a0674c9adabdca140539c5a6bc96e0ba9a51f6", - "0x004ffbfd91be292a7c6a0e255e50caa156ac2d628b40ad2128c4ab63a92d8a1c", - "0x0099145b6c0d32753835121f8b271186d01236948a4622ce78a98347fcfc9839", - "0x0085277a27c6acbd5ffc4c19cd65fc30056999e9bec36998f753132db0ff8e23", - "0x00f3cf77a7261759ebd5f4149f6ad56746f4499cfcd4adf27a1d373f77da64d5", - "0x009bc6e0e994a23cde8c95b90c1acc1b4a480c6599d1df2c3f9f6e76f3d1aff2", - "0x00d7a1c4a2700dacaaf07f1f0ff33837bdbabcf0b9ace17efabe0761708c4bb9", - "0x00dbeb8e96d14f21e57d5786b6d6ae7e5ddb1bb35935c0fb246d4bdbca62e02c", - "0x00fbf12b5e0df6223b801088798e4e04d2a92ffe9a11639b7f0ce314e3412a80", - "0x00d796e0724de03b796ba77069fcd6cf921e566f3aed15eb3e77258add74e9ff" + "0x00a3820df1b54323b527a8a2f9030139f2306a78fa908e52809179f9d5532387", + "0x00c972a6c723fd5503a11cb0b55b4a963e24fecbaf68d0cd2489517b738f8830", + "0x005d8752aa976aafd6bb2e72a371b28b40c7c6deca2e416e06f5ca87c0018c9b", + "0x00c68aced1ccf720bae3eafafd26a9cdec65661df54057bda3ec7bb0a20d3a4b", + "0x008031009cbb3ee6cd6c1cc124f664ec0e2c9e84cf8d1a9d75bb4097ead0621a", + "0x002126e6c3c3f90cb63ba941e1d20ca4a54055bbf06f9a1d69a922714e30c6a3", + "0x0089ddab0381c4b8ff1927145233510cc320c72fd981c25cfb94546b184fc69d", + "0x004e81fa6e1f1d06649229b6eb97ee9b717304b7bd9434b26c76d4bbb113a620", + "0x000fded0bbf3892bc212c3e751e820d2f277daba4de28fd5e39e922bb59da7fb", + "0x0089acfd09b58d60046aa1e586e06fb0f8c6c4dbac02b35291475149fbe061a2", + "0x00b38b6702059f708f91e3cf0a0c7fbf018be3a935620109a1695df41e60bbde", + "0x00a3afc3de051ec11aeb590d3bd4483e071b6df44152355ebcf3b176f87024b2", + "0x009c40da473014ae317c6eb97af046f3b31ac83584eb26aa82f394f97ee9fb55", + "0x002aba26194958593ccd48638b8280c43bb1364f3764d9b06556502d565341e4", + "0x004027948f6eafbbc8dfd7acdb0b7060417eb1dd1f72e8ef9bc639a8e03232a8", + "0x002834a34ae7d5fcd9bea54f7745d0c938a56d493ca0ec7fa6264285515a7ada", + "0x003108dc6da01d26c3c5daf207d3a8150f8d38013524219b343d3be4fa061ea8", + "0x006a3050a704f363ccf33f1e3036e04affcac799ccdb2a427ff5e1c2070d83cf", + "0x00bdcc07416538205ace5b73916bd8696a0b201e964d1f8501f0ca10a26d9238", + "0x00c25785bcf7dc09d3982de931b7514a8b107b2d240b80e5e5affa621f3480b8", + "0x00d49172afa208e434a9e0ad27086b34935831ccd35899fa3d258c4781512b08", + "0x005e594cbab7f7c977306296fba1b0ffc2a1a05276bf3761a3500959cb7dce1b", + "0x0079c1e60289bd30be2470da1437a4c1b6570a0ef168e7b9226f1392b4a5a9c3", + "0x00d974b419028489be6d93269136462f8ee560e4ee2f740b80bc1507dac1cf65", + "0x007b507b24707411f815dd6457e2a0fd8f16d06df3d9d5bf146f5574cb37a814", + "0x000e383f07cf89c6c4fb54cb509b90da1a96b80c9b76d532e9e9b671039154b9", + "0x007b327de1a255dc7523de28f28e6d5cc5dd2ca55010eacf796572c31b73489c", + "0x007dde47ed37f051e915347ac47724bfa49a5a2d59458b6cf70aabdae1a0bcc5", + "0x00c4957cc7fe55e39251b56661636d4242d4f94a55aea349f17753672a664866", + "0x0082a36b6b69966fb7cfc0c27bf4dc48f1aa7535d5795e5aabcba207b1738e47", + "0x00b6ca91c66625650d440d717502681d05e8d7368602319f7bd657e33b274287", + "0x00965de06c0b060268387d90beea050a05cc1c04c476b7d86e29a9a6fe90757b" ] }, "block": { - "archive": "0x155210fd3188716162b2f6c650aa5874466280eb49e68f21f392d746919f6e1b", - "body": "0x00000004002ee9a34a76ae91c500b535381d94cd682504bb86d504c62a5f8d11dd24679ee70000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000041000000000000000000000000000000000000000000000000000000000000004100100000000000000000000000000000000000000000000000000000000000410020000000000000000000000000000000000000000000000000000000000041003000000000000000000000000000000000000000000000000000000000004100400000000000000000000000000000000000000000000000000000000000410050000000000000000000000000000000000000000000000000000000000041006000000000000000000000000000000000000000000000000000000000004100700000000000000000000000000000000000000000000000000000000000410080000000000000000000000000000000000000000000000000000000000041009000000000000000000000000000000000000000000000000000000000004100a000000000000000000000000000000000000000000000000000000000004100b000000000000000000000000000000000000000000000000000000000004100c000000000000000000000000000000000000000000000000000000000004100d000000000000000000000000000000000000000000000000000000000004100e000000000000000000000000000000000000000000000000000000000004100f0000000000000000000000000000000000000000000000000000000000041010000000000000000000000000000000000000000000000000000000000004101100000000000000000000000000000000000000000000000000000000000410120000000000000000000000000000000000000000000000000000000000041013000000000000000000000000000000000000000000000000000000000004101400000000000000000000000000000000000000000000000000000000000410150000000000000000000000000000000000000000000000000000000000041016000000000000000000000000000000000000000000000000000000000004101700000000000000000000000000000000000000000000000000000000000410180000000000000000000000000000000000000000000000000000000000041019000000000000000000000000000000000000000000000000000000000004101a000000000000000000000000000000000000000000000000000000000004101b000000000000000000000000000000000000000000000000000000000004101c000000000000000000000000000000000000000000000000000000000004101d000000000000000000000000000000000000000000000000000000000004101e000000000000000000000000000000000000000000000000000000000004101f0000000000000000000000000000000000000000000000000000000000041020000000000000000000000000000000000000000000000000000000000004102100000000000000000000000000000000000000000000000000000000000410220000000000000000000000000000000000000000000000000000000000041023000000000000000000000000000000000000000000000000000000000004102400000000000000000000000000000000000000000000000000000000000410250000000000000000000000000000000000000000000000000000000000041026000000000000000000000000000000000000000000000000000000000004102700000000000000000000000000000000000000000000000000000000000410280000000000000000000000000000000000000000000000000000000000041029000000000000000000000000000000000000000000000000000000000004102a000000000000000000000000000000000000000000000000000000000004102b000000000000000000000000000000000000000000000000000000000004102c000000000000000000000000000000000000000000000000000000000004102d000000000000000000000000000000000000000000000000000000000004102e000000000000000000000000000000000000000000000000000000000004102f0000000000000000000000000000000000000000000000000000000000041030000000000000000000000000000000000000000000000000000000000004103100000000000000000000000000000000000000000000000000000000000410320000000000000000000000000000000000000000000000000000000000041033000000000000000000000000000000000000000000000000000000000004103400000000000000000000000000000000000000000000000000000000000410350000000000000000000000000000000000000000000000000000000000041036000000000000000000000000000000000000000000000000000000000004103700000000000000000000000000000000000000000000000000000000000410380000000000000000000000000000000000000000000000000000000000041039000000000000000000000000000000000000000000000000000000000004103a000000000000000000000000000000000000000000000000000000000004103b000000000000000000000000000000000000000000000000000000000004103c000000000000000000000000000000000000000000000000000000000004103d000000000000000000000000000000000000000000000000000000000004103e000000000000000000000000000000000000000000000000000000000004103f4000000000000000000000000000000000000000000000000000000000000400010000000000000000000000000000000000000000000000000000000000041100000000000000000000000000000000000000000000000000000000000004110100000000000000000000000000000000000000000000000000000000000411020000000000000000000000000000000000000000000000000000000000041103000000000000000000000000000000000000000000000000000000000004110400000000000000000000000000000000000000000000000000000000000411050000000000000000000000000000000000000000000000000000000000041106000000000000000000000000000000000000000000000000000000000004110700000000000000000000000000000000000000000000000000000000000411080000000000000000000000000000000000000000000000000000000000041109000000000000000000000000000000000000000000000000000000000004110a000000000000000000000000000000000000000000000000000000000004110b000000000000000000000000000000000000000000000000000000000004110c000000000000000000000000000000000000000000000000000000000004110d000000000000000000000000000000000000000000000000000000000004110e000000000000000000000000000000000000000000000000000000000004110f0000000000000000000000000000000000000000000000000000000000041110000000000000000000000000000000000000000000000000000000000004111100000000000000000000000000000000000000000000000000000000000411120000000000000000000000000000000000000000000000000000000000041113000000000000000000000000000000000000000000000000000000000004111400000000000000000000000000000000000000000000000000000000000411150000000000000000000000000000000000000000000000000000000000041116000000000000000000000000000000000000000000000000000000000004111700000000000000000000000000000000000000000000000000000000000411180000000000000000000000000000000000000000000000000000000000041119000000000000000000000000000000000000000000000000000000000004111a000000000000000000000000000000000000000000000000000000000004111b000000000000000000000000000000000000000000000000000000000004111c000000000000000000000000000000000000000000000000000000000004111d000000000000000000000000000000000000000000000000000000000004111e000000000000000000000000000000000000000000000000000000000004111f0000000000000000000000000000000000000000000000000000000000041120000000000000000000000000000000000000000000000000000000000004112100000000000000000000000000000000000000000000000000000000000411220000000000000000000000000000000000000000000000000000000000041123000000000000000000000000000000000000000000000000000000000004112400000000000000000000000000000000000000000000000000000000000411250000000000000000000000000000000000000000000000000000000000041126000000000000000000000000000000000000000000000000000000000004112700000000000000000000000000000000000000000000000000000000000411280000000000000000000000000000000000000000000000000000000000041129000000000000000000000000000000000000000000000000000000000004112a000000000000000000000000000000000000000000000000000000000004112b000000000000000000000000000000000000000000000000000000000004112c000000000000000000000000000000000000000000000000000000000004112d000000000000000000000000000000000000000000000000000000000004112e000000000000000000000000000000000000000000000000000000000004112f0000000000000000000000000000000000000000000000000000000000041130000000000000000000000000000000000000000000000000000000000004113100000000000000000000000000000000000000000000000000000000000411320000000000000000000000000000000000000000000000000000000000041133000000000000000000000000000000000000000000000000000000000004113400000000000000000000000000000000000000000000000000000000000411350000000000000000000000000000000000000000000000000000000000041136000000000000000000000000000000000000000000000000000000000004113700000000000000000000000000000000000000000000000000000000000411380000000000000000000000000000000000000000000000000000000000041139000000000000000000000000000000000000000000000000000000000004113a000000000000000000000000000000000000000000000000000000000004113b000000000000000000000000000000000000000000000000000000000004113c000000000000000000000000000000000000000000000000000000000004113d000000000000000000000000000000000000000000000000000000000004113e080097a6ec570e9b8e257647c9c74c5ad3edc57ca5ef6ae44d80b3c30d1d99b9b300ce48ec41d1edde0066fab553a456ae2f380d14fa8f956af1fb0217513a598900619ff12eaf97f63aa2a2311de3b6571a7b880a5247cb33b6a74787bf3f9bd5007854a2fad4e1801c6404394bf3d37ab08c135ea38a1974242e39a21273685f000f55796e72957a819e68a22e8602d73c3ba3718a5a4bd92b80b0aa444b182a00788b6e9874fb040ee679a7fae257190099a605229b948334e54a57739535d4004f1658ee3c1a91627e5d72f5a731f0796299df82ab41e72c88eee0c82fa85e003ee802add96628c693ed71afa9908138ba5a6fbf0a5f29a9c74e4e42aba671400000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042001000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042002000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042003000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042004000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042005000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420060000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004200700000000000000000000000000000000000000000000000000000000000420110000000000000000000000000000000000000000000000000000000000042008000000000000000000000000000000000000000000000000000000000004201200000000000000000000000000000000000000000000000000000000000420090000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042016000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042017000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042011000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042012000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420160000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004201700000000000000000000000000000000000000000000000000000000000420210000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004202200000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042026000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042027000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042021000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042022000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420260000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004202700000000000000000000000000000000000000000000000000000000000420310000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004203200000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042036000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042037000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042031000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042032000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004203f00000000000000000000000000000000000000000000000000000000000420360000000000000000000000000000000000000000000000000000000000042040000000000000000000000000000000000000000000000000000000000004203700000000000000000000000000000000000000000000000000000000000420410000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004204200000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042043000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042044000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042045000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042046000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042047000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042048000000000000000000000000000000000000000000000000000000000004203f0000000000000000000000000000000000000000000000000000000000042049200000000000000000000000000000000000000000000000000000000000041700000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004171800000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004171800000000000000000000000000000000000000000000000000000000000417190000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004172800000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004172800000000000000000000000000000000000000000000000000000000000417290000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f00000000000000000000000000000000000000000000000000000000000417300000001c54bdc3dcd0023e7fdbc6452a4773ea79ca38e6e3fabba71fc84cb41966979b0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000081000000000000000000000000000000000000000000000000000000000000008100100000000000000000000000000000000000000000000000000000000000810020000000000000000000000000000000000000000000000000000000000081003000000000000000000000000000000000000000000000000000000000008100400000000000000000000000000000000000000000000000000000000000810050000000000000000000000000000000000000000000000000000000000081006000000000000000000000000000000000000000000000000000000000008100700000000000000000000000000000000000000000000000000000000000810080000000000000000000000000000000000000000000000000000000000081009000000000000000000000000000000000000000000000000000000000008100a000000000000000000000000000000000000000000000000000000000008100b000000000000000000000000000000000000000000000000000000000008100c000000000000000000000000000000000000000000000000000000000008100d000000000000000000000000000000000000000000000000000000000008100e000000000000000000000000000000000000000000000000000000000008100f0000000000000000000000000000000000000000000000000000000000081010000000000000000000000000000000000000000000000000000000000008101100000000000000000000000000000000000000000000000000000000000810120000000000000000000000000000000000000000000000000000000000081013000000000000000000000000000000000000000000000000000000000008101400000000000000000000000000000000000000000000000000000000000810150000000000000000000000000000000000000000000000000000000000081016000000000000000000000000000000000000000000000000000000000008101700000000000000000000000000000000000000000000000000000000000810180000000000000000000000000000000000000000000000000000000000081019000000000000000000000000000000000000000000000000000000000008101a000000000000000000000000000000000000000000000000000000000008101b000000000000000000000000000000000000000000000000000000000008101c000000000000000000000000000000000000000000000000000000000008101d000000000000000000000000000000000000000000000000000000000008101e000000000000000000000000000000000000000000000000000000000008101f0000000000000000000000000000000000000000000000000000000000081020000000000000000000000000000000000000000000000000000000000008102100000000000000000000000000000000000000000000000000000000000810220000000000000000000000000000000000000000000000000000000000081023000000000000000000000000000000000000000000000000000000000008102400000000000000000000000000000000000000000000000000000000000810250000000000000000000000000000000000000000000000000000000000081026000000000000000000000000000000000000000000000000000000000008102700000000000000000000000000000000000000000000000000000000000810280000000000000000000000000000000000000000000000000000000000081029000000000000000000000000000000000000000000000000000000000008102a000000000000000000000000000000000000000000000000000000000008102b000000000000000000000000000000000000000000000000000000000008102c000000000000000000000000000000000000000000000000000000000008102d000000000000000000000000000000000000000000000000000000000008102e000000000000000000000000000000000000000000000000000000000008102f0000000000000000000000000000000000000000000000000000000000081030000000000000000000000000000000000000000000000000000000000008103100000000000000000000000000000000000000000000000000000000000810320000000000000000000000000000000000000000000000000000000000081033000000000000000000000000000000000000000000000000000000000008103400000000000000000000000000000000000000000000000000000000000810350000000000000000000000000000000000000000000000000000000000081036000000000000000000000000000000000000000000000000000000000008103700000000000000000000000000000000000000000000000000000000000810380000000000000000000000000000000000000000000000000000000000081039000000000000000000000000000000000000000000000000000000000008103a000000000000000000000000000000000000000000000000000000000008103b000000000000000000000000000000000000000000000000000000000008103c000000000000000000000000000000000000000000000000000000000008103d000000000000000000000000000000000000000000000000000000000008103e000000000000000000000000000000000000000000000000000000000008103f4000000000000000000000000000000000000000000000000000000000000800010000000000000000000000000000000000000000000000000000000000081100000000000000000000000000000000000000000000000000000000000008110100000000000000000000000000000000000000000000000000000000000811020000000000000000000000000000000000000000000000000000000000081103000000000000000000000000000000000000000000000000000000000008110400000000000000000000000000000000000000000000000000000000000811050000000000000000000000000000000000000000000000000000000000081106000000000000000000000000000000000000000000000000000000000008110700000000000000000000000000000000000000000000000000000000000811080000000000000000000000000000000000000000000000000000000000081109000000000000000000000000000000000000000000000000000000000008110a000000000000000000000000000000000000000000000000000000000008110b000000000000000000000000000000000000000000000000000000000008110c000000000000000000000000000000000000000000000000000000000008110d000000000000000000000000000000000000000000000000000000000008110e000000000000000000000000000000000000000000000000000000000008110f0000000000000000000000000000000000000000000000000000000000081110000000000000000000000000000000000000000000000000000000000008111100000000000000000000000000000000000000000000000000000000000811120000000000000000000000000000000000000000000000000000000000081113000000000000000000000000000000000000000000000000000000000008111400000000000000000000000000000000000000000000000000000000000811150000000000000000000000000000000000000000000000000000000000081116000000000000000000000000000000000000000000000000000000000008111700000000000000000000000000000000000000000000000000000000000811180000000000000000000000000000000000000000000000000000000000081119000000000000000000000000000000000000000000000000000000000008111a000000000000000000000000000000000000000000000000000000000008111b000000000000000000000000000000000000000000000000000000000008111c000000000000000000000000000000000000000000000000000000000008111d000000000000000000000000000000000000000000000000000000000008111e000000000000000000000000000000000000000000000000000000000008111f0000000000000000000000000000000000000000000000000000000000081120000000000000000000000000000000000000000000000000000000000008112100000000000000000000000000000000000000000000000000000000000811220000000000000000000000000000000000000000000000000000000000081123000000000000000000000000000000000000000000000000000000000008112400000000000000000000000000000000000000000000000000000000000811250000000000000000000000000000000000000000000000000000000000081126000000000000000000000000000000000000000000000000000000000008112700000000000000000000000000000000000000000000000000000000000811280000000000000000000000000000000000000000000000000000000000081129000000000000000000000000000000000000000000000000000000000008112a000000000000000000000000000000000000000000000000000000000008112b000000000000000000000000000000000000000000000000000000000008112c000000000000000000000000000000000000000000000000000000000008112d000000000000000000000000000000000000000000000000000000000008112e000000000000000000000000000000000000000000000000000000000008112f0000000000000000000000000000000000000000000000000000000000081130000000000000000000000000000000000000000000000000000000000008113100000000000000000000000000000000000000000000000000000000000811320000000000000000000000000000000000000000000000000000000000081133000000000000000000000000000000000000000000000000000000000008113400000000000000000000000000000000000000000000000000000000000811350000000000000000000000000000000000000000000000000000000000081136000000000000000000000000000000000000000000000000000000000008113700000000000000000000000000000000000000000000000000000000000811380000000000000000000000000000000000000000000000000000000000081139000000000000000000000000000000000000000000000000000000000008113a000000000000000000000000000000000000000000000000000000000008113b000000000000000000000000000000000000000000000000000000000008113c000000000000000000000000000000000000000000000000000000000008113d000000000000000000000000000000000000000000000000000000000008113e08003c0472260790b0bdfb8ae4dc4d437e7686b73643f2198970d84e1059a5f13500bfd46275a318e438726ff2765ae154b63ab8a0daebcbed668a5f58a0e63dc1007906b9418dc758c6b4f8454c69baa48b7889b6b511d707abe8e2cb8f7c397300aeb60c4d65a44f122e58bf9565dfe2024b3ae654d5cf2e47ecb035d53c927000bf82e8cda20345f37bbb1de3932172324b57f0b98be483392697b168e3bba8000fb4bbad884ef30edf68e45a6cf2733fcf50310c69d7c1432b29af2c0aa8040023e1622d27fee3b4a40ab975ae0eb2e31619ef3dc76eb858f7fddb6a056131004689cd7007daf98dd3218b839b8e6a29f957154347b391fdb376bd0b344be2400000000000000000000000000000000000000000000000000000000000082000000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082001000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082002000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082003000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082004000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082005000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820060000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008200700000000000000000000000000000000000000000000000000000000000820110000000000000000000000000000000000000000000000000000000000082008000000000000000000000000000000000000000000000000000000000008201200000000000000000000000000000000000000000000000000000000000820090000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082016000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082017000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082011000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082012000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820160000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008201700000000000000000000000000000000000000000000000000000000000820210000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008202200000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082026000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082027000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082021000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082022000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820260000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008202700000000000000000000000000000000000000000000000000000000000820310000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008203200000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082036000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082037000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082031000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082032000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008203e0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008203f00000000000000000000000000000000000000000000000000000000000820360000000000000000000000000000000000000000000000000000000000082040000000000000000000000000000000000000000000000000000000000008203700000000000000000000000000000000000000000000000000000000000820410000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008204200000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082043000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082044000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082045000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082046000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082047000000000000000000000000000000000000000000000000000000000008203e0000000000000000000000000000000000000000000000000000000000082048000000000000000000000000000000000000000000000000000000000008203f0000000000000000000000000000000000000000000000000000000000082049200000000000000000000000000000000000000000000000000000000000081700000000000000000000000000000000000000000000000000000000000008170100000000000000000000000000000000000000000000000000000000000817020000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008170100000000000000000000000000000000000000000000000000000000000817020000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817020000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008171500000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008171500000000000000000000000000000000000000000000000000000000000817160000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008171500000000000000000000000000000000000000000000000000000000000817160000000000000000000000000000000000000000000000000000000000081717000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008171500000000000000000000000000000000000000000000000000000000000817160000000000000000000000000000000000000000000000000000000000081717000000000000000000000000000000000000000000000000000000000008171800000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008171500000000000000000000000000000000000000000000000000000000000817160000000000000000000000000000000000000000000000000000000000081717000000000000000000000000000000000000000000000000000000000008171800000000000000000000000000000000000000000000000000000000000817190000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008172500000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008172500000000000000000000000000000000000000000000000000000000000817260000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008172500000000000000000000000000000000000000000000000000000000000817260000000000000000000000000000000000000000000000000000000000081727000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008172500000000000000000000000000000000000000000000000000000000000817260000000000000000000000000000000000000000000000000000000000081727000000000000000000000000000000000000000000000000000000000008172800000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008172500000000000000000000000000000000000000000000000000000000000817260000000000000000000000000000000000000000000000000000000000081727000000000000000000000000000000000000000000000000000000000008172800000000000000000000000000000000000000000000000000000000000817290000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008172e000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008172e000000000000000000000000000000000000000000000000000000000008172f000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008172e000000000000000000000000000000000000000000000000000000000008172f00000000000000000000000000000000000000000000000000000000000817300000002717ddb5ec8c3552b92ddb9a27ae393189d19d282f4271d5b03089835d77834100000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000c100000000000000000000000000000000000000000000000000000000000000c100100000000000000000000000000000000000000000000000000000000000c100200000000000000000000000000000000000000000000000000000000000c100300000000000000000000000000000000000000000000000000000000000c100400000000000000000000000000000000000000000000000000000000000c100500000000000000000000000000000000000000000000000000000000000c100600000000000000000000000000000000000000000000000000000000000c100700000000000000000000000000000000000000000000000000000000000c100800000000000000000000000000000000000000000000000000000000000c100900000000000000000000000000000000000000000000000000000000000c100a00000000000000000000000000000000000000000000000000000000000c100b00000000000000000000000000000000000000000000000000000000000c100c00000000000000000000000000000000000000000000000000000000000c100d00000000000000000000000000000000000000000000000000000000000c100e00000000000000000000000000000000000000000000000000000000000c100f00000000000000000000000000000000000000000000000000000000000c101000000000000000000000000000000000000000000000000000000000000c101100000000000000000000000000000000000000000000000000000000000c101200000000000000000000000000000000000000000000000000000000000c101300000000000000000000000000000000000000000000000000000000000c101400000000000000000000000000000000000000000000000000000000000c101500000000000000000000000000000000000000000000000000000000000c101600000000000000000000000000000000000000000000000000000000000c101700000000000000000000000000000000000000000000000000000000000c101800000000000000000000000000000000000000000000000000000000000c101900000000000000000000000000000000000000000000000000000000000c101a00000000000000000000000000000000000000000000000000000000000c101b00000000000000000000000000000000000000000000000000000000000c101c00000000000000000000000000000000000000000000000000000000000c101d00000000000000000000000000000000000000000000000000000000000c101e00000000000000000000000000000000000000000000000000000000000c101f00000000000000000000000000000000000000000000000000000000000c102000000000000000000000000000000000000000000000000000000000000c102100000000000000000000000000000000000000000000000000000000000c102200000000000000000000000000000000000000000000000000000000000c102300000000000000000000000000000000000000000000000000000000000c102400000000000000000000000000000000000000000000000000000000000c102500000000000000000000000000000000000000000000000000000000000c102600000000000000000000000000000000000000000000000000000000000c102700000000000000000000000000000000000000000000000000000000000c102800000000000000000000000000000000000000000000000000000000000c102900000000000000000000000000000000000000000000000000000000000c102a00000000000000000000000000000000000000000000000000000000000c102b00000000000000000000000000000000000000000000000000000000000c102c00000000000000000000000000000000000000000000000000000000000c102d00000000000000000000000000000000000000000000000000000000000c102e00000000000000000000000000000000000000000000000000000000000c102f00000000000000000000000000000000000000000000000000000000000c103000000000000000000000000000000000000000000000000000000000000c103100000000000000000000000000000000000000000000000000000000000c103200000000000000000000000000000000000000000000000000000000000c103300000000000000000000000000000000000000000000000000000000000c103400000000000000000000000000000000000000000000000000000000000c103500000000000000000000000000000000000000000000000000000000000c103600000000000000000000000000000000000000000000000000000000000c103700000000000000000000000000000000000000000000000000000000000c103800000000000000000000000000000000000000000000000000000000000c103900000000000000000000000000000000000000000000000000000000000c103a00000000000000000000000000000000000000000000000000000000000c103b00000000000000000000000000000000000000000000000000000000000c103c00000000000000000000000000000000000000000000000000000000000c103d00000000000000000000000000000000000000000000000000000000000c103e00000000000000000000000000000000000000000000000000000000000c103f4000000000000000000000000000000000000000000000000000000000000c000100000000000000000000000000000000000000000000000000000000000c110000000000000000000000000000000000000000000000000000000000000c110100000000000000000000000000000000000000000000000000000000000c110200000000000000000000000000000000000000000000000000000000000c110300000000000000000000000000000000000000000000000000000000000c110400000000000000000000000000000000000000000000000000000000000c110500000000000000000000000000000000000000000000000000000000000c110600000000000000000000000000000000000000000000000000000000000c110700000000000000000000000000000000000000000000000000000000000c110800000000000000000000000000000000000000000000000000000000000c110900000000000000000000000000000000000000000000000000000000000c110a00000000000000000000000000000000000000000000000000000000000c110b00000000000000000000000000000000000000000000000000000000000c110c00000000000000000000000000000000000000000000000000000000000c110d00000000000000000000000000000000000000000000000000000000000c110e00000000000000000000000000000000000000000000000000000000000c110f00000000000000000000000000000000000000000000000000000000000c111000000000000000000000000000000000000000000000000000000000000c111100000000000000000000000000000000000000000000000000000000000c111200000000000000000000000000000000000000000000000000000000000c111300000000000000000000000000000000000000000000000000000000000c111400000000000000000000000000000000000000000000000000000000000c111500000000000000000000000000000000000000000000000000000000000c111600000000000000000000000000000000000000000000000000000000000c111700000000000000000000000000000000000000000000000000000000000c111800000000000000000000000000000000000000000000000000000000000c111900000000000000000000000000000000000000000000000000000000000c111a00000000000000000000000000000000000000000000000000000000000c111b00000000000000000000000000000000000000000000000000000000000c111c00000000000000000000000000000000000000000000000000000000000c111d00000000000000000000000000000000000000000000000000000000000c111e00000000000000000000000000000000000000000000000000000000000c111f00000000000000000000000000000000000000000000000000000000000c112000000000000000000000000000000000000000000000000000000000000c112100000000000000000000000000000000000000000000000000000000000c112200000000000000000000000000000000000000000000000000000000000c112300000000000000000000000000000000000000000000000000000000000c112400000000000000000000000000000000000000000000000000000000000c112500000000000000000000000000000000000000000000000000000000000c112600000000000000000000000000000000000000000000000000000000000c112700000000000000000000000000000000000000000000000000000000000c112800000000000000000000000000000000000000000000000000000000000c112900000000000000000000000000000000000000000000000000000000000c112a00000000000000000000000000000000000000000000000000000000000c112b00000000000000000000000000000000000000000000000000000000000c112c00000000000000000000000000000000000000000000000000000000000c112d00000000000000000000000000000000000000000000000000000000000c112e00000000000000000000000000000000000000000000000000000000000c112f00000000000000000000000000000000000000000000000000000000000c113000000000000000000000000000000000000000000000000000000000000c113100000000000000000000000000000000000000000000000000000000000c113200000000000000000000000000000000000000000000000000000000000c113300000000000000000000000000000000000000000000000000000000000c113400000000000000000000000000000000000000000000000000000000000c113500000000000000000000000000000000000000000000000000000000000c113600000000000000000000000000000000000000000000000000000000000c113700000000000000000000000000000000000000000000000000000000000c113800000000000000000000000000000000000000000000000000000000000c113900000000000000000000000000000000000000000000000000000000000c113a00000000000000000000000000000000000000000000000000000000000c113b00000000000000000000000000000000000000000000000000000000000c113c00000000000000000000000000000000000000000000000000000000000c113d00000000000000000000000000000000000000000000000000000000000c113e0800f8029be42ec3f25204907ca981fb71e5b357093eb5db10fc01ca98a4e4154c0030e13d351a5bf1d5a040e82a163ca57017f39162693f85c571e441e36d702d00a550ae0f39f977d9473d6de1be3232fc68ed0c4a601d53542148695102cfc9005580bc65e4bff9c8fffa64db02c0fa6af14d9d26fd962f4c5904cbd3ddec2500758c4a0d43dfec788b2f580877c4f473adec8f168ea24424f2600e4eb4916f00342602bf90d10f8ca8e582a894dcc4c02bb89fe458532e0c632b53bae54b4d00ca43ab78ab834337e9964d84a0674c9adabdca140539c5a6bc96e0ba9a51f6004ffbfd91be292a7c6a0e255e50caa156ac2d628b40ad2128c4ab63a92d8a1c4000000000000000000000000000000000000000000000000000000000000c200000000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c200100000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c200200000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c200300000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c200400000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c200500000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c200600000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c200700000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c200800000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c200900000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c203f00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c204000000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c204100000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c204200000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c204300000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c204400000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c204500000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c204600000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c204700000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c204800000000000000000000000000000000000000000000000000000000000c203f00000000000000000000000000000000000000000000000000000000000c20492000000000000000000000000000000000000000000000000000000000000c170000000000000000000000000000000000000000000000000000000000000c170100000000000000000000000000000000000000000000000000000000000c170200000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c170100000000000000000000000000000000000000000000000000000000000c170200000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c170200000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c172e00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c172e00000000000000000000000000000000000000000000000000000000000c172f00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c172e00000000000000000000000000000000000000000000000000000000000c172f00000000000000000000000000000000000000000000000000000000000c17300000002b65cba4233828c7bacee67c1cbb6db457c7f63d8709bca45f0a50811f2782400000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000000000000000000000000000010100100000000000000000000000000000000000000000000000000000000001010020000000000000000000000000000000000000000000000000000000000101003000000000000000000000000000000000000000000000000000000000010100400000000000000000000000000000000000000000000000000000000001010050000000000000000000000000000000000000000000000000000000000101006000000000000000000000000000000000000000000000000000000000010100700000000000000000000000000000000000000000000000000000000001010080000000000000000000000000000000000000000000000000000000000101009000000000000000000000000000000000000000000000000000000000010100a000000000000000000000000000000000000000000000000000000000010100b000000000000000000000000000000000000000000000000000000000010100c000000000000000000000000000000000000000000000000000000000010100d000000000000000000000000000000000000000000000000000000000010100e000000000000000000000000000000000000000000000000000000000010100f0000000000000000000000000000000000000000000000000000000000101010000000000000000000000000000000000000000000000000000000000010101100000000000000000000000000000000000000000000000000000000001010120000000000000000000000000000000000000000000000000000000000101013000000000000000000000000000000000000000000000000000000000010101400000000000000000000000000000000000000000000000000000000001010150000000000000000000000000000000000000000000000000000000000101016000000000000000000000000000000000000000000000000000000000010101700000000000000000000000000000000000000000000000000000000001010180000000000000000000000000000000000000000000000000000000000101019000000000000000000000000000000000000000000000000000000000010101a000000000000000000000000000000000000000000000000000000000010101b000000000000000000000000000000000000000000000000000000000010101c000000000000000000000000000000000000000000000000000000000010101d000000000000000000000000000000000000000000000000000000000010101e000000000000000000000000000000000000000000000000000000000010101f0000000000000000000000000000000000000000000000000000000000101020000000000000000000000000000000000000000000000000000000000010102100000000000000000000000000000000000000000000000000000000001010220000000000000000000000000000000000000000000000000000000000101023000000000000000000000000000000000000000000000000000000000010102400000000000000000000000000000000000000000000000000000000001010250000000000000000000000000000000000000000000000000000000000101026000000000000000000000000000000000000000000000000000000000010102700000000000000000000000000000000000000000000000000000000001010280000000000000000000000000000000000000000000000000000000000101029000000000000000000000000000000000000000000000000000000000010102a000000000000000000000000000000000000000000000000000000000010102b000000000000000000000000000000000000000000000000000000000010102c000000000000000000000000000000000000000000000000000000000010102d000000000000000000000000000000000000000000000000000000000010102e000000000000000000000000000000000000000000000000000000000010102f0000000000000000000000000000000000000000000000000000000000101030000000000000000000000000000000000000000000000000000000000010103100000000000000000000000000000000000000000000000000000000001010320000000000000000000000000000000000000000000000000000000000101033000000000000000000000000000000000000000000000000000000000010103400000000000000000000000000000000000000000000000000000000001010350000000000000000000000000000000000000000000000000000000000101036000000000000000000000000000000000000000000000000000000000010103700000000000000000000000000000000000000000000000000000000001010380000000000000000000000000000000000000000000000000000000000101039000000000000000000000000000000000000000000000000000000000010103a000000000000000000000000000000000000000000000000000000000010103b000000000000000000000000000000000000000000000000000000000010103c000000000000000000000000000000000000000000000000000000000010103d000000000000000000000000000000000000000000000000000000000010103e000000000000000000000000000000000000000000000000000000000010103f4000000000000000000000000000000000000000000000000000000000001000010000000000000000000000000000000000000000000000000000000000101100000000000000000000000000000000000000000000000000000000000010110100000000000000000000000000000000000000000000000000000000001011020000000000000000000000000000000000000000000000000000000000101103000000000000000000000000000000000000000000000000000000000010110400000000000000000000000000000000000000000000000000000000001011050000000000000000000000000000000000000000000000000000000000101106000000000000000000000000000000000000000000000000000000000010110700000000000000000000000000000000000000000000000000000000001011080000000000000000000000000000000000000000000000000000000000101109000000000000000000000000000000000000000000000000000000000010110a000000000000000000000000000000000000000000000000000000000010110b000000000000000000000000000000000000000000000000000000000010110c000000000000000000000000000000000000000000000000000000000010110d000000000000000000000000000000000000000000000000000000000010110e000000000000000000000000000000000000000000000000000000000010110f0000000000000000000000000000000000000000000000000000000000101110000000000000000000000000000000000000000000000000000000000010111100000000000000000000000000000000000000000000000000000000001011120000000000000000000000000000000000000000000000000000000000101113000000000000000000000000000000000000000000000000000000000010111400000000000000000000000000000000000000000000000000000000001011150000000000000000000000000000000000000000000000000000000000101116000000000000000000000000000000000000000000000000000000000010111700000000000000000000000000000000000000000000000000000000001011180000000000000000000000000000000000000000000000000000000000101119000000000000000000000000000000000000000000000000000000000010111a000000000000000000000000000000000000000000000000000000000010111b000000000000000000000000000000000000000000000000000000000010111c000000000000000000000000000000000000000000000000000000000010111d000000000000000000000000000000000000000000000000000000000010111e000000000000000000000000000000000000000000000000000000000010111f0000000000000000000000000000000000000000000000000000000000101120000000000000000000000000000000000000000000000000000000000010112100000000000000000000000000000000000000000000000000000000001011220000000000000000000000000000000000000000000000000000000000101123000000000000000000000000000000000000000000000000000000000010112400000000000000000000000000000000000000000000000000000000001011250000000000000000000000000000000000000000000000000000000000101126000000000000000000000000000000000000000000000000000000000010112700000000000000000000000000000000000000000000000000000000001011280000000000000000000000000000000000000000000000000000000000101129000000000000000000000000000000000000000000000000000000000010112a000000000000000000000000000000000000000000000000000000000010112b000000000000000000000000000000000000000000000000000000000010112c000000000000000000000000000000000000000000000000000000000010112d000000000000000000000000000000000000000000000000000000000010112e000000000000000000000000000000000000000000000000000000000010112f0000000000000000000000000000000000000000000000000000000000101130000000000000000000000000000000000000000000000000000000000010113100000000000000000000000000000000000000000000000000000000001011320000000000000000000000000000000000000000000000000000000000101133000000000000000000000000000000000000000000000000000000000010113400000000000000000000000000000000000000000000000000000000001011350000000000000000000000000000000000000000000000000000000000101136000000000000000000000000000000000000000000000000000000000010113700000000000000000000000000000000000000000000000000000000001011380000000000000000000000000000000000000000000000000000000000101139000000000000000000000000000000000000000000000000000000000010113a000000000000000000000000000000000000000000000000000000000010113b000000000000000000000000000000000000000000000000000000000010113c000000000000000000000000000000000000000000000000000000000010113d000000000000000000000000000000000000000000000000000000000010113e080099145b6c0d32753835121f8b271186d01236948a4622ce78a98347fcfc98390085277a27c6acbd5ffc4c19cd65fc30056999e9bec36998f753132db0ff8e2300f3cf77a7261759ebd5f4149f6ad56746f4499cfcd4adf27a1d373f77da64d5009bc6e0e994a23cde8c95b90c1acc1b4a480c6599d1df2c3f9f6e76f3d1aff200d7a1c4a2700dacaaf07f1f0ff33837bdbabcf0b9ace17efabe0761708c4bb900dbeb8e96d14f21e57d5786b6d6ae7e5ddb1bb35935c0fb246d4bdbca62e02c00fbf12b5e0df6223b801088798e4e04d2a92ffe9a11639b7f0ce314e3412a8000d796e0724de03b796ba77069fcd6cf921e566f3aed15eb3e77258add74e9ff400000000000000000000000000000000000000000000000000000000000102000000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102001000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102002000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102003000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102004000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102005000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020060000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010200700000000000000000000000000000000000000000000000000000000001020110000000000000000000000000000000000000000000000000000000000102008000000000000000000000000000000000000000000000000000000000010201200000000000000000000000000000000000000000000000000000000001020090000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102016000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102017000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102011000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102012000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020160000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010201700000000000000000000000000000000000000000000000000000000001020210000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010202200000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102026000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102027000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102021000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102022000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020260000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010202700000000000000000000000000000000000000000000000000000000001020310000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010203200000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102036000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102037000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102031000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102032000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010203f00000000000000000000000000000000000000000000000000000000001020360000000000000000000000000000000000000000000000000000000000102040000000000000000000000000000000000000000000000000000000000010203700000000000000000000000000000000000000000000000000000000001020410000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010204200000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102043000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102044000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102045000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102046000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102047000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102048000000000000000000000000000000000000000000000000000000000010203f0000000000000000000000000000000000000000000000000000000000102049200000000000000000000000000000000000000000000000000000000000101700000000000000000000000000000000000000000000000000000000000010170100000000000000000000000000000000000000000000000000000000001017020000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010170100000000000000000000000000000000000000000000000000000000001017020000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017020000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010171500000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010171500000000000000000000000000000000000000000000000000000000001017160000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010171500000000000000000000000000000000000000000000000000000000001017160000000000000000000000000000000000000000000000000000000000101717000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010171500000000000000000000000000000000000000000000000000000000001017160000000000000000000000000000000000000000000000000000000000101717000000000000000000000000000000000000000000000000000000000010171800000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010171500000000000000000000000000000000000000000000000000000000001017160000000000000000000000000000000000000000000000000000000000101717000000000000000000000000000000000000000000000000000000000010171800000000000000000000000000000000000000000000000000000000001017190000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010172500000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010172500000000000000000000000000000000000000000000000000000000001017260000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010172500000000000000000000000000000000000000000000000000000000001017260000000000000000000000000000000000000000000000000000000000101727000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010172500000000000000000000000000000000000000000000000000000000001017260000000000000000000000000000000000000000000000000000000000101727000000000000000000000000000000000000000000000000000000000010172800000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010172500000000000000000000000000000000000000000000000000000000001017260000000000000000000000000000000000000000000000000000000000101727000000000000000000000000000000000000000000000000000000000010172800000000000000000000000000000000000000000000000000000000001017290000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010172e000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010172e000000000000000000000000000000000000000000000000000000000010172f000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010172e000000000000000000000000000000000000000000000000000000000010172f00000000000000000000000000000000000000000000000000000000001017300000", + "archive": "0x29434ef0cfab380ec6550743417be14a615c79dbd42d9f686b6d7e132ea39eab", + "blobInputs": "0x01013cc04197b27eed4f9c4b0ddcecf20c321e7ae7c6b56bf87481853596eb8b30256cc0b2b4eb66466839fcfcb21879cfbf61742458056f448916f07c01a9cf661bcdad6c60339b5085e8b351898b5f8c5cc39d20f7a2733b606dc093d0237e72b89eef4e3ac4157853f4431feef4251cfa745f59dd87b7815b38adbcda753b0ea53189caf88908a3aca8d94b0598287791e25a7190c968662b1410331a14d991af7c75436789a7550d417d3db114829036e6a93014c91bf7877d0ab0ff13feb1", + "blockNumber": 1, + "body": "0x000000040027d757a0a5c15c1b1cd6077a25511ad8697b11dd7e714bb8a8480e481ad222e00000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000041000000000000000000000000000000000000000000000000000000000000004100100000000000000000000000000000000000000000000000000000000000410020000000000000000000000000000000000000000000000000000000000041003000000000000000000000000000000000000000000000000000000000004100400000000000000000000000000000000000000000000000000000000000410050000000000000000000000000000000000000000000000000000000000041006000000000000000000000000000000000000000000000000000000000004100700000000000000000000000000000000000000000000000000000000000410080000000000000000000000000000000000000000000000000000000000041009000000000000000000000000000000000000000000000000000000000004100a000000000000000000000000000000000000000000000000000000000004100b000000000000000000000000000000000000000000000000000000000004100c000000000000000000000000000000000000000000000000000000000004100d000000000000000000000000000000000000000000000000000000000004100e000000000000000000000000000000000000000000000000000000000004100f0000000000000000000000000000000000000000000000000000000000041010000000000000000000000000000000000000000000000000000000000004101100000000000000000000000000000000000000000000000000000000000410120000000000000000000000000000000000000000000000000000000000041013000000000000000000000000000000000000000000000000000000000004101400000000000000000000000000000000000000000000000000000000000410150000000000000000000000000000000000000000000000000000000000041016000000000000000000000000000000000000000000000000000000000004101700000000000000000000000000000000000000000000000000000000000410180000000000000000000000000000000000000000000000000000000000041019000000000000000000000000000000000000000000000000000000000004101a000000000000000000000000000000000000000000000000000000000004101b000000000000000000000000000000000000000000000000000000000004101c000000000000000000000000000000000000000000000000000000000004101d000000000000000000000000000000000000000000000000000000000004101e000000000000000000000000000000000000000000000000000000000004101f0000000000000000000000000000000000000000000000000000000000041020000000000000000000000000000000000000000000000000000000000004102100000000000000000000000000000000000000000000000000000000000410220000000000000000000000000000000000000000000000000000000000041023000000000000000000000000000000000000000000000000000000000004102400000000000000000000000000000000000000000000000000000000000410250000000000000000000000000000000000000000000000000000000000041026000000000000000000000000000000000000000000000000000000000004102700000000000000000000000000000000000000000000000000000000000410280000000000000000000000000000000000000000000000000000000000041029000000000000000000000000000000000000000000000000000000000004102a000000000000000000000000000000000000000000000000000000000004102b000000000000000000000000000000000000000000000000000000000004102c000000000000000000000000000000000000000000000000000000000004102d000000000000000000000000000000000000000000000000000000000004102e000000000000000000000000000000000000000000000000000000000004102f0000000000000000000000000000000000000000000000000000000000041030000000000000000000000000000000000000000000000000000000000004103100000000000000000000000000000000000000000000000000000000000410320000000000000000000000000000000000000000000000000000000000041033000000000000000000000000000000000000000000000000000000000004103400000000000000000000000000000000000000000000000000000000000410350000000000000000000000000000000000000000000000000000000000041036000000000000000000000000000000000000000000000000000000000004103700000000000000000000000000000000000000000000000000000000000410380000000000000000000000000000000000000000000000000000000000041039000000000000000000000000000000000000000000000000000000000004103a000000000000000000000000000000000000000000000000000000000004103b000000000000000000000000000000000000000000000000000000000004103c000000000000000000000000000000000000000000000000000000000004103d000000000000000000000000000000000000000000000000000000000004103e000000000000000000000000000000000000000000000000000000000004103f4000000000000000000000000000000000000000000000000000000000000400010000000000000000000000000000000000000000000000000000000000041100000000000000000000000000000000000000000000000000000000000004110100000000000000000000000000000000000000000000000000000000000411020000000000000000000000000000000000000000000000000000000000041103000000000000000000000000000000000000000000000000000000000004110400000000000000000000000000000000000000000000000000000000000411050000000000000000000000000000000000000000000000000000000000041106000000000000000000000000000000000000000000000000000000000004110700000000000000000000000000000000000000000000000000000000000411080000000000000000000000000000000000000000000000000000000000041109000000000000000000000000000000000000000000000000000000000004110a000000000000000000000000000000000000000000000000000000000004110b000000000000000000000000000000000000000000000000000000000004110c000000000000000000000000000000000000000000000000000000000004110d000000000000000000000000000000000000000000000000000000000004110e000000000000000000000000000000000000000000000000000000000004110f0000000000000000000000000000000000000000000000000000000000041110000000000000000000000000000000000000000000000000000000000004111100000000000000000000000000000000000000000000000000000000000411120000000000000000000000000000000000000000000000000000000000041113000000000000000000000000000000000000000000000000000000000004111400000000000000000000000000000000000000000000000000000000000411150000000000000000000000000000000000000000000000000000000000041116000000000000000000000000000000000000000000000000000000000004111700000000000000000000000000000000000000000000000000000000000411180000000000000000000000000000000000000000000000000000000000041119000000000000000000000000000000000000000000000000000000000004111a000000000000000000000000000000000000000000000000000000000004111b000000000000000000000000000000000000000000000000000000000004111c000000000000000000000000000000000000000000000000000000000004111d000000000000000000000000000000000000000000000000000000000004111e000000000000000000000000000000000000000000000000000000000004111f0000000000000000000000000000000000000000000000000000000000041120000000000000000000000000000000000000000000000000000000000004112100000000000000000000000000000000000000000000000000000000000411220000000000000000000000000000000000000000000000000000000000041123000000000000000000000000000000000000000000000000000000000004112400000000000000000000000000000000000000000000000000000000000411250000000000000000000000000000000000000000000000000000000000041126000000000000000000000000000000000000000000000000000000000004112700000000000000000000000000000000000000000000000000000000000411280000000000000000000000000000000000000000000000000000000000041129000000000000000000000000000000000000000000000000000000000004112a000000000000000000000000000000000000000000000000000000000004112b000000000000000000000000000000000000000000000000000000000004112c000000000000000000000000000000000000000000000000000000000004112d000000000000000000000000000000000000000000000000000000000004112e000000000000000000000000000000000000000000000000000000000004112f0000000000000000000000000000000000000000000000000000000000041130000000000000000000000000000000000000000000000000000000000004113100000000000000000000000000000000000000000000000000000000000411320000000000000000000000000000000000000000000000000000000000041133000000000000000000000000000000000000000000000000000000000004113400000000000000000000000000000000000000000000000000000000000411350000000000000000000000000000000000000000000000000000000000041136000000000000000000000000000000000000000000000000000000000004113700000000000000000000000000000000000000000000000000000000000411380000000000000000000000000000000000000000000000000000000000041139000000000000000000000000000000000000000000000000000000000004113a000000000000000000000000000000000000000000000000000000000004113b000000000000000000000000000000000000000000000000000000000004113c000000000000000000000000000000000000000000000000000000000004113d000000000000000000000000000000000000000000000000000000000004113e0800a3820df1b54323b527a8a2f9030139f2306a78fa908e52809179f9d553238700c972a6c723fd5503a11cb0b55b4a963e24fecbaf68d0cd2489517b738f8830005d8752aa976aafd6bb2e72a371b28b40c7c6deca2e416e06f5ca87c0018c9b00c68aced1ccf720bae3eafafd26a9cdec65661df54057bda3ec7bb0a20d3a4b008031009cbb3ee6cd6c1cc124f664ec0e2c9e84cf8d1a9d75bb4097ead0621a002126e6c3c3f90cb63ba941e1d20ca4a54055bbf06f9a1d69a922714e30c6a30089ddab0381c4b8ff1927145233510cc320c72fd981c25cfb94546b184fc69d004e81fa6e1f1d06649229b6eb97ee9b717304b7bd9434b26c76d4bbb113a620400000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042001000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042002000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042003000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042004000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042005000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420060000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004200700000000000000000000000000000000000000000000000000000000000420110000000000000000000000000000000000000000000000000000000000042008000000000000000000000000000000000000000000000000000000000004201200000000000000000000000000000000000000000000000000000000000420090000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042016000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042017000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042011000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042012000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420160000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004201700000000000000000000000000000000000000000000000000000000000420210000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004202200000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042026000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042027000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042021000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042022000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420260000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004202700000000000000000000000000000000000000000000000000000000000420310000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004203200000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042036000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042037000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042031000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042032000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004203f00000000000000000000000000000000000000000000000000000000000420360000000000000000000000000000000000000000000000000000000000042040000000000000000000000000000000000000000000000000000000000004203700000000000000000000000000000000000000000000000000000000000420410000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004204200000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042043000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042044000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042045000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042046000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042047000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042048000000000000000000000000000000000000000000000000000000000004203f0000000000000000000000000000000000000000000000000000000000042049200000000000000000000000000000000000000000000000000000000000041700000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004171800000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004171800000000000000000000000000000000000000000000000000000000000417190000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004172800000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004172800000000000000000000000000000000000000000000000000000000000417290000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f00000000000000000000000000000000000000000000000000000000000417300000001637c8d53b44e71f52d93dc1931e0960d78a9602c4f602bc4a470ecc20eabf260000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000081000000000000000000000000000000000000000000000000000000000000008100100000000000000000000000000000000000000000000000000000000000810020000000000000000000000000000000000000000000000000000000000081003000000000000000000000000000000000000000000000000000000000008100400000000000000000000000000000000000000000000000000000000000810050000000000000000000000000000000000000000000000000000000000081006000000000000000000000000000000000000000000000000000000000008100700000000000000000000000000000000000000000000000000000000000810080000000000000000000000000000000000000000000000000000000000081009000000000000000000000000000000000000000000000000000000000008100a000000000000000000000000000000000000000000000000000000000008100b000000000000000000000000000000000000000000000000000000000008100c000000000000000000000000000000000000000000000000000000000008100d000000000000000000000000000000000000000000000000000000000008100e000000000000000000000000000000000000000000000000000000000008100f0000000000000000000000000000000000000000000000000000000000081010000000000000000000000000000000000000000000000000000000000008101100000000000000000000000000000000000000000000000000000000000810120000000000000000000000000000000000000000000000000000000000081013000000000000000000000000000000000000000000000000000000000008101400000000000000000000000000000000000000000000000000000000000810150000000000000000000000000000000000000000000000000000000000081016000000000000000000000000000000000000000000000000000000000008101700000000000000000000000000000000000000000000000000000000000810180000000000000000000000000000000000000000000000000000000000081019000000000000000000000000000000000000000000000000000000000008101a000000000000000000000000000000000000000000000000000000000008101b000000000000000000000000000000000000000000000000000000000008101c000000000000000000000000000000000000000000000000000000000008101d000000000000000000000000000000000000000000000000000000000008101e000000000000000000000000000000000000000000000000000000000008101f0000000000000000000000000000000000000000000000000000000000081020000000000000000000000000000000000000000000000000000000000008102100000000000000000000000000000000000000000000000000000000000810220000000000000000000000000000000000000000000000000000000000081023000000000000000000000000000000000000000000000000000000000008102400000000000000000000000000000000000000000000000000000000000810250000000000000000000000000000000000000000000000000000000000081026000000000000000000000000000000000000000000000000000000000008102700000000000000000000000000000000000000000000000000000000000810280000000000000000000000000000000000000000000000000000000000081029000000000000000000000000000000000000000000000000000000000008102a000000000000000000000000000000000000000000000000000000000008102b000000000000000000000000000000000000000000000000000000000008102c000000000000000000000000000000000000000000000000000000000008102d000000000000000000000000000000000000000000000000000000000008102e000000000000000000000000000000000000000000000000000000000008102f0000000000000000000000000000000000000000000000000000000000081030000000000000000000000000000000000000000000000000000000000008103100000000000000000000000000000000000000000000000000000000000810320000000000000000000000000000000000000000000000000000000000081033000000000000000000000000000000000000000000000000000000000008103400000000000000000000000000000000000000000000000000000000000810350000000000000000000000000000000000000000000000000000000000081036000000000000000000000000000000000000000000000000000000000008103700000000000000000000000000000000000000000000000000000000000810380000000000000000000000000000000000000000000000000000000000081039000000000000000000000000000000000000000000000000000000000008103a000000000000000000000000000000000000000000000000000000000008103b000000000000000000000000000000000000000000000000000000000008103c000000000000000000000000000000000000000000000000000000000008103d000000000000000000000000000000000000000000000000000000000008103e000000000000000000000000000000000000000000000000000000000008103f4000000000000000000000000000000000000000000000000000000000000800010000000000000000000000000000000000000000000000000000000000081100000000000000000000000000000000000000000000000000000000000008110100000000000000000000000000000000000000000000000000000000000811020000000000000000000000000000000000000000000000000000000000081103000000000000000000000000000000000000000000000000000000000008110400000000000000000000000000000000000000000000000000000000000811050000000000000000000000000000000000000000000000000000000000081106000000000000000000000000000000000000000000000000000000000008110700000000000000000000000000000000000000000000000000000000000811080000000000000000000000000000000000000000000000000000000000081109000000000000000000000000000000000000000000000000000000000008110a000000000000000000000000000000000000000000000000000000000008110b000000000000000000000000000000000000000000000000000000000008110c000000000000000000000000000000000000000000000000000000000008110d000000000000000000000000000000000000000000000000000000000008110e000000000000000000000000000000000000000000000000000000000008110f0000000000000000000000000000000000000000000000000000000000081110000000000000000000000000000000000000000000000000000000000008111100000000000000000000000000000000000000000000000000000000000811120000000000000000000000000000000000000000000000000000000000081113000000000000000000000000000000000000000000000000000000000008111400000000000000000000000000000000000000000000000000000000000811150000000000000000000000000000000000000000000000000000000000081116000000000000000000000000000000000000000000000000000000000008111700000000000000000000000000000000000000000000000000000000000811180000000000000000000000000000000000000000000000000000000000081119000000000000000000000000000000000000000000000000000000000008111a000000000000000000000000000000000000000000000000000000000008111b000000000000000000000000000000000000000000000000000000000008111c000000000000000000000000000000000000000000000000000000000008111d000000000000000000000000000000000000000000000000000000000008111e000000000000000000000000000000000000000000000000000000000008111f0000000000000000000000000000000000000000000000000000000000081120000000000000000000000000000000000000000000000000000000000008112100000000000000000000000000000000000000000000000000000000000811220000000000000000000000000000000000000000000000000000000000081123000000000000000000000000000000000000000000000000000000000008112400000000000000000000000000000000000000000000000000000000000811250000000000000000000000000000000000000000000000000000000000081126000000000000000000000000000000000000000000000000000000000008112700000000000000000000000000000000000000000000000000000000000811280000000000000000000000000000000000000000000000000000000000081129000000000000000000000000000000000000000000000000000000000008112a000000000000000000000000000000000000000000000000000000000008112b000000000000000000000000000000000000000000000000000000000008112c000000000000000000000000000000000000000000000000000000000008112d000000000000000000000000000000000000000000000000000000000008112e000000000000000000000000000000000000000000000000000000000008112f0000000000000000000000000000000000000000000000000000000000081130000000000000000000000000000000000000000000000000000000000008113100000000000000000000000000000000000000000000000000000000000811320000000000000000000000000000000000000000000000000000000000081133000000000000000000000000000000000000000000000000000000000008113400000000000000000000000000000000000000000000000000000000000811350000000000000000000000000000000000000000000000000000000000081136000000000000000000000000000000000000000000000000000000000008113700000000000000000000000000000000000000000000000000000000000811380000000000000000000000000000000000000000000000000000000000081139000000000000000000000000000000000000000000000000000000000008113a000000000000000000000000000000000000000000000000000000000008113b000000000000000000000000000000000000000000000000000000000008113c000000000000000000000000000000000000000000000000000000000008113d000000000000000000000000000000000000000000000000000000000008113e08000fded0bbf3892bc212c3e751e820d2f277daba4de28fd5e39e922bb59da7fb0089acfd09b58d60046aa1e586e06fb0f8c6c4dbac02b35291475149fbe061a200b38b6702059f708f91e3cf0a0c7fbf018be3a935620109a1695df41e60bbde00a3afc3de051ec11aeb590d3bd4483e071b6df44152355ebcf3b176f87024b2009c40da473014ae317c6eb97af046f3b31ac83584eb26aa82f394f97ee9fb55002aba26194958593ccd48638b8280c43bb1364f3764d9b06556502d565341e4004027948f6eafbbc8dfd7acdb0b7060417eb1dd1f72e8ef9bc639a8e03232a8002834a34ae7d5fcd9bea54f7745d0c938a56d493ca0ec7fa6264285515a7ada400000000000000000000000000000000000000000000000000000000000082000000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082001000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082002000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082003000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082004000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082005000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820060000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008200700000000000000000000000000000000000000000000000000000000000820110000000000000000000000000000000000000000000000000000000000082008000000000000000000000000000000000000000000000000000000000008201200000000000000000000000000000000000000000000000000000000000820090000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082016000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082017000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082011000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082012000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820160000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008201700000000000000000000000000000000000000000000000000000000000820210000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008202200000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082026000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082027000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082021000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082022000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820260000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008202700000000000000000000000000000000000000000000000000000000000820310000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008203200000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082036000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082037000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082031000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082032000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008203e0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008203f00000000000000000000000000000000000000000000000000000000000820360000000000000000000000000000000000000000000000000000000000082040000000000000000000000000000000000000000000000000000000000008203700000000000000000000000000000000000000000000000000000000000820410000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008204200000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082043000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082044000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082045000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082046000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082047000000000000000000000000000000000000000000000000000000000008203e0000000000000000000000000000000000000000000000000000000000082048000000000000000000000000000000000000000000000000000000000008203f0000000000000000000000000000000000000000000000000000000000082049200000000000000000000000000000000000000000000000000000000000081700000000000000000000000000000000000000000000000000000000000008170100000000000000000000000000000000000000000000000000000000000817020000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008170100000000000000000000000000000000000000000000000000000000000817020000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817020000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008171500000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008171500000000000000000000000000000000000000000000000000000000000817160000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008171500000000000000000000000000000000000000000000000000000000000817160000000000000000000000000000000000000000000000000000000000081717000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008171500000000000000000000000000000000000000000000000000000000000817160000000000000000000000000000000000000000000000000000000000081717000000000000000000000000000000000000000000000000000000000008171800000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008171500000000000000000000000000000000000000000000000000000000000817160000000000000000000000000000000000000000000000000000000000081717000000000000000000000000000000000000000000000000000000000008171800000000000000000000000000000000000000000000000000000000000817190000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008172500000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008172500000000000000000000000000000000000000000000000000000000000817260000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008172500000000000000000000000000000000000000000000000000000000000817260000000000000000000000000000000000000000000000000000000000081727000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008172500000000000000000000000000000000000000000000000000000000000817260000000000000000000000000000000000000000000000000000000000081727000000000000000000000000000000000000000000000000000000000008172800000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008172500000000000000000000000000000000000000000000000000000000000817260000000000000000000000000000000000000000000000000000000000081727000000000000000000000000000000000000000000000000000000000008172800000000000000000000000000000000000000000000000000000000000817290000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008172e000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008172e000000000000000000000000000000000000000000000000000000000008172f000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008172e000000000000000000000000000000000000000000000000000000000008172f00000000000000000000000000000000000000000000000000000000000817300000001cd7ee091e8fcc8dd1129ece780b3d7f3a111000df354fba1b6168452929ceaa00000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000c100000000000000000000000000000000000000000000000000000000000000c100100000000000000000000000000000000000000000000000000000000000c100200000000000000000000000000000000000000000000000000000000000c100300000000000000000000000000000000000000000000000000000000000c100400000000000000000000000000000000000000000000000000000000000c100500000000000000000000000000000000000000000000000000000000000c100600000000000000000000000000000000000000000000000000000000000c100700000000000000000000000000000000000000000000000000000000000c100800000000000000000000000000000000000000000000000000000000000c100900000000000000000000000000000000000000000000000000000000000c100a00000000000000000000000000000000000000000000000000000000000c100b00000000000000000000000000000000000000000000000000000000000c100c00000000000000000000000000000000000000000000000000000000000c100d00000000000000000000000000000000000000000000000000000000000c100e00000000000000000000000000000000000000000000000000000000000c100f00000000000000000000000000000000000000000000000000000000000c101000000000000000000000000000000000000000000000000000000000000c101100000000000000000000000000000000000000000000000000000000000c101200000000000000000000000000000000000000000000000000000000000c101300000000000000000000000000000000000000000000000000000000000c101400000000000000000000000000000000000000000000000000000000000c101500000000000000000000000000000000000000000000000000000000000c101600000000000000000000000000000000000000000000000000000000000c101700000000000000000000000000000000000000000000000000000000000c101800000000000000000000000000000000000000000000000000000000000c101900000000000000000000000000000000000000000000000000000000000c101a00000000000000000000000000000000000000000000000000000000000c101b00000000000000000000000000000000000000000000000000000000000c101c00000000000000000000000000000000000000000000000000000000000c101d00000000000000000000000000000000000000000000000000000000000c101e00000000000000000000000000000000000000000000000000000000000c101f00000000000000000000000000000000000000000000000000000000000c102000000000000000000000000000000000000000000000000000000000000c102100000000000000000000000000000000000000000000000000000000000c102200000000000000000000000000000000000000000000000000000000000c102300000000000000000000000000000000000000000000000000000000000c102400000000000000000000000000000000000000000000000000000000000c102500000000000000000000000000000000000000000000000000000000000c102600000000000000000000000000000000000000000000000000000000000c102700000000000000000000000000000000000000000000000000000000000c102800000000000000000000000000000000000000000000000000000000000c102900000000000000000000000000000000000000000000000000000000000c102a00000000000000000000000000000000000000000000000000000000000c102b00000000000000000000000000000000000000000000000000000000000c102c00000000000000000000000000000000000000000000000000000000000c102d00000000000000000000000000000000000000000000000000000000000c102e00000000000000000000000000000000000000000000000000000000000c102f00000000000000000000000000000000000000000000000000000000000c103000000000000000000000000000000000000000000000000000000000000c103100000000000000000000000000000000000000000000000000000000000c103200000000000000000000000000000000000000000000000000000000000c103300000000000000000000000000000000000000000000000000000000000c103400000000000000000000000000000000000000000000000000000000000c103500000000000000000000000000000000000000000000000000000000000c103600000000000000000000000000000000000000000000000000000000000c103700000000000000000000000000000000000000000000000000000000000c103800000000000000000000000000000000000000000000000000000000000c103900000000000000000000000000000000000000000000000000000000000c103a00000000000000000000000000000000000000000000000000000000000c103b00000000000000000000000000000000000000000000000000000000000c103c00000000000000000000000000000000000000000000000000000000000c103d00000000000000000000000000000000000000000000000000000000000c103e00000000000000000000000000000000000000000000000000000000000c103f4000000000000000000000000000000000000000000000000000000000000c000100000000000000000000000000000000000000000000000000000000000c110000000000000000000000000000000000000000000000000000000000000c110100000000000000000000000000000000000000000000000000000000000c110200000000000000000000000000000000000000000000000000000000000c110300000000000000000000000000000000000000000000000000000000000c110400000000000000000000000000000000000000000000000000000000000c110500000000000000000000000000000000000000000000000000000000000c110600000000000000000000000000000000000000000000000000000000000c110700000000000000000000000000000000000000000000000000000000000c110800000000000000000000000000000000000000000000000000000000000c110900000000000000000000000000000000000000000000000000000000000c110a00000000000000000000000000000000000000000000000000000000000c110b00000000000000000000000000000000000000000000000000000000000c110c00000000000000000000000000000000000000000000000000000000000c110d00000000000000000000000000000000000000000000000000000000000c110e00000000000000000000000000000000000000000000000000000000000c110f00000000000000000000000000000000000000000000000000000000000c111000000000000000000000000000000000000000000000000000000000000c111100000000000000000000000000000000000000000000000000000000000c111200000000000000000000000000000000000000000000000000000000000c111300000000000000000000000000000000000000000000000000000000000c111400000000000000000000000000000000000000000000000000000000000c111500000000000000000000000000000000000000000000000000000000000c111600000000000000000000000000000000000000000000000000000000000c111700000000000000000000000000000000000000000000000000000000000c111800000000000000000000000000000000000000000000000000000000000c111900000000000000000000000000000000000000000000000000000000000c111a00000000000000000000000000000000000000000000000000000000000c111b00000000000000000000000000000000000000000000000000000000000c111c00000000000000000000000000000000000000000000000000000000000c111d00000000000000000000000000000000000000000000000000000000000c111e00000000000000000000000000000000000000000000000000000000000c111f00000000000000000000000000000000000000000000000000000000000c112000000000000000000000000000000000000000000000000000000000000c112100000000000000000000000000000000000000000000000000000000000c112200000000000000000000000000000000000000000000000000000000000c112300000000000000000000000000000000000000000000000000000000000c112400000000000000000000000000000000000000000000000000000000000c112500000000000000000000000000000000000000000000000000000000000c112600000000000000000000000000000000000000000000000000000000000c112700000000000000000000000000000000000000000000000000000000000c112800000000000000000000000000000000000000000000000000000000000c112900000000000000000000000000000000000000000000000000000000000c112a00000000000000000000000000000000000000000000000000000000000c112b00000000000000000000000000000000000000000000000000000000000c112c00000000000000000000000000000000000000000000000000000000000c112d00000000000000000000000000000000000000000000000000000000000c112e00000000000000000000000000000000000000000000000000000000000c112f00000000000000000000000000000000000000000000000000000000000c113000000000000000000000000000000000000000000000000000000000000c113100000000000000000000000000000000000000000000000000000000000c113200000000000000000000000000000000000000000000000000000000000c113300000000000000000000000000000000000000000000000000000000000c113400000000000000000000000000000000000000000000000000000000000c113500000000000000000000000000000000000000000000000000000000000c113600000000000000000000000000000000000000000000000000000000000c113700000000000000000000000000000000000000000000000000000000000c113800000000000000000000000000000000000000000000000000000000000c113900000000000000000000000000000000000000000000000000000000000c113a00000000000000000000000000000000000000000000000000000000000c113b00000000000000000000000000000000000000000000000000000000000c113c00000000000000000000000000000000000000000000000000000000000c113d00000000000000000000000000000000000000000000000000000000000c113e08003108dc6da01d26c3c5daf207d3a8150f8d38013524219b343d3be4fa061ea8006a3050a704f363ccf33f1e3036e04affcac799ccdb2a427ff5e1c2070d83cf00bdcc07416538205ace5b73916bd8696a0b201e964d1f8501f0ca10a26d923800c25785bcf7dc09d3982de931b7514a8b107b2d240b80e5e5affa621f3480b800d49172afa208e434a9e0ad27086b34935831ccd35899fa3d258c4781512b08005e594cbab7f7c977306296fba1b0ffc2a1a05276bf3761a3500959cb7dce1b0079c1e60289bd30be2470da1437a4c1b6570a0ef168e7b9226f1392b4a5a9c300d974b419028489be6d93269136462f8ee560e4ee2f740b80bc1507dac1cf654000000000000000000000000000000000000000000000000000000000000c200000000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c200100000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c200200000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c200300000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c200400000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c200500000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c200600000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c200700000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c200800000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c200900000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c203f00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c204000000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c204100000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c204200000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c204300000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c204400000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c204500000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c204600000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c204700000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c204800000000000000000000000000000000000000000000000000000000000c203f00000000000000000000000000000000000000000000000000000000000c20492000000000000000000000000000000000000000000000000000000000000c170000000000000000000000000000000000000000000000000000000000000c170100000000000000000000000000000000000000000000000000000000000c170200000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c170100000000000000000000000000000000000000000000000000000000000c170200000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c170200000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c172e00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c172e00000000000000000000000000000000000000000000000000000000000c172f00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c172e00000000000000000000000000000000000000000000000000000000000c172f00000000000000000000000000000000000000000000000000000000000c17300000000b480c07336f6d1af80b26c86724f7195ab5d2d812ba2a31cfbcd256a24422100000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000000000000000000000000000010100100000000000000000000000000000000000000000000000000000000001010020000000000000000000000000000000000000000000000000000000000101003000000000000000000000000000000000000000000000000000000000010100400000000000000000000000000000000000000000000000000000000001010050000000000000000000000000000000000000000000000000000000000101006000000000000000000000000000000000000000000000000000000000010100700000000000000000000000000000000000000000000000000000000001010080000000000000000000000000000000000000000000000000000000000101009000000000000000000000000000000000000000000000000000000000010100a000000000000000000000000000000000000000000000000000000000010100b000000000000000000000000000000000000000000000000000000000010100c000000000000000000000000000000000000000000000000000000000010100d000000000000000000000000000000000000000000000000000000000010100e000000000000000000000000000000000000000000000000000000000010100f0000000000000000000000000000000000000000000000000000000000101010000000000000000000000000000000000000000000000000000000000010101100000000000000000000000000000000000000000000000000000000001010120000000000000000000000000000000000000000000000000000000000101013000000000000000000000000000000000000000000000000000000000010101400000000000000000000000000000000000000000000000000000000001010150000000000000000000000000000000000000000000000000000000000101016000000000000000000000000000000000000000000000000000000000010101700000000000000000000000000000000000000000000000000000000001010180000000000000000000000000000000000000000000000000000000000101019000000000000000000000000000000000000000000000000000000000010101a000000000000000000000000000000000000000000000000000000000010101b000000000000000000000000000000000000000000000000000000000010101c000000000000000000000000000000000000000000000000000000000010101d000000000000000000000000000000000000000000000000000000000010101e000000000000000000000000000000000000000000000000000000000010101f0000000000000000000000000000000000000000000000000000000000101020000000000000000000000000000000000000000000000000000000000010102100000000000000000000000000000000000000000000000000000000001010220000000000000000000000000000000000000000000000000000000000101023000000000000000000000000000000000000000000000000000000000010102400000000000000000000000000000000000000000000000000000000001010250000000000000000000000000000000000000000000000000000000000101026000000000000000000000000000000000000000000000000000000000010102700000000000000000000000000000000000000000000000000000000001010280000000000000000000000000000000000000000000000000000000000101029000000000000000000000000000000000000000000000000000000000010102a000000000000000000000000000000000000000000000000000000000010102b000000000000000000000000000000000000000000000000000000000010102c000000000000000000000000000000000000000000000000000000000010102d000000000000000000000000000000000000000000000000000000000010102e000000000000000000000000000000000000000000000000000000000010102f0000000000000000000000000000000000000000000000000000000000101030000000000000000000000000000000000000000000000000000000000010103100000000000000000000000000000000000000000000000000000000001010320000000000000000000000000000000000000000000000000000000000101033000000000000000000000000000000000000000000000000000000000010103400000000000000000000000000000000000000000000000000000000001010350000000000000000000000000000000000000000000000000000000000101036000000000000000000000000000000000000000000000000000000000010103700000000000000000000000000000000000000000000000000000000001010380000000000000000000000000000000000000000000000000000000000101039000000000000000000000000000000000000000000000000000000000010103a000000000000000000000000000000000000000000000000000000000010103b000000000000000000000000000000000000000000000000000000000010103c000000000000000000000000000000000000000000000000000000000010103d000000000000000000000000000000000000000000000000000000000010103e000000000000000000000000000000000000000000000000000000000010103f4000000000000000000000000000000000000000000000000000000000001000010000000000000000000000000000000000000000000000000000000000101100000000000000000000000000000000000000000000000000000000000010110100000000000000000000000000000000000000000000000000000000001011020000000000000000000000000000000000000000000000000000000000101103000000000000000000000000000000000000000000000000000000000010110400000000000000000000000000000000000000000000000000000000001011050000000000000000000000000000000000000000000000000000000000101106000000000000000000000000000000000000000000000000000000000010110700000000000000000000000000000000000000000000000000000000001011080000000000000000000000000000000000000000000000000000000000101109000000000000000000000000000000000000000000000000000000000010110a000000000000000000000000000000000000000000000000000000000010110b000000000000000000000000000000000000000000000000000000000010110c000000000000000000000000000000000000000000000000000000000010110d000000000000000000000000000000000000000000000000000000000010110e000000000000000000000000000000000000000000000000000000000010110f0000000000000000000000000000000000000000000000000000000000101110000000000000000000000000000000000000000000000000000000000010111100000000000000000000000000000000000000000000000000000000001011120000000000000000000000000000000000000000000000000000000000101113000000000000000000000000000000000000000000000000000000000010111400000000000000000000000000000000000000000000000000000000001011150000000000000000000000000000000000000000000000000000000000101116000000000000000000000000000000000000000000000000000000000010111700000000000000000000000000000000000000000000000000000000001011180000000000000000000000000000000000000000000000000000000000101119000000000000000000000000000000000000000000000000000000000010111a000000000000000000000000000000000000000000000000000000000010111b000000000000000000000000000000000000000000000000000000000010111c000000000000000000000000000000000000000000000000000000000010111d000000000000000000000000000000000000000000000000000000000010111e000000000000000000000000000000000000000000000000000000000010111f0000000000000000000000000000000000000000000000000000000000101120000000000000000000000000000000000000000000000000000000000010112100000000000000000000000000000000000000000000000000000000001011220000000000000000000000000000000000000000000000000000000000101123000000000000000000000000000000000000000000000000000000000010112400000000000000000000000000000000000000000000000000000000001011250000000000000000000000000000000000000000000000000000000000101126000000000000000000000000000000000000000000000000000000000010112700000000000000000000000000000000000000000000000000000000001011280000000000000000000000000000000000000000000000000000000000101129000000000000000000000000000000000000000000000000000000000010112a000000000000000000000000000000000000000000000000000000000010112b000000000000000000000000000000000000000000000000000000000010112c000000000000000000000000000000000000000000000000000000000010112d000000000000000000000000000000000000000000000000000000000010112e000000000000000000000000000000000000000000000000000000000010112f0000000000000000000000000000000000000000000000000000000000101130000000000000000000000000000000000000000000000000000000000010113100000000000000000000000000000000000000000000000000000000001011320000000000000000000000000000000000000000000000000000000000101133000000000000000000000000000000000000000000000000000000000010113400000000000000000000000000000000000000000000000000000000001011350000000000000000000000000000000000000000000000000000000000101136000000000000000000000000000000000000000000000000000000000010113700000000000000000000000000000000000000000000000000000000001011380000000000000000000000000000000000000000000000000000000000101139000000000000000000000000000000000000000000000000000000000010113a000000000000000000000000000000000000000000000000000000000010113b000000000000000000000000000000000000000000000000000000000010113c000000000000000000000000000000000000000000000000000000000010113d000000000000000000000000000000000000000000000000000000000010113e08007b507b24707411f815dd6457e2a0fd8f16d06df3d9d5bf146f5574cb37a814000e383f07cf89c6c4fb54cb509b90da1a96b80c9b76d532e9e9b671039154b9007b327de1a255dc7523de28f28e6d5cc5dd2ca55010eacf796572c31b73489c007dde47ed37f051e915347ac47724bfa49a5a2d59458b6cf70aabdae1a0bcc500c4957cc7fe55e39251b56661636d4242d4f94a55aea349f17753672a6648660082a36b6b69966fb7cfc0c27bf4dc48f1aa7535d5795e5aabcba207b1738e4700b6ca91c66625650d440d717502681d05e8d7368602319f7bd657e33b27428700965de06c0b060268387d90beea050a05cc1c04c476b7d86e29a9a6fe90757b400000000000000000000000000000000000000000000000000000000000102000000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102001000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102002000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102003000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102004000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102005000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020060000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010200700000000000000000000000000000000000000000000000000000000001020110000000000000000000000000000000000000000000000000000000000102008000000000000000000000000000000000000000000000000000000000010201200000000000000000000000000000000000000000000000000000000001020090000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102016000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102017000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102011000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102012000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020160000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010201700000000000000000000000000000000000000000000000000000000001020210000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010202200000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102026000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102027000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102021000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102022000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020260000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010202700000000000000000000000000000000000000000000000000000000001020310000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010203200000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102036000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102037000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102031000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102032000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010203f00000000000000000000000000000000000000000000000000000000001020360000000000000000000000000000000000000000000000000000000000102040000000000000000000000000000000000000000000000000000000000010203700000000000000000000000000000000000000000000000000000000001020410000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010204200000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102043000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102044000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102045000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102046000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102047000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102048000000000000000000000000000000000000000000000000000000000010203f0000000000000000000000000000000000000000000000000000000000102049200000000000000000000000000000000000000000000000000000000000101700000000000000000000000000000000000000000000000000000000000010170100000000000000000000000000000000000000000000000000000000001017020000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010170100000000000000000000000000000000000000000000000000000000001017020000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017020000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010171500000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010171500000000000000000000000000000000000000000000000000000000001017160000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010171500000000000000000000000000000000000000000000000000000000001017160000000000000000000000000000000000000000000000000000000000101717000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010171500000000000000000000000000000000000000000000000000000000001017160000000000000000000000000000000000000000000000000000000000101717000000000000000000000000000000000000000000000000000000000010171800000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010171500000000000000000000000000000000000000000000000000000000001017160000000000000000000000000000000000000000000000000000000000101717000000000000000000000000000000000000000000000000000000000010171800000000000000000000000000000000000000000000000000000000001017190000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010172500000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010172500000000000000000000000000000000000000000000000000000000001017260000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010172500000000000000000000000000000000000000000000000000000000001017260000000000000000000000000000000000000000000000000000000000101727000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010172500000000000000000000000000000000000000000000000000000000001017260000000000000000000000000000000000000000000000000000000000101727000000000000000000000000000000000000000000000000000000000010172800000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010172500000000000000000000000000000000000000000000000000000000001017260000000000000000000000000000000000000000000000000000000000101727000000000000000000000000000000000000000000000000000000000010172800000000000000000000000000000000000000000000000000000000001017290000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010172e000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010172e000000000000000000000000000000000000000000000000000000000010172f000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010172e000000000000000000000000000000000000000000000000000000000010172f00000000000000000000000000000000000000000000000000000000001017300000", "decodedHeader": { + "lastArchiveRoot": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae", "contentCommitment": { - "blobsHash": "0x001710ef5972afe6e206225f18e63f9764829144c34e8b9ebfc23de47dc52c3e", + "blobsHash": "0x006f27821fa9e72ddaef99fb2294dd0e498d057a2c22eca7835a470966d1d30f", "inHash": "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c", - "outHash": "0x000ca4a4610ad22c97c9161cedcf01faa3619f1b85457f1627d09627b71903a6", + "outHash": "0x00c90fe023302fee380d65664d693c8f213e54593d22f7ba6d4ae902d1818885", "numTxs": 4 }, - "globalVariables": { - "blockNumber": 1, - "slotNumber": "0x000000000000000000000000000000000000000000000000000000000000001b", - "chainId": 31337, - "timestamp": 1736365060, - "version": 1, - "coinbase": "0xd000439d68f416a72188f6c91df9835e23d1619d", - "feeRecipient": "0x27f4b7fbf6f8db148d464396089d97cb994ababc3e1923d24b1e6076b0431b00", - "gasFees": { - "feePerDaGas": 0, - "feePerL2Gas": 1020 - } + "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000019", + "timestamp": 1744912658, + "coinbase": "0xc790caa781719be6813a0dc5c985b35ed0e27de9", + "feeRecipient": "0x28433ab079835b0b1e66665b64339dbcdb71015570137a25a613907754608a1e", + "gasFees": { + "feePerDaGas": 0, + "feePerL2Gas": 1020 }, - "totalFees": "0x0000000000000000000000000000000000000000000000000000000000000000", - "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000", - "lastArchive": { - "nextAvailableLeafIndex": 1, - "root": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae" - }, - "stateReference": { - "l1ToL2MessageTree": { - "nextAvailableLeafIndex": 16, - "root": "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" - }, - "partialStateReference": { - "noteHashTree": { - "nextAvailableLeafIndex": 256, - "root": "0x00553ea03210e12bf95ed15f0105108f39db784d318cfe9b52cba413618711ce" - }, - "nullifierTree": { - "nextAvailableLeafIndex": 384, - "root": "0x0627376bc9d9804095498d2fe262c2dceeb5ecfc696966496eaee65f1798fed5" - }, - "publicDataTree": { - "nextAvailableLeafIndex": 384, - "root": "0x2ded0a11981f5a48076e10c1cf9c4d0676488ed8eab842d8864facb270a02bae" - } - } - } + "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000" }, - "header": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae000000010000000000000000000000000000000000000000000000000000000000000004001710ef5972afe6e206225f18e63f9764829144c34e8b9ebfc23de47dc52c3e00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c000ca4a4610ad22c97c9161cedcf01faa3619f1b85457f1627d09627b71903a62e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d60000001000553ea03210e12bf95ed15f0105108f39db784d318cfe9b52cba413618711ce000001000627376bc9d9804095498d2fe262c2dceeb5ecfc696966496eaee65f1798fed5000001802ded0a11981f5a48076e10c1cf9c4d0676488ed8eab842d8864facb270a02bae000001800000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001b00000000000000000000000000000000000000000000000000000000677ed404d000439d68f416a72188f6c91df9835e23d1619d27f4b7fbf6f8db148d464396089d97cb994ababc3e1923d24b1e6076b0431b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x00f49a17357aca8d4daee46a18d9ea65d4fdcc77060fcd86bbd3f8b007e7baa8", - "blobInputs": "0x0101790d1572a5d851a4cceb4cff4f4ba5fb61408a534c888934360a45fc0e3a1401b4c42e36e09814cad53c703f91c130628e44c7371ec2aa2a1715e26c5f850127aba05f8e5daf4233628e74eedbc03169e05d016d457d9da9de21827686e3af9495352ad63141535bd3f4c2037b5baf0c5d8a5f8f05336b110d714e17282004e99cdd47f0ea63180d892578595339d6a50ef46c6447c438311fb7afd9556323905589f07ea2f1231f66d156bc2e271850ec3450360a38b3d21f042439038b4b", + "header": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae0000000000000000000000000000000000000000000000000000000000000004006f27821fa9e72ddaef99fb2294dd0e498d057a2c22eca7835a470966d1d30f00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00c90fe023302fee380d65664d693c8f213e54593d22f7ba6d4ae902d181888500000000000000000000000000000000000000000000000000000000000000190000000068014112c790caa781719be6813a0dc5c985b35ed0e27de928433ab079835b0b1e66665b64339dbcdb71015570137a25a613907754608a1e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fc0000000000000000000000000000000000000000000000000000000000000000", "numTxs": 4 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/mixed_block_2.json b/l1-contracts/test/fixtures/mixed_block_2.json index c2e4daf0c4a8..b766e8d48c51 100644 --- a/l1-contracts/test/fixtures/mixed_block_2.json +++ b/l1-contracts/test/fixtures/mixed_block_2.json @@ -23,93 +23,64 @@ }, "messages": { "l2ToL1Messages": [ - "0x005c015113cb57d67dd6c0febd596819ac0298b6a23fc80aba17d445d540059a", - "0x00f20b7d1308051fe7b68031a7c336b0b4b56738928b6510133aff1b818d5a9a", - "0x0063eec1883a4f95f4933f9275e850d84b3d035f5061ed986c437a07331fd30e", - "0x00d3a32d6bbc4fd843686fd0c5e118a73b847529977dca5b9e0e81f6604f22ca", - "0x00c2f4f5133d9194d41e853e5e951e16690babce8461f25342c0bad20f2aa1e3", - "0x000a6bf4739e7eb387913d955dc2e8f14f8cce27696b9d2e128b6acefafb80ee", - "0x005763f7e0648f958b559677622a648f318fc79ebc0cb539170d49c26456e692", - "0x00302e2b8a92cda941e9af8761b89899a58a587656d9710594e1d865b1652299", - "0x00f872eb9653f03af10f331da1361fa1524d3cd958cb72dacea1d424f19df3af", - "0x00ffc548a17cd6ba1f2d228f30e4ddb19ecc46ad3b609977d52bb0f49e120641", - "0x0032f8058bd779c520eabae2743b02ec4f71670428506fcceb2d4b69f26fb118", - "0x00c0283e15fbf74ffa4eafb984030394f3c2ea6733cc0eacb0431a9475eff28f", - "0x00b7f55314bfd9d441c1c624e241908228fe4da3d3a0a7fbd56814e1c8cd5d3e", - "0x00f430f33a786675271736fd728c7bf7428b8c24ac948d7faf76ddb8783a496c", - "0x0048fc235ead8d4b9d44929662a6384074fc4e5076bec5b7deb34f6123936843", - "0x00fd9b61cb1ad9b4b28f58399906e73933e3cccee8fc98a393f0eedb95b13ee6", - "0x006838aa99533bea0d4204cad17cb3c147e99c2f9089e54a4289d54733eeada2", - "0x002ab314bd11ace2494a3fb0970d276da39f0fe7da19c9a2438b9c7c334d3247", - "0x0071703d79d8425a7eca52006df6a8f9728508a83639e3e1c2ebae2b853a087c", - "0x00c9501ac04a78ac5413c9131b08708064ed2c2515b8893f12c2d1cda15a44f1", - "0x00a0955f93e109778d26f9e5b0d46e45c539e59b0941517bfa888eb2d7d2d8a6", - "0x005adc3be9406cc5f102c6adb44746e8529a256e2396353a8659344cc3e914c4", - "0x007a5fe572cf6af804f472dabf095c5eb6b30efc5fd627ad3245a8ef0f3f578c", - "0x003dcaa91dfc9fdad7ba8da68a48fc662dfc0a995cbb0c1bc62099c8257d240d", - "0x00e9805e8a4faa87fc419af08a6d956f18976c46ea694bbd4cf6946e6d020332", - "0x00e0925a6b172b4b01bb76eb1d3f7dd2ced118bca70d223a6d61afa1b75915ae", - "0x00383590492d2f99a0283d1de57015b4b6b0759a8023af2c68fb4929dee2f303", - "0x007ed57100dd77e2b6405f780503ef61b7b53e13f344b6e6a6eff3e3c13de0d0", - "0x001ab1b0c348c46184dbc86ff79f248e7da1b09d3f9c6a986e98fe45389f060d", - "0x0023d134bc68d7efa25e255001069827dc0bee766c08c988d6300071ed27fe6c", - "0x0031cbb780b07f632cbaf767dc80608cc0a8e1d1df3ecd6f5d8bc0ca6703e4f4", - "0x002c7dc9e731fc5f6456b2a70b4e636ac17d5e0cd36d3a591116a9e124f73586" + "0x00d01a55d584f8916144aea6f5a9bac8bddc35e3d655869076f62a6562ceb9ff", + "0x005e27fd4cece26638f3f0bd89489dfd3abc11915487aedb53d14e584296ae48", + "0x001b5da94d070603513508dd0288602efdbf63564518f09048b7ff9ba70c92bf", + "0x006b22a5a601951e32cf070b1ffc989a8a8787541230974bd5d36895b1941d84", + "0x0008c90cb31300684be3773a3f75d09829137e2cbb16981247402ccdaec75934", + "0x00d09b475ef0e4066e146963bb8bbe39f8dd47be04ec199f19af70c9f3949b97", + "0x00b405e8658d69729a3f48662e8c7b7ab4c3b6e171d712289e04d32349cea11d", + "0x0043378f9f9f50c53faf58557615e9196c3f87829d28b85727dcca05493afe66", + "0x00afd9712730fba95ae5f4ff56cb6bd2e9e9ea472ef265a99cf589b7c70019fb", + "0x00bfc0c309d641346743081351b118242e9b8031c4fe62601e0133edc88437a8", + "0x0031d572deb721316544194ec2239ca14b19662ab72a6a031568207a5b961950", + "0x00cb9baca7d59ae7de4e419895d82999d2a88070106ef368ea633f9fad0fb4ca", + "0x00366a5ef6f8e2ba1efa097a891579b611f701ddbe8f18cfd76aa1ea7aad9cfe", + "0x00dcf5734498fd066822a1a182794ed3fd3428ea3630befe7806c7b8effd3a8f", + "0x0011a1d942aa6b6a82e573ede2e46e228e1797b28bfaa1af07e2b16e66f4c5b4", + "0x00bf4f1063652e2d3c49286e8c6effda2a890745efd9dea946b96235e4f70397", + "0x00fb7a68e8c0c0c9e9f979fddde604e675e7e080a7e8a508662d07168bfb7f44", + "0x0049410e1b9a9b6eb0952a38ffdcb62051d9aec9595cc433292f92d4c5acebac", + "0x00f9d05e6e9f9ef4e0ac134b1f96fb0be2912cc8e4b15dd15359b20ec88e422b", + "0x0019427e301ac29ec9a8a40ea6f08384a01c7e75d856370477276a463d2099c8", + "0x0021dbc02463a3447c0a0df6beb17ae7105b15765fe8289685df078c2854a332", + "0x00d7577bc1aecc7ca67d29f6242938a8e846bebc782273ff47b3268397950cb2", + "0x0064bc144ac4a6186fdc95f8c01ca6b73529d45022a7255088502661a0a313f7", + "0x009384c49419d9714869c0cf8069acb64feb3eb88a54f634d83ecb023cc9f33c", + "0x00d4c9d39d698d06c3b49ad11d4d89ff4ec838fd14ad941cc2ac0340bfee3048", + "0x00fb06024eb7dff37b3c77a69d1e27bbc6d860fdffd771faa7e9f17bbb0bed58", + "0x00259eb1667d2b6a72ecb9d455e81a3052a60a9bd744d85b5449dfc22b17f5d0", + "0x001beeee5f13f3dff7465966e88f06c46f7a258f84577b34ef923a87bd6edfda", + "0x00ac7febde047495327e9dabc3fcc8a04ded70158499cc018a9bb3dd291a2f0e", + "0x00a04338d85e9d73781b73c9f6763341d13716207a07ce7936a4e45c0dc074ff", + "0x00706f1c4f8555164868e9338b3e7a5d671eafc646ba0c7f94c54300a5912ed2", + "0x007e1e853242042314b8bcf470ff8ae46908ef57f18251f09e0725d8141ac89f" ] }, "block": { - "archive": "0x16ebef361e14615000aa7b4e06a3f3cca4822966a7eba8f86cd95e22fd8863c7", - "body": "0x0000000400132efbbfb18630ccfb96cb80ccf9c1d3b08bae51812be6e78f1aa72439a00b800000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000141000000000000000000000000000000000000000000000000000000000000014100100000000000000000000000000000000000000000000000000000000001410020000000000000000000000000000000000000000000000000000000000141003000000000000000000000000000000000000000000000000000000000014100400000000000000000000000000000000000000000000000000000000001410050000000000000000000000000000000000000000000000000000000000141006000000000000000000000000000000000000000000000000000000000014100700000000000000000000000000000000000000000000000000000000001410080000000000000000000000000000000000000000000000000000000000141009000000000000000000000000000000000000000000000000000000000014100a000000000000000000000000000000000000000000000000000000000014100b000000000000000000000000000000000000000000000000000000000014100c000000000000000000000000000000000000000000000000000000000014100d000000000000000000000000000000000000000000000000000000000014100e000000000000000000000000000000000000000000000000000000000014100f0000000000000000000000000000000000000000000000000000000000141010000000000000000000000000000000000000000000000000000000000014101100000000000000000000000000000000000000000000000000000000001410120000000000000000000000000000000000000000000000000000000000141013000000000000000000000000000000000000000000000000000000000014101400000000000000000000000000000000000000000000000000000000001410150000000000000000000000000000000000000000000000000000000000141016000000000000000000000000000000000000000000000000000000000014101700000000000000000000000000000000000000000000000000000000001410180000000000000000000000000000000000000000000000000000000000141019000000000000000000000000000000000000000000000000000000000014101a000000000000000000000000000000000000000000000000000000000014101b000000000000000000000000000000000000000000000000000000000014101c000000000000000000000000000000000000000000000000000000000014101d000000000000000000000000000000000000000000000000000000000014101e000000000000000000000000000000000000000000000000000000000014101f0000000000000000000000000000000000000000000000000000000000141020000000000000000000000000000000000000000000000000000000000014102100000000000000000000000000000000000000000000000000000000001410220000000000000000000000000000000000000000000000000000000000141023000000000000000000000000000000000000000000000000000000000014102400000000000000000000000000000000000000000000000000000000001410250000000000000000000000000000000000000000000000000000000000141026000000000000000000000000000000000000000000000000000000000014102700000000000000000000000000000000000000000000000000000000001410280000000000000000000000000000000000000000000000000000000000141029000000000000000000000000000000000000000000000000000000000014102a000000000000000000000000000000000000000000000000000000000014102b000000000000000000000000000000000000000000000000000000000014102c000000000000000000000000000000000000000000000000000000000014102d000000000000000000000000000000000000000000000000000000000014102e000000000000000000000000000000000000000000000000000000000014102f0000000000000000000000000000000000000000000000000000000000141030000000000000000000000000000000000000000000000000000000000014103100000000000000000000000000000000000000000000000000000000001410320000000000000000000000000000000000000000000000000000000000141033000000000000000000000000000000000000000000000000000000000014103400000000000000000000000000000000000000000000000000000000001410350000000000000000000000000000000000000000000000000000000000141036000000000000000000000000000000000000000000000000000000000014103700000000000000000000000000000000000000000000000000000000001410380000000000000000000000000000000000000000000000000000000000141039000000000000000000000000000000000000000000000000000000000014103a000000000000000000000000000000000000000000000000000000000014103b000000000000000000000000000000000000000000000000000000000014103c000000000000000000000000000000000000000000000000000000000014103d000000000000000000000000000000000000000000000000000000000014103e000000000000000000000000000000000000000000000000000000000014103f4000000000000000000000000000000000000000000000000000000000001400010000000000000000000000000000000000000000000000000000000000141100000000000000000000000000000000000000000000000000000000000014110100000000000000000000000000000000000000000000000000000000001411020000000000000000000000000000000000000000000000000000000000141103000000000000000000000000000000000000000000000000000000000014110400000000000000000000000000000000000000000000000000000000001411050000000000000000000000000000000000000000000000000000000000141106000000000000000000000000000000000000000000000000000000000014110700000000000000000000000000000000000000000000000000000000001411080000000000000000000000000000000000000000000000000000000000141109000000000000000000000000000000000000000000000000000000000014110a000000000000000000000000000000000000000000000000000000000014110b000000000000000000000000000000000000000000000000000000000014110c000000000000000000000000000000000000000000000000000000000014110d000000000000000000000000000000000000000000000000000000000014110e000000000000000000000000000000000000000000000000000000000014110f0000000000000000000000000000000000000000000000000000000000141110000000000000000000000000000000000000000000000000000000000014111100000000000000000000000000000000000000000000000000000000001411120000000000000000000000000000000000000000000000000000000000141113000000000000000000000000000000000000000000000000000000000014111400000000000000000000000000000000000000000000000000000000001411150000000000000000000000000000000000000000000000000000000000141116000000000000000000000000000000000000000000000000000000000014111700000000000000000000000000000000000000000000000000000000001411180000000000000000000000000000000000000000000000000000000000141119000000000000000000000000000000000000000000000000000000000014111a000000000000000000000000000000000000000000000000000000000014111b000000000000000000000000000000000000000000000000000000000014111c000000000000000000000000000000000000000000000000000000000014111d000000000000000000000000000000000000000000000000000000000014111e000000000000000000000000000000000000000000000000000000000014111f0000000000000000000000000000000000000000000000000000000000141120000000000000000000000000000000000000000000000000000000000014112100000000000000000000000000000000000000000000000000000000001411220000000000000000000000000000000000000000000000000000000000141123000000000000000000000000000000000000000000000000000000000014112400000000000000000000000000000000000000000000000000000000001411250000000000000000000000000000000000000000000000000000000000141126000000000000000000000000000000000000000000000000000000000014112700000000000000000000000000000000000000000000000000000000001411280000000000000000000000000000000000000000000000000000000000141129000000000000000000000000000000000000000000000000000000000014112a000000000000000000000000000000000000000000000000000000000014112b000000000000000000000000000000000000000000000000000000000014112c000000000000000000000000000000000000000000000000000000000014112d000000000000000000000000000000000000000000000000000000000014112e000000000000000000000000000000000000000000000000000000000014112f0000000000000000000000000000000000000000000000000000000000141130000000000000000000000000000000000000000000000000000000000014113100000000000000000000000000000000000000000000000000000000001411320000000000000000000000000000000000000000000000000000000000141133000000000000000000000000000000000000000000000000000000000014113400000000000000000000000000000000000000000000000000000000001411350000000000000000000000000000000000000000000000000000000000141136000000000000000000000000000000000000000000000000000000000014113700000000000000000000000000000000000000000000000000000000001411380000000000000000000000000000000000000000000000000000000000141139000000000000000000000000000000000000000000000000000000000014113a000000000000000000000000000000000000000000000000000000000014113b000000000000000000000000000000000000000000000000000000000014113c000000000000000000000000000000000000000000000000000000000014113d000000000000000000000000000000000000000000000000000000000014113e08005c015113cb57d67dd6c0febd596819ac0298b6a23fc80aba17d445d540059a00f20b7d1308051fe7b68031a7c336b0b4b56738928b6510133aff1b818d5a9a0063eec1883a4f95f4933f9275e850d84b3d035f5061ed986c437a07331fd30e00d3a32d6bbc4fd843686fd0c5e118a73b847529977dca5b9e0e81f6604f22ca00c2f4f5133d9194d41e853e5e951e16690babce8461f25342c0bad20f2aa1e3000a6bf4739e7eb387913d955dc2e8f14f8cce27696b9d2e128b6acefafb80ee005763f7e0648f958b559677622a648f318fc79ebc0cb539170d49c26456e69200302e2b8a92cda941e9af8761b89899a58a587656d9710594e1d865b1652299400000000000000000000000000000000000000000000000000000000000142000000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142001000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142002000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142003000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142004000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142005000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420060000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014200700000000000000000000000000000000000000000000000000000000001420110000000000000000000000000000000000000000000000000000000000142008000000000000000000000000000000000000000000000000000000000014201200000000000000000000000000000000000000000000000000000000001420090000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142016000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142017000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142011000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142012000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420160000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014201700000000000000000000000000000000000000000000000000000000001420210000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014202200000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142026000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142027000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142021000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142022000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420260000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014202700000000000000000000000000000000000000000000000000000000001420310000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014203200000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142036000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142037000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142031000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142032000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014203f00000000000000000000000000000000000000000000000000000000001420360000000000000000000000000000000000000000000000000000000000142040000000000000000000000000000000000000000000000000000000000014203700000000000000000000000000000000000000000000000000000000001420410000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014204200000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142043000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142044000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142045000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142046000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142047000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142048000000000000000000000000000000000000000000000000000000000014203f0000000000000000000000000000000000000000000000000000000000142049200000000000000000000000000000000000000000000000000000000000141700000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014171800000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014171800000000000000000000000000000000000000000000000000000000001417190000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014172800000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014172800000000000000000000000000000000000000000000000000000000001417290000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f0000000000000000000000000000000000000000000000000000000000141730000000138b0bf30cf6731d2aab5dc9f1afede3ac8f0ca0f54b9f3ca9a81c4e31c49ee20000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000181000000000000000000000000000000000000000000000000000000000000018100100000000000000000000000000000000000000000000000000000000001810020000000000000000000000000000000000000000000000000000000000181003000000000000000000000000000000000000000000000000000000000018100400000000000000000000000000000000000000000000000000000000001810050000000000000000000000000000000000000000000000000000000000181006000000000000000000000000000000000000000000000000000000000018100700000000000000000000000000000000000000000000000000000000001810080000000000000000000000000000000000000000000000000000000000181009000000000000000000000000000000000000000000000000000000000018100a000000000000000000000000000000000000000000000000000000000018100b000000000000000000000000000000000000000000000000000000000018100c000000000000000000000000000000000000000000000000000000000018100d000000000000000000000000000000000000000000000000000000000018100e000000000000000000000000000000000000000000000000000000000018100f0000000000000000000000000000000000000000000000000000000000181010000000000000000000000000000000000000000000000000000000000018101100000000000000000000000000000000000000000000000000000000001810120000000000000000000000000000000000000000000000000000000000181013000000000000000000000000000000000000000000000000000000000018101400000000000000000000000000000000000000000000000000000000001810150000000000000000000000000000000000000000000000000000000000181016000000000000000000000000000000000000000000000000000000000018101700000000000000000000000000000000000000000000000000000000001810180000000000000000000000000000000000000000000000000000000000181019000000000000000000000000000000000000000000000000000000000018101a000000000000000000000000000000000000000000000000000000000018101b000000000000000000000000000000000000000000000000000000000018101c000000000000000000000000000000000000000000000000000000000018101d000000000000000000000000000000000000000000000000000000000018101e000000000000000000000000000000000000000000000000000000000018101f0000000000000000000000000000000000000000000000000000000000181020000000000000000000000000000000000000000000000000000000000018102100000000000000000000000000000000000000000000000000000000001810220000000000000000000000000000000000000000000000000000000000181023000000000000000000000000000000000000000000000000000000000018102400000000000000000000000000000000000000000000000000000000001810250000000000000000000000000000000000000000000000000000000000181026000000000000000000000000000000000000000000000000000000000018102700000000000000000000000000000000000000000000000000000000001810280000000000000000000000000000000000000000000000000000000000181029000000000000000000000000000000000000000000000000000000000018102a000000000000000000000000000000000000000000000000000000000018102b000000000000000000000000000000000000000000000000000000000018102c000000000000000000000000000000000000000000000000000000000018102d000000000000000000000000000000000000000000000000000000000018102e000000000000000000000000000000000000000000000000000000000018102f0000000000000000000000000000000000000000000000000000000000181030000000000000000000000000000000000000000000000000000000000018103100000000000000000000000000000000000000000000000000000000001810320000000000000000000000000000000000000000000000000000000000181033000000000000000000000000000000000000000000000000000000000018103400000000000000000000000000000000000000000000000000000000001810350000000000000000000000000000000000000000000000000000000000181036000000000000000000000000000000000000000000000000000000000018103700000000000000000000000000000000000000000000000000000000001810380000000000000000000000000000000000000000000000000000000000181039000000000000000000000000000000000000000000000000000000000018103a000000000000000000000000000000000000000000000000000000000018103b000000000000000000000000000000000000000000000000000000000018103c000000000000000000000000000000000000000000000000000000000018103d000000000000000000000000000000000000000000000000000000000018103e000000000000000000000000000000000000000000000000000000000018103f4000000000000000000000000000000000000000000000000000000000001800010000000000000000000000000000000000000000000000000000000000181100000000000000000000000000000000000000000000000000000000000018110100000000000000000000000000000000000000000000000000000000001811020000000000000000000000000000000000000000000000000000000000181103000000000000000000000000000000000000000000000000000000000018110400000000000000000000000000000000000000000000000000000000001811050000000000000000000000000000000000000000000000000000000000181106000000000000000000000000000000000000000000000000000000000018110700000000000000000000000000000000000000000000000000000000001811080000000000000000000000000000000000000000000000000000000000181109000000000000000000000000000000000000000000000000000000000018110a000000000000000000000000000000000000000000000000000000000018110b000000000000000000000000000000000000000000000000000000000018110c000000000000000000000000000000000000000000000000000000000018110d000000000000000000000000000000000000000000000000000000000018110e000000000000000000000000000000000000000000000000000000000018110f0000000000000000000000000000000000000000000000000000000000181110000000000000000000000000000000000000000000000000000000000018111100000000000000000000000000000000000000000000000000000000001811120000000000000000000000000000000000000000000000000000000000181113000000000000000000000000000000000000000000000000000000000018111400000000000000000000000000000000000000000000000000000000001811150000000000000000000000000000000000000000000000000000000000181116000000000000000000000000000000000000000000000000000000000018111700000000000000000000000000000000000000000000000000000000001811180000000000000000000000000000000000000000000000000000000000181119000000000000000000000000000000000000000000000000000000000018111a000000000000000000000000000000000000000000000000000000000018111b000000000000000000000000000000000000000000000000000000000018111c000000000000000000000000000000000000000000000000000000000018111d000000000000000000000000000000000000000000000000000000000018111e000000000000000000000000000000000000000000000000000000000018111f0000000000000000000000000000000000000000000000000000000000181120000000000000000000000000000000000000000000000000000000000018112100000000000000000000000000000000000000000000000000000000001811220000000000000000000000000000000000000000000000000000000000181123000000000000000000000000000000000000000000000000000000000018112400000000000000000000000000000000000000000000000000000000001811250000000000000000000000000000000000000000000000000000000000181126000000000000000000000000000000000000000000000000000000000018112700000000000000000000000000000000000000000000000000000000001811280000000000000000000000000000000000000000000000000000000000181129000000000000000000000000000000000000000000000000000000000018112a000000000000000000000000000000000000000000000000000000000018112b000000000000000000000000000000000000000000000000000000000018112c000000000000000000000000000000000000000000000000000000000018112d000000000000000000000000000000000000000000000000000000000018112e000000000000000000000000000000000000000000000000000000000018112f0000000000000000000000000000000000000000000000000000000000181130000000000000000000000000000000000000000000000000000000000018113100000000000000000000000000000000000000000000000000000000001811320000000000000000000000000000000000000000000000000000000000181133000000000000000000000000000000000000000000000000000000000018113400000000000000000000000000000000000000000000000000000000001811350000000000000000000000000000000000000000000000000000000000181136000000000000000000000000000000000000000000000000000000000018113700000000000000000000000000000000000000000000000000000000001811380000000000000000000000000000000000000000000000000000000000181139000000000000000000000000000000000000000000000000000000000018113a000000000000000000000000000000000000000000000000000000000018113b000000000000000000000000000000000000000000000000000000000018113c000000000000000000000000000000000000000000000000000000000018113d000000000000000000000000000000000000000000000000000000000018113e0800f872eb9653f03af10f331da1361fa1524d3cd958cb72dacea1d424f19df3af00ffc548a17cd6ba1f2d228f30e4ddb19ecc46ad3b609977d52bb0f49e1206410032f8058bd779c520eabae2743b02ec4f71670428506fcceb2d4b69f26fb11800c0283e15fbf74ffa4eafb984030394f3c2ea6733cc0eacb0431a9475eff28f00b7f55314bfd9d441c1c624e241908228fe4da3d3a0a7fbd56814e1c8cd5d3e00f430f33a786675271736fd728c7bf7428b8c24ac948d7faf76ddb8783a496c0048fc235ead8d4b9d44929662a6384074fc4e5076bec5b7deb34f612393684300fd9b61cb1ad9b4b28f58399906e73933e3cccee8fc98a393f0eedb95b13ee6400000000000000000000000000000000000000000000000000000000000182000000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182001000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182002000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182003000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182004000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182005000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820060000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018200700000000000000000000000000000000000000000000000000000000001820110000000000000000000000000000000000000000000000000000000000182008000000000000000000000000000000000000000000000000000000000018201200000000000000000000000000000000000000000000000000000000001820090000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182016000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182017000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182011000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182012000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820160000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018201700000000000000000000000000000000000000000000000000000000001820210000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018202200000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182026000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182027000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182021000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182022000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820260000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018202700000000000000000000000000000000000000000000000000000000001820310000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018203200000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182036000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182037000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182031000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182032000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018203e0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018203f00000000000000000000000000000000000000000000000000000000001820360000000000000000000000000000000000000000000000000000000000182040000000000000000000000000000000000000000000000000000000000018203700000000000000000000000000000000000000000000000000000000001820410000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018204200000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182043000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182044000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182045000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182046000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182047000000000000000000000000000000000000000000000000000000000018203e0000000000000000000000000000000000000000000000000000000000182048000000000000000000000000000000000000000000000000000000000018203f0000000000000000000000000000000000000000000000000000000000182049200000000000000000000000000000000000000000000000000000000000181700000000000000000000000000000000000000000000000000000000000018170100000000000000000000000000000000000000000000000000000000001817020000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018170100000000000000000000000000000000000000000000000000000000001817020000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817020000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018171500000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018171500000000000000000000000000000000000000000000000000000000001817160000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018171500000000000000000000000000000000000000000000000000000000001817160000000000000000000000000000000000000000000000000000000000181717000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018171500000000000000000000000000000000000000000000000000000000001817160000000000000000000000000000000000000000000000000000000000181717000000000000000000000000000000000000000000000000000000000018171800000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018171500000000000000000000000000000000000000000000000000000000001817160000000000000000000000000000000000000000000000000000000000181717000000000000000000000000000000000000000000000000000000000018171800000000000000000000000000000000000000000000000000000000001817190000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018172500000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018172500000000000000000000000000000000000000000000000000000000001817260000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018172500000000000000000000000000000000000000000000000000000000001817260000000000000000000000000000000000000000000000000000000000181727000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018172500000000000000000000000000000000000000000000000000000000001817260000000000000000000000000000000000000000000000000000000000181727000000000000000000000000000000000000000000000000000000000018172800000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018172500000000000000000000000000000000000000000000000000000000001817260000000000000000000000000000000000000000000000000000000000181727000000000000000000000000000000000000000000000000000000000018172800000000000000000000000000000000000000000000000000000000001817290000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018172e000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018172e000000000000000000000000000000000000000000000000000000000018172f000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018172e000000000000000000000000000000000000000000000000000000000018172f0000000000000000000000000000000000000000000000000000000000181730000000140ab3d85fb5d53ed57e5e520b14f7a2532ee1b2e77c9f31277e6d3d49c727fe00000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000001c100000000000000000000000000000000000000000000000000000000000001c100100000000000000000000000000000000000000000000000000000000001c100200000000000000000000000000000000000000000000000000000000001c100300000000000000000000000000000000000000000000000000000000001c100400000000000000000000000000000000000000000000000000000000001c100500000000000000000000000000000000000000000000000000000000001c100600000000000000000000000000000000000000000000000000000000001c100700000000000000000000000000000000000000000000000000000000001c100800000000000000000000000000000000000000000000000000000000001c100900000000000000000000000000000000000000000000000000000000001c100a00000000000000000000000000000000000000000000000000000000001c100b00000000000000000000000000000000000000000000000000000000001c100c00000000000000000000000000000000000000000000000000000000001c100d00000000000000000000000000000000000000000000000000000000001c100e00000000000000000000000000000000000000000000000000000000001c100f00000000000000000000000000000000000000000000000000000000001c101000000000000000000000000000000000000000000000000000000000001c101100000000000000000000000000000000000000000000000000000000001c101200000000000000000000000000000000000000000000000000000000001c101300000000000000000000000000000000000000000000000000000000001c101400000000000000000000000000000000000000000000000000000000001c101500000000000000000000000000000000000000000000000000000000001c101600000000000000000000000000000000000000000000000000000000001c101700000000000000000000000000000000000000000000000000000000001c101800000000000000000000000000000000000000000000000000000000001c101900000000000000000000000000000000000000000000000000000000001c101a00000000000000000000000000000000000000000000000000000000001c101b00000000000000000000000000000000000000000000000000000000001c101c00000000000000000000000000000000000000000000000000000000001c101d00000000000000000000000000000000000000000000000000000000001c101e00000000000000000000000000000000000000000000000000000000001c101f00000000000000000000000000000000000000000000000000000000001c102000000000000000000000000000000000000000000000000000000000001c102100000000000000000000000000000000000000000000000000000000001c102200000000000000000000000000000000000000000000000000000000001c102300000000000000000000000000000000000000000000000000000000001c102400000000000000000000000000000000000000000000000000000000001c102500000000000000000000000000000000000000000000000000000000001c102600000000000000000000000000000000000000000000000000000000001c102700000000000000000000000000000000000000000000000000000000001c102800000000000000000000000000000000000000000000000000000000001c102900000000000000000000000000000000000000000000000000000000001c102a00000000000000000000000000000000000000000000000000000000001c102b00000000000000000000000000000000000000000000000000000000001c102c00000000000000000000000000000000000000000000000000000000001c102d00000000000000000000000000000000000000000000000000000000001c102e00000000000000000000000000000000000000000000000000000000001c102f00000000000000000000000000000000000000000000000000000000001c103000000000000000000000000000000000000000000000000000000000001c103100000000000000000000000000000000000000000000000000000000001c103200000000000000000000000000000000000000000000000000000000001c103300000000000000000000000000000000000000000000000000000000001c103400000000000000000000000000000000000000000000000000000000001c103500000000000000000000000000000000000000000000000000000000001c103600000000000000000000000000000000000000000000000000000000001c103700000000000000000000000000000000000000000000000000000000001c103800000000000000000000000000000000000000000000000000000000001c103900000000000000000000000000000000000000000000000000000000001c103a00000000000000000000000000000000000000000000000000000000001c103b00000000000000000000000000000000000000000000000000000000001c103c00000000000000000000000000000000000000000000000000000000001c103d00000000000000000000000000000000000000000000000000000000001c103e00000000000000000000000000000000000000000000000000000000001c103f4000000000000000000000000000000000000000000000000000000000001c000100000000000000000000000000000000000000000000000000000000001c110000000000000000000000000000000000000000000000000000000000001c110100000000000000000000000000000000000000000000000000000000001c110200000000000000000000000000000000000000000000000000000000001c110300000000000000000000000000000000000000000000000000000000001c110400000000000000000000000000000000000000000000000000000000001c110500000000000000000000000000000000000000000000000000000000001c110600000000000000000000000000000000000000000000000000000000001c110700000000000000000000000000000000000000000000000000000000001c110800000000000000000000000000000000000000000000000000000000001c110900000000000000000000000000000000000000000000000000000000001c110a00000000000000000000000000000000000000000000000000000000001c110b00000000000000000000000000000000000000000000000000000000001c110c00000000000000000000000000000000000000000000000000000000001c110d00000000000000000000000000000000000000000000000000000000001c110e00000000000000000000000000000000000000000000000000000000001c110f00000000000000000000000000000000000000000000000000000000001c111000000000000000000000000000000000000000000000000000000000001c111100000000000000000000000000000000000000000000000000000000001c111200000000000000000000000000000000000000000000000000000000001c111300000000000000000000000000000000000000000000000000000000001c111400000000000000000000000000000000000000000000000000000000001c111500000000000000000000000000000000000000000000000000000000001c111600000000000000000000000000000000000000000000000000000000001c111700000000000000000000000000000000000000000000000000000000001c111800000000000000000000000000000000000000000000000000000000001c111900000000000000000000000000000000000000000000000000000000001c111a00000000000000000000000000000000000000000000000000000000001c111b00000000000000000000000000000000000000000000000000000000001c111c00000000000000000000000000000000000000000000000000000000001c111d00000000000000000000000000000000000000000000000000000000001c111e00000000000000000000000000000000000000000000000000000000001c111f00000000000000000000000000000000000000000000000000000000001c112000000000000000000000000000000000000000000000000000000000001c112100000000000000000000000000000000000000000000000000000000001c112200000000000000000000000000000000000000000000000000000000001c112300000000000000000000000000000000000000000000000000000000001c112400000000000000000000000000000000000000000000000000000000001c112500000000000000000000000000000000000000000000000000000000001c112600000000000000000000000000000000000000000000000000000000001c112700000000000000000000000000000000000000000000000000000000001c112800000000000000000000000000000000000000000000000000000000001c112900000000000000000000000000000000000000000000000000000000001c112a00000000000000000000000000000000000000000000000000000000001c112b00000000000000000000000000000000000000000000000000000000001c112c00000000000000000000000000000000000000000000000000000000001c112d00000000000000000000000000000000000000000000000000000000001c112e00000000000000000000000000000000000000000000000000000000001c112f00000000000000000000000000000000000000000000000000000000001c113000000000000000000000000000000000000000000000000000000000001c113100000000000000000000000000000000000000000000000000000000001c113200000000000000000000000000000000000000000000000000000000001c113300000000000000000000000000000000000000000000000000000000001c113400000000000000000000000000000000000000000000000000000000001c113500000000000000000000000000000000000000000000000000000000001c113600000000000000000000000000000000000000000000000000000000001c113700000000000000000000000000000000000000000000000000000000001c113800000000000000000000000000000000000000000000000000000000001c113900000000000000000000000000000000000000000000000000000000001c113a00000000000000000000000000000000000000000000000000000000001c113b00000000000000000000000000000000000000000000000000000000001c113c00000000000000000000000000000000000000000000000000000000001c113d00000000000000000000000000000000000000000000000000000000001c113e08006838aa99533bea0d4204cad17cb3c147e99c2f9089e54a4289d54733eeada2002ab314bd11ace2494a3fb0970d276da39f0fe7da19c9a2438b9c7c334d32470071703d79d8425a7eca52006df6a8f9728508a83639e3e1c2ebae2b853a087c00c9501ac04a78ac5413c9131b08708064ed2c2515b8893f12c2d1cda15a44f100a0955f93e109778d26f9e5b0d46e45c539e59b0941517bfa888eb2d7d2d8a6005adc3be9406cc5f102c6adb44746e8529a256e2396353a8659344cc3e914c4007a5fe572cf6af804f472dabf095c5eb6b30efc5fd627ad3245a8ef0f3f578c003dcaa91dfc9fdad7ba8da68a48fc662dfc0a995cbb0c1bc62099c8257d240d4000000000000000000000000000000000000000000000000000000000001c200000000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c200100000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c200200000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c200300000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c200400000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c200500000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c200600000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c200700000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c200800000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c200900000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c203f00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c204000000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c204100000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c204200000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c204300000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c204400000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c204500000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c204600000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c204700000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c204800000000000000000000000000000000000000000000000000000000001c203f00000000000000000000000000000000000000000000000000000000001c20492000000000000000000000000000000000000000000000000000000000001c170000000000000000000000000000000000000000000000000000000000001c170100000000000000000000000000000000000000000000000000000000001c170200000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c170100000000000000000000000000000000000000000000000000000000001c170200000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c170200000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c172e00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c172e00000000000000000000000000000000000000000000000000000000001c172f00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c172e00000000000000000000000000000000000000000000000000000000001c172f00000000000000000000000000000000000000000000000000000000001c1730000000260caf731821f6ac6c02c9880591c2a11e24343eaa28359fa78aaa1bcf3574ca0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000201000000000000000000000000000000000000000000000000000000000000020100100000000000000000000000000000000000000000000000000000000002010020000000000000000000000000000000000000000000000000000000000201003000000000000000000000000000000000000000000000000000000000020100400000000000000000000000000000000000000000000000000000000002010050000000000000000000000000000000000000000000000000000000000201006000000000000000000000000000000000000000000000000000000000020100700000000000000000000000000000000000000000000000000000000002010080000000000000000000000000000000000000000000000000000000000201009000000000000000000000000000000000000000000000000000000000020100a000000000000000000000000000000000000000000000000000000000020100b000000000000000000000000000000000000000000000000000000000020100c000000000000000000000000000000000000000000000000000000000020100d000000000000000000000000000000000000000000000000000000000020100e000000000000000000000000000000000000000000000000000000000020100f0000000000000000000000000000000000000000000000000000000000201010000000000000000000000000000000000000000000000000000000000020101100000000000000000000000000000000000000000000000000000000002010120000000000000000000000000000000000000000000000000000000000201013000000000000000000000000000000000000000000000000000000000020101400000000000000000000000000000000000000000000000000000000002010150000000000000000000000000000000000000000000000000000000000201016000000000000000000000000000000000000000000000000000000000020101700000000000000000000000000000000000000000000000000000000002010180000000000000000000000000000000000000000000000000000000000201019000000000000000000000000000000000000000000000000000000000020101a000000000000000000000000000000000000000000000000000000000020101b000000000000000000000000000000000000000000000000000000000020101c000000000000000000000000000000000000000000000000000000000020101d000000000000000000000000000000000000000000000000000000000020101e000000000000000000000000000000000000000000000000000000000020101f0000000000000000000000000000000000000000000000000000000000201020000000000000000000000000000000000000000000000000000000000020102100000000000000000000000000000000000000000000000000000000002010220000000000000000000000000000000000000000000000000000000000201023000000000000000000000000000000000000000000000000000000000020102400000000000000000000000000000000000000000000000000000000002010250000000000000000000000000000000000000000000000000000000000201026000000000000000000000000000000000000000000000000000000000020102700000000000000000000000000000000000000000000000000000000002010280000000000000000000000000000000000000000000000000000000000201029000000000000000000000000000000000000000000000000000000000020102a000000000000000000000000000000000000000000000000000000000020102b000000000000000000000000000000000000000000000000000000000020102c000000000000000000000000000000000000000000000000000000000020102d000000000000000000000000000000000000000000000000000000000020102e000000000000000000000000000000000000000000000000000000000020102f0000000000000000000000000000000000000000000000000000000000201030000000000000000000000000000000000000000000000000000000000020103100000000000000000000000000000000000000000000000000000000002010320000000000000000000000000000000000000000000000000000000000201033000000000000000000000000000000000000000000000000000000000020103400000000000000000000000000000000000000000000000000000000002010350000000000000000000000000000000000000000000000000000000000201036000000000000000000000000000000000000000000000000000000000020103700000000000000000000000000000000000000000000000000000000002010380000000000000000000000000000000000000000000000000000000000201039000000000000000000000000000000000000000000000000000000000020103a000000000000000000000000000000000000000000000000000000000020103b000000000000000000000000000000000000000000000000000000000020103c000000000000000000000000000000000000000000000000000000000020103d000000000000000000000000000000000000000000000000000000000020103e000000000000000000000000000000000000000000000000000000000020103f4000000000000000000000000000000000000000000000000000000000002000010000000000000000000000000000000000000000000000000000000000201100000000000000000000000000000000000000000000000000000000000020110100000000000000000000000000000000000000000000000000000000002011020000000000000000000000000000000000000000000000000000000000201103000000000000000000000000000000000000000000000000000000000020110400000000000000000000000000000000000000000000000000000000002011050000000000000000000000000000000000000000000000000000000000201106000000000000000000000000000000000000000000000000000000000020110700000000000000000000000000000000000000000000000000000000002011080000000000000000000000000000000000000000000000000000000000201109000000000000000000000000000000000000000000000000000000000020110a000000000000000000000000000000000000000000000000000000000020110b000000000000000000000000000000000000000000000000000000000020110c000000000000000000000000000000000000000000000000000000000020110d000000000000000000000000000000000000000000000000000000000020110e000000000000000000000000000000000000000000000000000000000020110f0000000000000000000000000000000000000000000000000000000000201110000000000000000000000000000000000000000000000000000000000020111100000000000000000000000000000000000000000000000000000000002011120000000000000000000000000000000000000000000000000000000000201113000000000000000000000000000000000000000000000000000000000020111400000000000000000000000000000000000000000000000000000000002011150000000000000000000000000000000000000000000000000000000000201116000000000000000000000000000000000000000000000000000000000020111700000000000000000000000000000000000000000000000000000000002011180000000000000000000000000000000000000000000000000000000000201119000000000000000000000000000000000000000000000000000000000020111a000000000000000000000000000000000000000000000000000000000020111b000000000000000000000000000000000000000000000000000000000020111c000000000000000000000000000000000000000000000000000000000020111d000000000000000000000000000000000000000000000000000000000020111e000000000000000000000000000000000000000000000000000000000020111f0000000000000000000000000000000000000000000000000000000000201120000000000000000000000000000000000000000000000000000000000020112100000000000000000000000000000000000000000000000000000000002011220000000000000000000000000000000000000000000000000000000000201123000000000000000000000000000000000000000000000000000000000020112400000000000000000000000000000000000000000000000000000000002011250000000000000000000000000000000000000000000000000000000000201126000000000000000000000000000000000000000000000000000000000020112700000000000000000000000000000000000000000000000000000000002011280000000000000000000000000000000000000000000000000000000000201129000000000000000000000000000000000000000000000000000000000020112a000000000000000000000000000000000000000000000000000000000020112b000000000000000000000000000000000000000000000000000000000020112c000000000000000000000000000000000000000000000000000000000020112d000000000000000000000000000000000000000000000000000000000020112e000000000000000000000000000000000000000000000000000000000020112f0000000000000000000000000000000000000000000000000000000000201130000000000000000000000000000000000000000000000000000000000020113100000000000000000000000000000000000000000000000000000000002011320000000000000000000000000000000000000000000000000000000000201133000000000000000000000000000000000000000000000000000000000020113400000000000000000000000000000000000000000000000000000000002011350000000000000000000000000000000000000000000000000000000000201136000000000000000000000000000000000000000000000000000000000020113700000000000000000000000000000000000000000000000000000000002011380000000000000000000000000000000000000000000000000000000000201139000000000000000000000000000000000000000000000000000000000020113a000000000000000000000000000000000000000000000000000000000020113b000000000000000000000000000000000000000000000000000000000020113c000000000000000000000000000000000000000000000000000000000020113d000000000000000000000000000000000000000000000000000000000020113e0800e9805e8a4faa87fc419af08a6d956f18976c46ea694bbd4cf6946e6d02033200e0925a6b172b4b01bb76eb1d3f7dd2ced118bca70d223a6d61afa1b75915ae00383590492d2f99a0283d1de57015b4b6b0759a8023af2c68fb4929dee2f303007ed57100dd77e2b6405f780503ef61b7b53e13f344b6e6a6eff3e3c13de0d0001ab1b0c348c46184dbc86ff79f248e7da1b09d3f9c6a986e98fe45389f060d0023d134bc68d7efa25e255001069827dc0bee766c08c988d6300071ed27fe6c0031cbb780b07f632cbaf767dc80608cc0a8e1d1df3ecd6f5d8bc0ca6703e4f4002c7dc9e731fc5f6456b2a70b4e636ac17d5e0cd36d3a591116a9e124f73586400000000000000000000000000000000000000000000000000000000000202000000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202001000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202002000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202003000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202004000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202005000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020060000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020200700000000000000000000000000000000000000000000000000000000002020110000000000000000000000000000000000000000000000000000000000202008000000000000000000000000000000000000000000000000000000000020201200000000000000000000000000000000000000000000000000000000002020090000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202016000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202017000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202011000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202012000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020160000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020201700000000000000000000000000000000000000000000000000000000002020210000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020202200000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202026000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202027000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202021000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202022000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020260000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020202700000000000000000000000000000000000000000000000000000000002020310000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020203200000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202036000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202037000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202031000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202032000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020203f00000000000000000000000000000000000000000000000000000000002020360000000000000000000000000000000000000000000000000000000000202040000000000000000000000000000000000000000000000000000000000020203700000000000000000000000000000000000000000000000000000000002020410000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020204200000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202043000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202044000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202045000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202046000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202047000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202048000000000000000000000000000000000000000000000000000000000020203f0000000000000000000000000000000000000000000000000000000000202049200000000000000000000000000000000000000000000000000000000000201700000000000000000000000000000000000000000000000000000000000020170100000000000000000000000000000000000000000000000000000000002017020000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020170100000000000000000000000000000000000000000000000000000000002017020000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017020000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020171500000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020171500000000000000000000000000000000000000000000000000000000002017160000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020171500000000000000000000000000000000000000000000000000000000002017160000000000000000000000000000000000000000000000000000000000201717000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020171500000000000000000000000000000000000000000000000000000000002017160000000000000000000000000000000000000000000000000000000000201717000000000000000000000000000000000000000000000000000000000020171800000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020171500000000000000000000000000000000000000000000000000000000002017160000000000000000000000000000000000000000000000000000000000201717000000000000000000000000000000000000000000000000000000000020171800000000000000000000000000000000000000000000000000000000002017190000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020172500000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020172500000000000000000000000000000000000000000000000000000000002017260000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020172500000000000000000000000000000000000000000000000000000000002017260000000000000000000000000000000000000000000000000000000000201727000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020172500000000000000000000000000000000000000000000000000000000002017260000000000000000000000000000000000000000000000000000000000201727000000000000000000000000000000000000000000000000000000000020172800000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020172500000000000000000000000000000000000000000000000000000000002017260000000000000000000000000000000000000000000000000000000000201727000000000000000000000000000000000000000000000000000000000020172800000000000000000000000000000000000000000000000000000000002017290000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020172e000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020172e000000000000000000000000000000000000000000000000000000000020172f000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020172e000000000000000000000000000000000000000000000000000000000020172f00000000000000000000000000000000000000000000000000000000002017300000", + "archive": "0x2fb39875ecd009d9f0d6f4caf2c778687cf45d711e1b6e032793a88505be6c42", + "blobInputs": "0x0101f0916ad65fccdf90706c8488511df0047f80ccf1171b93c4110b599acf1af32740e6a88165b26c2dc59fcd41880528b0c12efbcbb89c17c3ad8233e5c154e85d1f554b690af5a67da68391eb3499060111ae5415ef6373a5e5d1b57e2412f7953b0a5051beeb1abe19395fabacfff0701a03958a6ebc05e507eab03feadb14b4e46e567de3d3f4c7e40c9727d6d34c8cfe31b1aaace9affe4b48428c391a44a6f4efe158f8f1fbc5cdf9302688d3bcc3650bfbcd3400fdffd2d572ff424822", + "blockNumber": 2, + "body": "0x000000040028b06262d9a0189fb283fe8f69cdf1686cefd3ab8df2b3ff596b2badbeb14f220000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000141000000000000000000000000000000000000000000000000000000000000014100100000000000000000000000000000000000000000000000000000000001410020000000000000000000000000000000000000000000000000000000000141003000000000000000000000000000000000000000000000000000000000014100400000000000000000000000000000000000000000000000000000000001410050000000000000000000000000000000000000000000000000000000000141006000000000000000000000000000000000000000000000000000000000014100700000000000000000000000000000000000000000000000000000000001410080000000000000000000000000000000000000000000000000000000000141009000000000000000000000000000000000000000000000000000000000014100a000000000000000000000000000000000000000000000000000000000014100b000000000000000000000000000000000000000000000000000000000014100c000000000000000000000000000000000000000000000000000000000014100d000000000000000000000000000000000000000000000000000000000014100e000000000000000000000000000000000000000000000000000000000014100f0000000000000000000000000000000000000000000000000000000000141010000000000000000000000000000000000000000000000000000000000014101100000000000000000000000000000000000000000000000000000000001410120000000000000000000000000000000000000000000000000000000000141013000000000000000000000000000000000000000000000000000000000014101400000000000000000000000000000000000000000000000000000000001410150000000000000000000000000000000000000000000000000000000000141016000000000000000000000000000000000000000000000000000000000014101700000000000000000000000000000000000000000000000000000000001410180000000000000000000000000000000000000000000000000000000000141019000000000000000000000000000000000000000000000000000000000014101a000000000000000000000000000000000000000000000000000000000014101b000000000000000000000000000000000000000000000000000000000014101c000000000000000000000000000000000000000000000000000000000014101d000000000000000000000000000000000000000000000000000000000014101e000000000000000000000000000000000000000000000000000000000014101f0000000000000000000000000000000000000000000000000000000000141020000000000000000000000000000000000000000000000000000000000014102100000000000000000000000000000000000000000000000000000000001410220000000000000000000000000000000000000000000000000000000000141023000000000000000000000000000000000000000000000000000000000014102400000000000000000000000000000000000000000000000000000000001410250000000000000000000000000000000000000000000000000000000000141026000000000000000000000000000000000000000000000000000000000014102700000000000000000000000000000000000000000000000000000000001410280000000000000000000000000000000000000000000000000000000000141029000000000000000000000000000000000000000000000000000000000014102a000000000000000000000000000000000000000000000000000000000014102b000000000000000000000000000000000000000000000000000000000014102c000000000000000000000000000000000000000000000000000000000014102d000000000000000000000000000000000000000000000000000000000014102e000000000000000000000000000000000000000000000000000000000014102f0000000000000000000000000000000000000000000000000000000000141030000000000000000000000000000000000000000000000000000000000014103100000000000000000000000000000000000000000000000000000000001410320000000000000000000000000000000000000000000000000000000000141033000000000000000000000000000000000000000000000000000000000014103400000000000000000000000000000000000000000000000000000000001410350000000000000000000000000000000000000000000000000000000000141036000000000000000000000000000000000000000000000000000000000014103700000000000000000000000000000000000000000000000000000000001410380000000000000000000000000000000000000000000000000000000000141039000000000000000000000000000000000000000000000000000000000014103a000000000000000000000000000000000000000000000000000000000014103b000000000000000000000000000000000000000000000000000000000014103c000000000000000000000000000000000000000000000000000000000014103d000000000000000000000000000000000000000000000000000000000014103e000000000000000000000000000000000000000000000000000000000014103f4000000000000000000000000000000000000000000000000000000000001400010000000000000000000000000000000000000000000000000000000000141100000000000000000000000000000000000000000000000000000000000014110100000000000000000000000000000000000000000000000000000000001411020000000000000000000000000000000000000000000000000000000000141103000000000000000000000000000000000000000000000000000000000014110400000000000000000000000000000000000000000000000000000000001411050000000000000000000000000000000000000000000000000000000000141106000000000000000000000000000000000000000000000000000000000014110700000000000000000000000000000000000000000000000000000000001411080000000000000000000000000000000000000000000000000000000000141109000000000000000000000000000000000000000000000000000000000014110a000000000000000000000000000000000000000000000000000000000014110b000000000000000000000000000000000000000000000000000000000014110c000000000000000000000000000000000000000000000000000000000014110d000000000000000000000000000000000000000000000000000000000014110e000000000000000000000000000000000000000000000000000000000014110f0000000000000000000000000000000000000000000000000000000000141110000000000000000000000000000000000000000000000000000000000014111100000000000000000000000000000000000000000000000000000000001411120000000000000000000000000000000000000000000000000000000000141113000000000000000000000000000000000000000000000000000000000014111400000000000000000000000000000000000000000000000000000000001411150000000000000000000000000000000000000000000000000000000000141116000000000000000000000000000000000000000000000000000000000014111700000000000000000000000000000000000000000000000000000000001411180000000000000000000000000000000000000000000000000000000000141119000000000000000000000000000000000000000000000000000000000014111a000000000000000000000000000000000000000000000000000000000014111b000000000000000000000000000000000000000000000000000000000014111c000000000000000000000000000000000000000000000000000000000014111d000000000000000000000000000000000000000000000000000000000014111e000000000000000000000000000000000000000000000000000000000014111f0000000000000000000000000000000000000000000000000000000000141120000000000000000000000000000000000000000000000000000000000014112100000000000000000000000000000000000000000000000000000000001411220000000000000000000000000000000000000000000000000000000000141123000000000000000000000000000000000000000000000000000000000014112400000000000000000000000000000000000000000000000000000000001411250000000000000000000000000000000000000000000000000000000000141126000000000000000000000000000000000000000000000000000000000014112700000000000000000000000000000000000000000000000000000000001411280000000000000000000000000000000000000000000000000000000000141129000000000000000000000000000000000000000000000000000000000014112a000000000000000000000000000000000000000000000000000000000014112b000000000000000000000000000000000000000000000000000000000014112c000000000000000000000000000000000000000000000000000000000014112d000000000000000000000000000000000000000000000000000000000014112e000000000000000000000000000000000000000000000000000000000014112f0000000000000000000000000000000000000000000000000000000000141130000000000000000000000000000000000000000000000000000000000014113100000000000000000000000000000000000000000000000000000000001411320000000000000000000000000000000000000000000000000000000000141133000000000000000000000000000000000000000000000000000000000014113400000000000000000000000000000000000000000000000000000000001411350000000000000000000000000000000000000000000000000000000000141136000000000000000000000000000000000000000000000000000000000014113700000000000000000000000000000000000000000000000000000000001411380000000000000000000000000000000000000000000000000000000000141139000000000000000000000000000000000000000000000000000000000014113a000000000000000000000000000000000000000000000000000000000014113b000000000000000000000000000000000000000000000000000000000014113c000000000000000000000000000000000000000000000000000000000014113d000000000000000000000000000000000000000000000000000000000014113e0800d01a55d584f8916144aea6f5a9bac8bddc35e3d655869076f62a6562ceb9ff005e27fd4cece26638f3f0bd89489dfd3abc11915487aedb53d14e584296ae48001b5da94d070603513508dd0288602efdbf63564518f09048b7ff9ba70c92bf006b22a5a601951e32cf070b1ffc989a8a8787541230974bd5d36895b1941d840008c90cb31300684be3773a3f75d09829137e2cbb16981247402ccdaec7593400d09b475ef0e4066e146963bb8bbe39f8dd47be04ec199f19af70c9f3949b9700b405e8658d69729a3f48662e8c7b7ab4c3b6e171d712289e04d32349cea11d0043378f9f9f50c53faf58557615e9196c3f87829d28b85727dcca05493afe66400000000000000000000000000000000000000000000000000000000000142000000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142001000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142002000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142003000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142004000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142005000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420060000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014200700000000000000000000000000000000000000000000000000000000001420110000000000000000000000000000000000000000000000000000000000142008000000000000000000000000000000000000000000000000000000000014201200000000000000000000000000000000000000000000000000000000001420090000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142016000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142017000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142011000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142012000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420160000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014201700000000000000000000000000000000000000000000000000000000001420210000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014202200000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142026000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142027000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142021000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142022000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420260000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014202700000000000000000000000000000000000000000000000000000000001420310000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014203200000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142036000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142037000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142031000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142032000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014203f00000000000000000000000000000000000000000000000000000000001420360000000000000000000000000000000000000000000000000000000000142040000000000000000000000000000000000000000000000000000000000014203700000000000000000000000000000000000000000000000000000000001420410000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014204200000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142043000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142044000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142045000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142046000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142047000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142048000000000000000000000000000000000000000000000000000000000014203f0000000000000000000000000000000000000000000000000000000000142049200000000000000000000000000000000000000000000000000000000000141700000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014171800000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014171800000000000000000000000000000000000000000000000000000000001417190000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014172800000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014172800000000000000000000000000000000000000000000000000000000001417290000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f000000000000000000000000000000000000000000000000000000000014173000000004bd2906db675f68d8e205a650d75149f712c818c03f65fa3a2726405fa039980000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000181000000000000000000000000000000000000000000000000000000000000018100100000000000000000000000000000000000000000000000000000000001810020000000000000000000000000000000000000000000000000000000000181003000000000000000000000000000000000000000000000000000000000018100400000000000000000000000000000000000000000000000000000000001810050000000000000000000000000000000000000000000000000000000000181006000000000000000000000000000000000000000000000000000000000018100700000000000000000000000000000000000000000000000000000000001810080000000000000000000000000000000000000000000000000000000000181009000000000000000000000000000000000000000000000000000000000018100a000000000000000000000000000000000000000000000000000000000018100b000000000000000000000000000000000000000000000000000000000018100c000000000000000000000000000000000000000000000000000000000018100d000000000000000000000000000000000000000000000000000000000018100e000000000000000000000000000000000000000000000000000000000018100f0000000000000000000000000000000000000000000000000000000000181010000000000000000000000000000000000000000000000000000000000018101100000000000000000000000000000000000000000000000000000000001810120000000000000000000000000000000000000000000000000000000000181013000000000000000000000000000000000000000000000000000000000018101400000000000000000000000000000000000000000000000000000000001810150000000000000000000000000000000000000000000000000000000000181016000000000000000000000000000000000000000000000000000000000018101700000000000000000000000000000000000000000000000000000000001810180000000000000000000000000000000000000000000000000000000000181019000000000000000000000000000000000000000000000000000000000018101a000000000000000000000000000000000000000000000000000000000018101b000000000000000000000000000000000000000000000000000000000018101c000000000000000000000000000000000000000000000000000000000018101d000000000000000000000000000000000000000000000000000000000018101e000000000000000000000000000000000000000000000000000000000018101f0000000000000000000000000000000000000000000000000000000000181020000000000000000000000000000000000000000000000000000000000018102100000000000000000000000000000000000000000000000000000000001810220000000000000000000000000000000000000000000000000000000000181023000000000000000000000000000000000000000000000000000000000018102400000000000000000000000000000000000000000000000000000000001810250000000000000000000000000000000000000000000000000000000000181026000000000000000000000000000000000000000000000000000000000018102700000000000000000000000000000000000000000000000000000000001810280000000000000000000000000000000000000000000000000000000000181029000000000000000000000000000000000000000000000000000000000018102a000000000000000000000000000000000000000000000000000000000018102b000000000000000000000000000000000000000000000000000000000018102c000000000000000000000000000000000000000000000000000000000018102d000000000000000000000000000000000000000000000000000000000018102e000000000000000000000000000000000000000000000000000000000018102f0000000000000000000000000000000000000000000000000000000000181030000000000000000000000000000000000000000000000000000000000018103100000000000000000000000000000000000000000000000000000000001810320000000000000000000000000000000000000000000000000000000000181033000000000000000000000000000000000000000000000000000000000018103400000000000000000000000000000000000000000000000000000000001810350000000000000000000000000000000000000000000000000000000000181036000000000000000000000000000000000000000000000000000000000018103700000000000000000000000000000000000000000000000000000000001810380000000000000000000000000000000000000000000000000000000000181039000000000000000000000000000000000000000000000000000000000018103a000000000000000000000000000000000000000000000000000000000018103b000000000000000000000000000000000000000000000000000000000018103c000000000000000000000000000000000000000000000000000000000018103d000000000000000000000000000000000000000000000000000000000018103e000000000000000000000000000000000000000000000000000000000018103f4000000000000000000000000000000000000000000000000000000000001800010000000000000000000000000000000000000000000000000000000000181100000000000000000000000000000000000000000000000000000000000018110100000000000000000000000000000000000000000000000000000000001811020000000000000000000000000000000000000000000000000000000000181103000000000000000000000000000000000000000000000000000000000018110400000000000000000000000000000000000000000000000000000000001811050000000000000000000000000000000000000000000000000000000000181106000000000000000000000000000000000000000000000000000000000018110700000000000000000000000000000000000000000000000000000000001811080000000000000000000000000000000000000000000000000000000000181109000000000000000000000000000000000000000000000000000000000018110a000000000000000000000000000000000000000000000000000000000018110b000000000000000000000000000000000000000000000000000000000018110c000000000000000000000000000000000000000000000000000000000018110d000000000000000000000000000000000000000000000000000000000018110e000000000000000000000000000000000000000000000000000000000018110f0000000000000000000000000000000000000000000000000000000000181110000000000000000000000000000000000000000000000000000000000018111100000000000000000000000000000000000000000000000000000000001811120000000000000000000000000000000000000000000000000000000000181113000000000000000000000000000000000000000000000000000000000018111400000000000000000000000000000000000000000000000000000000001811150000000000000000000000000000000000000000000000000000000000181116000000000000000000000000000000000000000000000000000000000018111700000000000000000000000000000000000000000000000000000000001811180000000000000000000000000000000000000000000000000000000000181119000000000000000000000000000000000000000000000000000000000018111a000000000000000000000000000000000000000000000000000000000018111b000000000000000000000000000000000000000000000000000000000018111c000000000000000000000000000000000000000000000000000000000018111d000000000000000000000000000000000000000000000000000000000018111e000000000000000000000000000000000000000000000000000000000018111f0000000000000000000000000000000000000000000000000000000000181120000000000000000000000000000000000000000000000000000000000018112100000000000000000000000000000000000000000000000000000000001811220000000000000000000000000000000000000000000000000000000000181123000000000000000000000000000000000000000000000000000000000018112400000000000000000000000000000000000000000000000000000000001811250000000000000000000000000000000000000000000000000000000000181126000000000000000000000000000000000000000000000000000000000018112700000000000000000000000000000000000000000000000000000000001811280000000000000000000000000000000000000000000000000000000000181129000000000000000000000000000000000000000000000000000000000018112a000000000000000000000000000000000000000000000000000000000018112b000000000000000000000000000000000000000000000000000000000018112c000000000000000000000000000000000000000000000000000000000018112d000000000000000000000000000000000000000000000000000000000018112e000000000000000000000000000000000000000000000000000000000018112f0000000000000000000000000000000000000000000000000000000000181130000000000000000000000000000000000000000000000000000000000018113100000000000000000000000000000000000000000000000000000000001811320000000000000000000000000000000000000000000000000000000000181133000000000000000000000000000000000000000000000000000000000018113400000000000000000000000000000000000000000000000000000000001811350000000000000000000000000000000000000000000000000000000000181136000000000000000000000000000000000000000000000000000000000018113700000000000000000000000000000000000000000000000000000000001811380000000000000000000000000000000000000000000000000000000000181139000000000000000000000000000000000000000000000000000000000018113a000000000000000000000000000000000000000000000000000000000018113b000000000000000000000000000000000000000000000000000000000018113c000000000000000000000000000000000000000000000000000000000018113d000000000000000000000000000000000000000000000000000000000018113e0800afd9712730fba95ae5f4ff56cb6bd2e9e9ea472ef265a99cf589b7c70019fb00bfc0c309d641346743081351b118242e9b8031c4fe62601e0133edc88437a80031d572deb721316544194ec2239ca14b19662ab72a6a031568207a5b96195000cb9baca7d59ae7de4e419895d82999d2a88070106ef368ea633f9fad0fb4ca00366a5ef6f8e2ba1efa097a891579b611f701ddbe8f18cfd76aa1ea7aad9cfe00dcf5734498fd066822a1a182794ed3fd3428ea3630befe7806c7b8effd3a8f0011a1d942aa6b6a82e573ede2e46e228e1797b28bfaa1af07e2b16e66f4c5b400bf4f1063652e2d3c49286e8c6effda2a890745efd9dea946b96235e4f70397400000000000000000000000000000000000000000000000000000000000182000000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182001000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182002000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182003000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182004000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182005000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820060000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018200700000000000000000000000000000000000000000000000000000000001820110000000000000000000000000000000000000000000000000000000000182008000000000000000000000000000000000000000000000000000000000018201200000000000000000000000000000000000000000000000000000000001820090000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182016000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182017000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182011000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182012000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820160000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018201700000000000000000000000000000000000000000000000000000000001820210000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018202200000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182026000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182027000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182021000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182022000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820260000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018202700000000000000000000000000000000000000000000000000000000001820310000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018203200000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182036000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182037000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182031000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182032000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018203e0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018203f00000000000000000000000000000000000000000000000000000000001820360000000000000000000000000000000000000000000000000000000000182040000000000000000000000000000000000000000000000000000000000018203700000000000000000000000000000000000000000000000000000000001820410000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018204200000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182043000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182044000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182045000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182046000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182047000000000000000000000000000000000000000000000000000000000018203e0000000000000000000000000000000000000000000000000000000000182048000000000000000000000000000000000000000000000000000000000018203f0000000000000000000000000000000000000000000000000000000000182049200000000000000000000000000000000000000000000000000000000000181700000000000000000000000000000000000000000000000000000000000018170100000000000000000000000000000000000000000000000000000000001817020000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018170100000000000000000000000000000000000000000000000000000000001817020000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817020000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018171500000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018171500000000000000000000000000000000000000000000000000000000001817160000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018171500000000000000000000000000000000000000000000000000000000001817160000000000000000000000000000000000000000000000000000000000181717000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018171500000000000000000000000000000000000000000000000000000000001817160000000000000000000000000000000000000000000000000000000000181717000000000000000000000000000000000000000000000000000000000018171800000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018171500000000000000000000000000000000000000000000000000000000001817160000000000000000000000000000000000000000000000000000000000181717000000000000000000000000000000000000000000000000000000000018171800000000000000000000000000000000000000000000000000000000001817190000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018172500000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018172500000000000000000000000000000000000000000000000000000000001817260000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018172500000000000000000000000000000000000000000000000000000000001817260000000000000000000000000000000000000000000000000000000000181727000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018172500000000000000000000000000000000000000000000000000000000001817260000000000000000000000000000000000000000000000000000000000181727000000000000000000000000000000000000000000000000000000000018172800000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018172500000000000000000000000000000000000000000000000000000000001817260000000000000000000000000000000000000000000000000000000000181727000000000000000000000000000000000000000000000000000000000018172800000000000000000000000000000000000000000000000000000000001817290000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018172e000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018172e000000000000000000000000000000000000000000000000000000000018172f000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018172e000000000000000000000000000000000000000000000000000000000018172f000000000000000000000000000000000000000000000000000000000018173000000017a3de67c471e3a95076d815e8b8509f23a274346721c20ca31dc920cebb174c00000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000001c100000000000000000000000000000000000000000000000000000000000001c100100000000000000000000000000000000000000000000000000000000001c100200000000000000000000000000000000000000000000000000000000001c100300000000000000000000000000000000000000000000000000000000001c100400000000000000000000000000000000000000000000000000000000001c100500000000000000000000000000000000000000000000000000000000001c100600000000000000000000000000000000000000000000000000000000001c100700000000000000000000000000000000000000000000000000000000001c100800000000000000000000000000000000000000000000000000000000001c100900000000000000000000000000000000000000000000000000000000001c100a00000000000000000000000000000000000000000000000000000000001c100b00000000000000000000000000000000000000000000000000000000001c100c00000000000000000000000000000000000000000000000000000000001c100d00000000000000000000000000000000000000000000000000000000001c100e00000000000000000000000000000000000000000000000000000000001c100f00000000000000000000000000000000000000000000000000000000001c101000000000000000000000000000000000000000000000000000000000001c101100000000000000000000000000000000000000000000000000000000001c101200000000000000000000000000000000000000000000000000000000001c101300000000000000000000000000000000000000000000000000000000001c101400000000000000000000000000000000000000000000000000000000001c101500000000000000000000000000000000000000000000000000000000001c101600000000000000000000000000000000000000000000000000000000001c101700000000000000000000000000000000000000000000000000000000001c101800000000000000000000000000000000000000000000000000000000001c101900000000000000000000000000000000000000000000000000000000001c101a00000000000000000000000000000000000000000000000000000000001c101b00000000000000000000000000000000000000000000000000000000001c101c00000000000000000000000000000000000000000000000000000000001c101d00000000000000000000000000000000000000000000000000000000001c101e00000000000000000000000000000000000000000000000000000000001c101f00000000000000000000000000000000000000000000000000000000001c102000000000000000000000000000000000000000000000000000000000001c102100000000000000000000000000000000000000000000000000000000001c102200000000000000000000000000000000000000000000000000000000001c102300000000000000000000000000000000000000000000000000000000001c102400000000000000000000000000000000000000000000000000000000001c102500000000000000000000000000000000000000000000000000000000001c102600000000000000000000000000000000000000000000000000000000001c102700000000000000000000000000000000000000000000000000000000001c102800000000000000000000000000000000000000000000000000000000001c102900000000000000000000000000000000000000000000000000000000001c102a00000000000000000000000000000000000000000000000000000000001c102b00000000000000000000000000000000000000000000000000000000001c102c00000000000000000000000000000000000000000000000000000000001c102d00000000000000000000000000000000000000000000000000000000001c102e00000000000000000000000000000000000000000000000000000000001c102f00000000000000000000000000000000000000000000000000000000001c103000000000000000000000000000000000000000000000000000000000001c103100000000000000000000000000000000000000000000000000000000001c103200000000000000000000000000000000000000000000000000000000001c103300000000000000000000000000000000000000000000000000000000001c103400000000000000000000000000000000000000000000000000000000001c103500000000000000000000000000000000000000000000000000000000001c103600000000000000000000000000000000000000000000000000000000001c103700000000000000000000000000000000000000000000000000000000001c103800000000000000000000000000000000000000000000000000000000001c103900000000000000000000000000000000000000000000000000000000001c103a00000000000000000000000000000000000000000000000000000000001c103b00000000000000000000000000000000000000000000000000000000001c103c00000000000000000000000000000000000000000000000000000000001c103d00000000000000000000000000000000000000000000000000000000001c103e00000000000000000000000000000000000000000000000000000000001c103f4000000000000000000000000000000000000000000000000000000000001c000100000000000000000000000000000000000000000000000000000000001c110000000000000000000000000000000000000000000000000000000000001c110100000000000000000000000000000000000000000000000000000000001c110200000000000000000000000000000000000000000000000000000000001c110300000000000000000000000000000000000000000000000000000000001c110400000000000000000000000000000000000000000000000000000000001c110500000000000000000000000000000000000000000000000000000000001c110600000000000000000000000000000000000000000000000000000000001c110700000000000000000000000000000000000000000000000000000000001c110800000000000000000000000000000000000000000000000000000000001c110900000000000000000000000000000000000000000000000000000000001c110a00000000000000000000000000000000000000000000000000000000001c110b00000000000000000000000000000000000000000000000000000000001c110c00000000000000000000000000000000000000000000000000000000001c110d00000000000000000000000000000000000000000000000000000000001c110e00000000000000000000000000000000000000000000000000000000001c110f00000000000000000000000000000000000000000000000000000000001c111000000000000000000000000000000000000000000000000000000000001c111100000000000000000000000000000000000000000000000000000000001c111200000000000000000000000000000000000000000000000000000000001c111300000000000000000000000000000000000000000000000000000000001c111400000000000000000000000000000000000000000000000000000000001c111500000000000000000000000000000000000000000000000000000000001c111600000000000000000000000000000000000000000000000000000000001c111700000000000000000000000000000000000000000000000000000000001c111800000000000000000000000000000000000000000000000000000000001c111900000000000000000000000000000000000000000000000000000000001c111a00000000000000000000000000000000000000000000000000000000001c111b00000000000000000000000000000000000000000000000000000000001c111c00000000000000000000000000000000000000000000000000000000001c111d00000000000000000000000000000000000000000000000000000000001c111e00000000000000000000000000000000000000000000000000000000001c111f00000000000000000000000000000000000000000000000000000000001c112000000000000000000000000000000000000000000000000000000000001c112100000000000000000000000000000000000000000000000000000000001c112200000000000000000000000000000000000000000000000000000000001c112300000000000000000000000000000000000000000000000000000000001c112400000000000000000000000000000000000000000000000000000000001c112500000000000000000000000000000000000000000000000000000000001c112600000000000000000000000000000000000000000000000000000000001c112700000000000000000000000000000000000000000000000000000000001c112800000000000000000000000000000000000000000000000000000000001c112900000000000000000000000000000000000000000000000000000000001c112a00000000000000000000000000000000000000000000000000000000001c112b00000000000000000000000000000000000000000000000000000000001c112c00000000000000000000000000000000000000000000000000000000001c112d00000000000000000000000000000000000000000000000000000000001c112e00000000000000000000000000000000000000000000000000000000001c112f00000000000000000000000000000000000000000000000000000000001c113000000000000000000000000000000000000000000000000000000000001c113100000000000000000000000000000000000000000000000000000000001c113200000000000000000000000000000000000000000000000000000000001c113300000000000000000000000000000000000000000000000000000000001c113400000000000000000000000000000000000000000000000000000000001c113500000000000000000000000000000000000000000000000000000000001c113600000000000000000000000000000000000000000000000000000000001c113700000000000000000000000000000000000000000000000000000000001c113800000000000000000000000000000000000000000000000000000000001c113900000000000000000000000000000000000000000000000000000000001c113a00000000000000000000000000000000000000000000000000000000001c113b00000000000000000000000000000000000000000000000000000000001c113c00000000000000000000000000000000000000000000000000000000001c113d00000000000000000000000000000000000000000000000000000000001c113e0800fb7a68e8c0c0c9e9f979fddde604e675e7e080a7e8a508662d07168bfb7f440049410e1b9a9b6eb0952a38ffdcb62051d9aec9595cc433292f92d4c5acebac00f9d05e6e9f9ef4e0ac134b1f96fb0be2912cc8e4b15dd15359b20ec88e422b0019427e301ac29ec9a8a40ea6f08384a01c7e75d856370477276a463d2099c80021dbc02463a3447c0a0df6beb17ae7105b15765fe8289685df078c2854a33200d7577bc1aecc7ca67d29f6242938a8e846bebc782273ff47b3268397950cb20064bc144ac4a6186fdc95f8c01ca6b73529d45022a7255088502661a0a313f7009384c49419d9714869c0cf8069acb64feb3eb88a54f634d83ecb023cc9f33c4000000000000000000000000000000000000000000000000000000000001c200000000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c200100000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c200200000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c200300000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c200400000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c200500000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c200600000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c200700000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c200800000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c200900000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c203f00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c204000000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c204100000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c204200000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c204300000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c204400000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c204500000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c204600000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c204700000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c204800000000000000000000000000000000000000000000000000000000001c203f00000000000000000000000000000000000000000000000000000000001c20492000000000000000000000000000000000000000000000000000000000001c170000000000000000000000000000000000000000000000000000000000001c170100000000000000000000000000000000000000000000000000000000001c170200000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c170100000000000000000000000000000000000000000000000000000000001c170200000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c170200000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c172e00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c172e00000000000000000000000000000000000000000000000000000000001c172f00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c172e00000000000000000000000000000000000000000000000000000000001c172f00000000000000000000000000000000000000000000000000000000001c17300000002fa31a6f04586e3a2a21543c9074df3ca55c50b6da4f0c03f42f24c602cab5d20000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000201000000000000000000000000000000000000000000000000000000000000020100100000000000000000000000000000000000000000000000000000000002010020000000000000000000000000000000000000000000000000000000000201003000000000000000000000000000000000000000000000000000000000020100400000000000000000000000000000000000000000000000000000000002010050000000000000000000000000000000000000000000000000000000000201006000000000000000000000000000000000000000000000000000000000020100700000000000000000000000000000000000000000000000000000000002010080000000000000000000000000000000000000000000000000000000000201009000000000000000000000000000000000000000000000000000000000020100a000000000000000000000000000000000000000000000000000000000020100b000000000000000000000000000000000000000000000000000000000020100c000000000000000000000000000000000000000000000000000000000020100d000000000000000000000000000000000000000000000000000000000020100e000000000000000000000000000000000000000000000000000000000020100f0000000000000000000000000000000000000000000000000000000000201010000000000000000000000000000000000000000000000000000000000020101100000000000000000000000000000000000000000000000000000000002010120000000000000000000000000000000000000000000000000000000000201013000000000000000000000000000000000000000000000000000000000020101400000000000000000000000000000000000000000000000000000000002010150000000000000000000000000000000000000000000000000000000000201016000000000000000000000000000000000000000000000000000000000020101700000000000000000000000000000000000000000000000000000000002010180000000000000000000000000000000000000000000000000000000000201019000000000000000000000000000000000000000000000000000000000020101a000000000000000000000000000000000000000000000000000000000020101b000000000000000000000000000000000000000000000000000000000020101c000000000000000000000000000000000000000000000000000000000020101d000000000000000000000000000000000000000000000000000000000020101e000000000000000000000000000000000000000000000000000000000020101f0000000000000000000000000000000000000000000000000000000000201020000000000000000000000000000000000000000000000000000000000020102100000000000000000000000000000000000000000000000000000000002010220000000000000000000000000000000000000000000000000000000000201023000000000000000000000000000000000000000000000000000000000020102400000000000000000000000000000000000000000000000000000000002010250000000000000000000000000000000000000000000000000000000000201026000000000000000000000000000000000000000000000000000000000020102700000000000000000000000000000000000000000000000000000000002010280000000000000000000000000000000000000000000000000000000000201029000000000000000000000000000000000000000000000000000000000020102a000000000000000000000000000000000000000000000000000000000020102b000000000000000000000000000000000000000000000000000000000020102c000000000000000000000000000000000000000000000000000000000020102d000000000000000000000000000000000000000000000000000000000020102e000000000000000000000000000000000000000000000000000000000020102f0000000000000000000000000000000000000000000000000000000000201030000000000000000000000000000000000000000000000000000000000020103100000000000000000000000000000000000000000000000000000000002010320000000000000000000000000000000000000000000000000000000000201033000000000000000000000000000000000000000000000000000000000020103400000000000000000000000000000000000000000000000000000000002010350000000000000000000000000000000000000000000000000000000000201036000000000000000000000000000000000000000000000000000000000020103700000000000000000000000000000000000000000000000000000000002010380000000000000000000000000000000000000000000000000000000000201039000000000000000000000000000000000000000000000000000000000020103a000000000000000000000000000000000000000000000000000000000020103b000000000000000000000000000000000000000000000000000000000020103c000000000000000000000000000000000000000000000000000000000020103d000000000000000000000000000000000000000000000000000000000020103e000000000000000000000000000000000000000000000000000000000020103f4000000000000000000000000000000000000000000000000000000000002000010000000000000000000000000000000000000000000000000000000000201100000000000000000000000000000000000000000000000000000000000020110100000000000000000000000000000000000000000000000000000000002011020000000000000000000000000000000000000000000000000000000000201103000000000000000000000000000000000000000000000000000000000020110400000000000000000000000000000000000000000000000000000000002011050000000000000000000000000000000000000000000000000000000000201106000000000000000000000000000000000000000000000000000000000020110700000000000000000000000000000000000000000000000000000000002011080000000000000000000000000000000000000000000000000000000000201109000000000000000000000000000000000000000000000000000000000020110a000000000000000000000000000000000000000000000000000000000020110b000000000000000000000000000000000000000000000000000000000020110c000000000000000000000000000000000000000000000000000000000020110d000000000000000000000000000000000000000000000000000000000020110e000000000000000000000000000000000000000000000000000000000020110f0000000000000000000000000000000000000000000000000000000000201110000000000000000000000000000000000000000000000000000000000020111100000000000000000000000000000000000000000000000000000000002011120000000000000000000000000000000000000000000000000000000000201113000000000000000000000000000000000000000000000000000000000020111400000000000000000000000000000000000000000000000000000000002011150000000000000000000000000000000000000000000000000000000000201116000000000000000000000000000000000000000000000000000000000020111700000000000000000000000000000000000000000000000000000000002011180000000000000000000000000000000000000000000000000000000000201119000000000000000000000000000000000000000000000000000000000020111a000000000000000000000000000000000000000000000000000000000020111b000000000000000000000000000000000000000000000000000000000020111c000000000000000000000000000000000000000000000000000000000020111d000000000000000000000000000000000000000000000000000000000020111e000000000000000000000000000000000000000000000000000000000020111f0000000000000000000000000000000000000000000000000000000000201120000000000000000000000000000000000000000000000000000000000020112100000000000000000000000000000000000000000000000000000000002011220000000000000000000000000000000000000000000000000000000000201123000000000000000000000000000000000000000000000000000000000020112400000000000000000000000000000000000000000000000000000000002011250000000000000000000000000000000000000000000000000000000000201126000000000000000000000000000000000000000000000000000000000020112700000000000000000000000000000000000000000000000000000000002011280000000000000000000000000000000000000000000000000000000000201129000000000000000000000000000000000000000000000000000000000020112a000000000000000000000000000000000000000000000000000000000020112b000000000000000000000000000000000000000000000000000000000020112c000000000000000000000000000000000000000000000000000000000020112d000000000000000000000000000000000000000000000000000000000020112e000000000000000000000000000000000000000000000000000000000020112f0000000000000000000000000000000000000000000000000000000000201130000000000000000000000000000000000000000000000000000000000020113100000000000000000000000000000000000000000000000000000000002011320000000000000000000000000000000000000000000000000000000000201133000000000000000000000000000000000000000000000000000000000020113400000000000000000000000000000000000000000000000000000000002011350000000000000000000000000000000000000000000000000000000000201136000000000000000000000000000000000000000000000000000000000020113700000000000000000000000000000000000000000000000000000000002011380000000000000000000000000000000000000000000000000000000000201139000000000000000000000000000000000000000000000000000000000020113a000000000000000000000000000000000000000000000000000000000020113b000000000000000000000000000000000000000000000000000000000020113c000000000000000000000000000000000000000000000000000000000020113d000000000000000000000000000000000000000000000000000000000020113e0800d4c9d39d698d06c3b49ad11d4d89ff4ec838fd14ad941cc2ac0340bfee304800fb06024eb7dff37b3c77a69d1e27bbc6d860fdffd771faa7e9f17bbb0bed5800259eb1667d2b6a72ecb9d455e81a3052a60a9bd744d85b5449dfc22b17f5d0001beeee5f13f3dff7465966e88f06c46f7a258f84577b34ef923a87bd6edfda00ac7febde047495327e9dabc3fcc8a04ded70158499cc018a9bb3dd291a2f0e00a04338d85e9d73781b73c9f6763341d13716207a07ce7936a4e45c0dc074ff00706f1c4f8555164868e9338b3e7a5d671eafc646ba0c7f94c54300a5912ed2007e1e853242042314b8bcf470ff8ae46908ef57f18251f09e0725d8141ac89f400000000000000000000000000000000000000000000000000000000000202000000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202001000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202002000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202003000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202004000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202005000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020060000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020200700000000000000000000000000000000000000000000000000000000002020110000000000000000000000000000000000000000000000000000000000202008000000000000000000000000000000000000000000000000000000000020201200000000000000000000000000000000000000000000000000000000002020090000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202016000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202017000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202011000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202012000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020160000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020201700000000000000000000000000000000000000000000000000000000002020210000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020202200000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202026000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202027000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202021000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202022000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020260000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020202700000000000000000000000000000000000000000000000000000000002020310000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020203200000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202036000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202037000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202031000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202032000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020203f00000000000000000000000000000000000000000000000000000000002020360000000000000000000000000000000000000000000000000000000000202040000000000000000000000000000000000000000000000000000000000020203700000000000000000000000000000000000000000000000000000000002020410000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020204200000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202043000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202044000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202045000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202046000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202047000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202048000000000000000000000000000000000000000000000000000000000020203f0000000000000000000000000000000000000000000000000000000000202049200000000000000000000000000000000000000000000000000000000000201700000000000000000000000000000000000000000000000000000000000020170100000000000000000000000000000000000000000000000000000000002017020000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020170100000000000000000000000000000000000000000000000000000000002017020000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017020000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020171500000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020171500000000000000000000000000000000000000000000000000000000002017160000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020171500000000000000000000000000000000000000000000000000000000002017160000000000000000000000000000000000000000000000000000000000201717000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020171500000000000000000000000000000000000000000000000000000000002017160000000000000000000000000000000000000000000000000000000000201717000000000000000000000000000000000000000000000000000000000020171800000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020171500000000000000000000000000000000000000000000000000000000002017160000000000000000000000000000000000000000000000000000000000201717000000000000000000000000000000000000000000000000000000000020171800000000000000000000000000000000000000000000000000000000002017190000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020172500000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020172500000000000000000000000000000000000000000000000000000000002017260000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020172500000000000000000000000000000000000000000000000000000000002017260000000000000000000000000000000000000000000000000000000000201727000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020172500000000000000000000000000000000000000000000000000000000002017260000000000000000000000000000000000000000000000000000000000201727000000000000000000000000000000000000000000000000000000000020172800000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020172500000000000000000000000000000000000000000000000000000000002017260000000000000000000000000000000000000000000000000000000000201727000000000000000000000000000000000000000000000000000000000020172800000000000000000000000000000000000000000000000000000000002017290000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020172e000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020172e000000000000000000000000000000000000000000000000000000000020172f000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020172e000000000000000000000000000000000000000000000000000000000020172f00000000000000000000000000000000000000000000000000000000002017300000", "decodedHeader": { + "lastArchiveRoot": "0x29434ef0cfab380ec6550743417be14a615c79dbd42d9f686b6d7e132ea39eab", "contentCommitment": { - "blobsHash": "0x0042a7cffd7591f823ec8fa49858e9f3b03e748b2b9cd6cbdcd948a40028eec6", - "inHash": "0x00e1371045bd7d2c3e1f19cba5f536f0e82042ba4bc257d4ba19c146215e8242", - "outHash": "0x00a5c37986316b1f5f2df53fa9ddf4965f539e872f5e1374f28d225540faca26", + "blobsHash": "0x00e4e6a4789e3aa19d06748395b6d9911bab5e9a680134385411cdf545bf27ed", + "inHash": "0x0019b7d6bce47976e4b6fca68db5c284719a5ca61f825bcbbe276e76187a95b3", + "outHash": "0x00dcff4af6b062ee2e9e6c1e2a3650d0dd6f466e04bfea094831318be5ae0d40", "numTxs": 4 }, - "globalVariables": { - "blockNumber": 2, - "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000024", - "chainId": 31337, - "timestamp": 1736365276, - "version": 1, - "coinbase": "0xd000439d68f416a72188f6c91df9835e23d1619d", - "feeRecipient": "0x27f4b7fbf6f8db148d464396089d97cb994ababc3e1923d24b1e6076b0431b00", - "gasFees": { - "feePerDaGas": 0, - "feePerL2Gas": 1020 - } + "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000022", + "timestamp": 1744912874, + "coinbase": "0xc790caa781719be6813a0dc5c985b35ed0e27de9", + "feeRecipient": "0x28433ab079835b0b1e66665b64339dbcdb71015570137a25a613907754608a1e", + "gasFees": { + "feePerDaGas": 0, + "feePerL2Gas": 1020 }, - "totalFees": "0x0000000000000000000000000000000000000000000000000000000000000000", - "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000", - "lastArchive": { - "nextAvailableLeafIndex": 2, - "root": "0x155210fd3188716162b2f6c650aa5874466280eb49e68f21f392d746919f6e1b" - }, - "stateReference": { - "l1ToL2MessageTree": { - "nextAvailableLeafIndex": 32, - "root": "0x026efb6c2a517de2448119d0f1255757265dbec7cdd2952df929ede666e10944" - }, - "partialStateReference": { - "noteHashTree": { - "nextAvailableLeafIndex": 512, - "root": "0x2494d2575971bca59a28ddc774d19136f4a294951ab67258c7e9c2d8f9805924" - }, - "nullifierTree": { - "nextAvailableLeafIndex": 640, - "root": "0x137a2b2aa3dc64677f9670d964242d8fbf9fbabaa6b05e2c910eb0cb0f7cc3be" - }, - "publicDataTree": { - "nextAvailableLeafIndex": 640, - "root": "0x27d5aa7e8c9cc259ee91c6b2a712904c93d1d1293118fae7026302a75c84d61e" - } - } - } + "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000" }, - "header": "0x155210fd3188716162b2f6c650aa5874466280eb49e68f21f392d746919f6e1b0000000200000000000000000000000000000000000000000000000000000000000000040042a7cffd7591f823ec8fa49858e9f3b03e748b2b9cd6cbdcd948a40028eec600e1371045bd7d2c3e1f19cba5f536f0e82042ba4bc257d4ba19c146215e824200a5c37986316b1f5f2df53fa9ddf4965f539e872f5e1374f28d225540faca26026efb6c2a517de2448119d0f1255757265dbec7cdd2952df929ede666e10944000000202494d2575971bca59a28ddc774d19136f4a294951ab67258c7e9c2d8f980592400000200137a2b2aa3dc64677f9670d964242d8fbf9fbabaa6b05e2c910eb0cb0f7cc3be0000028027d5aa7e8c9cc259ee91c6b2a712904c93d1d1293118fae7026302a75c84d61e000002800000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000677ed4dcd000439d68f416a72188f6c91df9835e23d1619d27f4b7fbf6f8db148d464396089d97cb994ababc3e1923d24b1e6076b0431b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x00e4dc66a369a61cde70f33427261c0364d2da863c68482345d59f8d2101124b", - "blobInputs": "0x01017cc9c82841a1d9d8d26e294a1c91b4dd0d731a5a4ea7f8b5cc9e1e0e79b3b0210173d836288004a169ce0164d5260b3916a8322c2e10d767c2cd88bf259de604307f2585ab89042782f6d71a0803c3473773eb1f1496e588abc88f598bcfdeb0def1e7863bb049829d2becab7e29bced7a0c2ddf9e28c398a90d6fba74c5ae8926fc0e4db0002b05ab1bcdb8da59d9ae9b47ac7f4d0b94291442d59902483b167f42cdd7ae92611e46cdfd211f14a2dfdffd98ee363eb40a45a3612f5b773f", + "header": "0x29434ef0cfab380ec6550743417be14a615c79dbd42d9f686b6d7e132ea39eab000000000000000000000000000000000000000000000000000000000000000400e4e6a4789e3aa19d06748395b6d9911bab5e9a680134385411cdf545bf27ed0019b7d6bce47976e4b6fca68db5c284719a5ca61f825bcbbe276e76187a95b300dcff4af6b062ee2e9e6c1e2a3650d0dd6f466e04bfea094831318be5ae0d40000000000000000000000000000000000000000000000000000000000000002200000000680141eac790caa781719be6813a0dc5c985b35ed0e27de928433ab079835b0b1e66665b64339dbcdb71015570137a25a613907754608a1e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fc0000000000000000000000000000000000000000000000000000000000000000", "numTxs": 4 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/single_tx_block_1.json b/l1-contracts/test/fixtures/single_tx_block_1.json index 13b84b5ea370..2bbca05f721a 100644 --- a/l1-contracts/test/fixtures/single_tx_block_1.json +++ b/l1-contracts/test/fixtures/single_tx_block_1.json @@ -23,69 +23,40 @@ }, "messages": { "l2ToL1Messages": [ - "0x0097a6ec570e9b8e257647c9c74c5ad3edc57ca5ef6ae44d80b3c30d1d99b9b3", - "0x00ce48ec41d1edde0066fab553a456ae2f380d14fa8f956af1fb0217513a5989", - "0x00619ff12eaf97f63aa2a2311de3b6571a7b880a5247cb33b6a74787bf3f9bd5", - "0x007854a2fad4e1801c6404394bf3d37ab08c135ea38a1974242e39a21273685f", - "0x000f55796e72957a819e68a22e8602d73c3ba3718a5a4bd92b80b0aa444b182a", - "0x00788b6e9874fb040ee679a7fae257190099a605229b948334e54a57739535d4", - "0x004f1658ee3c1a91627e5d72f5a731f0796299df82ab41e72c88eee0c82fa85e", - "0x003ee802add96628c693ed71afa9908138ba5a6fbf0a5f29a9c74e4e42aba671" + "0x00d1a1a6857b4c1cbd27e72a04672bc2b2598964192b4ebd129418f582f12427", + "0x00d685cf23e33e0fa0e4964165847ff112ea5103872b27a37c478a0610f96b5a", + "0x004ff8e587af97a8ec230164962d94ecc3c411850c11d4beb0c3843037333dbe", + "0x00648ea56b00294c9b4cdae1b32cebf6578403ff34eb73497ee4bda89940efcb", + "0x00ec4f90e6018810d6af04f2b6aab24df66c768e54ddb1e11788000131592ca9", + "0x00ba4f9417a89919394eec195a9a6aafdabd643e224e0bf054e85d314cc7ad72", + "0x00a9725d762091488213d54630d698fd72d039583d22572427060ca04c1f731d", + "0x00a79c544801b3787d01d140d70c48bf5b5f4c5b60e04aa5734087ab68bea4be" ] }, "block": { - "archive": "0x0597ee46e1331f63212f835b2d78b119be4d71b850172cec33fe279168a96a78", - "body": "0x000000010017be1340b1d588a74f982b8a2e26421f73f45a84c90103de3d5bf6a609785f3e0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000041000000000000000000000000000000000000000000000000000000000000004100100000000000000000000000000000000000000000000000000000000000410020000000000000000000000000000000000000000000000000000000000041003000000000000000000000000000000000000000000000000000000000004100400000000000000000000000000000000000000000000000000000000000410050000000000000000000000000000000000000000000000000000000000041006000000000000000000000000000000000000000000000000000000000004100700000000000000000000000000000000000000000000000000000000000410080000000000000000000000000000000000000000000000000000000000041009000000000000000000000000000000000000000000000000000000000004100a000000000000000000000000000000000000000000000000000000000004100b000000000000000000000000000000000000000000000000000000000004100c000000000000000000000000000000000000000000000000000000000004100d000000000000000000000000000000000000000000000000000000000004100e000000000000000000000000000000000000000000000000000000000004100f0000000000000000000000000000000000000000000000000000000000041010000000000000000000000000000000000000000000000000000000000004101100000000000000000000000000000000000000000000000000000000000410120000000000000000000000000000000000000000000000000000000000041013000000000000000000000000000000000000000000000000000000000004101400000000000000000000000000000000000000000000000000000000000410150000000000000000000000000000000000000000000000000000000000041016000000000000000000000000000000000000000000000000000000000004101700000000000000000000000000000000000000000000000000000000000410180000000000000000000000000000000000000000000000000000000000041019000000000000000000000000000000000000000000000000000000000004101a000000000000000000000000000000000000000000000000000000000004101b000000000000000000000000000000000000000000000000000000000004101c000000000000000000000000000000000000000000000000000000000004101d000000000000000000000000000000000000000000000000000000000004101e000000000000000000000000000000000000000000000000000000000004101f0000000000000000000000000000000000000000000000000000000000041020000000000000000000000000000000000000000000000000000000000004102100000000000000000000000000000000000000000000000000000000000410220000000000000000000000000000000000000000000000000000000000041023000000000000000000000000000000000000000000000000000000000004102400000000000000000000000000000000000000000000000000000000000410250000000000000000000000000000000000000000000000000000000000041026000000000000000000000000000000000000000000000000000000000004102700000000000000000000000000000000000000000000000000000000000410280000000000000000000000000000000000000000000000000000000000041029000000000000000000000000000000000000000000000000000000000004102a000000000000000000000000000000000000000000000000000000000004102b000000000000000000000000000000000000000000000000000000000004102c000000000000000000000000000000000000000000000000000000000004102d000000000000000000000000000000000000000000000000000000000004102e000000000000000000000000000000000000000000000000000000000004102f0000000000000000000000000000000000000000000000000000000000041030000000000000000000000000000000000000000000000000000000000004103100000000000000000000000000000000000000000000000000000000000410320000000000000000000000000000000000000000000000000000000000041033000000000000000000000000000000000000000000000000000000000004103400000000000000000000000000000000000000000000000000000000000410350000000000000000000000000000000000000000000000000000000000041036000000000000000000000000000000000000000000000000000000000004103700000000000000000000000000000000000000000000000000000000000410380000000000000000000000000000000000000000000000000000000000041039000000000000000000000000000000000000000000000000000000000004103a000000000000000000000000000000000000000000000000000000000004103b000000000000000000000000000000000000000000000000000000000004103c000000000000000000000000000000000000000000000000000000000004103d000000000000000000000000000000000000000000000000000000000004103e000000000000000000000000000000000000000000000000000000000004103f4000000000000000000000000000000000000000000000000000000000000400010000000000000000000000000000000000000000000000000000000000041100000000000000000000000000000000000000000000000000000000000004110100000000000000000000000000000000000000000000000000000000000411020000000000000000000000000000000000000000000000000000000000041103000000000000000000000000000000000000000000000000000000000004110400000000000000000000000000000000000000000000000000000000000411050000000000000000000000000000000000000000000000000000000000041106000000000000000000000000000000000000000000000000000000000004110700000000000000000000000000000000000000000000000000000000000411080000000000000000000000000000000000000000000000000000000000041109000000000000000000000000000000000000000000000000000000000004110a000000000000000000000000000000000000000000000000000000000004110b000000000000000000000000000000000000000000000000000000000004110c000000000000000000000000000000000000000000000000000000000004110d000000000000000000000000000000000000000000000000000000000004110e000000000000000000000000000000000000000000000000000000000004110f0000000000000000000000000000000000000000000000000000000000041110000000000000000000000000000000000000000000000000000000000004111100000000000000000000000000000000000000000000000000000000000411120000000000000000000000000000000000000000000000000000000000041113000000000000000000000000000000000000000000000000000000000004111400000000000000000000000000000000000000000000000000000000000411150000000000000000000000000000000000000000000000000000000000041116000000000000000000000000000000000000000000000000000000000004111700000000000000000000000000000000000000000000000000000000000411180000000000000000000000000000000000000000000000000000000000041119000000000000000000000000000000000000000000000000000000000004111a000000000000000000000000000000000000000000000000000000000004111b000000000000000000000000000000000000000000000000000000000004111c000000000000000000000000000000000000000000000000000000000004111d000000000000000000000000000000000000000000000000000000000004111e000000000000000000000000000000000000000000000000000000000004111f0000000000000000000000000000000000000000000000000000000000041120000000000000000000000000000000000000000000000000000000000004112100000000000000000000000000000000000000000000000000000000000411220000000000000000000000000000000000000000000000000000000000041123000000000000000000000000000000000000000000000000000000000004112400000000000000000000000000000000000000000000000000000000000411250000000000000000000000000000000000000000000000000000000000041126000000000000000000000000000000000000000000000000000000000004112700000000000000000000000000000000000000000000000000000000000411280000000000000000000000000000000000000000000000000000000000041129000000000000000000000000000000000000000000000000000000000004112a000000000000000000000000000000000000000000000000000000000004112b000000000000000000000000000000000000000000000000000000000004112c000000000000000000000000000000000000000000000000000000000004112d000000000000000000000000000000000000000000000000000000000004112e000000000000000000000000000000000000000000000000000000000004112f0000000000000000000000000000000000000000000000000000000000041130000000000000000000000000000000000000000000000000000000000004113100000000000000000000000000000000000000000000000000000000000411320000000000000000000000000000000000000000000000000000000000041133000000000000000000000000000000000000000000000000000000000004113400000000000000000000000000000000000000000000000000000000000411350000000000000000000000000000000000000000000000000000000000041136000000000000000000000000000000000000000000000000000000000004113700000000000000000000000000000000000000000000000000000000000411380000000000000000000000000000000000000000000000000000000000041139000000000000000000000000000000000000000000000000000000000004113a000000000000000000000000000000000000000000000000000000000004113b000000000000000000000000000000000000000000000000000000000004113c000000000000000000000000000000000000000000000000000000000004113d000000000000000000000000000000000000000000000000000000000004113e080097a6ec570e9b8e257647c9c74c5ad3edc57ca5ef6ae44d80b3c30d1d99b9b300ce48ec41d1edde0066fab553a456ae2f380d14fa8f956af1fb0217513a598900619ff12eaf97f63aa2a2311de3b6571a7b880a5247cb33b6a74787bf3f9bd5007854a2fad4e1801c6404394bf3d37ab08c135ea38a1974242e39a21273685f000f55796e72957a819e68a22e8602d73c3ba3718a5a4bd92b80b0aa444b182a00788b6e9874fb040ee679a7fae257190099a605229b948334e54a57739535d4004f1658ee3c1a91627e5d72f5a731f0796299df82ab41e72c88eee0c82fa85e003ee802add96628c693ed71afa9908138ba5a6fbf0a5f29a9c74e4e42aba671400000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042001000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042002000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042003000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042004000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042005000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420060000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004200700000000000000000000000000000000000000000000000000000000000420110000000000000000000000000000000000000000000000000000000000042008000000000000000000000000000000000000000000000000000000000004201200000000000000000000000000000000000000000000000000000000000420090000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042016000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042017000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042011000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042012000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420160000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004201700000000000000000000000000000000000000000000000000000000000420210000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004202200000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042026000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042027000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042021000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042022000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420260000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004202700000000000000000000000000000000000000000000000000000000000420310000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004203200000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042036000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042037000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042031000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042032000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004203f00000000000000000000000000000000000000000000000000000000000420360000000000000000000000000000000000000000000000000000000000042040000000000000000000000000000000000000000000000000000000000004203700000000000000000000000000000000000000000000000000000000000420410000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004204200000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042043000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042044000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042045000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042046000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042047000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042048000000000000000000000000000000000000000000000000000000000004203f0000000000000000000000000000000000000000000000000000000000042049200000000000000000000000000000000000000000000000000000000000041700000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004171800000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004171800000000000000000000000000000000000000000000000000000000000417190000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004172800000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004172800000000000000000000000000000000000000000000000000000000000417290000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f00000000000000000000000000000000000000000000000000000000000417300000", + "archive": "0x2bbbf8f220a9a7f15e86928fd5843840dd0bfee91f0d573ef4d3011b2e1ff10d", + "blobInputs": "0x0101d7509bea9efe4bcaef570c4b75ac10bba161c2ce2d385923f827f1bb9fa56020a30621d927eb35be762667d07f193fb87fd0b658bea647c288bbf26004f2626b7572a3ec7ba008f55e9c03b36ea247b3d602262cf6a237d65b54e80a3c1628a5f0ee0b1c662263c4ad20489d477197eda046daf8499572a38329ad7fc55525cc4c3c08976a9f1f192e7e5b72da08f7a983c5829bd3aa0b0f465af5e3ef0370167792414cf1685abf7b6a54493914bc9ff7c8bca8b55a8cd576fd3957e6c263", + "blockNumber": 1, + "body": "0x00000001000e00a3c9c99b2790aaa639d6ca9ced1faaa50b879b39f98ea1930e9559671f3e0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000041000000000000000000000000000000000000000000000000000000000000004100100000000000000000000000000000000000000000000000000000000000410020000000000000000000000000000000000000000000000000000000000041003000000000000000000000000000000000000000000000000000000000004100400000000000000000000000000000000000000000000000000000000000410050000000000000000000000000000000000000000000000000000000000041006000000000000000000000000000000000000000000000000000000000004100700000000000000000000000000000000000000000000000000000000000410080000000000000000000000000000000000000000000000000000000000041009000000000000000000000000000000000000000000000000000000000004100a000000000000000000000000000000000000000000000000000000000004100b000000000000000000000000000000000000000000000000000000000004100c000000000000000000000000000000000000000000000000000000000004100d000000000000000000000000000000000000000000000000000000000004100e000000000000000000000000000000000000000000000000000000000004100f0000000000000000000000000000000000000000000000000000000000041010000000000000000000000000000000000000000000000000000000000004101100000000000000000000000000000000000000000000000000000000000410120000000000000000000000000000000000000000000000000000000000041013000000000000000000000000000000000000000000000000000000000004101400000000000000000000000000000000000000000000000000000000000410150000000000000000000000000000000000000000000000000000000000041016000000000000000000000000000000000000000000000000000000000004101700000000000000000000000000000000000000000000000000000000000410180000000000000000000000000000000000000000000000000000000000041019000000000000000000000000000000000000000000000000000000000004101a000000000000000000000000000000000000000000000000000000000004101b000000000000000000000000000000000000000000000000000000000004101c000000000000000000000000000000000000000000000000000000000004101d000000000000000000000000000000000000000000000000000000000004101e000000000000000000000000000000000000000000000000000000000004101f0000000000000000000000000000000000000000000000000000000000041020000000000000000000000000000000000000000000000000000000000004102100000000000000000000000000000000000000000000000000000000000410220000000000000000000000000000000000000000000000000000000000041023000000000000000000000000000000000000000000000000000000000004102400000000000000000000000000000000000000000000000000000000000410250000000000000000000000000000000000000000000000000000000000041026000000000000000000000000000000000000000000000000000000000004102700000000000000000000000000000000000000000000000000000000000410280000000000000000000000000000000000000000000000000000000000041029000000000000000000000000000000000000000000000000000000000004102a000000000000000000000000000000000000000000000000000000000004102b000000000000000000000000000000000000000000000000000000000004102c000000000000000000000000000000000000000000000000000000000004102d000000000000000000000000000000000000000000000000000000000004102e000000000000000000000000000000000000000000000000000000000004102f0000000000000000000000000000000000000000000000000000000000041030000000000000000000000000000000000000000000000000000000000004103100000000000000000000000000000000000000000000000000000000000410320000000000000000000000000000000000000000000000000000000000041033000000000000000000000000000000000000000000000000000000000004103400000000000000000000000000000000000000000000000000000000000410350000000000000000000000000000000000000000000000000000000000041036000000000000000000000000000000000000000000000000000000000004103700000000000000000000000000000000000000000000000000000000000410380000000000000000000000000000000000000000000000000000000000041039000000000000000000000000000000000000000000000000000000000004103a000000000000000000000000000000000000000000000000000000000004103b000000000000000000000000000000000000000000000000000000000004103c000000000000000000000000000000000000000000000000000000000004103d000000000000000000000000000000000000000000000000000000000004103e000000000000000000000000000000000000000000000000000000000004103f4000000000000000000000000000000000000000000000000000000000000400010000000000000000000000000000000000000000000000000000000000041100000000000000000000000000000000000000000000000000000000000004110100000000000000000000000000000000000000000000000000000000000411020000000000000000000000000000000000000000000000000000000000041103000000000000000000000000000000000000000000000000000000000004110400000000000000000000000000000000000000000000000000000000000411050000000000000000000000000000000000000000000000000000000000041106000000000000000000000000000000000000000000000000000000000004110700000000000000000000000000000000000000000000000000000000000411080000000000000000000000000000000000000000000000000000000000041109000000000000000000000000000000000000000000000000000000000004110a000000000000000000000000000000000000000000000000000000000004110b000000000000000000000000000000000000000000000000000000000004110c000000000000000000000000000000000000000000000000000000000004110d000000000000000000000000000000000000000000000000000000000004110e000000000000000000000000000000000000000000000000000000000004110f0000000000000000000000000000000000000000000000000000000000041110000000000000000000000000000000000000000000000000000000000004111100000000000000000000000000000000000000000000000000000000000411120000000000000000000000000000000000000000000000000000000000041113000000000000000000000000000000000000000000000000000000000004111400000000000000000000000000000000000000000000000000000000000411150000000000000000000000000000000000000000000000000000000000041116000000000000000000000000000000000000000000000000000000000004111700000000000000000000000000000000000000000000000000000000000411180000000000000000000000000000000000000000000000000000000000041119000000000000000000000000000000000000000000000000000000000004111a000000000000000000000000000000000000000000000000000000000004111b000000000000000000000000000000000000000000000000000000000004111c000000000000000000000000000000000000000000000000000000000004111d000000000000000000000000000000000000000000000000000000000004111e000000000000000000000000000000000000000000000000000000000004111f0000000000000000000000000000000000000000000000000000000000041120000000000000000000000000000000000000000000000000000000000004112100000000000000000000000000000000000000000000000000000000000411220000000000000000000000000000000000000000000000000000000000041123000000000000000000000000000000000000000000000000000000000004112400000000000000000000000000000000000000000000000000000000000411250000000000000000000000000000000000000000000000000000000000041126000000000000000000000000000000000000000000000000000000000004112700000000000000000000000000000000000000000000000000000000000411280000000000000000000000000000000000000000000000000000000000041129000000000000000000000000000000000000000000000000000000000004112a000000000000000000000000000000000000000000000000000000000004112b000000000000000000000000000000000000000000000000000000000004112c000000000000000000000000000000000000000000000000000000000004112d000000000000000000000000000000000000000000000000000000000004112e000000000000000000000000000000000000000000000000000000000004112f0000000000000000000000000000000000000000000000000000000000041130000000000000000000000000000000000000000000000000000000000004113100000000000000000000000000000000000000000000000000000000000411320000000000000000000000000000000000000000000000000000000000041133000000000000000000000000000000000000000000000000000000000004113400000000000000000000000000000000000000000000000000000000000411350000000000000000000000000000000000000000000000000000000000041136000000000000000000000000000000000000000000000000000000000004113700000000000000000000000000000000000000000000000000000000000411380000000000000000000000000000000000000000000000000000000000041139000000000000000000000000000000000000000000000000000000000004113a000000000000000000000000000000000000000000000000000000000004113b000000000000000000000000000000000000000000000000000000000004113c000000000000000000000000000000000000000000000000000000000004113d000000000000000000000000000000000000000000000000000000000004113e0800d1a1a6857b4c1cbd27e72a04672bc2b2598964192b4ebd129418f582f1242700d685cf23e33e0fa0e4964165847ff112ea5103872b27a37c478a0610f96b5a004ff8e587af97a8ec230164962d94ecc3c411850c11d4beb0c3843037333dbe00648ea56b00294c9b4cdae1b32cebf6578403ff34eb73497ee4bda89940efcb00ec4f90e6018810d6af04f2b6aab24df66c768e54ddb1e11788000131592ca900ba4f9417a89919394eec195a9a6aafdabd643e224e0bf054e85d314cc7ad7200a9725d762091488213d54630d698fd72d039583d22572427060ca04c1f731d00a79c544801b3787d01d140d70c48bf5b5f4c5b60e04aa5734087ab68bea4be400000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042001000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042002000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042003000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042004000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042005000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420060000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004200700000000000000000000000000000000000000000000000000000000000420110000000000000000000000000000000000000000000000000000000000042008000000000000000000000000000000000000000000000000000000000004201200000000000000000000000000000000000000000000000000000000000420090000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042016000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042017000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042011000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042012000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420160000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004201700000000000000000000000000000000000000000000000000000000000420210000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004202200000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042026000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042027000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042021000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042022000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420260000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004202700000000000000000000000000000000000000000000000000000000000420310000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004203200000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042036000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042037000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042031000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042032000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004203f00000000000000000000000000000000000000000000000000000000000420360000000000000000000000000000000000000000000000000000000000042040000000000000000000000000000000000000000000000000000000000004203700000000000000000000000000000000000000000000000000000000000420410000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004204200000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042043000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042044000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042045000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042046000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042047000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042048000000000000000000000000000000000000000000000000000000000004203f0000000000000000000000000000000000000000000000000000000000042049200000000000000000000000000000000000000000000000000000000000041700000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004171800000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004171800000000000000000000000000000000000000000000000000000000000417190000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004172800000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004172800000000000000000000000000000000000000000000000000000000000417290000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f00000000000000000000000000000000000000000000000000000000000417300000", "decodedHeader": { + "lastArchiveRoot": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae", "contentCommitment": { - "blobsHash": "0x00eebff001f99da234e03b7f71e498b8ebc91691232c43b8a3e94d645b754f93", + "blobsHash": "0x006f1b53567241e0d30c28ca502bb9b9994181e32dbb8038231dc5fe426b4ee1", "inHash": "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c", - "outHash": "0x0077d7a5d20132e30e08855aaf9b57d3a10464d72915830307af3eed373a218e", + "outHash": "0x00f4d8c57e12f13a811f66baf76574dc8d1a7ca54063084fdb172abfc86507af", "numTxs": 1 }, - "globalVariables": { - "blockNumber": 1, - "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000019", - "chainId": 31337, - "timestamp": 1742998681, - "version": 1, - "coinbase": "0x509ad28f57e7c48f407ba8817e09f8c5a35cd99e", - "feeRecipient": "0x2a8b4b30849ccc6eff72262562dbb6fcd77104acce75f162fdfb30b6d4997580", - "gasFees": { - "feePerDaGas": 0, - "feePerL2Gas": 4330 - } + "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000019", + "timestamp": 1744911638, + "coinbase": "0x1f526170d47b7a301f548990fe007e6cf542f7f7", + "feeRecipient": "0x0ee7fd7f7d70de66a3a142d84162720202f3df658d001128bcf367c9157dfdf6", + "gasFees": { + "feePerDaGas": 0, + "feePerL2Gas": 1020 }, - "totalFees": "0x0000000000000000000000000000000000000000000000000000000000000000", - "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000", - "lastArchive": { - "nextAvailableLeafIndex": 1, - "root": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae" - }, - "stateReference": { - "l1ToL2MessageTree": { - "nextAvailableLeafIndex": 16, - "root": "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" - }, - "partialStateReference": { - "noteHashTree": { - "nextAvailableLeafIndex": 64, - "root": "0x142a1312a8dacc58c97d5dc0f9bc949ef0fe4d153c13ffcbe094665405b3c9a8" - }, - "nullifierTree": { - "nextAvailableLeafIndex": 192, - "root": "0x01d6d73ea906b0b733dc3826affeb3eb6a54d5645f6e3b4ddab7830e9a1f48df" - }, - "publicDataTree": { - "nextAvailableLeafIndex": 192, - "root": "0x080039323b94fe18c2d9e8fe4939b636b71dcd05a426a2426549b99d3fdbea99" - } - } - } + "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000" }, - "header": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae00000001000000000000000000000000000000000000000000000000000000000000000100eebff001f99da234e03b7f71e498b8ebc91691232c43b8a3e94d645b754f9300089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c0077d7a5d20132e30e08855aaf9b57d3a10464d72915830307af3eed373a218e2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d600000010142a1312a8dacc58c97d5dc0f9bc949ef0fe4d153c13ffcbe094665405b3c9a80000004001d6d73ea906b0b733dc3826affeb3eb6a54d5645f6e3b4ddab7830e9a1f48df000000c0080039323b94fe18c2d9e8fe4939b636b71dcd05a426a2426549b99d3fdbea99000000c00000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000067e40c99509ad28f57e7c48f407ba8817e09f8c5a35cd99e2a8b4b30849ccc6eff72262562dbb6fcd77104acce75f162fdfb30b6d4997580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010ea00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x004fda64dcba29dcd58d08e19fcb8d443f2014e91c28222a644ac34b8524f521", - "blobInputs": "0x0101623303d9585258da3df278232450a9b9e22ad63eaa1827943145d8e1a940c70f95095b11f9befd26b3128bc12e9303c7d9464b20d8de0cd41b411d4513bda70e1725bdbb4481ee3d13896fb8a6d5a5d3a03cc509dca716f5ecefd3e5415caaa3db7607c2959337a0ee03bb26a4bd02f55b579f9ddeef15f6629f5259684aa9bd2e82fba54fb1b70fb0bba620a92cd9a36d8e4880185e875f430f7babfd35f1d78853e684df666d2b5b152e1ef34bf9575fe1a7f8523534eee0b5508120d4cd", + "header": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae0000000000000000000000000000000000000000000000000000000000000001006f1b53567241e0d30c28ca502bb9b9994181e32dbb8038231dc5fe426b4ee100089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00f4d8c57e12f13a811f66baf76574dc8d1a7ca54063084fdb172abfc86507af00000000000000000000000000000000000000000000000000000000000000190000000068013d161f526170d47b7a301f548990fe007e6cf542f7f70ee7fd7f7d70de66a3a142d84162720202f3df658d001128bcf367c9157dfdf6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fc0000000000000000000000000000000000000000000000000000000000000000", "numTxs": 1 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/single_tx_block_2.json b/l1-contracts/test/fixtures/single_tx_block_2.json index 420d91b3aa52..87cb4dc21362 100644 --- a/l1-contracts/test/fixtures/single_tx_block_2.json +++ b/l1-contracts/test/fixtures/single_tx_block_2.json @@ -23,69 +23,40 @@ }, "messages": { "l2ToL1Messages": [ - "0x005c015113cb57d67dd6c0febd596819ac0298b6a23fc80aba17d445d540059a", - "0x00f20b7d1308051fe7b68031a7c336b0b4b56738928b6510133aff1b818d5a9a", - "0x0063eec1883a4f95f4933f9275e850d84b3d035f5061ed986c437a07331fd30e", - "0x00d3a32d6bbc4fd843686fd0c5e118a73b847529977dca5b9e0e81f6604f22ca", - "0x00c2f4f5133d9194d41e853e5e951e16690babce8461f25342c0bad20f2aa1e3", - "0x000a6bf4739e7eb387913d955dc2e8f14f8cce27696b9d2e128b6acefafb80ee", - "0x005763f7e0648f958b559677622a648f318fc79ebc0cb539170d49c26456e692", - "0x00302e2b8a92cda941e9af8761b89899a58a587656d9710594e1d865b1652299" + "0x009babbfb0889c9e72cdb31ca6042ca3dae473aa9d39013e89f7d4925c1f1898", + "0x0074b4667daf867c39717c5bed8bc341594ebf36744bc16e720b3ec8a097e173", + "0x006bb323c0647f7ca84b01456f910bf45a8f53ed44ee9cab3e68a0b4580d0663", + "0x00a89e348b9f969d938fe5790c6966b97eb46ef5779aa62430db876b29f37548", + "0x0049f6dcde8d145b29a2975dec16394eb58b4ada738cd3791ae275a959ad42f9", + "0x002213a082f305a8b1a1920d79df8e6e34344a6ac05d3a097f70c73068ee4a9f", + "0x00e9caacb39d073b296d62ec6d83de3b4df5f8ac8791d2dbfd6218eb6abb48b2", + "0x001bda02f29a51315be63e78636715167a3e1d883268445b1a034174f5645733" ] }, "block": { - "archive": "0x11e5e8a656d5dd9f7406b22fc7ee5a442ba5e6e1c2ac8e89b56e4957a5250b32", - "body": "0x0000000100021dd25b45b6b5d3adc1e289ec9295fac847fe36a25282a28fae507ddd09b97f0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000141000000000000000000000000000000000000000000000000000000000000014100100000000000000000000000000000000000000000000000000000000001410020000000000000000000000000000000000000000000000000000000000141003000000000000000000000000000000000000000000000000000000000014100400000000000000000000000000000000000000000000000000000000001410050000000000000000000000000000000000000000000000000000000000141006000000000000000000000000000000000000000000000000000000000014100700000000000000000000000000000000000000000000000000000000001410080000000000000000000000000000000000000000000000000000000000141009000000000000000000000000000000000000000000000000000000000014100a000000000000000000000000000000000000000000000000000000000014100b000000000000000000000000000000000000000000000000000000000014100c000000000000000000000000000000000000000000000000000000000014100d000000000000000000000000000000000000000000000000000000000014100e000000000000000000000000000000000000000000000000000000000014100f0000000000000000000000000000000000000000000000000000000000141010000000000000000000000000000000000000000000000000000000000014101100000000000000000000000000000000000000000000000000000000001410120000000000000000000000000000000000000000000000000000000000141013000000000000000000000000000000000000000000000000000000000014101400000000000000000000000000000000000000000000000000000000001410150000000000000000000000000000000000000000000000000000000000141016000000000000000000000000000000000000000000000000000000000014101700000000000000000000000000000000000000000000000000000000001410180000000000000000000000000000000000000000000000000000000000141019000000000000000000000000000000000000000000000000000000000014101a000000000000000000000000000000000000000000000000000000000014101b000000000000000000000000000000000000000000000000000000000014101c000000000000000000000000000000000000000000000000000000000014101d000000000000000000000000000000000000000000000000000000000014101e000000000000000000000000000000000000000000000000000000000014101f0000000000000000000000000000000000000000000000000000000000141020000000000000000000000000000000000000000000000000000000000014102100000000000000000000000000000000000000000000000000000000001410220000000000000000000000000000000000000000000000000000000000141023000000000000000000000000000000000000000000000000000000000014102400000000000000000000000000000000000000000000000000000000001410250000000000000000000000000000000000000000000000000000000000141026000000000000000000000000000000000000000000000000000000000014102700000000000000000000000000000000000000000000000000000000001410280000000000000000000000000000000000000000000000000000000000141029000000000000000000000000000000000000000000000000000000000014102a000000000000000000000000000000000000000000000000000000000014102b000000000000000000000000000000000000000000000000000000000014102c000000000000000000000000000000000000000000000000000000000014102d000000000000000000000000000000000000000000000000000000000014102e000000000000000000000000000000000000000000000000000000000014102f0000000000000000000000000000000000000000000000000000000000141030000000000000000000000000000000000000000000000000000000000014103100000000000000000000000000000000000000000000000000000000001410320000000000000000000000000000000000000000000000000000000000141033000000000000000000000000000000000000000000000000000000000014103400000000000000000000000000000000000000000000000000000000001410350000000000000000000000000000000000000000000000000000000000141036000000000000000000000000000000000000000000000000000000000014103700000000000000000000000000000000000000000000000000000000001410380000000000000000000000000000000000000000000000000000000000141039000000000000000000000000000000000000000000000000000000000014103a000000000000000000000000000000000000000000000000000000000014103b000000000000000000000000000000000000000000000000000000000014103c000000000000000000000000000000000000000000000000000000000014103d000000000000000000000000000000000000000000000000000000000014103e000000000000000000000000000000000000000000000000000000000014103f4000000000000000000000000000000000000000000000000000000000001400010000000000000000000000000000000000000000000000000000000000141100000000000000000000000000000000000000000000000000000000000014110100000000000000000000000000000000000000000000000000000000001411020000000000000000000000000000000000000000000000000000000000141103000000000000000000000000000000000000000000000000000000000014110400000000000000000000000000000000000000000000000000000000001411050000000000000000000000000000000000000000000000000000000000141106000000000000000000000000000000000000000000000000000000000014110700000000000000000000000000000000000000000000000000000000001411080000000000000000000000000000000000000000000000000000000000141109000000000000000000000000000000000000000000000000000000000014110a000000000000000000000000000000000000000000000000000000000014110b000000000000000000000000000000000000000000000000000000000014110c000000000000000000000000000000000000000000000000000000000014110d000000000000000000000000000000000000000000000000000000000014110e000000000000000000000000000000000000000000000000000000000014110f0000000000000000000000000000000000000000000000000000000000141110000000000000000000000000000000000000000000000000000000000014111100000000000000000000000000000000000000000000000000000000001411120000000000000000000000000000000000000000000000000000000000141113000000000000000000000000000000000000000000000000000000000014111400000000000000000000000000000000000000000000000000000000001411150000000000000000000000000000000000000000000000000000000000141116000000000000000000000000000000000000000000000000000000000014111700000000000000000000000000000000000000000000000000000000001411180000000000000000000000000000000000000000000000000000000000141119000000000000000000000000000000000000000000000000000000000014111a000000000000000000000000000000000000000000000000000000000014111b000000000000000000000000000000000000000000000000000000000014111c000000000000000000000000000000000000000000000000000000000014111d000000000000000000000000000000000000000000000000000000000014111e000000000000000000000000000000000000000000000000000000000014111f0000000000000000000000000000000000000000000000000000000000141120000000000000000000000000000000000000000000000000000000000014112100000000000000000000000000000000000000000000000000000000001411220000000000000000000000000000000000000000000000000000000000141123000000000000000000000000000000000000000000000000000000000014112400000000000000000000000000000000000000000000000000000000001411250000000000000000000000000000000000000000000000000000000000141126000000000000000000000000000000000000000000000000000000000014112700000000000000000000000000000000000000000000000000000000001411280000000000000000000000000000000000000000000000000000000000141129000000000000000000000000000000000000000000000000000000000014112a000000000000000000000000000000000000000000000000000000000014112b000000000000000000000000000000000000000000000000000000000014112c000000000000000000000000000000000000000000000000000000000014112d000000000000000000000000000000000000000000000000000000000014112e000000000000000000000000000000000000000000000000000000000014112f0000000000000000000000000000000000000000000000000000000000141130000000000000000000000000000000000000000000000000000000000014113100000000000000000000000000000000000000000000000000000000001411320000000000000000000000000000000000000000000000000000000000141133000000000000000000000000000000000000000000000000000000000014113400000000000000000000000000000000000000000000000000000000001411350000000000000000000000000000000000000000000000000000000000141136000000000000000000000000000000000000000000000000000000000014113700000000000000000000000000000000000000000000000000000000001411380000000000000000000000000000000000000000000000000000000000141139000000000000000000000000000000000000000000000000000000000014113a000000000000000000000000000000000000000000000000000000000014113b000000000000000000000000000000000000000000000000000000000014113c000000000000000000000000000000000000000000000000000000000014113d000000000000000000000000000000000000000000000000000000000014113e08005c015113cb57d67dd6c0febd596819ac0298b6a23fc80aba17d445d540059a00f20b7d1308051fe7b68031a7c336b0b4b56738928b6510133aff1b818d5a9a0063eec1883a4f95f4933f9275e850d84b3d035f5061ed986c437a07331fd30e00d3a32d6bbc4fd843686fd0c5e118a73b847529977dca5b9e0e81f6604f22ca00c2f4f5133d9194d41e853e5e951e16690babce8461f25342c0bad20f2aa1e3000a6bf4739e7eb387913d955dc2e8f14f8cce27696b9d2e128b6acefafb80ee005763f7e0648f958b559677622a648f318fc79ebc0cb539170d49c26456e69200302e2b8a92cda941e9af8761b89899a58a587656d9710594e1d865b1652299400000000000000000000000000000000000000000000000000000000000142000000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142001000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142002000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142003000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142004000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142005000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420060000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014200700000000000000000000000000000000000000000000000000000000001420110000000000000000000000000000000000000000000000000000000000142008000000000000000000000000000000000000000000000000000000000014201200000000000000000000000000000000000000000000000000000000001420090000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142016000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142017000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142011000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142012000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420160000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014201700000000000000000000000000000000000000000000000000000000001420210000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014202200000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142026000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142027000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142021000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142022000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420260000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014202700000000000000000000000000000000000000000000000000000000001420310000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014203200000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142036000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142037000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142031000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142032000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014203f00000000000000000000000000000000000000000000000000000000001420360000000000000000000000000000000000000000000000000000000000142040000000000000000000000000000000000000000000000000000000000014203700000000000000000000000000000000000000000000000000000000001420410000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014204200000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142043000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142044000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142045000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142046000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142047000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142048000000000000000000000000000000000000000000000000000000000014203f0000000000000000000000000000000000000000000000000000000000142049200000000000000000000000000000000000000000000000000000000000141700000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014171800000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014171800000000000000000000000000000000000000000000000000000000001417190000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014172800000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014172800000000000000000000000000000000000000000000000000000000001417290000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f00000000000000000000000000000000000000000000000000000000001417300000", + "archive": "0x154d2b3bc9f16cbcd5271ad24dc84b967b8459f5c84ba6924343015ac1f074ab", + "blobInputs": "0x0101ea465260d00097e5c0cf3fcdd1893136d4b8260a3cbd6557c4cbc26115c50028dea2ef634b28d12611661275d8a2abdc22f07d7e6b8c3eb3dc7e61f3ff7da844d7951affc86ba38ab61ed7e27181521b245397b55d7c6179f6bb218958f326b0a760804ee550694c44a8d392f9642e0fdefd0214c665a59488751f5316daa7bd46cbcbb2ee018c237dbe6efad7cb6fae491677306f8c5a20da76882200b9ccb1861671b591e1529319e90f949bc136d62f50c7bfc4bd01fed336609998a204", + "blockNumber": 2, + "body": "0x00000001002d1b7440956d23cbbb99acf93bfdce7a0f08111c4f66dd3839b65c5a3083f7d30000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000141000000000000000000000000000000000000000000000000000000000000014100100000000000000000000000000000000000000000000000000000000001410020000000000000000000000000000000000000000000000000000000000141003000000000000000000000000000000000000000000000000000000000014100400000000000000000000000000000000000000000000000000000000001410050000000000000000000000000000000000000000000000000000000000141006000000000000000000000000000000000000000000000000000000000014100700000000000000000000000000000000000000000000000000000000001410080000000000000000000000000000000000000000000000000000000000141009000000000000000000000000000000000000000000000000000000000014100a000000000000000000000000000000000000000000000000000000000014100b000000000000000000000000000000000000000000000000000000000014100c000000000000000000000000000000000000000000000000000000000014100d000000000000000000000000000000000000000000000000000000000014100e000000000000000000000000000000000000000000000000000000000014100f0000000000000000000000000000000000000000000000000000000000141010000000000000000000000000000000000000000000000000000000000014101100000000000000000000000000000000000000000000000000000000001410120000000000000000000000000000000000000000000000000000000000141013000000000000000000000000000000000000000000000000000000000014101400000000000000000000000000000000000000000000000000000000001410150000000000000000000000000000000000000000000000000000000000141016000000000000000000000000000000000000000000000000000000000014101700000000000000000000000000000000000000000000000000000000001410180000000000000000000000000000000000000000000000000000000000141019000000000000000000000000000000000000000000000000000000000014101a000000000000000000000000000000000000000000000000000000000014101b000000000000000000000000000000000000000000000000000000000014101c000000000000000000000000000000000000000000000000000000000014101d000000000000000000000000000000000000000000000000000000000014101e000000000000000000000000000000000000000000000000000000000014101f0000000000000000000000000000000000000000000000000000000000141020000000000000000000000000000000000000000000000000000000000014102100000000000000000000000000000000000000000000000000000000001410220000000000000000000000000000000000000000000000000000000000141023000000000000000000000000000000000000000000000000000000000014102400000000000000000000000000000000000000000000000000000000001410250000000000000000000000000000000000000000000000000000000000141026000000000000000000000000000000000000000000000000000000000014102700000000000000000000000000000000000000000000000000000000001410280000000000000000000000000000000000000000000000000000000000141029000000000000000000000000000000000000000000000000000000000014102a000000000000000000000000000000000000000000000000000000000014102b000000000000000000000000000000000000000000000000000000000014102c000000000000000000000000000000000000000000000000000000000014102d000000000000000000000000000000000000000000000000000000000014102e000000000000000000000000000000000000000000000000000000000014102f0000000000000000000000000000000000000000000000000000000000141030000000000000000000000000000000000000000000000000000000000014103100000000000000000000000000000000000000000000000000000000001410320000000000000000000000000000000000000000000000000000000000141033000000000000000000000000000000000000000000000000000000000014103400000000000000000000000000000000000000000000000000000000001410350000000000000000000000000000000000000000000000000000000000141036000000000000000000000000000000000000000000000000000000000014103700000000000000000000000000000000000000000000000000000000001410380000000000000000000000000000000000000000000000000000000000141039000000000000000000000000000000000000000000000000000000000014103a000000000000000000000000000000000000000000000000000000000014103b000000000000000000000000000000000000000000000000000000000014103c000000000000000000000000000000000000000000000000000000000014103d000000000000000000000000000000000000000000000000000000000014103e000000000000000000000000000000000000000000000000000000000014103f4000000000000000000000000000000000000000000000000000000000001400010000000000000000000000000000000000000000000000000000000000141100000000000000000000000000000000000000000000000000000000000014110100000000000000000000000000000000000000000000000000000000001411020000000000000000000000000000000000000000000000000000000000141103000000000000000000000000000000000000000000000000000000000014110400000000000000000000000000000000000000000000000000000000001411050000000000000000000000000000000000000000000000000000000000141106000000000000000000000000000000000000000000000000000000000014110700000000000000000000000000000000000000000000000000000000001411080000000000000000000000000000000000000000000000000000000000141109000000000000000000000000000000000000000000000000000000000014110a000000000000000000000000000000000000000000000000000000000014110b000000000000000000000000000000000000000000000000000000000014110c000000000000000000000000000000000000000000000000000000000014110d000000000000000000000000000000000000000000000000000000000014110e000000000000000000000000000000000000000000000000000000000014110f0000000000000000000000000000000000000000000000000000000000141110000000000000000000000000000000000000000000000000000000000014111100000000000000000000000000000000000000000000000000000000001411120000000000000000000000000000000000000000000000000000000000141113000000000000000000000000000000000000000000000000000000000014111400000000000000000000000000000000000000000000000000000000001411150000000000000000000000000000000000000000000000000000000000141116000000000000000000000000000000000000000000000000000000000014111700000000000000000000000000000000000000000000000000000000001411180000000000000000000000000000000000000000000000000000000000141119000000000000000000000000000000000000000000000000000000000014111a000000000000000000000000000000000000000000000000000000000014111b000000000000000000000000000000000000000000000000000000000014111c000000000000000000000000000000000000000000000000000000000014111d000000000000000000000000000000000000000000000000000000000014111e000000000000000000000000000000000000000000000000000000000014111f0000000000000000000000000000000000000000000000000000000000141120000000000000000000000000000000000000000000000000000000000014112100000000000000000000000000000000000000000000000000000000001411220000000000000000000000000000000000000000000000000000000000141123000000000000000000000000000000000000000000000000000000000014112400000000000000000000000000000000000000000000000000000000001411250000000000000000000000000000000000000000000000000000000000141126000000000000000000000000000000000000000000000000000000000014112700000000000000000000000000000000000000000000000000000000001411280000000000000000000000000000000000000000000000000000000000141129000000000000000000000000000000000000000000000000000000000014112a000000000000000000000000000000000000000000000000000000000014112b000000000000000000000000000000000000000000000000000000000014112c000000000000000000000000000000000000000000000000000000000014112d000000000000000000000000000000000000000000000000000000000014112e000000000000000000000000000000000000000000000000000000000014112f0000000000000000000000000000000000000000000000000000000000141130000000000000000000000000000000000000000000000000000000000014113100000000000000000000000000000000000000000000000000000000001411320000000000000000000000000000000000000000000000000000000000141133000000000000000000000000000000000000000000000000000000000014113400000000000000000000000000000000000000000000000000000000001411350000000000000000000000000000000000000000000000000000000000141136000000000000000000000000000000000000000000000000000000000014113700000000000000000000000000000000000000000000000000000000001411380000000000000000000000000000000000000000000000000000000000141139000000000000000000000000000000000000000000000000000000000014113a000000000000000000000000000000000000000000000000000000000014113b000000000000000000000000000000000000000000000000000000000014113c000000000000000000000000000000000000000000000000000000000014113d000000000000000000000000000000000000000000000000000000000014113e08009babbfb0889c9e72cdb31ca6042ca3dae473aa9d39013e89f7d4925c1f18980074b4667daf867c39717c5bed8bc341594ebf36744bc16e720b3ec8a097e173006bb323c0647f7ca84b01456f910bf45a8f53ed44ee9cab3e68a0b4580d066300a89e348b9f969d938fe5790c6966b97eb46ef5779aa62430db876b29f375480049f6dcde8d145b29a2975dec16394eb58b4ada738cd3791ae275a959ad42f9002213a082f305a8b1a1920d79df8e6e34344a6ac05d3a097f70c73068ee4a9f00e9caacb39d073b296d62ec6d83de3b4df5f8ac8791d2dbfd6218eb6abb48b2001bda02f29a51315be63e78636715167a3e1d883268445b1a034174f5645733400000000000000000000000000000000000000000000000000000000000142000000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142001000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142002000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142003000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142004000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142005000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420060000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014200700000000000000000000000000000000000000000000000000000000001420110000000000000000000000000000000000000000000000000000000000142008000000000000000000000000000000000000000000000000000000000014201200000000000000000000000000000000000000000000000000000000001420090000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142016000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142017000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142011000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142012000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420160000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014201700000000000000000000000000000000000000000000000000000000001420210000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014202200000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142026000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142027000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142021000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142022000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420260000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014202700000000000000000000000000000000000000000000000000000000001420310000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014203200000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142036000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142037000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142031000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142032000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014203f00000000000000000000000000000000000000000000000000000000001420360000000000000000000000000000000000000000000000000000000000142040000000000000000000000000000000000000000000000000000000000014203700000000000000000000000000000000000000000000000000000000001420410000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014204200000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142043000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142044000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142045000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142046000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142047000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142048000000000000000000000000000000000000000000000000000000000014203f0000000000000000000000000000000000000000000000000000000000142049200000000000000000000000000000000000000000000000000000000000141700000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014171800000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014171800000000000000000000000000000000000000000000000000000000001417190000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014172800000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014172800000000000000000000000000000000000000000000000000000000001417290000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f00000000000000000000000000000000000000000000000000000000001417300000", "decodedHeader": { + "lastArchiveRoot": "0x2bbbf8f220a9a7f15e86928fd5843840dd0bfee91f0d573ef4d3011b2e1ff10d", "contentCommitment": { - "blobsHash": "0x009233fdfe2f50d7176a1a9e22c7bba211a92369eb904d3154e7e66a047dcfbf", - "inHash": "0x00e1371045bd7d2c3e1f19cba5f536f0e82042ba4bc257d4ba19c146215e8242", - "outHash": "0x001b1d8b076a65df0f4a11ad667192987442f031c34f639c843dfec49c425602", + "blobsHash": "0x00a15e9ec3fe0a6cbe49d80ba9a189fa0301394d68d44e6d6380d8d56b0a9916", + "inHash": "0x006eed06254e3001a558743b40c3e4e26bf859cd01321678fd73af29bf75ed46", + "outHash": "0x0083e765b61ade6c3099aa68ab87dcf9b89d5e10a73a74520fe5938a3d460c2d", "numTxs": 1 }, - "globalVariables": { - "blockNumber": 2, - "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000022", - "chainId": 31337, - "timestamp": 1742998897, - "version": 1, - "coinbase": "0x509ad28f57e7c48f407ba8817e09f8c5a35cd99e", - "feeRecipient": "0x2a8b4b30849ccc6eff72262562dbb6fcd77104acce75f162fdfb30b6d4997580", - "gasFees": { - "feePerDaGas": 0, - "feePerL2Gas": 1230 - } + "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000022", + "timestamp": 1744911854, + "coinbase": "0x1f526170d47b7a301f548990fe007e6cf542f7f7", + "feeRecipient": "0x0ee7fd7f7d70de66a3a142d84162720202f3df658d001128bcf367c9157dfdf6", + "gasFees": { + "feePerDaGas": 0, + "feePerL2Gas": 1020 }, - "totalFees": "0x0000000000000000000000000000000000000000000000000000000000000000", - "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000", - "lastArchive": { - "nextAvailableLeafIndex": 2, - "root": "0x0597ee46e1331f63212f835b2d78b119be4d71b850172cec33fe279168a96a78" - }, - "stateReference": { - "l1ToL2MessageTree": { - "nextAvailableLeafIndex": 32, - "root": "0x026efb6c2a517de2448119d0f1255757265dbec7cdd2952df929ede666e10944" - }, - "partialStateReference": { - "noteHashTree": { - "nextAvailableLeafIndex": 128, - "root": "0x01aec0a148df6b4001468783cf50a3c6c99904144835d44408a7af869c46b233" - }, - "nullifierTree": { - "nextAvailableLeafIndex": 256, - "root": "0x01ee8f0bd3649ecd235fb31eb3b63c1a2f8d61c7f9bd3af681e39046ab0ddca0" - }, - "publicDataTree": { - "nextAvailableLeafIndex": 256, - "root": "0x13db3951032fbb6a9ae4aa3195954e4d4137410373576365fdc8dff93d3595b0" - } - } - } + "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000" }, - "header": "0x0597ee46e1331f63212f835b2d78b119be4d71b850172cec33fe279168a96a78000000020000000000000000000000000000000000000000000000000000000000000001009233fdfe2f50d7176a1a9e22c7bba211a92369eb904d3154e7e66a047dcfbf00e1371045bd7d2c3e1f19cba5f536f0e82042ba4bc257d4ba19c146215e8242001b1d8b076a65df0f4a11ad667192987442f031c34f639c843dfec49c425602026efb6c2a517de2448119d0f1255757265dbec7cdd2952df929ede666e109440000002001aec0a148df6b4001468783cf50a3c6c99904144835d44408a7af869c46b2330000008001ee8f0bd3649ecd235fb31eb3b63c1a2f8d61c7f9bd3af681e39046ab0ddca00000010013db3951032fbb6a9ae4aa3195954e4d4137410373576365fdc8dff93d3595b0000001000000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000067e40d71509ad28f57e7c48f407ba8817e09f8c5a35cd99e2a8b4b30849ccc6eff72262562dbb6fcd77104acce75f162fdfb30b6d4997580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ce00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x001287a3e5c1dd74c00cd1f259b18bd0225464a62ecc032af6037e1b9fbb44fc", - "blobInputs": "0x0101852dcd453197df573bbb7bb74389a65531e51fe3817ad4686be68f610406a617806603c07f7ae6aeab3b6d5bae90768ce8b5630efdebfbcc817b19d885647562785179e873bf2c74774604783bdb4f90f43c25a5e32efb54bd51b5523882d5991573f5a6b6efd195da4f1e8420d759dd3bffd3025095ae5db88f71fba5d4a4ac1dedac6da3b2a8dff6d4c8c2312b738f3ff79ea6ce6602fca4220f9dfa05d124b96e771917e2096376ab8c5f0f79ded34c73e2b3d49ae838ce5f4d3526dbfa", + "header": "0x2bbbf8f220a9a7f15e86928fd5843840dd0bfee91f0d573ef4d3011b2e1ff10d000000000000000000000000000000000000000000000000000000000000000100a15e9ec3fe0a6cbe49d80ba9a189fa0301394d68d44e6d6380d8d56b0a9916006eed06254e3001a558743b40c3e4e26bf859cd01321678fd73af29bf75ed460083e765b61ade6c3099aa68ab87dcf9b89d5e10a73a74520fe5938a3d460c2d00000000000000000000000000000000000000000000000000000000000000220000000068013dee1f526170d47b7a301f548990fe007e6cf542f7f70ee7fd7f7d70de66a3a142d84162720202f3df658d001128bcf367c9157dfdf6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fc0000000000000000000000000000000000000000000000000000000000000000", "numTxs": 1 } } \ No newline at end of file diff --git a/l1-contracts/test/ignition.t.sol b/l1-contracts/test/ignition.t.sol index 649a182a5dbc..c63ab5c90a10 100644 --- a/l1-contracts/test/ignition.t.sol +++ b/l1-contracts/test/ignition.t.sol @@ -64,9 +64,8 @@ contract IgnitionTest is RollupBase { testERC20 = new TestERC20("test", "TEST", address(this)); DecoderBase.Full memory full = load(_name); - uint256 slotNumber = full.block.decodedHeader.globalVariables.slotNumber; - uint256 initialTime = - full.block.decodedHeader.globalVariables.timestamp - slotNumber * SLOT_DURATION; + uint256 slotNumber = full.block.decodedHeader.slotNumber; + uint256 initialTime = full.block.decodedHeader.timestamp - slotNumber * SLOT_DURATION; vm.warp(initialTime); } diff --git a/l1-contracts/test/validator-selection/ValidatorSelection.t.sol b/l1-contracts/test/validator-selection/ValidatorSelection.t.sol index ef9fbff480f5..30120c97ddd0 100644 --- a/l1-contracts/test/validator-selection/ValidatorSelection.t.sol +++ b/l1-contracts/test/validator-selection/ValidatorSelection.t.sol @@ -18,7 +18,13 @@ import {MerkleTestUtil} from "../merkle/TestUtil.sol"; import {TestERC20} from "@aztec/mock/TestERC20.sol"; import {MessageHashUtils} from "@oz/utils/cryptography/MessageHashUtils.sol"; import {MockFeeJuicePortal} from "@aztec/mock/MockFeeJuicePortal.sol"; -import {ProposeArgs, OracleInput, ProposeLib} from "@aztec/core/libraries/rollup/ProposeLib.sol"; +import {HeaderLib} from "@aztec/core/libraries/rollup/HeaderLib.sol"; +import { + ProposeArgs, + ProposePayload, + OracleInput, + ProposeLib +} from "@aztec/core/libraries/rollup/ProposeLib.sol"; import {TestConstants} from "../harnesses/TestConstants.sol"; import {CheatDepositArgs} from "@aztec/core/interfaces/IRollup.sol"; @@ -69,9 +75,9 @@ contract ValidatorSelectionTest is DecoderBase { string memory _name = "mixed_block_1"; { DecoderBase.Full memory full = load(_name); - uint256 slotNumber = full.block.decodedHeader.globalVariables.slotNumber; - uint256 initialTime = full.block.decodedHeader.globalVariables.timestamp - - slotNumber * TestConstants.AZTEC_SLOT_DURATION; + uint256 slotNumber = full.block.decodedHeader.slotNumber; + uint256 initialTime = + full.block.decodedHeader.timestamp - slotNumber * TestConstants.AZTEC_SLOT_DURATION; timeCheater = new TimeCheater( address(rollup), @@ -265,31 +271,28 @@ contract ValidatorSelectionTest is DecoderBase { StructToAvoidDeepStacks memory ree; // We jump to the time of the block. (unless it is in the past) - vm.warp(max(block.timestamp, full.block.decodedHeader.globalVariables.timestamp)); + vm.warp(max(block.timestamp, full.block.decodedHeader.timestamp)); _populateInbox(full.populate.sender, full.populate.recipient, full.populate.l1ToL2Content); + rollup.setupEpoch(); + ree.proposer = rollup.getCurrentProposer(); ree.shouldRevert = false; - rollup.setupEpoch(); - bytes32[] memory txHashes = new bytes32[](0); { - uint256 version = rollup.getVersion(); uint256 manaBaseFee = rollup.getManaBaseFeeAt(Timestamp.wrap(block.timestamp), true); - bytes32 inHash = inbox.getRoot(full.block.decodedHeader.globalVariables.blockNumber); - assembly { - mstore(add(add(header, 0x20), 0x0064), inHash) - mstore(add(add(header, 0x20), 0x0154), version) - mstore(add(add(header, 0x20), 0x0228), manaBaseFee) - } + bytes32 inHash = inbox.getRoot(full.block.blockNumber); + header = DecoderBase.updateHeaderInboxRoot(header, inHash); + header = DecoderBase.updateHeaderBaseFee(header, manaBaseFee); } ProposeArgs memory args = ProposeArgs({ header: header, archive: full.block.archive, + stateReference: new bytes(0), oracleInput: OracleInput(0), txHashes: txHashes }); @@ -300,7 +303,15 @@ contract ValidatorSelectionTest is DecoderBase { Signature[] memory signatures = new Signature[](_signatureCount); - bytes32 digest = ProposeLib.digest(args); + ProposePayload memory proposePayload = ProposePayload({ + archive: args.archive, + stateReference: args.stateReference, + oracleInput: args.oracleInput, + headerHash: HeaderLib.hash(header), + txHashes: args.txHashes + }); + + bytes32 digest = ProposeLib.digest(proposePayload); for (uint256 i = 0; i < _signatureCount; i++) { signatures[i] = createSignature(validators[i], digest); } @@ -377,10 +388,10 @@ contract ValidatorSelectionTest is DecoderBase { l2ToL1MessageTreeRoot = tree.computeRoot(); } - (bytes32 root,) = outbox.getRootData(full.block.decodedHeader.globalVariables.blockNumber); + (bytes32 root,) = outbox.getRootData(full.block.blockNumber); // If we are trying to read a block beyond the proven chain, we should see "nothing". - if (rollup.getProvenBlockNumber() >= full.block.decodedHeader.globalVariables.blockNumber) { + if (rollup.getProvenBlockNumber() >= full.block.blockNumber) { assertEq(l2ToL1MessageTreeRoot, root, "Invalid l2 to l1 message tree root"); } else { assertEq(root, bytes32(0), "Invalid outbox root"); diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-init/Prover.toml b/noir-projects/noir-protocol-circuits/crates/private-kernel-init/Prover.toml index d4653881be59..c62448c4b30d 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-init/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-init/Prover.toml @@ -1,17 +1,17 @@ -vk_tree_root = "0x0e88f44969aa6d4ff0d17db376dfa057ed3aa447725b0febf35af08e0d1d468e" -protocol_contract_tree_root = "0x1ed87d453cb7c21c5dbca65441925b3f9138fd1433928dda23342367bf94f7c0" +vk_tree_root = "0x2ca9a33f5bf72a45ff0bc18657afa956eb151243a9bc9d3c113e4c711634fd7e" +protocol_contract_tree_root = "0x2d4c1fe46d355909b04374f3890ac9b6649eabcd85e2c8dd82e237c5808626ba" is_private_only = false first_nullifier_hint = "0x0000000000000000000000000000000000000000000000000000000000000000" [tx_request] -args_hash = "0x21e4a78d4b700c60e07c342316cef59791a9ca7bf858b24abaab5bee7ef2f464" +args_hash = "0x0c05b0c6751d0b20fb2946dbec47292e6454562e798e044a733a8ff04ffcf795" [tx_request.origin] - inner = "0x06615e4b566a640e99213edb664c8c0b49c5e833c3a4b16116fe1de9d06382da" + inner = "0x0eaa5f9a2339cab09e553484a4b465925e63f182ba64af15e0617743b623872c" [tx_request.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" [tx_request.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -23,7 +23,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [tx_request.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fc1" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fb2" [tx_request.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -40,132 +40,132 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000040000", "0x0000000000000000000000000000000000000000000000000000000000000010", "0x0000000000000000000000000000000000000000000000000000000000005609", + "0x0000000000000000000000000000000000000000000000000000000001000000", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000000000000000000000000000000000000ffffffff", - "0x00000000000000000000000000000000000000000000000000000000ffffffff", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000d07848ec3c6f5bf07b2ecaf0f9df31848b", - "0x00000000000000000000000000000000000f047593b0e2c1d74637596a063830", - "0x000000000000000000000000000000027de8369e90ed6f423abae4511146af1e", - "0x0000000000000000000000000000000000106b29a0a5361840f9c47d45da051f", - "0x000000000000000000000000000000c9771ea157dbe0ccd6a93b561ab7279e4c", - "0x0000000000000000000000000000000000026f532848423eb3df9b7e211e4095", - "0x000000000000000000000000000000e33691021d0235bce4aeed971909fb8be3", - "0x000000000000000000000000000000000021b4dd08ecf98014e8d7d659fc827f", - "0x0000000000000000000000000000008b226c162b5cf33ab4e03d363b51e9fd52", - "0x00000000000000000000000000000000003035f2f519bc64c2010a0aee56feff", - "0x0000000000000000000000000000006682d33f336559c696cbad85e56a197eab", - "0x0000000000000000000000000000000000230a88f56104ebfbf4b08f7d788a8c", - "0x00000000000000000000000000000010f1f92ae4de68dadf42248599bb8feba4", - "0x000000000000000000000000000000000017be09978043b394179f4976643914", - "0x000000000000000000000000000000910e1bae199b849d4e3c78b2bc031d3c37", - "0x00000000000000000000000000000000001b29754f7da53f25ee54d9bd5c96a4", - "0x000000000000000000000000000000daff69391f04a4f4b758a42ea44ed06031", - "0x00000000000000000000000000000000003021aa0294eaa9cfbca82ec74b6eb2", - "0x0000000000000000000000000000001674fc7e3033fdbf0259558d82adb0c1e6", - "0x00000000000000000000000000000000000315250eb906c2dc2a27c63a3a7904", - "0x000000000000000000000000000000355189a61241cb0d27b8e6b6784f5e9410", - "0x00000000000000000000000000000000002e837874d8955d6a09d328604c4cfc", - "0x0000000000000000000000000000001ba97fc6d5cde26c4bf189f0d36a3e00d5", - "0x00000000000000000000000000000000001a44a93227d9ca397b5c4b627e33d6", - "0x00000000000000000000000000000066aa9c8d7ab7581b9810eda73e53e17ddf", - "0x000000000000000000000000000000000022e4a62d589f5dc58e003e17d2c29e", - "0x00000000000000000000000000000052acb0956df6fa77996db824b0a1fe6270", - "0x00000000000000000000000000000000000e3f83d3c9ffa6247c0ba515ce2e6f", - "0x000000000000000000000000000000d0a00080cd8f34ba0e37546c102665c8fe", - "0x00000000000000000000000000000000000d56bbef147278fdc057f9a336d984", - "0x000000000000000000000000000000f11f3eaed8726026211d2ee0f83e32e453", - "0x0000000000000000000000000000000000291fbbe0b7f6f2823d5469cf981a1e", - "0x000000000000000000000000000000f9e46def9848e21d6cfc1cb9eb7467c334", - "0x0000000000000000000000000000000000199d04cff100cf2ea3378a2dff9e96", - "0x000000000000000000000000000000e12cd4348c0fee5f408603a93bbdd5a189", - "0x000000000000000000000000000000000003a7b70aa9ac2216a6c441645070c4", - "0x000000000000000000000000000000e1f6cd0eed1d0a2c4b62ebf9e3d89f4282", - "0x000000000000000000000000000000000012757e995a5f031876f98b81c151ce", - "0x00000000000000000000000000000007c8ee2896992e13e3e6bebe763369f0a3", - "0x0000000000000000000000000000000000062f91dffa68b920efd83aabe7618d", - "0x000000000000000000000000000000057ddcb73090cb416aeff42f51f63937e4", - "0x000000000000000000000000000000000020bd69436ac42738bbb39a72b9253b", - "0x0000000000000000000000000000009d92c3dea3b5731bf5aa01fac303db41c2", - "0x00000000000000000000000000000000001ae83164727e4f841a1aaf1ddf1f83", - "0x0000000000000000000000000000001f3e02d193e08f48e8cda7980ee69aa41c", - "0x000000000000000000000000000000000016cf9d30048eeb548a401f8a0525cf", - "0x0000000000000000000000000000008e15507df6461abe076cbd08b5cb573e8a", - "0x000000000000000000000000000000000006317ef1022d23a76f5613052f0150", - "0x00000000000000000000000000000068c38b1cbbc187ed876db29119b21fefc9", - "0x000000000000000000000000000000000011b6989170787d0ec6e790bbf44f2e", - "0x0000000000000000000000000000001d84d583f8b9223fe3deda1752f94ee111", - "0x00000000000000000000000000000000001d4e221a563f093c6f3a6202a1bb16", - "0x0000000000000000000000000000006051cef375a22a225c8d65dec619a67a38", - "0x0000000000000000000000000000000000110b407173b1ea857c1474ae3d2f6b", - "0x000000000000000000000000000000ec2ae3a1f0435e087188ac7d6e45a1ae7d", - "0x000000000000000000000000000000000010d8a71d9e49c33a30ad24ec50ca19", - "0x000000000000000000000000000000b2113610c4a73d1c8a7f05b55332dcac1b", - "0x000000000000000000000000000000000029afa31837b7cc89f2a3adf938f708", - "0x000000000000000000000000000000cb2af3e2736e55d8b48e2fe09c1c2aedd0", - "0x000000000000000000000000000000000005c36bccea38ab802de4d65c5fd0bc", - "0x000000000000000000000000000000e1baa383594e409d541e9ce7433377c6e8", - "0x000000000000000000000000000000000013a953efe86c2d1e64ae018c7d4b1f", - "0x000000000000000000000000000000fc788d8c88244dcfaba1c93f6eca4a50c9", - "0x00000000000000000000000000000000001ff58f3963bacea82212c9aa13fa87", - "0x0000000000000000000000000000008f3bf53f6a5df57df7baaeac5791e58f1b", - "0x000000000000000000000000000000000027d0fa4bc4f9ce5d619397bc2fd1db", - "0x0000000000000000000000000000005482f9be63305287310bfbfcac10e9d5fb", - "0x000000000000000000000000000000000011a0679ef255c9bcec2e169b322c37", - "0x00000000000000000000000000000079842dadc4cd50a8345c0b0b03344facd4", - "0x000000000000000000000000000000000026f439e4b5d784501e1489b840190a", - "0x000000000000000000000000000000169b2c21fc4cba3e76087ccf4c0a8b0610", - "0x00000000000000000000000000000000002d0d50d7c8f5cf88ed2ce1f3f9c8fc", - "0x000000000000000000000000000000682f8e066039e7f6c312ffde6debd05e38", - "0x00000000000000000000000000000000002eb853119dd2592f38dee1ba5fa799", - "0x00000000000000000000000000000036f9cbe6d783325ba64932c775e512183b", - "0x00000000000000000000000000000000002eda7ad63304d6d47b611fbd51648d", - "0x000000000000000000000000000000af43be2b285ac68e158b14bdd2e1936ab4", - "0x00000000000000000000000000000000001732e69909e408596fa68ea9a3648e", - "0x0000000000000000000000000000002c517b98652060b6175f2deff034a8e12a", - "0x0000000000000000000000000000000000071e0e7e4f1ccaf9b457696c07a43f", - "0x000000000000000000000000000000396536877ca317966883003d823fd2d19a", - "0x0000000000000000000000000000000000152c278e593ab353bb41ab282c4f41", - "0x000000000000000000000000000000618b0464544c1d469fa9d38b01a8bdb552", - "0x000000000000000000000000000000000028aba13ae29c19a8e32da83889378a", - "0x000000000000000000000000000000a73624e2afe22d4294d383c8ffc5f0c32b", - "0x000000000000000000000000000000000016e7929eda9d577b701ad9ec519140", - "0x000000000000000000000000000000422f4e1829d7281b1c2c148fcd3ac320ba", - "0x0000000000000000000000000000000000002c2a79c29fb84c3704d8852654c1", - "0x00000000000000000000000000000084a9b3527cd2ebff62b245a04aab258f92", - "0x00000000000000000000000000000000000a85019e1252699312cbd5ec6a23b2", - "0x00000000000000000000000000000000b5eee72336430c3feb7da6b8b57e1551", - "0x00000000000000000000000000000000001bba1a6e49f0ba66643e8b32fd090e", - "0x0000000000000000000000000000004d612c80fc91a269aaaaa975c84c8e58d6", - "0x000000000000000000000000000000000000b34e0082bc5aed819a81bb36744c", - "0x000000000000000000000000000000beb969e0f2c7856270dc5fda2c5d399dcc", - "0x00000000000000000000000000000000000013aea3bcc0841ec6d94b285f1beb", - "0x0000000000000000000000000000002671782a93372aad369530ae4b75c22bdb", - "0x000000000000000000000000000000000002d9f0465ef4b2b116d4b88625344f", - "0x00000000000000000000000000000026e9839942d72920141febdab07e4c20c3", - "0x0000000000000000000000000000000000265f0c70536ec02f7c9be4ce19c29d", - "0x0000000000000000000000000000003a339e8cb8c648d07c34ddcb4ef4452783", - "0x000000000000000000000000000000000027807a4f7b23d9cc1c865ef9930999", - "0x000000000000000000000000000000bc4fd810c781d7b239a47a086361686edc", - "0x00000000000000000000000000000000000cbf9d6e0b6faa609ddbd5817f5d10", + "0x0000000000000000000000000000000000000000000000000000000001000000", "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000ae20cb6dc8874f7723ac21f5c5984c3297", - "0x00000000000000000000000000000000001835527ffc970b894780b151db88ec", - "0x000000000000000000000000000000475f306e9003dd921fe51ea3e3e749fbe9", - "0x00000000000000000000000000000000000cc146ff4e30b5e13493ebbe8a72c0", - "0x0000000000000000000000000000006bcc7a05ff95a96b289424c5f733670d96", - "0x000000000000000000000000000000000000c43726f75b6fda0de22ce0e0dfab", - "0x0000000000000000000000000000001d0a09d7178ec93bad7858f96e64f0b48d", - "0x00000000000000000000000000000000002f9b6e0b4e2c01968de5c32482aa7d", - "0x000000000000000000000000000000e55ba19751adfe6c36324d3fb6c2da0989", - "0x00000000000000000000000000000000001d58aa61c64ad522043d79c4802219", - "0x00000000000000000000000000000078f4b3bc61f19d6e7069359bbf47e7f907", - "0x00000000000000000000000000000000002d7c18a93c3dae58809faaeec6a86a" + "0x000000000000000000000000000000060000000700000008000000090000000a", + "0x0000000000000000000000000000000000000000030000000400000005000000", + "0x0000000000000000000000000000000e0000000fffffffffffffffff000f0475", + "0x00000000000000000000000000000000000000000b0000000c0000000d000000", + "0x000000000000000000000000000000d375eb1c3c41d96b49457d8d4001997354", + "0x00000000000000000000000000000000000283f76933b156dc4115670d4bf43f", + "0x0000000000000000000000000000001dd80cadbb08e55b3c9cafa26a948b777e", + "0x00000000000000000000000000000000000f784abf9d64e4001ce933fb7df9df", + "0x000000000000000000000000000000a157dbe0ccd6a93b561ab7279e4c21b4dd", + "0x00000000000000000000000000000000002848423eb3df9b7e211e4095c9771e", + "0x000000000000000000000000000000021d0235bce4aeed971909fb8be33035f2", + "0x000000000000000000000000000000000008ecf98014e8d7d659fc827fe33691", + "0x0000000000000000000000000000004235d5de63aaa748740eaf2d8b17b21825", + "0x0000000000000000000000000000000000032434265c08e93a54c5a26f039bb2", + "0x0000000000000000000000000000006b3dde44ef8c92b8c3b8c75d0c70a6cba6", + "0x0000000000000000000000000000000000036b7cad95fc8fbee3e72dfbdefc19", + "0x000000000000000000000000000000121e5a2926a5ecc4dde559eba71aa431a0", + "0x00000000000000000000000000000000000653585af082becc4d7367f08c6df0", + "0x00000000000000000000000000000050821a1a0be5caae257fe291255eb32463", + "0x00000000000000000000000000000000001f1956cc44bcb4b0050c50ee0f8cc3", + "0x000000000000000000000000000000391f04a4f4b758a42ea44ed06031031525", + "0x00000000000000000000000000000000000294eaa9cfbca82ec74b6eb2daff69", + "0x0000000000000000000000000000007e3033fdbf0259558d82adb0c1e62e8378", + "0x00000000000000000000000000000000000eb906c2dc2a27c63a3a79041674fc", + "0x000000000000000000000000000000eae33ef5ea56d5519c000e46665f204a1b", + "0x0000000000000000000000000000000000140ff877a7a692d4efabc18f324ed8", + "0x000000000000000000000000000000693e4c77dae37fbf639749b1e9fca5e75f", + "0x000000000000000000000000000000000001c38b575849bc21aa2dee1f9a2827", + "0x0000000000000000000000000000008d7ab7581b9810eda73e53e17ddf0e3f83", + "0x00000000000000000000000000000000002d589f5dc58e003e17d2c29e66aa9c", + "0x0000000000000000000000000000001f0ff15031f7a68defc01fce070e19619f", + "0x00000000000000000000000000000000001238c5da9fb58afe348d17954ca74f", + "0x0000000000000000000000000000000a6f898a746c702a371fa4356d9c352a9f", + "0x00000000000000000000000000000000002d8338ad78f9d752c1f5c2aaca9a9f", + "0x000000000000000000000000000000387a6cb5e07f5604ac07bc0288f125a7e8", + "0x00000000000000000000000000000000001f26bd26fd76d3c2ee570344eb19dd", + "0x000000000000000000000000000000793a4337d7cb34f284faf23767d20fb29b", + "0x00000000000000000000000000000000000e5fc703a9dcb6e34cbe87bcf3df0c", + "0x000000000000000000000000000000348c0fee5f408603a93bbdd5a18912757e", + "0x00000000000000000000000000000000000aa9ac2216a6c441645070c4e12cd4", + "0x000000000000000000000000000000f62698ca78120d8c522f76fafdf88f37bc", + "0x0000000000000000000000000000000000082d73aa74e2190e58d080ab5d72c3", + "0x000000000000000000000000000000b2389383ce421f948985b13995412cc84d", + "0x00000000000000000000000000000000001e692eed9c295793caa64ab301c38c", + "0x00000000000000000000000000000059990f60b0027e29a215d5ad210b9deaea", + "0x0000000000000000000000000000000000130675b4578a1370ba68df8483fc84", + "0x0000000000000000000000000000002374b29df924c66ce04ac2c314111cd50f", + "0x000000000000000000000000000000000003a9e169c1b6da5bad3e94169a9013", + "0x000000000000000000000000000000d193e08f48e8cda7980ee69aa41c06317e", + "0x000000000000000000000000000000000030048eeb548a401f8a0525cf1f3e02", + "0x000000000000000000000000000000079840707865a592d3c54926e3281dc17c", + "0x00000000000000000000000000000000002f70f35822a8d56c23edea76880fef", + "0x00000000000000000000000000000003f53d48394e1852e965507bab3fa6564d", + "0x000000000000000000000000000000000000438d246b32071393037e0ae43f82", + "0x00000000000000000000000000000083f8b9223fe3deda1752f94ee111110b40", + "0x00000000000000000000000000000000001a563f093c6f3a6202a1bb161d84d5", + "0x00000000000000000000000000000038469f54ff8ba9d0c44dd88e4c8716de19", + "0x000000000000000000000000000000000010ab1504c318d4213d9ca3fe5d4f1e", + "0x000000000000000000000000000000a1f0435e087188ac7d6e45a1ae7d29afa3", + "0x00000000000000000000000000000000001d9e49c33a30ad24ec50ca19ec2ae3", + "0x00000000000000000000000000000010c4a73d1c8a7f05b55332dcac1b05c36b", + "0x00000000000000000000000000000000001837b7cc89f2a3adf938f708b21136", + "0x0000000000000000000000000000006c1568ab9312c705abab99fa926e1fb437", + "0x00000000000000000000000000000000000b58fedffb67642f7b1eb9e2c52592", + "0x0000000000000000000000000000000cfb489657b25772b252b1476b862c0073", + "0x00000000000000000000000000000000002e573261999e2d5aab3c3445dbb542", + "0x0000000000000000000000000000002ef0a2e33e432ffeb232a9be39f0aad3b3", + "0x000000000000000000000000000000000008ff6c5bc6f0729ff1c3b4d17af735", + "0x000000000000000000000000000000e1d2dc8aec8f48e41f1b7159784294a320", + "0x00000000000000000000000000000000001b60ab5b7c2ff36e03df8c250dba9c", + "0x000000000000000000000000000000a59cac12d2f7b69c54f7af459171affc64", + "0x00000000000000000000000000000000000dc56a7119574d9972415b13cffef0", + "0x0000000000000000000000000000003766c7a6629294e0d612b21f5172391834", + "0x000000000000000000000000000000000023249db8cb5793e2d6ff0230737ecc", + "0x000000000000000000000000000000ab9e470ff8d441529a5b885aaaae3ac337", + "0x00000000000000000000000000000000001637bc040426ac3b12b8b2221095ca", + "0x000000000000000000000000000000066039e7f6c312ffde6debd05e382eda7a", + "0x0000000000000000000000000000000000119dd2592f38dee1ba5fa799682f8e", + "0x00000000000000000000000000000070797d8816048208928562e1bcd9233dca", + "0x000000000000000000000000000000000014a1cb0b4fb4e078dc104db330f46a", + "0x0000000000000000000000000000001261d686d9dc35b5161e7fef262a902639", + "0x000000000000000000000000000000000007dcf8afb5dac61180b2936b2abfb5", + "0x000000000000000000000000000000dd361d8b93467b98d577f390b3791b3199", + "0x00000000000000000000000000000000001d867fe537511715fb6718d2294eca", + "0x000000000000000000000000000000cc4da04273979f6b2309febaa3e92eb113", + "0x00000000000000000000000000000000002d909dcd91580157b78bc3d4366285", + "0x00000000000000000000000000000006bccab2b5373808fdc588319e7999ea4b", + "0x00000000000000000000000000000000000a7e4da6c7b18d7e8038f1d3e009ac", + "0x000000000000000000000000000000c9e95ded8e5b7e24214b644c7ea1893455", + "0x00000000000000000000000000000000000dadb1fed7db3a5cc360c01d22b21b", + "0x0000000000000000000000000000005cfad452f84b487f7554f9aaf309108a73", + "0x000000000000000000000000000000000018fa02d289d3c4851485c9543f2c9d", + "0x00000000000000000000000000000039b64eac4b295ce5f89649814b08a4c245", + "0x00000000000000000000000000000000000ce56710ef7deb58c379528f0025aa", + "0x0000000000000000000000000000002bf4336de96f07e88c407465e7a006b8c0", + "0x00000000000000000000000000000000000d8153d4a400fe37c25c7da0fdb33e", + "0x00000000000000000000000000000080fc91a269aaaaa975c84c8e58d60013ae", + "0x00000000000000000000000000000000000082bc5aed819a81bb36744c4d612c", + "0x000000000000000000000000000000c82c4345ae3787003277fb9559428be21b", + "0x0000000000000000000000000000000000128fd52b7b31f8cdff6e4ac83a3560", + "0x000000000000000000000000000000ccfbb5c01bce2366210f55361502a961c5", + "0x000000000000000000000000000000000015faa63fcfe5348ecdd4ee98a4f01f", + "0x000000000000000000000000000000de13d453fd433c56c0383d33f3122d85ec", + "0x00000000000000000000000000000000000f8ad1da6d195b915d79373023e6d2", + "0x0000000000000000000000000000002f2144de3f13c3133e12d3b910aa8fc256", + "0x00000000000000000000000000000000001f16d566eaeae6354142c3e2b8b246", + "0x00000000000000000000000000000055987f028f68c0e4edeb2050412b060572", + "0x00000000000000000000000000000000000d42d2c49e3a9b8210ded1a3b94d27", + "0x0000000000000000000000000000000000000000000000000000000001000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000002183552", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000000000b299847a5452c88cdb4d573404e612c6b8", + "0x00000000000000000000000000000000001f33fa25c6e4405de13afd7fab1e1a", + "0x0000000000000000000000000000009a9a7cc8bb15ac29e1b7448d89ae8fd1d4", + "0x00000000000000000000000000000000000d58a8777b3c731b24f9162fbfd876", + "0x00000000000000000000000000000005ff95a96b289424c5f733670d962f9b6e", + "0x000000000000000000000000000000000026f75b6fda0de22ce0e0dfab6bcc7a", + "0x000000000000000000000000000000d7178ec93bad7858f96e64f0b48d1d58aa", + "0x00000000000000000000000000000000000b4e2c01968de5c32482aa7d1d0a09" ] -hash = "0x031570ed3478d22d7d97d1be5519bb3bea6d3c22e042f7164f487cbbb6121dfe" +hash = "0x10fad72140f40f7c200bfa3f91cd4c9ad7cd00e48499d58707954a1150b7c6ad" [private_call.verification_key_hints] contract_class_artifact_hash = "0x1758d5cf4772c1c7f9fcc6bfa04674c9ea52f973cbaeeb6574dfd0fe4317a046" @@ -179,59 +179,59 @@ updated_class_id_shared_mutable_values = [ [private_call.verification_key_hints.function_leaf_membership_witness] leaf_index = "0" sibling_path = [ - "0x1df756f36116369e1b442c2d1e8b9806fdb925b17a81474ae065efe5d923f088", - "0x246de0126eb62394290921e7f79d1a3461ba1080b4e68f7caf7dcdfc94cbdbf9", + "0x0e05cdf282d98701572083eccea2a803bb73f81d14339f0b1d5691451ea71fca", + "0x16d23b7db658bc27158da969be81cdb1b77d688beef0808ed96f1bc07aa321ba", "0x0e1ce4f11f4d51a7d3136abbd625315fff3876d322e46ad8401da96f8e43a614", "0x1a0ca5eecb1430479902264f04e557160a4666fb42bb8b283c6397e3d17ac937", "0x2a6595890719fef7967c209488728aa5342438ba52058a3c770202f55acf6854" ] [private_call.verification_key_hints.public_keys.npk_m.inner] -x = "0x14bab1603f2e5d8c1e1a05778ab5ab525febc66fc07871eda8574ff2518eb037" -y = "0x2b1568abbea9173cdacfbad009039b4a6b6c152f18ad4bd82e0b5cdff82a4bf3" +x = "0x04ae7954073be45534c6f2a4c66b6af010c465bb5f2093df1f35a798f2b6d4a3" +y = "0x07ba58d46c27211ffa47343566f0f08db258900d9a2a2ffdcaf1add3426f3c6e" is_infinite = false [private_call.verification_key_hints.public_keys.ivpk_m.inner] -x = "0x1aa8a9e4f6be9b84c5be8450f06fb4485ca2dbde5fb41260b51372e883d2ff97" -y = "0x1de57c2636954c237a33d7f6c5ac07b7b62f6aef8539504e461447c03d01b265" +x = "0x131921fad19137839dc6b539191fdb7d4b365e253094743e81c2ceb6d0488a39" +y = "0x286db05272f6ebeaaa7011deaafd9b800bc769fde1369dd7e85a390b1c714b77" is_infinite = false [private_call.verification_key_hints.public_keys.ovpk_m.inner] -x = "0x0d9af5332b716b4a1857e80f339e48a480987c3d4b82acc710b44f5bbaa26a1f" -y = "0x051ddca69961948f8a88e61cf991569ec9363730d73723da0b55e129d8750a36" +x = "0x2e6771134ebd6a0a48f27e0bb6646544c271e0697873dcabe7aa34def98458fe" +y = "0x1517ca086c25ce58b56d8cf401f6816bda8ee04e0bded55c4dbfb8d6f5186923" is_infinite = false [private_call.verification_key_hints.public_keys.tpk_m.inner] -x = "0x26580dfb2ba436f59684fd00fc3595ca2a56dacd6509da0d66c87205b709217d" -y = "0x11f71d086a452b39361a8aeb70038cb02c6cc8fd03ce61cafb845d8ca97716e0" +x = "0x0cc1de41370ac5d50bfde09ed8d9b10bffb910156713374434185acd500f3606" +y = "0x06ce1a0c86264d349919cc0e5f24168efff7ea65bf9ef0da0c99c8b004fd17e3" is_infinite = false [private_call.verification_key_hints.salted_initialization_hash] - inner = "0x1fd9ed0e7e04603192e71198fcaf27b11fbc2fdac4bfc7b5c15778087760d724" + inner = "0x00525a9ba96319845630d623577afdb56303960f65af7aaa56b9954202c62da1" [private_call.verification_key_hints.protocol_contract_membership_witness] - leaf_index = "6" + leaf_index = "1" sibling_path = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0c20d584dcfb76bd8ccb0d2487adb939f51bab8e7af2effc3b03c9f04a6132ab", - "0x0bf26229eb4649e71d2c87276307e96c30845e624934cfb175bd475b5d55a25c" + "0x00278a54ca5b0da8857c9fa66f74d24e0658042248ba80598517a2307954b6da", + "0x0cf25fb396cdf715953aacb6a56fd4ace57a4321457507d62a0dd16d31979361", + "0x2ab65a791ff655cf2005e3055de6df7cc2e5bc618d32b9eee176bba3e1ca8b99" ] [private_call.verification_key_hints.protocol_contract_leaf] - address = "0x04a9a9bed524c29ed1a52a603fdb2f3c5e5e5941b7ae81fc39b13d93701ec4c4" - next_address = "0x07ee7acaa2707c287093a1906f7efc139385dfb0e02b39c173ed485bd2844d9a" + address = "0x0847ccd7be9180eebe45a3df418b09365cca78a8a52847dd31e8b3abfd8b2050" + next_address = "0x1385b3ecd7765e8503adf664bba122e62d734844e8e1e758806eb04991b20507" [private_call.verification_key_hints.updated_class_id_witness] - leaf_index = "140" + leaf_index = "127" sibling_path = [ - "0x15616bdd80f77a6dc2607f00755271e09155b4ecc8455ac64c1bb9b2ac72973e", - "0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1", - "0x0c5abbf8d7322b5d318f670cb0670172c9831105f225e51e3ae0d67486c820eb", - "0x2379176def59ea912d2ad056dbaf19af8acc5a81112abb6c6d632bbbda9ad0d1", - "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", - "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", - "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", - "0x0ea71ac293b54747fe6384d46c954ff17a6239501a80ce0a9f4f9d0ca56db695", + "0x0c3d76f806db14f4a711ab5b631b843ac3f797b23a280e465f88259ac69f27ce", + "0x08ea50b2f3570f241aa4e40aa4a8200ab2f5511df281fa38159bcea8e757b9ef", + "0x182a83bd20be90d87802bcc041eaac957fdade61147ae7e51659d815ae7d1e98", + "0x1920f0164cba074cd2a20efab0ee6bc67534dba4f1340153d19eda6b9a5bd9c3", + "0x179d7b5df7a65a4bdda408605c069b3ea175a5f4e2b0fccc9f2ebcb5d12c7c28", + "0x19e2b3449d24e57ea4d6948048220d0756f93b6aaca968960b173df69903160a", + "0x1a35cf71ad31b7058db0cec41776442412ccd9f75276205dcd8fd0ffc4bbfaab", + "0x1002ec2e8c6c8af10b0741872f55a248871ddedbd4231e9847109ee493c85e29", "0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", @@ -267,13 +267,13 @@ is_infinite = false ] [private_call.verification_key_hints.updated_class_id_leaf] - slot = "0x0a0ef3594a9c623a182130e16040d288282b081ddcdfaa6df70d9cf40300f16a" - value = "0x0000000000000000000000000000000000000000000000000000000000004e20" - next_slot = "0x0d133598e181acf02ddad1aebf8eb6481b83d28cfe3327007e07f787425c2e3b" - next_index = "0x0000000000000000000000000000000000000000000000000000000000000077" + slot = "0x2b814cb158877a1c72a9f2dddb8500da55e51d17acf2fa73643ee3099879fdb1" + value = "0x00000000000000000000000000000000000000000000021e19e0c9bab2400000" + next_slot = "0x0000000000000000000000000000000000000000000000000000000000000000" + next_index = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs] -args_hash = "0x21e4a78d4b700c60e07c342316cef59791a9ca7bf858b24abaab5bee7ef2f464" +args_hash = "0x0c05b0c6751d0b20fb2946dbec47292e6454562e798e044a733a8ff04ffcf795" returns_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" start_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000001" end_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000004" @@ -291,13 +291,13 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" inner = "0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000" [app_public_inputs.call_context.contract_address] - inner = "0x06615e4b566a640e99213edb664c8c0b49c5e833c3a4b16116fe1de9d06382da" + inner = "0x0eaa5f9a2339cab09e553484a4b465925e63f182ba64af15e0617743b623872c" [app_public_inputs.call_context.function_selector] inner = "0x0000000000000000000000000000000000000000000000000000000027e740b2" [[app_public_inputs.note_hash_read_requests]] - value = "0x0e3205b929eec7b3d63fb0a0df1c3d9a61ba1e6d800cad497bf5fb5c176d89f7" + value = "0x00bee791c6738bcb86d45e206256ae8017ae2e93a191f3ae5ea3b0596e6b8455" counter = "0x0000000000000000000000000000000000000000000000000000000000000002" [[app_public_inputs.note_hash_read_requests]] @@ -839,13 +839,13 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.public_call_requests.inner] is_static_call = true - calldata_hash = "0x08eb7994ce9f00336092eb9a837517099f27dc9b87d5e504625c166510bbb419" + calldata_hash = "0x120de9c32274234b57afc49afd5d5daebc4ada18726e0f121ad479698d0d6667" [app_public_inputs.public_call_requests.inner.msg_sender] - inner = "0x06615e4b566a640e99213edb664c8c0b49c5e833c3a4b16116fe1de9d06382da" + inner = "0x0eaa5f9a2339cab09e553484a4b465925e63f182ba64af15e0617743b623872c" [app_public_inputs.public_call_requests.inner.contract_address] - inner = "0x069db44ef2ffc86dea9bba7f714bab5c098fdc0ecf5db85cd0b1945c72ad1bc1" + inner = "0x0d4caa1a935c446cc7cf578160bb40bda34dc711292f9dbd8ef0951ef9216c05" [[app_public_inputs.public_call_requests]] counter = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -1488,16 +1488,16 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" length = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.historical_header] - total_fees = "0x00000000000000000000000000000000000000000000000000000001419ea740" + total_fees = "0x0000000000000000000000000000000000000000000000000000000141456af4" total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000017cbd" [app_public_inputs.historical_header.last_archive] - root = "0x2ccd1362797b50e31f84634e9db3da4e2ad3b43dcc3fca530fb9a7309161265c" + root = "0x16fbe8410484863346466b4f631b86af141e8320d2df8d8155546f20e3b8a4ae" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [app_public_inputs.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x00b2b035bfb5b127c2288ac501da8a6f31fcb04de75043181675e5096cd920e6" + blobs_hash = "0x00da4979a284417ddf5388a3f159ad684256f4b72256a349fd9956ef9c2ae018" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -1506,37 +1506,37 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000060" [app_public_inputs.historical_header.state.partial.note_hash_tree] -root = "0x0bb159f01f959f4af57eddb1aad0439ac7b07950ab07534eb3172a6a95b4e006" +root = "0x20a5cb14d512cfdd2bbdda6b3d0b78091d0137079b0900ac1c9e9dc9dee167ce" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [app_public_inputs.historical_header.state.partial.nullifier_tree] -root = "0x240cd8aa3b8a2feb0cd07fbffc01a199b52de9899ebdd59ffc44ab7c61d7ae78" +root = "0x0c05f955dd7ebb34c4cb637573471d0d7c58ac3fafc4fa98276ce616bdf11fb8" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [app_public_inputs.historical_header.state.partial.public_data_tree] -root = "0x262d4b92012685a90746ce5e378f16a4f3fd0580b19fbb30b88b5a8cc18b392a" +root = "0x06a1b9620bf4ed16ae3599baf6817e6a10aeb2b70ff91652e1f26e2261c78ea0" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [app_public_inputs.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068081693" + timestamp = "0x00000000000000000000000000000000000000000000000000000000680a0bfc" [app_public_inputs.historical_header.global_variables.coinbase] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [app_public_inputs.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d840" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d804" [app_public_inputs.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" [app_public_inputs.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -1548,7 +1548,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [app_public_inputs.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fc1" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fb2" [app_public_inputs.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-inner/Prover.toml b/noir-projects/noir-protocol-circuits/crates/private-kernel-inner/Prover.toml index 85f6de7a43f4..31d805b9c081 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-inner/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-inner/Prover.toml @@ -3,8 +3,8 @@ vk_index = "0x0000000000000000000000000000000000000000000000000000000000000000" vk_path = [ "0x15ccf26b646712a49937c53496084977e0538f82497fd4057b983ea27f755675", "0x30374f4c5751c6bd430ad979031ba8b8c188fc3c1db7405b115b01de3c722428", - "0x183f6d0acf1a4786c5264bac34fc824f78ba97e182ed2b5b265c939c4e6a48dc", - "0x223b98513f87a3be6816ac1e2a1b87a807169110828d2b808a707609e4217d13", + "0x0176e0df3ad3b4e7eb4a8ce9e2d53c3bb2503f2cd5b28c1d976842b07ffe37ff", + "0x1579d8714bffc417282d461161468745ec125da568e082364e4896fbad931bd1", "0x0a5cccc6f5c49119df17ad49125046e1f8ade560372f415e56d28bab8a1fba34", "0x042567ea670fc3ff2b8c48b244f6a0c96944c6b969143cf0cfacfd97e5b929aa" ] @@ -144,23 +144,23 @@ vk_path = [ [previous_kernel_public_inputs] min_revertible_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000003" is_private_only = true -claimed_first_nullifier = "0x01e449dd4959ae23b7c13522c7b203d6a592fb6b6d98c8b5b13f77c25b3984e3" +claimed_first_nullifier = "0x1940498e62a3b8383c5a3bc2a70a030794ec4996d8ac38b55b2b8ee8fa0318d3" [previous_kernel_public_inputs.constants] - vk_tree_root = "0x0e88f44969aa6d4ff0d17db376dfa057ed3aa447725b0febf35af08e0d1d468e" - protocol_contract_tree_root = "0x1ed87d453cb7c21c5dbca65441925b3f9138fd1433928dda23342367bf94f7c0" + vk_tree_root = "0x2ca9a33f5bf72a45ff0bc18657afa956eb151243a9bc9d3c113e4c711634fd7e" + protocol_contract_tree_root = "0x2d4c1fe46d355909b04374f3890ac9b6649eabcd85e2c8dd82e237c5808626ba" [previous_kernel_public_inputs.constants.historical_header] - total_fees = "0x00000000000000000000000000000000000000000000000000000001419ea740" + total_fees = "0x0000000000000000000000000000000000000000000000000000000141456af4" total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000017cbd" [previous_kernel_public_inputs.constants.historical_header.last_archive] - root = "0x2ccd1362797b50e31f84634e9db3da4e2ad3b43dcc3fca530fb9a7309161265c" + root = "0x16fbe8410484863346466b4f631b86af141e8320d2df8d8155546f20e3b8a4ae" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [previous_kernel_public_inputs.constants.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x00b2b035bfb5b127c2288ac501da8a6f31fcb04de75043181675e5096cd920e6" + blobs_hash = "0x00da4979a284417ddf5388a3f159ad684256f4b72256a349fd9956ef9c2ae018" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -169,37 +169,37 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000060" [previous_kernel_public_inputs.constants.historical_header.state.partial.note_hash_tree] -root = "0x0bb159f01f959f4af57eddb1aad0439ac7b07950ab07534eb3172a6a95b4e006" +root = "0x20a5cb14d512cfdd2bbdda6b3d0b78091d0137079b0900ac1c9e9dc9dee167ce" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [previous_kernel_public_inputs.constants.historical_header.state.partial.nullifier_tree] -root = "0x240cd8aa3b8a2feb0cd07fbffc01a199b52de9899ebdd59ffc44ab7c61d7ae78" +root = "0x0c05f955dd7ebb34c4cb637573471d0d7c58ac3fafc4fa98276ce616bdf11fb8" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [previous_kernel_public_inputs.constants.historical_header.state.partial.public_data_tree] -root = "0x262d4b92012685a90746ce5e378f16a4f3fd0580b19fbb30b88b5a8cc18b392a" +root = "0x06a1b9620bf4ed16ae3599baf6817e6a10aeb2b70ff91652e1f26e2261c78ea0" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [previous_kernel_public_inputs.constants.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068081693" + timestamp = "0x00000000000000000000000000000000000000000000000000000000680a0bfc" [previous_kernel_public_inputs.constants.historical_header.global_variables.coinbase] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [previous_kernel_public_inputs.constants.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.constants.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d840" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d804" [previous_kernel_public_inputs.constants.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" [previous_kernel_public_inputs.constants.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -211,7 +211,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fc1" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fb2" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -223,11 +223,11 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000e16" [[previous_kernel_public_inputs.validation_requests.note_hash_read_requests]] [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.read_request] -value = "0x0e3205b929eec7b3d63fb0a0df1c3d9a61ba1e6d800cad497bf5fb5c176d89f7" +value = "0x00bee791c6738bcb86d45e206256ae8017ae2e93a191f3ae5ea3b0596e6b8455" counter = "0x0000000000000000000000000000000000000000000000000000000000000002" [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.contract_address] -inner = "0x06615e4b566a640e99213edb664c8c0b49c5e833c3a4b16116fe1de9d06382da" +inner = "0x0eaa5f9a2339cab09e553484a4b465925e63f182ba64af15e0617743b623872c" [[previous_kernel_public_inputs.validation_requests.note_hash_read_requests]] [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.read_request] @@ -2723,7 +2723,7 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.nullifiers]] [previous_kernel_public_inputs.end.nullifiers.nullifier] -value = "0x01e449dd4959ae23b7c13522c7b203d6a592fb6b6d98c8b5b13f77c25b3984e3" +value = "0x1940498e62a3b8383c5a3bc2a70a030794ec4996d8ac38b55b2b8ee8fa0318d3" counter = "0x0000000000000000000000000000000000000000000000000000000000000000" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -4771,7 +4771,7 @@ counter = "0x0000000000000000000000000000000000000000000000000000000000000000" inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.private_call_stack]] -args_hash = "0x0ec3a4a14c32575ba8aff6ab5a498a7370d2e30290a29c2637fe5ccc1e8a4761" +args_hash = "0x298cbc0839f43e44d09b9a62dc5f99644430083bd6334274312731f98517c7c9" returns_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" start_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000003" end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000000000000000c" @@ -4780,10 +4780,10 @@ end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000 is_static_call = false [previous_kernel_public_inputs.end.private_call_stack.call_context.msg_sender] - inner = "0x06615e4b566a640e99213edb664c8c0b49c5e833c3a4b16116fe1de9d06382da" + inner = "0x0eaa5f9a2339cab09e553484a4b465925e63f182ba64af15e0617743b623872c" [previous_kernel_public_inputs.end.private_call_stack.call_context.contract_address] - inner = "0x069db44ef2ffc86dea9bba7f714bab5c098fdc0ecf5db85cd0b1945c72ad1bc1" + inner = "0x0d4caa1a935c446cc7cf578160bb40bda34dc711292f9dbd8ef0951ef9216c05" [previous_kernel_public_inputs.end.private_call_stack.call_context.function_selector] inner = "0x00000000000000000000000000000000000000000000000000000000754fb767" @@ -4925,143 +4925,143 @@ end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000 inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.fee_payer] - inner = "0x06615e4b566a640e99213edb664c8c0b49c5e833c3a4b16116fe1de9d06382da" + inner = "0x0eaa5f9a2339cab09e553484a4b465925e63f182ba64af15e0617743b623872c" [private_call.vk] key = [ "0x0000000000000000000000000000000000000000000000000000000000040000", "0x0000000000000000000000000000000000000000000000000000000000000010", "0x0000000000000000000000000000000000000000000000000000000000005609", + "0x0000000000000000000000000000000000000000000000000000000001000000", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000000000000000000000000000000000000ffffffff", - "0x00000000000000000000000000000000000000000000000000000000ffffffff", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000e84e04a4895d6734cc6f4bf7fb72e2be38", - "0x00000000000000000000000000000000000ef5ea984c341e17abdee519d709a1", - "0x00000000000000000000000000000000ddd93fd23c97590794051549e7127df1", - "0x000000000000000000000000000000000024859dabedd7d2b7f07e87216db42e", - "0x000000000000000000000000000000c007f66a23ffa3984cc0b61ee204bc5397", - "0x000000000000000000000000000000000014a890d0798449141dc08f061632d2", - "0x000000000000000000000000000000171acf99bfc0b6dc9810cb61fe2a96101d", - "0x00000000000000000000000000000000001b058ec2cb803efe5e84c92e3e88ba", - "0x00000000000000000000000000000091328eaf61edd23e129f79de2f821992df", - "0x00000000000000000000000000000000002311c2e7ed144e397f4c9239461f28", - "0x000000000000000000000000000000b7c8f73f5c867eda2a0daf06c561ab433a", - "0x00000000000000000000000000000000000adb3a30feab11ebae7d766c5e0231", - "0x00000000000000000000000000000000fff81fc3e1554cdba49a76b4656511d6", - "0x00000000000000000000000000000000001a653af2bb29d8d2da66b5bd8d48e3", - "0x0000000000000000000000000000004a05d57aa96ecd6295c6276a585ac84e15", - "0x0000000000000000000000000000000000067fe01b09e3816b3f5995b5eeebee", - "0x000000000000000000000000000000bc14b3dbe1fc0c1933a414180c9cfcb3f7", - "0x000000000000000000000000000000000024dcc7e8601fbe922cdc776b053304", - "0x000000000000000000000000000000cf956ef400aa206c010a719484ba6e0ecb", - "0x000000000000000000000000000000000015678ee2f3297f3d2e120f0c40c5db", - "0x0000000000000000000000000000008e2bf611403442b12fcb1551482430925e", - "0x0000000000000000000000000000000000169a9797cdb60babc5080b7a42b6f9", - "0x00000000000000000000000000000074c9440b30cdf1bef177932644f552b4fd", - "0x00000000000000000000000000000000000fa8ba206b89d12f4a114bed91289a", - "0x00000000000000000000000000000066aa9c8d7ab7581b9810eda73e53e17ddf", - "0x000000000000000000000000000000000022e4a62d589f5dc58e003e17d2c29e", - "0x00000000000000000000000000000052acb0956df6fa77996db824b0a1fe6270", - "0x00000000000000000000000000000000000e3f83d3c9ffa6247c0ba515ce2e6f", - "0x00000000000000000000000000000047705ba5b1c5a09335f498b1b43908cebd", - "0x00000000000000000000000000000000001e95b795a170c9a349e3dd00667f3e", - "0x000000000000000000000000000000facdcbb0afc541179fc5e7f1052c58c528", - "0x0000000000000000000000000000000000100406f14435d2a1be90a62b7fd3de", - "0x0000000000000000000000000000006822abe77055e03a81a6d7743c99dfad17", - "0x0000000000000000000000000000000000167aa11add08b51cfb834f35999fa3", - "0x000000000000000000000000000000e451186d5e8a8d62b0c0f436448790c75e", - "0x000000000000000000000000000000000014d36412dc4d86351abee490b1c78c", - "0x0000000000000000000000000000009a89fee24909e326b230439ea4d23d3aef", - "0x000000000000000000000000000000000009bc7ee39017ed5bfa069cdad97ab5", - "0x000000000000000000000000000000ad75e80349765d4a684657e1e0c579951e", - "0x000000000000000000000000000000000015207076e1c84bb9b28a9768c68b04", - "0x000000000000000000000000000000fc4f419f42f5afa9111ba81714204eea89", - "0x00000000000000000000000000000000000c132eda7dbf2e81177daaec19cc3c", - "0x000000000000000000000000000000a0060081e7a1c4fa84de0f560dd1b04e4e", - "0x00000000000000000000000000000000001a3c3eccd140e96f57657da935b191", - "0x0000000000000000000000000000005102e1f427af0b049314ed982646192f5f", - "0x000000000000000000000000000000000027dcd44dee6994b6f1c17ce1d00bda", - "0x000000000000000000000000000000189387db10b7dfa0044535cb9fc5b415f0", - "0x0000000000000000000000000000000000286148ee7c8b27f4c80fcd43f0adb2", - "0x00000000000000000000000000000027950d7a4e7375e97a5d5671a3d5695498", - "0x00000000000000000000000000000000001e01518651f1f1254d06282cf48b3d", - "0x00000000000000000000000000000065508a80cf8711ee2ccc30c11f0df517a8", - "0x000000000000000000000000000000000020c5a227a56adbf5ed881c4e61a606", - "0x000000000000000000000000000000c76a98bb6b111796bb42b8c7b93fd374e5", - "0x000000000000000000000000000000000000a314edead27d1a9a6f55b8c4f644", - "0x0000000000000000000000000000001addd71f136aa85db94308a8b87d751069", - "0x00000000000000000000000000000000001747697dde9ef5b02b8e9b545f6b22", - "0x000000000000000000000000000000cf3baf6520b9e458ba4661744c25b99a7d", - "0x00000000000000000000000000000000000d937e6a83ab01bacb1f22c7fdad1b", - "0x0000000000000000000000000000004a8db732f82d31e0ac133703705a002ad6", - "0x00000000000000000000000000000000000025632fa1def57298c31f94063c54", - "0x000000000000000000000000000000b861b611cf260cad5141e1eaecd94d32e9", - "0x00000000000000000000000000000000001b2650e43c9462015e44c03053b382", - "0x00000000000000000000000000000075db999331b38cda6b5bb8931155a93892", - "0x000000000000000000000000000000000007bf084c3b8e40f5dc0390314b39cc", - "0x0000000000000000000000000000007facdf1fb4b22eaafb8e811e273decffbd", - "0x0000000000000000000000000000000000230f31f04242fd7247fc06e0faa2f5", - "0x0000000000000000000000000000009f95bcb60b61918185e4cd13950968aaaa", - "0x00000000000000000000000000000000000d10f5ce3a1eab594b5ffe11ce12a5", - "0x0000000000000000000000000000003f86f33351596d1cde900cf6570e32b220", - "0x00000000000000000000000000000000002d701c459ee91610ac82baca106234", - "0x0000000000000000000000000000005217dc945d8c2dd383a29e6f25227d41e7", - "0x00000000000000000000000000000000000ff905b7df03d5762f3ef401a8ecdc", - "0x000000000000000000000000000000700a1f1336d85147736ba8765a5e08a095", - "0x0000000000000000000000000000000000027f01769f8c53c1e70bc7536f35a0", - "0x00000000000000000000000000000076eb7eda4ed19d06e249f8e8160fbffca2", - "0x00000000000000000000000000000000000ec33988e78455e56152708ee06fa7", - "0x00000000000000000000000000000080020093fba3b15aab8dc88b22288138ef", - "0x00000000000000000000000000000000002752a89e8d29a95bd13024265c4680", - "0x0000000000000000000000000000006eb113492c657e8f5ef81eb99b4f2b4d82", - "0x00000000000000000000000000000000000bbaab80129b6b13142f8219421523", - "0x000000000000000000000000000000aecfb92ac8011c3829f84cccbc5957a013", - "0x000000000000000000000000000000000004bdfddbe57da32b2ddce6321a9f0e", - "0x000000000000000000000000000000b416299608d89fe3fa80dc20c20a56e8db", - "0x00000000000000000000000000000000002fee6f508b225d3c6720ce299d733c", - "0x000000000000000000000000000000be901f2084f92cbecb928a70fdcc43f1a5", - "0x00000000000000000000000000000000001342a152dade9f4ac37c7c7837cd2e", - "0x00000000000000000000000000000092baf06d41e29048c1d25ebd615d528b44", - "0x00000000000000000000000000000000000a92a23102a06f4853ed59e4c25017", - "0x000000000000000000000000000000224e7b8bb076c01d9d15e695db49628479", - "0x00000000000000000000000000000000000b5a0d3ec2e5f2b3043ad5927f75ee", - "0x000000000000000000000000000000a264984f15cb7eab2c4f69a5d808a56f4d", - "0x00000000000000000000000000000000002f493e4aa25ea71f90ff957e2aaa9e", - "0x0000000000000000000000000000002b7f0feb83648e11b1fe0d8bc6b60c6f21", - "0x00000000000000000000000000000000000c0dfc3216a7e44e425ceff18619f4", - "0x000000000000000000000000000000be3fcde4c4e08161be79794822aefbb3f6", - "0x00000000000000000000000000000000000b7e070c35ade44881ab0cabea6941", - "0x000000000000000000000000000000117df61a4bf18a7446b54d8ecdd0e52721", - "0x0000000000000000000000000000000000174c4daacc6febe82d8831a90444ef", - "0x000000000000000000000000000000cf14c4f206eb07a33197ff5cf6bbac0baf", - "0x00000000000000000000000000000000000d3d0f705c9c3b426e2f7864790ae8", - "0x00000000000000000000000000000099583d0a90e6d553e4bd6449b58ef507a1", - "0x000000000000000000000000000000000007039be70b557b6f0d4d59fb1280a1", - "0x0000000000000000000000000000006cbf05efb3e2b65b04bde71a334d2feb33", - "0x00000000000000000000000000000000000a11854b0d30aea75dade8ae925fed", + "0x0000000000000000000000000000000000000000000000000000000001000000", "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000fa752cf8e2dec3862a2da8a7f051953427", - "0x000000000000000000000000000000000012cbd05c424a1cae3085f9c10e65c1", - "0x000000000000000000000000000000d89336711e5974d9a6786ddad114540d53", - "0x000000000000000000000000000000000003a48d90aee8e0937377872a05ef8a", - "0x0000000000000000000000000000006bcc7a05ff95a96b289424c5f733670d96", - "0x000000000000000000000000000000000000c43726f75b6fda0de22ce0e0dfab", - "0x0000000000000000000000000000001d0a09d7178ec93bad7858f96e64f0b48d", - "0x00000000000000000000000000000000002f9b6e0b4e2c01968de5c32482aa7d", - "0x000000000000000000000000000000e55ba19751adfe6c36324d3fb6c2da0989", - "0x00000000000000000000000000000000001d58aa61c64ad522043d79c4802219", - "0x00000000000000000000000000000078f4b3bc61f19d6e7069359bbf47e7f907", - "0x00000000000000000000000000000000002d7c18a93c3dae58809faaeec6a86a" + "0x000000000000000000000000000000060000000700000008000000090000000a", + "0x0000000000000000000000000000000000000000030000000400000005000000", + "0x0000000000000000000000000000000e0000000fffffffffffffffff000ef5ea", + "0x00000000000000000000000000000000000000000b0000000c0000000d000000", + "0x0000000000000000000000000000008bc2d927809319ec5047113e79aead8dc8", + "0x0000000000000000000000000000000000071f48c57416fe67f0e6387e63c9fb", + "0x000000000000000000000000000000270bb857a4ce3ea56d95856e39679db0bb", + "0x00000000000000000000000000000000001ac0ec7a145b9e09f87ce30a7c59d0", + "0x000000000000000000000000000000f3c5f9f952aaf98be9f1828bf835271072", + "0x00000000000000000000000000000000000ee84a7d8f573fe824d51bf8ba0294", + "0x0000000000000000000000000000002361bb0c96f649a12d0da865b4bb2f1ca6", + "0x0000000000000000000000000000000000013a4673799804224cfd71e011156e", + "0x0000000000000000000000000000003903e827f870d84fa93effe9377d16e61e", + "0x0000000000000000000000000000000000265bda82b4b8cbeb5805084e8b2d2d", + "0x000000000000000000000000000000e1c5051448c19be47989411f2c619d67f3", + "0x0000000000000000000000000000000000009a5c9f0a7cdd4cb40dbc7b36479e", + "0x0000000000000000000000000000004bce5a4075d16ba5b487c2a89f9b958d7d", + "0x000000000000000000000000000000000000c5a19a6ce245e523fbec5279793e", + "0x0000000000000000000000000000007aa96ecd6295c6276a585ac84e1524dcc7", + "0x00000000000000000000000000000000001b09e3816b3f5995b5eeebee4a05d5", + "0x0000000000000000000000000000006583f661d391dce9e31c1acc5895217272", + "0x000000000000000000000000000000000026cee5f30d665bd089c41c2ab60f52", + "0x0000000000000000000000000000007da2a476265f43475f94383db36922a57b", + "0x00000000000000000000000000000000002161efb3b86791682affaf01c9900d", + "0x000000000000000000000000000000f879b002fcf675b5a993c28c4dd498b0e5", + "0x000000000000000000000000000000000006a0cab30830278e5151e5d609a7ec", + "0x0000000000000000000000000000000b30cdf1bef177932644f552b4fd22e4a6", + "0x0000000000000000000000000000000000206b89d12f4a114bed91289a74c944", + "0x0000000000000000000000000000008d7ab7581b9810eda73e53e17ddf0e3f83", + "0x00000000000000000000000000000000002d589f5dc58e003e17d2c29e66aa9c", + "0x0000000000000000000000000000001f0ff15031f7a68defc01fce070e2aa09b", + "0x00000000000000000000000000000000001238c5da9fb58afe348d17954ca74f", + "0x0000000000000000000000000000008ceb4160defc9f3909ffd7648a33990c31", + "0x000000000000000000000000000000000004748570ffb5035fd775ae1ac2ec52", + "0x0000000000000000000000000000003a51bf96d1fdfebdbc14aa2869c6228585", + "0x00000000000000000000000000000000002fb2fc071cf80fff4a3ebd04f4c86a", + "0x000000000000000000000000000000e77055e03a81a6d7743c99dfad1714d364", + "0x00000000000000000000000000000000001add08b51cfb834f35999fa36822ab", + "0x0000000000000000000000000000006d5e8a8d62b0c0f436448790c75e09bc7e", + "0x000000000000000000000000000000000012dc4d86351abee490b1c78ce45118", + "0x0000000000000000000000000000006beb0438e110691969b4500cdf8d212b54", + "0x000000000000000000000000000000000021fede21d73385f5f99863db94849d", + "0x000000000000000000000000000000481a7388279762c2c7688461676d1218a0", + "0x000000000000000000000000000000000016192b65f74f4a43f825ff97aa7337", + "0x00000000000000000000000000000028e4f005636f547de2239e1e8f27264722", + "0x000000000000000000000000000000000018ec8562fc50fd040ad8b562f649e0", + "0x0000000000000000000000000000000b899c1ab4e316e5211d4f7ff2ec33e7b8", + "0x00000000000000000000000000000000000b40071dea90e4d6c7f49ab79a009f", + "0x00000000000000000000000000000096902da0732aa3230aea258d1886ab6401", + "0x00000000000000000000000000000000001d8a1b21d5c02153297fc623cf8189", + "0x00000000000000000000000000000064b2b2355a627e0b96af4383ba8e2a0c35", + "0x00000000000000000000000000000000002ceb515c70018f2662af96d8128e26", + "0x000000000000000000000000000000bf1f70a0c6a979c1572b945126e726cb14", + "0x00000000000000000000000000000000002589550b62e9c5d4bc53ffd024925c", + "0x00000000000000000000000000000080cf8711ee2ccc30c11f0df517a800a314", + "0x000000000000000000000000000000000027a56adbf5ed881c4e61a60665508a", + "0x000000000000000000000000000000450d0b6d51197b8e92c8bda3198323524d", + "0x00000000000000000000000000000000002c5998b195d3eeaed783df6ac16537", + "0x00000000000000000000000000000063e467d33ae85f738e403c5ce2b81398f0", + "0x00000000000000000000000000000000001d16020fedc84e47e3bedfb517db26", + "0x000000000000000000000000000000a9f1b70f35e962cc59d3e4a16ccc062ad5", + "0x000000000000000000000000000000000009bb0e1bf867decf575d21aecc38fe", + "0x00000000000000000000000000000032f82d31e0ac133703705a002ad61b2650", + "0x00000000000000000000000000000000002fa1def57298c31f94063c544a8db7", + "0x0000000000000000000000000000009b71206267af7ab7b5fc571cd78713c9ec", + "0x000000000000000000000000000000000022ab5a967c97c4194f129ca8b25c54", + "0x000000000000000000000000000000359a32224902e9ee05d5351d21b9a611ea", + "0x00000000000000000000000000000000001bd73fce14aa636678faf415f45a41", + "0x000000000000000000000000000000a956ac846559c756e936bbbca45b191bd9", + "0x00000000000000000000000000000000002eb10931ed817b5fffb98c1b79a77d", + "0x0000000000000000000000000000003fad5be73be41da2dea487384f48397b00", + "0x00000000000000000000000000000000000ca8e4dfd484df57308cfbcb99905b", + "0x000000000000000000000000000000d5b9d8028b761e42691aeda69b4792fbbe", + "0x0000000000000000000000000000000000153a9aa32f7ae29111c01c7dbe059a", + "0x0000000000000000000000000000007b9707ee1f4a4d3ec770c0d8fd5d8b872c", + "0x000000000000000000000000000000000026b2187cd29a5e76d8b81bb8cd93d3", + "0x0000000000000000000000000000005807d57c24a288135be21cf072e414c8ab", + "0x000000000000000000000000000000000015d6ef6dff83cb73e2ceaa336d076e", + "0x0000000000000000000000000000001f1fcec7e4116663cd9dcea7cef12d581a", + "0x0000000000000000000000000000000000281ee77022fe121d1e3fe43a73e8ce", + "0x0000000000000000000000000000007b351f71a6723868e36dc6dcf46594c2d6", + "0x00000000000000000000000000000000000d603e50b83c4fa6fd6b755cfb7df7", + "0x0000000000000000000000000000008dfd62a96c8e14899f230e131fd10ac36f", + "0x00000000000000000000000000000000001f49fe8550b0ef2ea8a189b66bae62", + "0x000000000000000000000000000000b469fb71f288312297cbd72744b13bf953", + "0x00000000000000000000000000000000001a5443d7a6675c3f50d98834a8ca57", + "0x0000000000000000000000000000003871573552920f119385e9cad20296455a", + "0x00000000000000000000000000000000002026d3ea5b3580a4714d2d863294d1", + "0x000000000000000000000000000000c2ed77c22d6320bfe3c1abb7dacc8d955b", + "0x00000000000000000000000000000000002276902c6991dc52bfe787783d0ec6", + "0x0000000000000000000000000000000faa6125b759609430253cc6746b8e5cc6", + "0x0000000000000000000000000000000000009e51fc67224d302c720a61113998", + "0x0000000000000000000000000000002e18f5558c34a41c089f28d66da0b24bf7", + "0x00000000000000000000000000000000000e5e977fd1d29aabda2f3037a0cd23", + "0x000000000000000000000000000000f17e4a1419c3dd9f189be81958748f10b5", + "0x00000000000000000000000000000000001a3e10343e5f5f6bc5da64e820e33f", + "0x0000000000000000000000000000008debe32380498c42fe8a958058488e80c0", + "0x000000000000000000000000000000000001b259716d10bcc63935d43da9fdb7", + "0x000000000000000000000000000000e4c4e08161be79794822aefbb3f6174c4d", + "0x00000000000000000000000000000000000c35ade44881ab0cabea6941be3fcd", + "0x00000000000000000000000000000001856d4ac00d5fede7196f40e29796453a", + "0x0000000000000000000000000000000000199f84934498a7b4801373cb8cf9ed", + "0x00000000000000000000000000000036d7e8328060b46a427e7a93ddfe0d090d", + "0x00000000000000000000000000000000000f93ff55800aef24f3d87f7bcc1214", + "0x0000000000000000000000000000009432e12b0e42f63a14c50cc4ac3f161c69", + "0x0000000000000000000000000000000000257a1bafea46ccb319d169c79352db", + "0x000000000000000000000000000000921c614bc99c4c1c8cf72ca3d45a8302b9", + "0x00000000000000000000000000000000001aa8e23bc62c0dbef6421a36eb3dad", + "0x0000000000000000000000000000000000000000000000000000000001000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000000000000000000000000000000000000212cbd0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000009b4b5d58f4c1bbde1ab431091d4e86a746", + "0x00000000000000000000000000000000002bddfba9ccfee5d008be200b78f3d4", + "0x000000000000000000000000000000b5ef569fb6d594d8c058d33bdfa206c9a9", + "0x00000000000000000000000000000000002fe64bfad1103733b965641dd59085", + "0x00000000000000000000000000000005ff95a96b289424c5f733670d962f9b6e", + "0x000000000000000000000000000000000026f75b6fda0de22ce0e0dfab6bcc7a", + "0x000000000000000000000000000000d7178ec93bad7858f96e64f0b48d1d58aa", + "0x00000000000000000000000000000000000b4e2c01968de5c32482aa7d1d0a09" ] -hash = "0x2ce3a13831aa101a3134e8d80d506ac2e245b77ed3c8aac2cb3c7e0a8391173a" +hash = "0x108a84a5571dd982e83bff60b39f3b48fc8abb6d0398849de4a4956cc8dc43f8" [private_call.verification_key_hints] contract_class_artifact_hash = "0x072ca8df98daa7a4041cacbd24db07d4c0135868d3f298e6fca896e04f3363bf" -contract_class_public_bytecode_commitment = "0x01db55df189e920c4865b80afd3514d5a4e3cb415bf2d0788ff1951b88fa4bb9" +contract_class_public_bytecode_commitment = "0x0172cb6c0b92fa942fc7baba787093058be0c05bb8d1737a4c4df40e3f7ada52" updated_class_id_shared_mutable_values = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -5071,10 +5071,10 @@ updated_class_id_shared_mutable_values = [ [private_call.verification_key_hints.function_leaf_membership_witness] leaf_index = "4" sibling_path = [ - "0x0be10f2d20edc09a8da00493e070831df109e0efdd670b7e68d2157beadf387e", - "0x057d38de111cb34b9c47586d600077f8a90a13eabf03e29458e070d740ce9327", - "0x22210463d5f82e027e5a4f757465940d098cea61b6fa19067335efb5b4ec6aa2", - "0x18c24233fed5272f2f2992bae81f3750545b0ca3055e70c1c6be10db9e2fd79c", + "0x19268f6fac0de70a293a54382522f02144bf968143ce4b98a082d58e39d96133", + "0x1119b859f35fec6d7735caf5ce42c95e14c3e99ad179fe78959eaa0d6bd2dcfe", + "0x1fdfeacfbd3a75143f48614aee2f9b0d96dee236f3b72c206308e06c28b1510b", + "0x1a1b19259c9155710e0e6c29b122b8c2db88b01a8a452ef082f15b42240da415", "0x2a6595890719fef7967c209488728aa5342438ba52058a3c770202f55acf6854" ] @@ -5099,31 +5099,31 @@ y = "0x2039907fe37f08d10739255141bb066c506a12f7d1e8dfec21abc58494705b6f" is_infinite = false [private_call.verification_key_hints.salted_initialization_hash] - inner = "0x1a4464bfcdd35a97c843212076238266bc646803e06fb78f858fffbbb46dad6e" + inner = "0x2de957901721f07d60767b1eb6ec50832a0bdc5262ee69647abcc9e5ac41adf7" [private_call.verification_key_hints.protocol_contract_membership_witness] - leaf_index = "6" + leaf_index = "1" sibling_path = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0c20d584dcfb76bd8ccb0d2487adb939f51bab8e7af2effc3b03c9f04a6132ab", - "0x0bf26229eb4649e71d2c87276307e96c30845e624934cfb175bd475b5d55a25c" + "0x00278a54ca5b0da8857c9fa66f74d24e0658042248ba80598517a2307954b6da", + "0x0cf25fb396cdf715953aacb6a56fd4ace57a4321457507d62a0dd16d31979361", + "0x2ab65a791ff655cf2005e3055de6df7cc2e5bc618d32b9eee176bba3e1ca8b99" ] [private_call.verification_key_hints.protocol_contract_leaf] - address = "0x04a9a9bed524c29ed1a52a603fdb2f3c5e5e5941b7ae81fc39b13d93701ec4c4" - next_address = "0x07ee7acaa2707c287093a1906f7efc139385dfb0e02b39c173ed485bd2844d9a" + address = "0x0847ccd7be9180eebe45a3df418b09365cca78a8a52847dd31e8b3abfd8b2050" + next_address = "0x1385b3ecd7765e8503adf664bba122e62d734844e8e1e758806eb04991b20507" [private_call.verification_key_hints.updated_class_id_witness] - leaf_index = "140" + leaf_index = "139" sibling_path = [ - "0x15616bdd80f77a6dc2607f00755271e09155b4ecc8455ac64c1bb9b2ac72973e", - "0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1", - "0x0c5abbf8d7322b5d318f670cb0670172c9831105f225e51e3ae0d67486c820eb", - "0x2379176def59ea912d2ad056dbaf19af8acc5a81112abb6c6d632bbbda9ad0d1", + "0x22622e164ed9467175c433a78054a99911a76e6598740105099d175457506a87", + "0x28d3a20d5e6dbb02c9dfa4793b2adbb6b88ee63eefd188150793e8e987412e91", + "0x21ad61f8e1ac12fcedbd0842d5fdbbc56add23e0ef9e4f6a8dcbcb4e70458695", + "0x1441d4f6459bd7c877138c9d27dec6755cbbc7a22a9e64274df7e542e3afad5c", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", - "0x0ea71ac293b54747fe6384d46c954ff17a6239501a80ce0a9f4f9d0ca56db695", + "0x0c13dd35017f08cfb01374b97571abd1da8655bc23e7ea1fa5d6431eae55e79c", "0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", @@ -5159,13 +5159,13 @@ is_infinite = false ] [private_call.verification_key_hints.updated_class_id_leaf] - slot = "0x0a0ef3594a9c623a182130e16040d288282b081ddcdfaa6df70d9cf40300f16a" - value = "0x0000000000000000000000000000000000000000000000000000000000004e20" - next_slot = "0x0d133598e181acf02ddad1aebf8eb6481b83d28cfe3327007e07f787425c2e3b" - next_index = "0x0000000000000000000000000000000000000000000000000000000000000077" + slot = "0x00a37a91a78c15f7b3edb0910e6dda3cb641792d44c8aec57a341f34e9068b97" + value = "0x0000000000000000000000000000000000000000000000000000000000002710" + next_slot = "0x0a53eff5beb5198c2343ed597ea2273d0f399e74983bf2fcd598a465fbde2eec" + next_index = "0x0000000000000000000000000000000000000000000000000000000000000075" [app_public_inputs] -args_hash = "0x0ec3a4a14c32575ba8aff6ab5a498a7370d2e30290a29c2637fe5ccc1e8a4761" +args_hash = "0x298cbc0839f43e44d09b9a62dc5f99644430083bd6334274312731f98517c7c9" returns_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" start_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000003" end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000000000000000c" @@ -5180,16 +5180,16 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" is_static_call = false [app_public_inputs.call_context.msg_sender] - inner = "0x06615e4b566a640e99213edb664c8c0b49c5e833c3a4b16116fe1de9d06382da" + inner = "0x0eaa5f9a2339cab09e553484a4b465925e63f182ba64af15e0617743b623872c" [app_public_inputs.call_context.contract_address] - inner = "0x069db44ef2ffc86dea9bba7f714bab5c098fdc0ecf5db85cd0b1945c72ad1bc1" + inner = "0x0d4caa1a935c446cc7cf578160bb40bda34dc711292f9dbd8ef0951ef9216c05" [app_public_inputs.call_context.function_selector] inner = "0x00000000000000000000000000000000000000000000000000000000754fb767" [[app_public_inputs.note_hash_read_requests]] - value = "0x06be3cc5f21d5380084de72f281ec51bf84272f91f3e7f4d5f17281a7c795490" + value = "0x08b6119df2fb6e262dce0f6be7ea97e4209e8e9769f20e6a7b1e9c79d3bfad3f" counter = "0x0000000000000000000000000000000000000000000000000000000000000005" [[app_public_inputs.note_hash_read_requests]] @@ -5253,7 +5253,7 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" counter = "0x0000000000000000000000000000000000000000000000000000000000000000" [[app_public_inputs.nullifier_read_requests]] - value = "0x069db44ef2ffc86dea9bba7f714bab5c098fdc0ecf5db85cd0b1945c72ad1bc1" + value = "0x0d4caa1a935c446cc7cf578160bb40bda34dc711292f9dbd8ef0951ef9216c05" counter = "0x0000000000000000000000000000000000000000000000000000000000000004" [[app_public_inputs.nullifier_read_requests]] @@ -5320,11 +5320,11 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" sk_app_generator = "0x0000000000000000000000000000000000000000000000000000000000000030" [app_public_inputs.key_validation_requests_and_generators.request] - sk_app = "0x08f4428faf136e87493af2035b12bc83e03804e38a8b70e9d3cc688101a75ba1" + sk_app = "0x2ace2afd584944fef98ca885cfa89281bfcda6a30de819a5e71c6063a29d23e8" [app_public_inputs.key_validation_requests_and_generators.request.pk_m] - x = "0x14bab1603f2e5d8c1e1a05778ab5ab525febc66fc07871eda8574ff2518eb037" - y = "0x2b1568abbea9173cdacfbad009039b4a6b6c152f18ad4bd82e0b5cdff82a4bf3" + x = "0x04ae7954073be45534c6f2a4c66b6af010c465bb5f2093df1f35a798f2b6d4a3" + y = "0x07ba58d46c27211ffa47343566f0f08db258900d9a2a2ffdcaf1add3426f3c6e" is_infinite = false [[app_public_inputs.key_validation_requests_and_generators]] @@ -5493,11 +5493,11 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" is_infinite = false [[app_public_inputs.note_hashes]] - value = "0x30572ee73b023fb5787a49954a77e1444128c78e3d619c9cf53bbaeb7ed5c45a" + value = "0x0d3fca6b226bf520e61e79dc26ece7dec644d03c8a72d3c259ecd80afcbd6b71" counter = "0x0000000000000000000000000000000000000000000000000000000000000007" [[app_public_inputs.note_hashes]] - value = "0x269f0685b9ce5defe0a63675047328323cf02c876f171364c88d5e6a681002c5" + value = "0x1688b4bfb5829c877a5e6bba0c4d1e789f8e5ca09158dd3755fccbaffe7c1a96" counter = "0x0000000000000000000000000000000000000000000000000000000000000009" [[app_public_inputs.note_hashes]] @@ -5557,7 +5557,7 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" counter = "0x0000000000000000000000000000000000000000000000000000000000000000" [[app_public_inputs.nullifiers]] - value = "0x1600fe91f77876865cea7d7a3177dd8091d97882fa5b66ff8292364b51a374b8" + value = "0x074a66e07a51953c8fbccd5f7ec5beb6cb4a4295b9de6f35bcdfcf2c15e55afc" counter = "0x0000000000000000000000000000000000000000000000000000000000000006" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -5964,24 +5964,24 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.private_logs.log] fields = [ - "0x237252a2e4fa84f038b927d030179fe567903fe5c95fad9a24ca8051f78c1c12", - "0x2b01f964225a0f568ecd44bd00e825ea6d9bb870de21adcd8f49b3e3cb56b4a9", - "0x000029a8da47489273d19a9c8832ec0b56255d73cca8add00e01f599053eceb7", - "0x00110d2c08ffdd948de14d2af4503f273795daa9ac2990b11e84b1c8e7d18c90", - "0x00a14233503a58eda2479e7e5ca65e0cfc8c405fd83d52baf4cba50b065c4fb0", - "0x00b8a89498bf0321ecb550a4077a127c47582a393cf5bc0164dbe6972282ac16", - "0x00ab5a209503c6d7f832fa90c3522433a2107afab20699fd1d81c270bf87a2da", - "0x00f626374b991e5a6a9467ecf4794ccd3b3d3f9784157658af9a7d978a7821ee", - "0x00be1cb199ae3f44ea6365248f63364e70c6e6814d6e17356534628d90ac96da", - "0x00209c81aaf41f87c514ff51f3d714fbf062ace45df0369f430d872563977420", - "0x002cc783139420d107f3547dddd95a55e4967bd1dc6301567c89ac5ad9952965", - "0x00c327318b0504f318595481960683cca7bb30c484c2804c65b3a387e5b024ab", - "0x002caf825ca5a9ad8c7375f80bb5ecbe9932b22264b3afae02dca29f4b5c95c4", - "0x00ac1144a606a4c48f0c8e82c2bd475dc2873ba8e40187ade84fd4e3d90895bf", - "0x002ec148510ac108b727a9e72f87b5d57a150a3f454900d533b76c5a53e0d53a", - "0x0041f1badd4ac83a4aa50c6fbab9a03ddd8935076eb1128dd3992befcacb719b", - "0x00a3d686a54e018998ddf493f3182d863de4e7a3744ca6401ede5807e12209cf", - "0x001d74d4a02f86b0000781228c6e4e47e6bdee2515e5bfb5937c494b72f6a9c5" + "0x01bf6aee385ad387f4bfbba71a81b11d8bed809c863e4790cb03b51e26193899", + "0x1de6c5822164e0bcb0203a35b3a349f028ebdebaca45e75a7c0d51d83754653d", + "0x0001c9bc7b6dd9674606de16e4fea986d6f5aebd12924b5eaca39c2d333ac025", + "0x00ddb80a07316fd0f7205b54f16ebf0304bb136396f405d0add90e12c7c8f44d", + "0x00d62251d69709086b2c1edd7f53e34feecc798a203f7568aff8cf45a568a325", + "0x0045cf99e70d3b13c1b17b21cff024b48ecdf62ccba11d258e4d9e16019c0c79", + "0x00f6b02c592389c5b5a263273a4bc9e25ee1ddc96cb5b362f27507df3fa01d4f", + "0x00795e5f76189afd0e9e6eb2e1c286fd24a671c4f69e56e84c83a517e5bdaaa2", + "0x00c4630b3fde957da549f30aa385b1fa1c0952b3d48e478b7d08a971b61d166d", + "0x007fce2f8e8cada25097a8ce041f502fbd65af169a3e0248c0493e676dfd3bb8", + "0x0051a28f7a1cecad6d8519b5d3b78fe8e5665049bab6dab221d4cfde38c344c1", + "0x005cd1365a9f2ceca9eba518e2f979a0847be82c15242c46b73d50b0d189db28", + "0x003404a89940686524828f4df77310044c16de5360dd4784b30c123d5034695d", + "0x007ad01fb578b02b49c82f80315c1e530162f08b6ad6cf3e7ef960b794f2fb65", + "0x00cd63f73fbd0b1d72b202d5b08d119e4325769d046a62383eb2a4faa216ea46", + "0x0081329e5eb9e06b036e6b029257a4394968fa0baf4b5dacae06f878432463a7", + "0x00b8624bca3b3f85aaaf34ca8885eda8eacae1f064b2de183fded259cd68c018", + "0x00008c697784dc97bb551757c774a21d1cd4e81e3463b431726a310ca5f5deb4" ] [[app_public_inputs.private_logs]] @@ -5990,24 +5990,24 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.private_logs.log] fields = [ - "0x24cfa53f62c167e4d8c5779e2687541ea50b4d9bdb32b95dd4999888ae9f60f9", - "0x21b7c3b69793c5f6ec26f2f85f02f396260672ffaa6884e8b4b94778c2466ab5", - "0x00018ae975f86dec636e9246cfc89365c388f17f0de404564b761d6a04c3ee54", - "0x0043f6ab5592e83831fc02edbed8bd03d790c01eed4ab6e9652f73a815ba8cd7", - "0x0056cf4dd960f1b4eebb35c5d57b76445b53737e390ebbcd700a158031235666", - "0x00d77a908d17ac1431852e316444dec86b9f080c3ed8ef7374d6329026abb6c7", - "0x00c80a42910eb1213d8ec1589691d31bbd4039930adbab1e07961509c1444230", - "0x00035f68808e2196135fe4ebe6e367c024d46be3977c55915954a040504794ce", - "0x00bdd98111275c9fb24aae6c7a65ecbdde3a771bd2f11e55d49eb7619b888ef0", - "0x00ab7c769e2de00cda5509006e96bde25a02128dba2c0a039c0630f61c64cf93", - "0x003c1560e86e0227b14bbf24e9fdd2c017bfc02bfac91e3c22163646a5ccc128", - "0x00247e7216479cd9f78d799a4297265a5a95f92f6918bd9523e452cdf67225b2", - "0x00da91bddb7523bb37fdbdf9177c03eed8c513efcdac618abc1efb2c9615e4b4", - "0x00117934d8459e655dbcaf76a412d93d63844945496d30520dd29ddde34dfaf2", - "0x00cdf503ea686444e4b62eaeb3a0dee86eedbaa0da0eefaec1523f20bd6174aa", - "0x00566d2154f940649508f1422530ece59240b268db7d80b229bd92987d7242df", - "0x00ae16e294f99e635dc38705bed23e5c1d51979f3e250f356a8f7e1a97a27796", - "0x00d114d2453dcba21344e4872761e20cb4763a512838eb6148471157d2b37810" + "0x1b05623b0b8c658bf8a70df32e766d62e8e6d41eeb7bbf12554de7b05c3a8fe9", + "0x1d4753d28d7a8b7d33eae21ea6addfbec7bfc7ca7429d985db6ca94285513bba", + "0x0000433601568cfe05e32c22e8de8a29557245b1e9f6362bc29839c40d936f2f", + "0x008324f58055544bab2c797eefe21b329e81eebb6d4f85eb3f6b7aa423e65d13", + "0x00c0c740be23ba91bb56fa016c6b3fbb7b1a74b01ad41bc7f1f8d0f7f8ae5ece", + "0x008c0b1544d8eb005a424854f6a415470b0ac88c318df345163c5f961d35a872", + "0x00454d42ad247716b1c0be03297a78771282db05c04d7907f395e1d0220c88e8", + "0x002505442461715cb516872d6f488f5b367389d92c59c3e51d6daf0c3c557050", + "0x00c89846b2204eb9a8ff13fbd140791adb5dcd913538c57e84a90d8e61d7250a", + "0x00d5519b04f2e191d3c7e560ff534cc7370b2401d8e4fc387784f34812256f55", + "0x0042ce2f78473d6acc8196f0ed36b05ec6a3ab6cc90b90ea55932f8febe62294", + "0x002db2b612fbbedf1bb29de0427c53c5c4012bd911e2b9741efcc5b0dccbe5f2", + "0x002e047d8f5f92619c2b9b663a3077080262e10db98ccd4cbc110041ba64a934", + "0x00fbe4af0fcf9aefc85de58650d03cf25a352805e736b639ad84278b060645bc", + "0x00fa23a9e2e886626b70ab6fb5b247296d1db7e3510af0c465f63eaf764684e5", + "0x0077708b404b1327c10afcbe04960573eb91364be70f9924c2a0aa997ce11658", + "0x00af1810a30d1aca3cd3bab3ef81c60db054058a5cb132cc70225c47ede42fe1", + "0x003aa536ec447658794581e50a54d7a37986fa113bc160b4e16be58254c5e29e" ] [[app_public_inputs.private_logs]] @@ -6016,24 +6016,24 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.private_logs.log] fields = [ - "0x2e29dc3904d1253a6d24c642613969482a21c96bf110383b589c9bb346766fba", - "0x1c7bc9c2cc0b9f3a51869355c9ea2628d03f75cff9acb4763b77e702fb652bca", - "0x0001779f7ec1312e0108d74d8b1fe51b90194306384d136a687037129c51288d", - "0x0008bcc3b224f715b1563a7506a03671babd0f3950b54a21297fba06d671150e", - "0x004b71941c9819a464095c57c49e51307a86e6292f4f3bd60aba943321e781d2", - "0x00cccc3d756e624f44e5f68faf12a0ed463c8f0c2f3ed0a56077008f37a891ed", - "0x00e80c2cfcd0e952ec1b1c57b253456ee7d904403026f83ad6b9eaf7750ecafb", - "0x007d85e2703b61ad0727cbd94956a35015a8bf8e6cdacdf8bd8d344108a2bd23", - "0x0082aa1328c2e3c7e120342c9f46d5c92e590fa26e304e6d5b65e76c900df7b3", - "0x0041035ba4933aaf84dcdbb50cecf93cdee1015c667f1ac119e6196edc311bc1", - "0x00a3da19f5b9db5940a196d0050f414a5e54ac2e13ac9d0ce9ca10cebdd8ed3a", - "0x009971faba642a8a3a38f3319de5831eb888553bcea7adf90fe07a9892c9129f", - "0x00bc7db1beeb7b7b7cbf9490a7b8eb9ae2262c6469dec9bb389fff3bd4d8ef01", - "0x006046d7c1845d2ed78e8b29a90a5949b50d782751d8b5ad76c381a6059af468", - "0x007f99ed4fa28ed91621b4812f2911f99d6dd3828072c8e6588e366162e1d1d6", - "0x00c86097877401cfe05caeee2cd4827ecb9dc66e6ff259dfaf1d302840fa718c", - "0x0051591b8a3dc7e0275cc95aeb7a159c9eda833010a6e02d8f70984978ead547", - "0x00850dfb9de024519e14375242f710c64d5025837ba0a5a1d400db7f157d9db8" + "0x1b25bf0eab53138a8e51ae39de6d61b22c625627100dd8cd683bbaf9fbd5fad2", + "0x233bb6ccd598da3cf7e1197196016da01eeb36fba32da553b7592628464f95f8", + "0x00015305448c7b8ccc9974a00bf67b75cc2d33fc2862f9220ac21e5a974ea4ad", + "0x00850c73d8089c24a07051ef2427633715c72127312dd42bf834bd4b285eb7a4", + "0x006b15a1d643e3a94cffa2f7879c3056b211c3e429124524b1d60b8de3025282", + "0x008d1afe166f16279e54c9422d70f19956570791b1b836bac88348179e7c7acf", + "0x00c76213e793b8550c2856d56a02a22efb8c2b7cf3b613bdda03c830726d77d5", + "0x00f0383e97fbcf0b8db387695b8de2a05a5089c3254cf028f358ac17dbdb7062", + "0x00ba48355a84a27aa82b3456e88df5f45ec8b3159b719d72c0c8e83bfcb630cf", + "0x007c4c4b4a05669641661b0981268de279a4d3966aa0299d0c8c9ce77bb41089", + "0x00fe2dcc2e67d9f24e95ad7155be2eedd5cfd785eba8229b85fb7fd39821d12b", + "0x00267e0c3d1f91e1f823838ac65c22aa9e3cef20b4480827500f971ffb464b1d", + "0x00aba8a08ee382aa0b261298b340ca999427ca58d5fea8b75e115ca1e1329150", + "0x00a5f050b006f836486ffa78f91d2a785734284d338bb651e8a8c8a478da6355", + "0x008c750cebf19e7ac2d21a796864bef2012ab110f6a01bea5d8401e12fe8759d", + "0x0089e1ac0f90a48d738e1c86f97d8e8a203f83b89ed101d3febfca218a63da38", + "0x008812e4f63846f131aa6cf6ad32d29de7192f2091248ecc09ba36f95b913173", + "0x00ed0cc8c30b23d9ab51bb31e67dc6296371671ab2bb08d0e33f25fe27a1b42b" ] [[app_public_inputs.private_logs]] @@ -6380,16 +6380,16 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" length = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.historical_header] - total_fees = "0x00000000000000000000000000000000000000000000000000000001419ea740" + total_fees = "0x0000000000000000000000000000000000000000000000000000000141456af4" total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000017cbd" [app_public_inputs.historical_header.last_archive] - root = "0x2ccd1362797b50e31f84634e9db3da4e2ad3b43dcc3fca530fb9a7309161265c" + root = "0x16fbe8410484863346466b4f631b86af141e8320d2df8d8155546f20e3b8a4ae" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [app_public_inputs.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x00b2b035bfb5b127c2288ac501da8a6f31fcb04de75043181675e5096cd920e6" + blobs_hash = "0x00da4979a284417ddf5388a3f159ad684256f4b72256a349fd9956ef9c2ae018" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -6398,37 +6398,37 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000060" [app_public_inputs.historical_header.state.partial.note_hash_tree] -root = "0x0bb159f01f959f4af57eddb1aad0439ac7b07950ab07534eb3172a6a95b4e006" +root = "0x20a5cb14d512cfdd2bbdda6b3d0b78091d0137079b0900ac1c9e9dc9dee167ce" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [app_public_inputs.historical_header.state.partial.nullifier_tree] -root = "0x240cd8aa3b8a2feb0cd07fbffc01a199b52de9899ebdd59ffc44ab7c61d7ae78" +root = "0x0c05f955dd7ebb34c4cb637573471d0d7c58ac3fafc4fa98276ce616bdf11fb8" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [app_public_inputs.historical_header.state.partial.public_data_tree] -root = "0x262d4b92012685a90746ce5e378f16a4f3fd0580b19fbb30b88b5a8cc18b392a" +root = "0x06a1b9620bf4ed16ae3599baf6817e6a10aeb2b70ff91652e1f26e2261c78ea0" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [app_public_inputs.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068081693" + timestamp = "0x00000000000000000000000000000000000000000000000000000000680a0bfc" [app_public_inputs.historical_header.global_variables.coinbase] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [app_public_inputs.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d840" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d804" [app_public_inputs.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" [app_public_inputs.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -6440,7 +6440,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [app_public_inputs.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fc1" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fb2" [app_public_inputs.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-reset/Prover.toml b/noir-projects/noir-protocol-circuits/crates/private-kernel-reset/Prover.toml index 5593ab193db9..713940e344b2 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-reset/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-reset/Prover.toml @@ -3,8 +3,8 @@ vk_index = "0x0000000000000000000000000000000000000000000000000000000000000000" vk_path = [ "0x15ccf26b646712a49937c53496084977e0538f82497fd4057b983ea27f755675", "0x30374f4c5751c6bd430ad979031ba8b8c188fc3c1db7405b115b01de3c722428", - "0x183f6d0acf1a4786c5264bac34fc824f78ba97e182ed2b5b265c939c4e6a48dc", - "0x223b98513f87a3be6816ac1e2a1b87a807169110828d2b808a707609e4217d13", + "0x0176e0df3ad3b4e7eb4a8ce9e2d53c3bb2503f2cd5b28c1d976842b07ffe37ff", + "0x1579d8714bffc417282d461161468745ec125da568e082364e4896fbad931bd1", "0x0a5cccc6f5c49119df17ad49125046e1f8ade560372f415e56d28bab8a1fba34", "0x042567ea670fc3ff2b8c48b244f6a0c96944c6b969143cf0cfacfd97e5b929aa" ] @@ -144,23 +144,23 @@ vk_path = [ [previous_kernel_public_inputs] min_revertible_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000003" is_private_only = false -claimed_first_nullifier = "0x195a5a40b55132dc3194677e67aac8c065fa17b0b898f87575a4d291242545c4" +claimed_first_nullifier = "0x1b419b2283ccc54cb77881aa39a899c01587596f3d484b57b65e24aa9957de25" [previous_kernel_public_inputs.constants] - vk_tree_root = "0x0e88f44969aa6d4ff0d17db376dfa057ed3aa447725b0febf35af08e0d1d468e" - protocol_contract_tree_root = "0x1ed87d453cb7c21c5dbca65441925b3f9138fd1433928dda23342367bf94f7c0" + vk_tree_root = "0x2ca9a33f5bf72a45ff0bc18657afa956eb151243a9bc9d3c113e4c711634fd7e" + protocol_contract_tree_root = "0x2d4c1fe46d355909b04374f3890ac9b6649eabcd85e2c8dd82e237c5808626ba" [previous_kernel_public_inputs.constants.historical_header] - total_fees = "0x00000000000000000000000000000000000000000000000000000001419ea740" + total_fees = "0x0000000000000000000000000000000000000000000000000000000141456af4" total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000017cbd" [previous_kernel_public_inputs.constants.historical_header.last_archive] - root = "0x2ccd1362797b50e31f84634e9db3da4e2ad3b43dcc3fca530fb9a7309161265c" + root = "0x16fbe8410484863346466b4f631b86af141e8320d2df8d8155546f20e3b8a4ae" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [previous_kernel_public_inputs.constants.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x00b2b035bfb5b127c2288ac501da8a6f31fcb04de75043181675e5096cd920e6" + blobs_hash = "0x00da4979a284417ddf5388a3f159ad684256f4b72256a349fd9956ef9c2ae018" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -169,37 +169,37 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000060" [previous_kernel_public_inputs.constants.historical_header.state.partial.note_hash_tree] -root = "0x0bb159f01f959f4af57eddb1aad0439ac7b07950ab07534eb3172a6a95b4e006" +root = "0x20a5cb14d512cfdd2bbdda6b3d0b78091d0137079b0900ac1c9e9dc9dee167ce" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [previous_kernel_public_inputs.constants.historical_header.state.partial.nullifier_tree] -root = "0x240cd8aa3b8a2feb0cd07fbffc01a199b52de9899ebdd59ffc44ab7c61d7ae78" +root = "0x0c05f955dd7ebb34c4cb637573471d0d7c58ac3fafc4fa98276ce616bdf11fb8" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [previous_kernel_public_inputs.constants.historical_header.state.partial.public_data_tree] -root = "0x262d4b92012685a90746ce5e378f16a4f3fd0580b19fbb30b88b5a8cc18b392a" +root = "0x06a1b9620bf4ed16ae3599baf6817e6a10aeb2b70ff91652e1f26e2261c78ea0" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [previous_kernel_public_inputs.constants.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068081693" + timestamp = "0x00000000000000000000000000000000000000000000000000000000680a0bfc" [previous_kernel_public_inputs.constants.historical_header.global_variables.coinbase] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [previous_kernel_public_inputs.constants.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.constants.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d840" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d804" [previous_kernel_public_inputs.constants.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" [previous_kernel_public_inputs.constants.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -211,7 +211,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fc1" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fb2" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -223,11 +223,11 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000e16" [[previous_kernel_public_inputs.validation_requests.note_hash_read_requests]] [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.read_request] -value = "0x0e3205b929eec7b3d63fb0a0df1c3d9a61ba1e6d800cad497bf5fb5c176d89f7" +value = "0x00bee791c6738bcb86d45e206256ae8017ae2e93a191f3ae5ea3b0596e6b8455" counter = "0x0000000000000000000000000000000000000000000000000000000000000002" [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.contract_address] -inner = "0x06615e4b566a640e99213edb664c8c0b49c5e833c3a4b16116fe1de9d06382da" +inner = "0x0eaa5f9a2339cab09e553484a4b465925e63f182ba64af15e0617743b623872c" [[previous_kernel_public_inputs.validation_requests.note_hash_read_requests]] [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.read_request] @@ -2723,7 +2723,7 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.nullifiers]] [previous_kernel_public_inputs.end.nullifiers.nullifier] -value = "0x195a5a40b55132dc3194677e67aac8c065fa17b0b898f87575a4d291242545c4" +value = "0x1b419b2283ccc54cb77881aa39a899c01587596f3d484b57b65e24aa9957de25" counter = "0x0000000000000000000000000000000000000000000000000000000000000000" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -4359,13 +4359,13 @@ counter = "0x0000000000000000000000000000000000000000000000000000000000000003" [previous_kernel_public_inputs.end.public_call_requests.inner] is_static_call = true - calldata_hash = "0x08eb7994ce9f00336092eb9a837517099f27dc9b87d5e504625c166510bbb419" + calldata_hash = "0x120de9c32274234b57afc49afd5d5daebc4ada18726e0f121ad479698d0d6667" [previous_kernel_public_inputs.end.public_call_requests.inner.msg_sender] - inner = "0x06615e4b566a640e99213edb664c8c0b49c5e833c3a4b16116fe1de9d06382da" + inner = "0x0eaa5f9a2339cab09e553484a4b465925e63f182ba64af15e0617743b623872c" [previous_kernel_public_inputs.end.public_call_requests.inner.contract_address] - inner = "0x069db44ef2ffc86dea9bba7f714bab5c098fdc0ecf5db85cd0b1945c72ad1bc1" + inner = "0x0d4caa1a935c446cc7cf578160bb40bda34dc711292f9dbd8ef0951ef9216c05" [[previous_kernel_public_inputs.end.public_call_requests]] counter = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -4925,7 +4925,7 @@ end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000 inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.fee_payer] - inner = "0x06615e4b566a640e99213edb664c8c0b49c5e833c3a4b16116fe1de9d06382da" + inner = "0x0eaa5f9a2339cab09e553484a4b465925e63f182ba64af15e0617743b623872c" [hints] validation_requests_split_counter = "0x0000000000000000000000000000000000000000000000000000000000000003" @@ -5454,9 +5454,9 @@ read_request_index = "0x00000000000000000000000000000000000000000000000000000000 "0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", - "0x0160b125e841ad444c889d5a589d70bba8162b129a8ef9b848e4b2589be39855", + "0x14a4c8c0b81d1eea033b182744dabf74927e0716c561a342175302fe0b6ad5c9", "0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b", - "0x025105357dd69f921a2e6a5b9ade17c65684827c9ad3c31c5cdb17c1de8df43a", + "0x172fb1938af37be7cd7304a1e833f3e0859c9322ac95d8482d9d9bff49b611a0", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", @@ -5491,7 +5491,7 @@ read_request_index = "0x00000000000000000000000000000000000000000000000000000000 ] [hints.note_hash_read_request_hints.settled_read_hints.leaf_preimage] - value = "0x0e3205b929eec7b3d63fb0a0df1c3d9a61ba1e6d800cad497bf5fb5c176d89f7" + value = "0x00bee791c6738bcb86d45e206256ae8017ae2e93a191f3ae5ea3b0596e6b8455" [[hints.note_hash_read_request_hints.settled_read_hints]] read_request_index = "0x0000000000000000000000000000000000000000000000000000000000000040" diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-tail-to-public/Prover.toml b/noir-projects/noir-protocol-circuits/crates/private-kernel-tail-to-public/Prover.toml index 9553a890e744..b9e4b2a4c70b 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-tail-to-public/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-tail-to-public/Prover.toml @@ -6,7 +6,7 @@ vk_path = [ "0x2b5948ce1e2c841a6c8b27ae2ba4f1cff97800dff9df06878d698cf7a3bed4ba", "0x2e342e102eca5d3d55c01364ff72637c9f23ce49ec69be1c53830bd31e76f81b", "0x011c10e5d319df9125d9c99db5394aeb7f78224374c4fd1ef0241961550b1c93", - "0x22a3bb91b9d4942f8e8dae3e467985b19aa6ee18315aabdfbc40f4d22f8340a3" + "0x1e12fda4813312d05f6c1938c1f413239ee97bf49c3286c01daa8c4cc67fc747" ] [previous_kernel.vk] @@ -144,23 +144,23 @@ vk_path = [ [previous_kernel_public_inputs] min_revertible_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000003" is_private_only = false -claimed_first_nullifier = "0x195a5a40b55132dc3194677e67aac8c065fa17b0b898f87575a4d291242545c4" +claimed_first_nullifier = "0x1b419b2283ccc54cb77881aa39a899c01587596f3d484b57b65e24aa9957de25" [previous_kernel_public_inputs.constants] - vk_tree_root = "0x0e88f44969aa6d4ff0d17db376dfa057ed3aa447725b0febf35af08e0d1d468e" - protocol_contract_tree_root = "0x1ed87d453cb7c21c5dbca65441925b3f9138fd1433928dda23342367bf94f7c0" + vk_tree_root = "0x2ca9a33f5bf72a45ff0bc18657afa956eb151243a9bc9d3c113e4c711634fd7e" + protocol_contract_tree_root = "0x2d4c1fe46d355909b04374f3890ac9b6649eabcd85e2c8dd82e237c5808626ba" [previous_kernel_public_inputs.constants.historical_header] - total_fees = "0x00000000000000000000000000000000000000000000000000000001419ea740" + total_fees = "0x0000000000000000000000000000000000000000000000000000000141456af4" total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000017cbd" [previous_kernel_public_inputs.constants.historical_header.last_archive] - root = "0x2ccd1362797b50e31f84634e9db3da4e2ad3b43dcc3fca530fb9a7309161265c" + root = "0x16fbe8410484863346466b4f631b86af141e8320d2df8d8155546f20e3b8a4ae" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [previous_kernel_public_inputs.constants.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x00b2b035bfb5b127c2288ac501da8a6f31fcb04de75043181675e5096cd920e6" + blobs_hash = "0x00da4979a284417ddf5388a3f159ad684256f4b72256a349fd9956ef9c2ae018" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -169,37 +169,37 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000060" [previous_kernel_public_inputs.constants.historical_header.state.partial.note_hash_tree] -root = "0x0bb159f01f959f4af57eddb1aad0439ac7b07950ab07534eb3172a6a95b4e006" +root = "0x20a5cb14d512cfdd2bbdda6b3d0b78091d0137079b0900ac1c9e9dc9dee167ce" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [previous_kernel_public_inputs.constants.historical_header.state.partial.nullifier_tree] -root = "0x240cd8aa3b8a2feb0cd07fbffc01a199b52de9899ebdd59ffc44ab7c61d7ae78" +root = "0x0c05f955dd7ebb34c4cb637573471d0d7c58ac3fafc4fa98276ce616bdf11fb8" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [previous_kernel_public_inputs.constants.historical_header.state.partial.public_data_tree] -root = "0x262d4b92012685a90746ce5e378f16a4f3fd0580b19fbb30b88b5a8cc18b392a" +root = "0x06a1b9620bf4ed16ae3599baf6817e6a10aeb2b70ff91652e1f26e2261c78ea0" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [previous_kernel_public_inputs.constants.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068081693" + timestamp = "0x00000000000000000000000000000000000000000000000000000000680a0bfc" [previous_kernel_public_inputs.constants.historical_header.global_variables.coinbase] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [previous_kernel_public_inputs.constants.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.constants.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d840" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d804" [previous_kernel_public_inputs.constants.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" [previous_kernel_public_inputs.constants.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -211,7 +211,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fc1" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fb2" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -2723,7 +2723,7 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.nullifiers]] [previous_kernel_public_inputs.end.nullifiers.nullifier] -value = "0x195a5a40b55132dc3194677e67aac8c065fa17b0b898f87575a4d291242545c4" +value = "0x1b419b2283ccc54cb77881aa39a899c01587596f3d484b57b65e24aa9957de25" counter = "0x0000000000000000000000000000000000000000000000000000000000000000" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -4359,13 +4359,13 @@ counter = "0x0000000000000000000000000000000000000000000000000000000000000003" [previous_kernel_public_inputs.end.public_call_requests.inner] is_static_call = true - calldata_hash = "0x08eb7994ce9f00336092eb9a837517099f27dc9b87d5e504625c166510bbb419" + calldata_hash = "0x120de9c32274234b57afc49afd5d5daebc4ada18726e0f121ad479698d0d6667" [previous_kernel_public_inputs.end.public_call_requests.inner.msg_sender] - inner = "0x06615e4b566a640e99213edb664c8c0b49c5e833c3a4b16116fe1de9d06382da" + inner = "0x0eaa5f9a2339cab09e553484a4b465925e63f182ba64af15e0617743b623872c" [previous_kernel_public_inputs.end.public_call_requests.inner.contract_address] - inner = "0x069db44ef2ffc86dea9bba7f714bab5c098fdc0ecf5db85cd0b1945c72ad1bc1" + inner = "0x0d4caa1a935c446cc7cf578160bb40bda34dc711292f9dbd8ef0951ef9216c05" [[previous_kernel_public_inputs.end.public_call_requests]] counter = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -4925,4 +4925,4 @@ end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000 inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.fee_payer] - inner = "0x06615e4b566a640e99213edb664c8c0b49c5e833c3a4b16116fe1de9d06382da" + inner = "0x0eaa5f9a2339cab09e553484a4b465925e63f182ba64af15e0617743b623872c" diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-tail/Prover.toml b/noir-projects/noir-protocol-circuits/crates/private-kernel-tail/Prover.toml index 574c2c147c60..e333eefd35dd 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-tail/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-tail/Prover.toml @@ -6,7 +6,7 @@ vk_path = [ "0x2b5948ce1e2c841a6c8b27ae2ba4f1cff97800dff9df06878d698cf7a3bed4ba", "0x2e342e102eca5d3d55c01364ff72637c9f23ce49ec69be1c53830bd31e76f81b", "0x011c10e5d319df9125d9c99db5394aeb7f78224374c4fd1ef0241961550b1c93", - "0x22a3bb91b9d4942f8e8dae3e467985b19aa6ee18315aabdfbc40f4d22f8340a3" + "0x1e12fda4813312d05f6c1938c1f413239ee97bf49c3286c01daa8c4cc67fc747" ] [previous_kernel.vk] @@ -144,23 +144,23 @@ vk_path = [ [previous_kernel_public_inputs] min_revertible_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000003" is_private_only = true -claimed_first_nullifier = "0x01e449dd4959ae23b7c13522c7b203d6a592fb6b6d98c8b5b13f77c25b3984e3" +claimed_first_nullifier = "0x1940498e62a3b8383c5a3bc2a70a030794ec4996d8ac38b55b2b8ee8fa0318d3" [previous_kernel_public_inputs.constants] - vk_tree_root = "0x0e88f44969aa6d4ff0d17db376dfa057ed3aa447725b0febf35af08e0d1d468e" - protocol_contract_tree_root = "0x1ed87d453cb7c21c5dbca65441925b3f9138fd1433928dda23342367bf94f7c0" + vk_tree_root = "0x2ca9a33f5bf72a45ff0bc18657afa956eb151243a9bc9d3c113e4c711634fd7e" + protocol_contract_tree_root = "0x2d4c1fe46d355909b04374f3890ac9b6649eabcd85e2c8dd82e237c5808626ba" [previous_kernel_public_inputs.constants.historical_header] - total_fees = "0x00000000000000000000000000000000000000000000000000000001419ea740" + total_fees = "0x0000000000000000000000000000000000000000000000000000000141456af4" total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000017cbd" [previous_kernel_public_inputs.constants.historical_header.last_archive] - root = "0x2ccd1362797b50e31f84634e9db3da4e2ad3b43dcc3fca530fb9a7309161265c" + root = "0x16fbe8410484863346466b4f631b86af141e8320d2df8d8155546f20e3b8a4ae" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [previous_kernel_public_inputs.constants.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x00b2b035bfb5b127c2288ac501da8a6f31fcb04de75043181675e5096cd920e6" + blobs_hash = "0x00da4979a284417ddf5388a3f159ad684256f4b72256a349fd9956ef9c2ae018" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -169,37 +169,37 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000060" [previous_kernel_public_inputs.constants.historical_header.state.partial.note_hash_tree] -root = "0x0bb159f01f959f4af57eddb1aad0439ac7b07950ab07534eb3172a6a95b4e006" +root = "0x20a5cb14d512cfdd2bbdda6b3d0b78091d0137079b0900ac1c9e9dc9dee167ce" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [previous_kernel_public_inputs.constants.historical_header.state.partial.nullifier_tree] -root = "0x240cd8aa3b8a2feb0cd07fbffc01a199b52de9899ebdd59ffc44ab7c61d7ae78" +root = "0x0c05f955dd7ebb34c4cb637573471d0d7c58ac3fafc4fa98276ce616bdf11fb8" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [previous_kernel_public_inputs.constants.historical_header.state.partial.public_data_tree] -root = "0x262d4b92012685a90746ce5e378f16a4f3fd0580b19fbb30b88b5a8cc18b392a" +root = "0x06a1b9620bf4ed16ae3599baf6817e6a10aeb2b70ff91652e1f26e2261c78ea0" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [previous_kernel_public_inputs.constants.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068081693" + timestamp = "0x00000000000000000000000000000000000000000000000000000000680a0bfc" [previous_kernel_public_inputs.constants.historical_header.global_variables.coinbase] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [previous_kernel_public_inputs.constants.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.constants.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d840" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d804" [previous_kernel_public_inputs.constants.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" [previous_kernel_public_inputs.constants.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -211,7 +211,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fc1" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fb2" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -2211,7 +2211,7 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.note_hashes]] [previous_kernel_public_inputs.end.note_hashes.note_hash] -value = "0x023308a170700d6eb7b0313807513316279d73c4f4022fd44df03a56ec02439a" +value = "0x25aea4b3d0cd0fd5ee19f38ad73d2966a85513efe90936fb193246011047cc8f" counter = "0x0000000000000000000000000000000000000000000000000000000000000007" [previous_kernel_public_inputs.end.note_hashes.contract_address] @@ -2219,7 +2219,7 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.note_hashes]] [previous_kernel_public_inputs.end.note_hashes.note_hash] -value = "0x012987d07260dc0b4d5590e6ba4de923ae1c22d979955dfae8b54753b23573ce" +value = "0x0c32322dd11357a3ae12d4c127d15af769b74654819eb9397d3cb506108d387f" counter = "0x0000000000000000000000000000000000000000000000000000000000000009" [previous_kernel_public_inputs.end.note_hashes.contract_address] @@ -2723,7 +2723,7 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.nullifiers]] [previous_kernel_public_inputs.end.nullifiers.nullifier] -value = "0x01e449dd4959ae23b7c13522c7b203d6a592fb6b6d98c8b5b13f77c25b3984e3" +value = "0x1940498e62a3b8383c5a3bc2a70a030794ec4996d8ac38b55b2b8ee8fa0318d3" counter = "0x0000000000000000000000000000000000000000000000000000000000000000" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -2732,7 +2732,7 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.nullifiers]] [previous_kernel_public_inputs.end.nullifiers.nullifier] -value = "0x2237915f6cfa0a49d61feb2a259b96793d94c31ea11e2ae4cf81de007cf7c93e" +value = "0x00f7b16465dbbc32fd56d20f6b9a3706aaad16fd221dd4696fff737cc31e4852" counter = "0x0000000000000000000000000000000000000000000000000000000000000006" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -3392,24 +3392,24 @@ counter = "0x0000000000000000000000000000000000000000000000000000000000000008" [previous_kernel_public_inputs.end.private_logs.inner.log] fields = [ - "0x101fc133e0b8cfbd7650436983f74419444585496a987c09cfa68ac6da2f5f37", - "0x2b01f964225a0f568ecd44bd00e825ea6d9bb870de21adcd8f49b3e3cb56b4a9", - "0x000029a8da47489273d19a9c8832ec0b56255d73cca8add00e01f599053eceb7", - "0x00110d2c08ffdd948de14d2af4503f273795daa9ac2990b11e84b1c8e7d18c90", - "0x00a14233503a58eda2479e7e5ca65e0cfc8c405fd83d52baf4cba50b065c4fb0", - "0x00b8a89498bf0321ecb550a4077a127c47582a393cf5bc0164dbe6972282ac16", - "0x00ab5a209503c6d7f832fa90c3522433a2107afab20699fd1d81c270bf87a2da", - "0x00f626374b991e5a6a9467ecf4794ccd3b3d3f9784157658af9a7d978a7821ee", - "0x00be1cb199ae3f44ea6365248f63364e70c6e6814d6e17356534628d90ac96da", - "0x00209c81aaf41f87c514ff51f3d714fbf062ace45df0369f430d872563977420", - "0x002cc783139420d107f3547dddd95a55e4967bd1dc6301567c89ac5ad9952965", - "0x00c327318b0504f318595481960683cca7bb30c484c2804c65b3a387e5b024ab", - "0x002caf825ca5a9ad8c7375f80bb5ecbe9932b22264b3afae02dca29f4b5c95c4", - "0x00ac1144a606a4c48f0c8e82c2bd475dc2873ba8e40187ade84fd4e3d90895bf", - "0x002ec148510ac108b727a9e72f87b5d57a150a3f454900d533b76c5a53e0d53a", - "0x0041f1badd4ac83a4aa50c6fbab9a03ddd8935076eb1128dd3992befcacb719b", - "0x00a3d686a54e018998ddf493f3182d863de4e7a3744ca6401ede5807e12209cf", - "0x001d74d4a02f86b0000781228c6e4e47e6bdee2515e5bfb5937c494b72f6a9c5" + "0x297fdd213e241fec22b0e5565af7ce5690b16d90a957631d012d7d4d48a59f50", + "0x1de6c5822164e0bcb0203a35b3a349f028ebdebaca45e75a7c0d51d83754653d", + "0x0001c9bc7b6dd9674606de16e4fea986d6f5aebd12924b5eaca39c2d333ac025", + "0x00ddb80a07316fd0f7205b54f16ebf0304bb136396f405d0add90e12c7c8f44d", + "0x00d62251d69709086b2c1edd7f53e34feecc798a203f7568aff8cf45a568a325", + "0x0045cf99e70d3b13c1b17b21cff024b48ecdf62ccba11d258e4d9e16019c0c79", + "0x00f6b02c592389c5b5a263273a4bc9e25ee1ddc96cb5b362f27507df3fa01d4f", + "0x00795e5f76189afd0e9e6eb2e1c286fd24a671c4f69e56e84c83a517e5bdaaa2", + "0x00c4630b3fde957da549f30aa385b1fa1c0952b3d48e478b7d08a971b61d166d", + "0x007fce2f8e8cada25097a8ce041f502fbd65af169a3e0248c0493e676dfd3bb8", + "0x0051a28f7a1cecad6d8519b5d3b78fe8e5665049bab6dab221d4cfde38c344c1", + "0x005cd1365a9f2ceca9eba518e2f979a0847be82c15242c46b73d50b0d189db28", + "0x003404a89940686524828f4df77310044c16de5360dd4784b30c123d5034695d", + "0x007ad01fb578b02b49c82f80315c1e530162f08b6ad6cf3e7ef960b794f2fb65", + "0x00cd63f73fbd0b1d72b202d5b08d119e4325769d046a62383eb2a4faa216ea46", + "0x0081329e5eb9e06b036e6b029257a4394968fa0baf4b5dacae06f878432463a7", + "0x00b8624bca3b3f85aaaf34ca8885eda8eacae1f064b2de183fded259cd68c018", + "0x00008c697784dc97bb551757c774a21d1cd4e81e3463b431726a310ca5f5deb4" ] [previous_kernel_public_inputs.end.private_logs.contract_address] @@ -3422,24 +3422,24 @@ counter = "0x000000000000000000000000000000000000000000000000000000000000000a" [previous_kernel_public_inputs.end.private_logs.inner.log] fields = [ - "0x25ddf92e3835b47d37ccf8177ab661751e4c22808c6e3e0bf81499e0a316c4ec", - "0x21b7c3b69793c5f6ec26f2f85f02f396260672ffaa6884e8b4b94778c2466ab5", - "0x00018ae975f86dec636e9246cfc89365c388f17f0de404564b761d6a04c3ee54", - "0x0043f6ab5592e83831fc02edbed8bd03d790c01eed4ab6e9652f73a815ba8cd7", - "0x0056cf4dd960f1b4eebb35c5d57b76445b53737e390ebbcd700a158031235666", - "0x00d77a908d17ac1431852e316444dec86b9f080c3ed8ef7374d6329026abb6c7", - "0x00c80a42910eb1213d8ec1589691d31bbd4039930adbab1e07961509c1444230", - "0x00035f68808e2196135fe4ebe6e367c024d46be3977c55915954a040504794ce", - "0x00bdd98111275c9fb24aae6c7a65ecbdde3a771bd2f11e55d49eb7619b888ef0", - "0x00ab7c769e2de00cda5509006e96bde25a02128dba2c0a039c0630f61c64cf93", - "0x003c1560e86e0227b14bbf24e9fdd2c017bfc02bfac91e3c22163646a5ccc128", - "0x00247e7216479cd9f78d799a4297265a5a95f92f6918bd9523e452cdf67225b2", - "0x00da91bddb7523bb37fdbdf9177c03eed8c513efcdac618abc1efb2c9615e4b4", - "0x00117934d8459e655dbcaf76a412d93d63844945496d30520dd29ddde34dfaf2", - "0x00cdf503ea686444e4b62eaeb3a0dee86eedbaa0da0eefaec1523f20bd6174aa", - "0x00566d2154f940649508f1422530ece59240b268db7d80b229bd92987d7242df", - "0x00ae16e294f99e635dc38705bed23e5c1d51979f3e250f356a8f7e1a97a27796", - "0x00d114d2453dcba21344e4872761e20cb4763a512838eb6148471157d2b37810" + "0x00f9d119ccc083ec1494ad6c08c99728c26a5c31e410799b5623dda6c27d517b", + "0x1d4753d28d7a8b7d33eae21ea6addfbec7bfc7ca7429d985db6ca94285513bba", + "0x0000433601568cfe05e32c22e8de8a29557245b1e9f6362bc29839c40d936f2f", + "0x008324f58055544bab2c797eefe21b329e81eebb6d4f85eb3f6b7aa423e65d13", + "0x00c0c740be23ba91bb56fa016c6b3fbb7b1a74b01ad41bc7f1f8d0f7f8ae5ece", + "0x008c0b1544d8eb005a424854f6a415470b0ac88c318df345163c5f961d35a872", + "0x00454d42ad247716b1c0be03297a78771282db05c04d7907f395e1d0220c88e8", + "0x002505442461715cb516872d6f488f5b367389d92c59c3e51d6daf0c3c557050", + "0x00c89846b2204eb9a8ff13fbd140791adb5dcd913538c57e84a90d8e61d7250a", + "0x00d5519b04f2e191d3c7e560ff534cc7370b2401d8e4fc387784f34812256f55", + "0x0042ce2f78473d6acc8196f0ed36b05ec6a3ab6cc90b90ea55932f8febe62294", + "0x002db2b612fbbedf1bb29de0427c53c5c4012bd911e2b9741efcc5b0dccbe5f2", + "0x002e047d8f5f92619c2b9b663a3077080262e10db98ccd4cbc110041ba64a934", + "0x00fbe4af0fcf9aefc85de58650d03cf25a352805e736b639ad84278b060645bc", + "0x00fa23a9e2e886626b70ab6fb5b247296d1db7e3510af0c465f63eaf764684e5", + "0x0077708b404b1327c10afcbe04960573eb91364be70f9924c2a0aa997ce11658", + "0x00af1810a30d1aca3cd3bab3ef81c60db054058a5cb132cc70225c47ede42fe1", + "0x003aa536ec447658794581e50a54d7a37986fa113bc160b4e16be58254c5e29e" ] [previous_kernel_public_inputs.end.private_logs.contract_address] @@ -3452,24 +3452,24 @@ counter = "0x000000000000000000000000000000000000000000000000000000000000000b" [previous_kernel_public_inputs.end.private_logs.inner.log] fields = [ - "0x2e2f7f334ad8df34b0819a5cd1021b5b530b5585f0c591a13ab5203178526daf", - "0x1c7bc9c2cc0b9f3a51869355c9ea2628d03f75cff9acb4763b77e702fb652bca", - "0x0001779f7ec1312e0108d74d8b1fe51b90194306384d136a687037129c51288d", - "0x0008bcc3b224f715b1563a7506a03671babd0f3950b54a21297fba06d671150e", - "0x004b71941c9819a464095c57c49e51307a86e6292f4f3bd60aba943321e781d2", - "0x00cccc3d756e624f44e5f68faf12a0ed463c8f0c2f3ed0a56077008f37a891ed", - "0x00e80c2cfcd0e952ec1b1c57b253456ee7d904403026f83ad6b9eaf7750ecafb", - "0x007d85e2703b61ad0727cbd94956a35015a8bf8e6cdacdf8bd8d344108a2bd23", - "0x0082aa1328c2e3c7e120342c9f46d5c92e590fa26e304e6d5b65e76c900df7b3", - "0x0041035ba4933aaf84dcdbb50cecf93cdee1015c667f1ac119e6196edc311bc1", - "0x00a3da19f5b9db5940a196d0050f414a5e54ac2e13ac9d0ce9ca10cebdd8ed3a", - "0x009971faba642a8a3a38f3319de5831eb888553bcea7adf90fe07a9892c9129f", - "0x00bc7db1beeb7b7b7cbf9490a7b8eb9ae2262c6469dec9bb389fff3bd4d8ef01", - "0x006046d7c1845d2ed78e8b29a90a5949b50d782751d8b5ad76c381a6059af468", - "0x007f99ed4fa28ed91621b4812f2911f99d6dd3828072c8e6588e366162e1d1d6", - "0x00c86097877401cfe05caeee2cd4827ecb9dc66e6ff259dfaf1d302840fa718c", - "0x0051591b8a3dc7e0275cc95aeb7a159c9eda833010a6e02d8f70984978ead547", - "0x00850dfb9de024519e14375242f710c64d5025837ba0a5a1d400db7f157d9db8" + "0x1e069578e59f6fea1e23fd74e5784a1974635d499b31345dd241db78c560ee1f", + "0x233bb6ccd598da3cf7e1197196016da01eeb36fba32da553b7592628464f95f8", + "0x00015305448c7b8ccc9974a00bf67b75cc2d33fc2862f9220ac21e5a974ea4ad", + "0x00850c73d8089c24a07051ef2427633715c72127312dd42bf834bd4b285eb7a4", + "0x006b15a1d643e3a94cffa2f7879c3056b211c3e429124524b1d60b8de3025282", + "0x008d1afe166f16279e54c9422d70f19956570791b1b836bac88348179e7c7acf", + "0x00c76213e793b8550c2856d56a02a22efb8c2b7cf3b613bdda03c830726d77d5", + "0x00f0383e97fbcf0b8db387695b8de2a05a5089c3254cf028f358ac17dbdb7062", + "0x00ba48355a84a27aa82b3456e88df5f45ec8b3159b719d72c0c8e83bfcb630cf", + "0x007c4c4b4a05669641661b0981268de279a4d3966aa0299d0c8c9ce77bb41089", + "0x00fe2dcc2e67d9f24e95ad7155be2eedd5cfd785eba8229b85fb7fd39821d12b", + "0x00267e0c3d1f91e1f823838ac65c22aa9e3cef20b4480827500f971ffb464b1d", + "0x00aba8a08ee382aa0b261298b340ca999427ca58d5fea8b75e115ca1e1329150", + "0x00a5f050b006f836486ffa78f91d2a785734284d338bb651e8a8c8a478da6355", + "0x008c750cebf19e7ac2d21a796864bef2012ab110f6a01bea5d8401e12fe8759d", + "0x0089e1ac0f90a48d738e1c86f97d8e8a203f83b89ed101d3febfca218a63da38", + "0x008812e4f63846f131aa6cf6ad32d29de7192f2091248ecc09ba36f95b913173", + "0x00ed0cc8c30b23d9ab51bb31e67dc6296371671ab2bb08d0e33f25fe27a1b42b" ] [previous_kernel_public_inputs.end.private_logs.contract_address] @@ -4925,4 +4925,4 @@ end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000 inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.fee_payer] - inner = "0x06615e4b566a640e99213edb664c8c0b49c5e833c3a4b16116fe1de9d06382da" + inner = "0x0eaa5f9a2339cab09e553484a4b465925e63f182ba64af15e0617743b623872c" diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-base-private/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-base-private/Prover.toml index 1932db04cff9..e99556fe10f6 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-base-private/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-base-private/Prover.toml @@ -3,20 +3,20 @@ _is_some = true _value = "0x0000000000000000000000000000000000000000000000000000000000000e16" [inputs.tube_data.public_inputs.constants] -vk_tree_root = "0x0e88f44969aa6d4ff0d17db376dfa057ed3aa447725b0febf35af08e0d1d468e" -protocol_contract_tree_root = "0x1ed87d453cb7c21c5dbca65441925b3f9138fd1433928dda23342367bf94f7c0" +vk_tree_root = "0x2ca9a33f5bf72a45ff0bc18657afa956eb151243a9bc9d3c113e4c711634fd7e" +protocol_contract_tree_root = "0x2d4c1fe46d355909b04374f3890ac9b6649eabcd85e2c8dd82e237c5808626ba" [inputs.tube_data.public_inputs.constants.historical_header] - total_fees = "0x00000000000000000000000000000000000000000000000000000001419ea740" + total_fees = "0x0000000000000000000000000000000000000000000000000000000141456af4" total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000017cbd" [inputs.tube_data.public_inputs.constants.historical_header.last_archive] - root = "0x2ccd1362797b50e31f84634e9db3da4e2ad3b43dcc3fca530fb9a7309161265c" + root = "0x16fbe8410484863346466b4f631b86af141e8320d2df8d8155546f20e3b8a4ae" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [inputs.tube_data.public_inputs.constants.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x00b2b035bfb5b127c2288ac501da8a6f31fcb04de75043181675e5096cd920e6" + blobs_hash = "0x00da4979a284417ddf5388a3f159ad684256f4b72256a349fd9956ef9c2ae018" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -25,37 +25,37 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000060" [inputs.tube_data.public_inputs.constants.historical_header.state.partial.note_hash_tree] -root = "0x0bb159f01f959f4af57eddb1aad0439ac7b07950ab07534eb3172a6a95b4e006" +root = "0x20a5cb14d512cfdd2bbdda6b3d0b78091d0137079b0900ac1c9e9dc9dee167ce" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [inputs.tube_data.public_inputs.constants.historical_header.state.partial.nullifier_tree] -root = "0x240cd8aa3b8a2feb0cd07fbffc01a199b52de9899ebdd59ffc44ab7c61d7ae78" +root = "0x0c05f955dd7ebb34c4cb637573471d0d7c58ac3fafc4fa98276ce616bdf11fb8" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [inputs.tube_data.public_inputs.constants.historical_header.state.partial.public_data_tree] -root = "0x262d4b92012685a90746ce5e378f16a4f3fd0580b19fbb30b88b5a8cc18b392a" +root = "0x06a1b9620bf4ed16ae3599baf6817e6a10aeb2b70ff91652e1f26e2261c78ea0" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [inputs.tube_data.public_inputs.constants.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068081693" + timestamp = "0x00000000000000000000000000000000000000000000000000000000680a0bfc" [inputs.tube_data.public_inputs.constants.historical_header.global_variables.coinbase] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [inputs.tube_data.public_inputs.constants.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.tube_data.public_inputs.constants.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d840" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d804" [inputs.tube_data.public_inputs.constants.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" [inputs.tube_data.public_inputs.constants.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -67,7 +67,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [inputs.tube_data.public_inputs.constants.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fc1" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fb2" [inputs.tube_data.public_inputs.constants.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -75,8 +75,8 @@ fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000 [inputs.tube_data.public_inputs.end] note_hashes = [ - "0x023308a170700d6eb7b0313807513316279d73c4f4022fd44df03a56ec02439a", - "0x012987d07260dc0b4d5590e6ba4de923ae1c22d979955dfae8b54753b23573ce", + "0x25aea4b3d0cd0fd5ee19f38ad73d2966a85513efe90936fb193246011047cc8f", + "0x0c32322dd11357a3ae12d4c127d15af769b74654819eb9397d3cb506108d387f", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -141,8 +141,8 @@ note_hashes = [ "0x0000000000000000000000000000000000000000000000000000000000000000" ] nullifiers = [ - "0x01e449dd4959ae23b7c13522c7b203d6a592fb6b6d98c8b5b13f77c25b3984e3", - "0x2237915f6cfa0a49d61feb2a259b96793d94c31ea11e2ae4cf81de007cf7c93e", + "0x1940498e62a3b8383c5a3bc2a70a030794ec4996d8ac38b55b2b8ee8fa0318d3", + "0x00f7b16465dbbc32fd56d20f6b9a3706aaad16fd221dd4696fff737cc31e4852", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -297,68 +297,68 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[inputs.tube_data.public_inputs.end.private_logs]] fields = [ - "0x101fc133e0b8cfbd7650436983f74419444585496a987c09cfa68ac6da2f5f37", - "0x2b01f964225a0f568ecd44bd00e825ea6d9bb870de21adcd8f49b3e3cb56b4a9", - "0x000029a8da47489273d19a9c8832ec0b56255d73cca8add00e01f599053eceb7", - "0x00110d2c08ffdd948de14d2af4503f273795daa9ac2990b11e84b1c8e7d18c90", - "0x00a14233503a58eda2479e7e5ca65e0cfc8c405fd83d52baf4cba50b065c4fb0", - "0x00b8a89498bf0321ecb550a4077a127c47582a393cf5bc0164dbe6972282ac16", - "0x00ab5a209503c6d7f832fa90c3522433a2107afab20699fd1d81c270bf87a2da", - "0x00f626374b991e5a6a9467ecf4794ccd3b3d3f9784157658af9a7d978a7821ee", - "0x00be1cb199ae3f44ea6365248f63364e70c6e6814d6e17356534628d90ac96da", - "0x00209c81aaf41f87c514ff51f3d714fbf062ace45df0369f430d872563977420", - "0x002cc783139420d107f3547dddd95a55e4967bd1dc6301567c89ac5ad9952965", - "0x00c327318b0504f318595481960683cca7bb30c484c2804c65b3a387e5b024ab", - "0x002caf825ca5a9ad8c7375f80bb5ecbe9932b22264b3afae02dca29f4b5c95c4", - "0x00ac1144a606a4c48f0c8e82c2bd475dc2873ba8e40187ade84fd4e3d90895bf", - "0x002ec148510ac108b727a9e72f87b5d57a150a3f454900d533b76c5a53e0d53a", - "0x0041f1badd4ac83a4aa50c6fbab9a03ddd8935076eb1128dd3992befcacb719b", - "0x00a3d686a54e018998ddf493f3182d863de4e7a3744ca6401ede5807e12209cf", - "0x001d74d4a02f86b0000781228c6e4e47e6bdee2515e5bfb5937c494b72f6a9c5" + "0x297fdd213e241fec22b0e5565af7ce5690b16d90a957631d012d7d4d48a59f50", + "0x1de6c5822164e0bcb0203a35b3a349f028ebdebaca45e75a7c0d51d83754653d", + "0x0001c9bc7b6dd9674606de16e4fea986d6f5aebd12924b5eaca39c2d333ac025", + "0x00ddb80a07316fd0f7205b54f16ebf0304bb136396f405d0add90e12c7c8f44d", + "0x00d62251d69709086b2c1edd7f53e34feecc798a203f7568aff8cf45a568a325", + "0x0045cf99e70d3b13c1b17b21cff024b48ecdf62ccba11d258e4d9e16019c0c79", + "0x00f6b02c592389c5b5a263273a4bc9e25ee1ddc96cb5b362f27507df3fa01d4f", + "0x00795e5f76189afd0e9e6eb2e1c286fd24a671c4f69e56e84c83a517e5bdaaa2", + "0x00c4630b3fde957da549f30aa385b1fa1c0952b3d48e478b7d08a971b61d166d", + "0x007fce2f8e8cada25097a8ce041f502fbd65af169a3e0248c0493e676dfd3bb8", + "0x0051a28f7a1cecad6d8519b5d3b78fe8e5665049bab6dab221d4cfde38c344c1", + "0x005cd1365a9f2ceca9eba518e2f979a0847be82c15242c46b73d50b0d189db28", + "0x003404a89940686524828f4df77310044c16de5360dd4784b30c123d5034695d", + "0x007ad01fb578b02b49c82f80315c1e530162f08b6ad6cf3e7ef960b794f2fb65", + "0x00cd63f73fbd0b1d72b202d5b08d119e4325769d046a62383eb2a4faa216ea46", + "0x0081329e5eb9e06b036e6b029257a4394968fa0baf4b5dacae06f878432463a7", + "0x00b8624bca3b3f85aaaf34ca8885eda8eacae1f064b2de183fded259cd68c018", + "0x00008c697784dc97bb551757c774a21d1cd4e81e3463b431726a310ca5f5deb4" ] [[inputs.tube_data.public_inputs.end.private_logs]] fields = [ - "0x25ddf92e3835b47d37ccf8177ab661751e4c22808c6e3e0bf81499e0a316c4ec", - "0x21b7c3b69793c5f6ec26f2f85f02f396260672ffaa6884e8b4b94778c2466ab5", - "0x00018ae975f86dec636e9246cfc89365c388f17f0de404564b761d6a04c3ee54", - "0x0043f6ab5592e83831fc02edbed8bd03d790c01eed4ab6e9652f73a815ba8cd7", - "0x0056cf4dd960f1b4eebb35c5d57b76445b53737e390ebbcd700a158031235666", - "0x00d77a908d17ac1431852e316444dec86b9f080c3ed8ef7374d6329026abb6c7", - "0x00c80a42910eb1213d8ec1589691d31bbd4039930adbab1e07961509c1444230", - "0x00035f68808e2196135fe4ebe6e367c024d46be3977c55915954a040504794ce", - "0x00bdd98111275c9fb24aae6c7a65ecbdde3a771bd2f11e55d49eb7619b888ef0", - "0x00ab7c769e2de00cda5509006e96bde25a02128dba2c0a039c0630f61c64cf93", - "0x003c1560e86e0227b14bbf24e9fdd2c017bfc02bfac91e3c22163646a5ccc128", - "0x00247e7216479cd9f78d799a4297265a5a95f92f6918bd9523e452cdf67225b2", - "0x00da91bddb7523bb37fdbdf9177c03eed8c513efcdac618abc1efb2c9615e4b4", - "0x00117934d8459e655dbcaf76a412d93d63844945496d30520dd29ddde34dfaf2", - "0x00cdf503ea686444e4b62eaeb3a0dee86eedbaa0da0eefaec1523f20bd6174aa", - "0x00566d2154f940649508f1422530ece59240b268db7d80b229bd92987d7242df", - "0x00ae16e294f99e635dc38705bed23e5c1d51979f3e250f356a8f7e1a97a27796", - "0x00d114d2453dcba21344e4872761e20cb4763a512838eb6148471157d2b37810" + "0x00f9d119ccc083ec1494ad6c08c99728c26a5c31e410799b5623dda6c27d517b", + "0x1d4753d28d7a8b7d33eae21ea6addfbec7bfc7ca7429d985db6ca94285513bba", + "0x0000433601568cfe05e32c22e8de8a29557245b1e9f6362bc29839c40d936f2f", + "0x008324f58055544bab2c797eefe21b329e81eebb6d4f85eb3f6b7aa423e65d13", + "0x00c0c740be23ba91bb56fa016c6b3fbb7b1a74b01ad41bc7f1f8d0f7f8ae5ece", + "0x008c0b1544d8eb005a424854f6a415470b0ac88c318df345163c5f961d35a872", + "0x00454d42ad247716b1c0be03297a78771282db05c04d7907f395e1d0220c88e8", + "0x002505442461715cb516872d6f488f5b367389d92c59c3e51d6daf0c3c557050", + "0x00c89846b2204eb9a8ff13fbd140791adb5dcd913538c57e84a90d8e61d7250a", + "0x00d5519b04f2e191d3c7e560ff534cc7370b2401d8e4fc387784f34812256f55", + "0x0042ce2f78473d6acc8196f0ed36b05ec6a3ab6cc90b90ea55932f8febe62294", + "0x002db2b612fbbedf1bb29de0427c53c5c4012bd911e2b9741efcc5b0dccbe5f2", + "0x002e047d8f5f92619c2b9b663a3077080262e10db98ccd4cbc110041ba64a934", + "0x00fbe4af0fcf9aefc85de58650d03cf25a352805e736b639ad84278b060645bc", + "0x00fa23a9e2e886626b70ab6fb5b247296d1db7e3510af0c465f63eaf764684e5", + "0x0077708b404b1327c10afcbe04960573eb91364be70f9924c2a0aa997ce11658", + "0x00af1810a30d1aca3cd3bab3ef81c60db054058a5cb132cc70225c47ede42fe1", + "0x003aa536ec447658794581e50a54d7a37986fa113bc160b4e16be58254c5e29e" ] [[inputs.tube_data.public_inputs.end.private_logs]] fields = [ - "0x2e2f7f334ad8df34b0819a5cd1021b5b530b5585f0c591a13ab5203178526daf", - "0x1c7bc9c2cc0b9f3a51869355c9ea2628d03f75cff9acb4763b77e702fb652bca", - "0x0001779f7ec1312e0108d74d8b1fe51b90194306384d136a687037129c51288d", - "0x0008bcc3b224f715b1563a7506a03671babd0f3950b54a21297fba06d671150e", - "0x004b71941c9819a464095c57c49e51307a86e6292f4f3bd60aba943321e781d2", - "0x00cccc3d756e624f44e5f68faf12a0ed463c8f0c2f3ed0a56077008f37a891ed", - "0x00e80c2cfcd0e952ec1b1c57b253456ee7d904403026f83ad6b9eaf7750ecafb", - "0x007d85e2703b61ad0727cbd94956a35015a8bf8e6cdacdf8bd8d344108a2bd23", - "0x0082aa1328c2e3c7e120342c9f46d5c92e590fa26e304e6d5b65e76c900df7b3", - "0x0041035ba4933aaf84dcdbb50cecf93cdee1015c667f1ac119e6196edc311bc1", - "0x00a3da19f5b9db5940a196d0050f414a5e54ac2e13ac9d0ce9ca10cebdd8ed3a", - "0x009971faba642a8a3a38f3319de5831eb888553bcea7adf90fe07a9892c9129f", - "0x00bc7db1beeb7b7b7cbf9490a7b8eb9ae2262c6469dec9bb389fff3bd4d8ef01", - "0x006046d7c1845d2ed78e8b29a90a5949b50d782751d8b5ad76c381a6059af468", - "0x007f99ed4fa28ed91621b4812f2911f99d6dd3828072c8e6588e366162e1d1d6", - "0x00c86097877401cfe05caeee2cd4827ecb9dc66e6ff259dfaf1d302840fa718c", - "0x0051591b8a3dc7e0275cc95aeb7a159c9eda833010a6e02d8f70984978ead547", - "0x00850dfb9de024519e14375242f710c64d5025837ba0a5a1d400db7f157d9db8" + "0x1e069578e59f6fea1e23fd74e5784a1974635d499b31345dd241db78c560ee1f", + "0x233bb6ccd598da3cf7e1197196016da01eeb36fba32da553b7592628464f95f8", + "0x00015305448c7b8ccc9974a00bf67b75cc2d33fc2862f9220ac21e5a974ea4ad", + "0x00850c73d8089c24a07051ef2427633715c72127312dd42bf834bd4b285eb7a4", + "0x006b15a1d643e3a94cffa2f7879c3056b211c3e429124524b1d60b8de3025282", + "0x008d1afe166f16279e54c9422d70f19956570791b1b836bac88348179e7c7acf", + "0x00c76213e793b8550c2856d56a02a22efb8c2b7cf3b613bdda03c830726d77d5", + "0x00f0383e97fbcf0b8db387695b8de2a05a5089c3254cf028f358ac17dbdb7062", + "0x00ba48355a84a27aa82b3456e88df5f45ec8b3159b719d72c0c8e83bfcb630cf", + "0x007c4c4b4a05669641661b0981268de279a4d3966aa0299d0c8c9ce77bb41089", + "0x00fe2dcc2e67d9f24e95ad7155be2eedd5cfd785eba8229b85fb7fd39821d12b", + "0x00267e0c3d1f91e1f823838ac65c22aa9e3cef20b4480827500f971ffb464b1d", + "0x00aba8a08ee382aa0b261298b340ca999427ca58d5fea8b75e115ca1e1329150", + "0x00a5f050b006f836486ffa78f91d2a785734284d338bb651e8a8c8a478da6355", + "0x008c750cebf19e7ac2d21a796864bef2012ab110f6a01bea5d8401e12fe8759d", + "0x0089e1ac0f90a48d738e1c86f97d8e8a203f83b89ed101d3febfca218a63da38", + "0x008812e4f63846f131aa6cf6ad32d29de7192f2091248ecc09ba36f95b913173", + "0x00ed0cc8c30b23d9ab51bb31e67dc6296371671ab2bb08d0e33f25fe27a1b42b" ] [[inputs.tube_data.public_inputs.end.private_logs]] @@ -1013,7 +1013,7 @@ da_gas = "0x0000000000000000000000000000000000000000000000000000000000007c00" l2_gas = "0x0000000000000000000000000000000000000000000000000000000000004a40" [inputs.tube_data.public_inputs.fee_payer] -inner = "0x06615e4b566a640e99213edb664c8c0b49c5e833c3a4b16116fe1de9d06382da" +inner = "0x0eaa5f9a2339cab09e553484a4b465925e63f182ba64af15e0617743b623872c" [inputs.tube_data.proof] fields = [ @@ -1558,9 +1558,9 @@ fields = [ vk_index = "0x0000000000000000000000000000000000000000000000000000000000000004" vk_path = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x1e2fdca8756556a0749fde2c3d7771479e7b14edbe6e059de1c3eb2d48cef9d8", + "0x211c77dabc1d0701605887c5e4943b8d4423b60064c3e79d2b0303d0b40ab669", "0x2b1e1e7283812220e8fa0a163f5e89d80b5abffa9452ac97941a650c5eda03a4", - "0x223b98513f87a3be6816ac1e2a1b87a807169110828d2b808a707609e4217d13", + "0x1579d8714bffc417282d461161468745ec125da568e082364e4896fbad931bd1", "0x0a5cccc6f5c49119df17ad49125046e1f8ade560372f415e56d28bab8a1fba34", "0x042567ea670fc3ff2b8c48b244f6a0c96944c6b969143cf0cfacfd97e5b929aa" ] @@ -1684,15 +1684,15 @@ vk_path = [ hash = "0x0000000000000000000000000000000000000000000000000000000000000002" [inputs.start.note_hash_tree] -root = "0x0bb159f01f959f4af57eddb1aad0439ac7b07950ab07534eb3172a6a95b4e006" +root = "0x20a5cb14d512cfdd2bbdda6b3d0b78091d0137079b0900ac1c9e9dc9dee167ce" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [inputs.start.nullifier_tree] -root = "0x240cd8aa3b8a2feb0cd07fbffc01a199b52de9899ebdd59ffc44ab7c61d7ae78" +root = "0x0c05f955dd7ebb34c4cb637573471d0d7c58ac3fafc4fa98276ce616bdf11fb8" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [inputs.start.public_data_tree] -root = "0x262d4b92012685a90746ce5e378f16a4f3fd0580b19fbb30b88b5a8cc18b392a" +root = "0x06a1b9620bf4ed16ae3599baf6817e6a10aeb2b70ff91652e1f26e2261c78ea0" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [inputs.start_sponge_blob] @@ -1716,8 +1716,8 @@ expected_fields = "0x00000000000000000000000000000000000000000000000000000000000 [inputs.state_diff_hints] sorted_nullifiers = [ - "0x2237915f6cfa0a49d61feb2a259b96793d94c31ea11e2ae4cf81de007cf7c93e", - "0x01e449dd4959ae23b7c13522c7b203d6a592fb6b6d98c8b5b13f77c25b3984e3", + "0x1940498e62a3b8383c5a3bc2a70a030794ec4996d8ac38b55b2b8ee8fa0318d3", + "0x00f7b16465dbbc32fd56d20f6b9a3706aaad16fd221dd4696fff737cc31e4852", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -1782,8 +1782,8 @@ sorted_nullifiers = [ "0x0000000000000000000000000000000000000000000000000000000000000000" ] sorted_nullifier_indexes = [ - "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000003", "0x0000000000000000000000000000000000000000000000000000000000000004", @@ -1849,8 +1849,8 @@ sorted_nullifier_indexes = [ ] note_hash_subtree_sibling_path = [ "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", - "0x24ac90a17d466f4b29fc9455123e31d200ce37fbb6c3d5e6bd86be5216a6c688", - "0x2dc3e0137590eab6fea84ec39945cbc48acb67b8d5304dcb90fff60d519ddac8", + "0x081eade58c4ed19747e485eefd50bf9fe4b06face5b4ef336afd38e1d206efb6", + "0x2148fab249a51ffcd4498ba5ba335f0fc7010c9622b261b17951c406e2e9cceb", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", @@ -1887,7 +1887,7 @@ nullifier_subtree_sibling_path = [ "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", "0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b", "0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1", - "0x1b255bdafc86bde107ab386e3f37f9e3e7fd16e9cb32efc500c5802f3014af91", + "0x167b2c37ab4e086af97a60716389bafee5512941f5d12a63160aef789fa669c7", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", "0x0d07f6e7a8a0e9199d6d92801fff867002ff5b4808962f9da2ba5ce1bdd26a73", @@ -1963,14 +1963,14 @@ fee_write_sibling_path = [ ] [[inputs.state_diff_hints.nullifier_predecessor_preimages]] - nullifier = "0x14ea3cb1a8ee58d267f351d71987008de9d27b519db3de840d9d71bcc962d3f4" - next_nullifier = "0x244ade3da96c2e76cfc4e7f36942ecf3074135434b12fdefc184a40ae7eb1aa3" - next_index = "0x00000000000000000000000000000000000000000000000000000000000000c1" + nullifier = "0x18e16af76673d54a1028afbbde25fdd99d7a622b1a591fa0477fafc402301d94" + next_nullifier = "0x1a2e088a6064f95975a5b40939784f22efa16a91baf6cc7321b5e6cb43148b5d" + next_index = "0x0000000000000000000000000000000000000000000000000000000000000100" [[inputs.state_diff_hints.nullifier_predecessor_preimages]] nullifier = "0x000000000000000000000000000000000000000000000000000000000000007f" - next_nullifier = "0x022b9a32ace8ab8c85c2b40f457c59612aa4edde94bbf25ead33bcfde3137cf2" - next_index = "0x0000000000000000000000000000000000000000000000000000000000000180" + next_nullifier = "0x080845cfcc83874b49bdb1b914f01d151eb273591a37b8abaff8a7a960a2ea41" + next_index = "0x0000000000000000000000000000000000000000000000000000000000000080" [[inputs.state_diff_hints.nullifier_predecessor_preimages]] nullifier = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -2283,17 +2283,17 @@ fee_write_sibling_path = [ next_index = "0x0000000000000000000000000000000000000000000000000000000000000000" [[inputs.state_diff_hints.nullifier_predecessor_membership_witnesses]] - leaf_index = "257" + leaf_index = "384" sibling_path = [ - "0x036aa839523146e4f977b19240ae2297114ea5d3b36480f4e860096d74371da8", - "0x0b25bd555018dac18f59e5e4593fc7a7f08638f7e60b92257ce8f52b0a6c38d6", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1", "0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290", "0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", - "0x099e2770800811f217d496153dd174387e297f398e40fa4eed29af57fda05998", - "0x06d75c1fc396cd253c6ca53d8cdcc3818661974b2c5c70a73501827b6aacaada", - "0x118cbbb288c54e4a57334683d059a04b1f451fd0315e5b56ef2f18197d3fd00a", + "0x1a7dca571c30c0bfa52fea0a149ad24efdd2d37bc153da321034e98428c5108c", + "0x2341a31593fbd83b1682e80d7bb9153b31c3002c5f2867c76d6702c728e4ae0c", + "0x03eb5267b4c7a20adfa8350e5906fed044214aa51e2273c4ac2ab9b565262d5d", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", @@ -2337,8 +2337,8 @@ fee_write_sibling_path = [ "0x135c2d2dc15a5acc7b43b89aaba27718b5f575df9413618552a3a1b3121c8bee", "0x28b8fd8b9d61fbe4b1c0a05c6313d3ea28b715a5c2ddab3a4f9d127c27dc6b9f", "0x169afc20aaa33427f6a9f136203922bf52f1107285f5696611645b6b55df8561", - "0x10281131619e60e2dbe5de3c916f8c8396af876ade2ec9cf363b988e4093c02f", - "0x166bc6074861ac2708db3a2e8e7eae7b08a6999215918b815a02470a8e3e1acc", + "0x2bcd0087b0d05a5ffc8e6ecc84cbf6de1abacc53cd6aa09d7f8d7720b5479c4c", + "0x16705faa52bba21741352f645b8c9fea051691fbb774372ef5e37023b9b987f7", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", @@ -5163,22 +5163,22 @@ fee_write_sibling_path = [ ] [inputs.state_diff_hints.fee_write_low_leaf_preimage] - slot = "0x09fd5c7c298012061da066dcf7be4f12f36076f057acc0938e10ea9053c6e792" - value = "0x00000000000000000000000000000000000000000000021e19e0c9b139a02200" - next_slot = "0x0a0ef3594a9c623a182130e16040d288282b081ddcdfaa6df70d9cf40300f16a" - next_index = "0x000000000000000000000000000000000000000000000000000000000000008c" + slot = "0x0ba141be7707b610effe839006ce19b56369c383fd75436de163b39fdcf809d1" + value = "0x00000000000000000000000000000000000000000000021e19e0c9b13bc5ef74" + next_slot = "0x0c5b4daf12a43315329be36384554e140c1e2afee2f071779b9edbc1c7cb119c" + next_index = "0x0000000000000000000000000000000000000000000000000000000000000078" [inputs.state_diff_hints.fee_write_low_leaf_membership_witness] - leaf_index = "118" + leaf_index = "119" sibling_path = [ - "0x1033a36d2846d0a99cce0dbec4e1c19efce957021a1929941646f3d416b045eb", - "0x1fcf1b5ca5003d6480d9efe8351e5f3032e666a3ebb527583c695de9748b249d", + "0x20575a9931fe0694f51fc2caffe077cad15f15edc8d15320cb05412bd8724653", + "0x189a34f796f235eac04340458242c769eac08530915a7dc287522362aae4ce5f", "0x29208ecc66c5a3f559855bd44866e51a9e1b053fe1b60786941ab50664c75667", - "0x143e9721538b856809b18e4facae666476729788bdf59a52daa19150983e64ca", + "0x13b3efb7747f5fbadc06d48a42101e025a3899eab7e99c555a8f3febf8dee10b", "0x179d7b5df7a65a4bdda408605c069b3ea175a5f4e2b0fccc9f2ebcb5d12c7c28", "0x19e2b3449d24e57ea4d6948048220d0756f93b6aaca968960b173df69903160a", "0x1a35cf71ad31b7058db0cec41776442412ccd9f75276205dcd8fd0ffc4bbfaab", - "0x11a967cb412218c68d3873b8864d20a4ff176956c4ef0345b678a3864f393bf1", + "0x1002ec2e8c6c8af10b0741872f55a248871ddedbd4231e9847109ee493c85e29", "0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", @@ -5214,20 +5214,20 @@ fee_write_sibling_path = [ ] [inputs.fee_payer_fee_juice_balance_read_hint] -leaf_slot = "0x09fd5c7c298012061da066dcf7be4f12f36076f057acc0938e10ea9053c6e792" -value = "0x00000000000000000000000000000000000000000000021e19e0c9b139a02200" +leaf_slot = "0x0ba141be7707b610effe839006ce19b56369c383fd75436de163b39fdcf809d1" +value = "0x00000000000000000000000000000000000000000000021e19e0c9b13bc5ef74" [inputs.fee_payer_fee_juice_balance_read_hint.membership_witness] - leaf_index = "118" + leaf_index = "119" sibling_path = [ - "0x1033a36d2846d0a99cce0dbec4e1c19efce957021a1929941646f3d416b045eb", - "0x1fcf1b5ca5003d6480d9efe8351e5f3032e666a3ebb527583c695de9748b249d", + "0x20575a9931fe0694f51fc2caffe077cad15f15edc8d15320cb05412bd8724653", + "0x189a34f796f235eac04340458242c769eac08530915a7dc287522362aae4ce5f", "0x29208ecc66c5a3f559855bd44866e51a9e1b053fe1b60786941ab50664c75667", - "0x143e9721538b856809b18e4facae666476729788bdf59a52daa19150983e64ca", + "0x13b3efb7747f5fbadc06d48a42101e025a3899eab7e99c555a8f3febf8dee10b", "0x179d7b5df7a65a4bdda408605c069b3ea175a5f4e2b0fccc9f2ebcb5d12c7c28", "0x19e2b3449d24e57ea4d6948048220d0756f93b6aaca968960b173df69903160a", "0x1a35cf71ad31b7058db0cec41776442412ccd9f75276205dcd8fd0ffc4bbfaab", - "0x11a967cb412218c68d3873b8864d20a4ff176956c4ef0345b678a3864f393bf1", + "0x1002ec2e8c6c8af10b0741872f55a248871ddedbd4231e9847109ee493c85e29", "0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", @@ -5263,17 +5263,17 @@ value = "0x00000000000000000000000000000000000000000000021e19e0c9b139a02200" ] [inputs.fee_payer_fee_juice_balance_read_hint.leaf_preimage] - slot = "0x09fd5c7c298012061da066dcf7be4f12f36076f057acc0938e10ea9053c6e792" - value = "0x00000000000000000000000000000000000000000000021e19e0c9b139a02200" - next_slot = "0x0a0ef3594a9c623a182130e16040d288282b081ddcdfaa6df70d9cf40300f16a" - next_index = "0x000000000000000000000000000000000000000000000000000000000000008c" + slot = "0x0ba141be7707b610effe839006ce19b56369c383fd75436de163b39fdcf809d1" + value = "0x00000000000000000000000000000000000000000000021e19e0c9b13bc5ef74" + next_slot = "0x0c5b4daf12a43315329be36384554e140c1e2afee2f071779b9edbc1c7cb119c" + next_index = "0x0000000000000000000000000000000000000000000000000000000000000078" [inputs.archive_root_membership_witness] leaf_index = "6" sibling_path = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x10696ebdd781f09f33622f71733d2a3c05f9b6fdd457bb39b5ade060fbce583d", - "0x231469ae55167def14a4312aa95a9b70315e78476ea085540f1b668a0c7d8572", + "0x0b41589e5ed044b136f82db871c5a223c8a603cb6fad205b0dc8496dbbda3cac", + "0x2166790c6a4fd651752a4b2f0177424d84e36e1da8c2405183e686ae25eb82a1", "0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", @@ -8330,26 +8330,26 @@ fields = [ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.constants] -vk_tree_root = "0x0e88f44969aa6d4ff0d17db376dfa057ed3aa447725b0febf35af08e0d1d468e" -protocol_contract_tree_root = "0x1ed87d453cb7c21c5dbca65441925b3f9138fd1433928dda23342367bf94f7c0" +vk_tree_root = "0x2ca9a33f5bf72a45ff0bc18657afa956eb151243a9bc9d3c113e4c711634fd7e" +protocol_contract_tree_root = "0x2d4c1fe46d355909b04374f3890ac9b6649eabcd85e2c8dd82e237c5808626ba" [inputs.constants.last_archive] - root = "0x12426f1a7219669d8d584aae8673daae60083a411033ed1be83c1c7b60a41f0b" + root = "0x19417d1c6f2b53c337b3344464130f51735a5abd53b11808c3391a29dc1ec9fe" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" [inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" block_number = "0x0000000000000000000000000000000000000000000000000000000000000007" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000012" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068081783" + timestamp = "0x00000000000000000000000000000000000000000000000000000000680a0cec" [inputs.constants.global_variables.coinbase] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fd6" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fcc" diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-base-public/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-base-public/Prover.toml index a3afacda11fb..f9eb00483f4f 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-base-public/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-base-public/Prover.toml @@ -1,18 +1,18 @@ [inputs.tube_data.public_inputs.constants] -vk_tree_root = "0x0e88f44969aa6d4ff0d17db376dfa057ed3aa447725b0febf35af08e0d1d468e" -protocol_contract_tree_root = "0x1ed87d453cb7c21c5dbca65441925b3f9138fd1433928dda23342367bf94f7c0" +vk_tree_root = "0x2ca9a33f5bf72a45ff0bc18657afa956eb151243a9bc9d3c113e4c711634fd7e" +protocol_contract_tree_root = "0x2d4c1fe46d355909b04374f3890ac9b6649eabcd85e2c8dd82e237c5808626ba" [inputs.tube_data.public_inputs.constants.historical_header] - total_fees = "0x00000000000000000000000000000000000000000000000000000001419ea740" + total_fees = "0x0000000000000000000000000000000000000000000000000000000141456af4" total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000017cbd" [inputs.tube_data.public_inputs.constants.historical_header.last_archive] - root = "0x2ccd1362797b50e31f84634e9db3da4e2ad3b43dcc3fca530fb9a7309161265c" + root = "0x16fbe8410484863346466b4f631b86af141e8320d2df8d8155546f20e3b8a4ae" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [inputs.tube_data.public_inputs.constants.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x00b2b035bfb5b127c2288ac501da8a6f31fcb04de75043181675e5096cd920e6" + blobs_hash = "0x00da4979a284417ddf5388a3f159ad684256f4b72256a349fd9956ef9c2ae018" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -21,37 +21,37 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000060" [inputs.tube_data.public_inputs.constants.historical_header.state.partial.note_hash_tree] -root = "0x0bb159f01f959f4af57eddb1aad0439ac7b07950ab07534eb3172a6a95b4e006" +root = "0x20a5cb14d512cfdd2bbdda6b3d0b78091d0137079b0900ac1c9e9dc9dee167ce" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [inputs.tube_data.public_inputs.constants.historical_header.state.partial.nullifier_tree] -root = "0x240cd8aa3b8a2feb0cd07fbffc01a199b52de9899ebdd59ffc44ab7c61d7ae78" +root = "0x0c05f955dd7ebb34c4cb637573471d0d7c58ac3fafc4fa98276ce616bdf11fb8" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [inputs.tube_data.public_inputs.constants.historical_header.state.partial.public_data_tree] -root = "0x262d4b92012685a90746ce5e378f16a4f3fd0580b19fbb30b88b5a8cc18b392a" +root = "0x06a1b9620bf4ed16ae3599baf6817e6a10aeb2b70ff91652e1f26e2261c78ea0" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [inputs.tube_data.public_inputs.constants.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068081693" + timestamp = "0x00000000000000000000000000000000000000000000000000000000680a0bfc" [inputs.tube_data.public_inputs.constants.historical_header.global_variables.coinbase] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [inputs.tube_data.public_inputs.constants.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.tube_data.public_inputs.constants.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d840" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d804" [inputs.tube_data.public_inputs.constants.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" [inputs.tube_data.public_inputs.constants.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -63,7 +63,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [inputs.tube_data.public_inputs.constants.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fc1" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fb2" [inputs.tube_data.public_inputs.constants.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -141,7 +141,7 @@ note_hashes = [ "0x0000000000000000000000000000000000000000000000000000000000000000" ] nullifiers = [ - "0x0262527dc02a919de1026960c6500c94938aea4c783dc537dee787706fff2519", + "0x2a00dab7a47853f715ff988bc0fe2c98c0d26162189b8de85c511f75abf22221", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -2265,13 +2265,13 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[inputs.tube_data.public_inputs.revertible_accumulated_data.public_call_requests]] is_static_call = false - calldata_hash = "0x1bfc2973ab1176b6dd88dcc443f15908690e858e61b22cfcdb1432e21566e3e4" + calldata_hash = "0x03dec40a4114e3b4d9ff38961119e35b9c5884a86045ece09abf1becbbde1afe" [inputs.tube_data.public_inputs.revertible_accumulated_data.public_call_requests.msg_sender] - inner = "0x06615e4b566a640e99213edb664c8c0b49c5e833c3a4b16116fe1de9d06382da" + inner = "0x0eaa5f9a2339cab09e553484a4b465925e63f182ba64af15e0617743b623872c" [inputs.tube_data.public_inputs.revertible_accumulated_data.public_call_requests.contract_address] - inner = "0x069db44ef2ffc86dea9bba7f714bab5c098fdc0ecf5db85cd0b1945c72ad1bc1" + inner = "0x0d4caa1a935c446cc7cf578160bb40bda34dc711292f9dbd8ef0951ef9216c05" [[inputs.tube_data.public_inputs.revertible_accumulated_data.public_call_requests]] is_static_call = false @@ -2598,7 +2598,7 @@ da_gas = "0x0000000000000000000000000000000000000000000000000000000000000400" l2_gas = "0x0000000000000000000000000000000000000000000000000000000000006500" [inputs.tube_data.public_inputs.fee_payer] -inner = "0x06615e4b566a640e99213edb664c8c0b49c5e833c3a4b16116fe1de9d06382da" +inner = "0x0eaa5f9a2339cab09e553484a4b465925e63f182ba64af15e0617743b623872c" [inputs.tube_data.proof] fields = [ @@ -3143,9 +3143,9 @@ fields = [ vk_index = "0x0000000000000000000000000000000000000000000000000000000000000004" vk_path = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x1e2fdca8756556a0749fde2c3d7771479e7b14edbe6e059de1c3eb2d48cef9d8", + "0x211c77dabc1d0701605887c5e4943b8d4423b60064c3e79d2b0303d0b40ab669", "0x2b1e1e7283812220e8fa0a163f5e89d80b5abffa9452ac97941a650c5eda03a4", - "0x223b98513f87a3be6816ac1e2a1b87a807169110828d2b808a707609e4217d13", + "0x1579d8714bffc417282d461161468745ec125da568e082364e4896fbad931bd1", "0x0a5cccc6f5c49119df17ad49125046e1f8ade560372f415e56d28bab8a1fba34", "0x042567ea670fc3ff2b8c48b244f6a0c96944c6b969143cf0cfacfd97e5b929aa" ] @@ -3269,40 +3269,40 @@ vk_path = [ hash = "0x0000000000000000000000000000000000000000000000000000000000000002" [inputs.avm_proof_data.public_inputs] -transaction_fee = "0x000000000000000000000000000000000000000000000000000000001721ab30" +transaction_fee = "0x0000000000000000000000000000000000000000000000000000000017164d80" reverted = false [inputs.avm_proof_data.public_inputs.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000014" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680817b3" + timestamp = "0x00000000000000000000000000000000000000000000000000000000680a0d1c" [inputs.avm_proof_data.public_inputs.global_variables.coinbase] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [inputs.avm_proof_data.public_inputs.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.avm_proof_data.public_inputs.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000145a" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001450" [inputs.avm_proof_data.public_inputs.start_tree_snapshots.l1_to_l2_message_tree] root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000080" [inputs.avm_proof_data.public_inputs.start_tree_snapshots.note_hash_tree] -root = "0x260d93cb714eb47e56e7527239617cf3b1cd72af5fa6cc21dad7b4cfb278997a" +root = "0x0093fc4d0088ca8f86738c65d9d63e4bb39a2c6be2a83fcf6b69af8abd34cfbb" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000280" [inputs.avm_proof_data.public_inputs.start_tree_snapshots.nullifier_tree] -root = "0x1ddc49f96c8241468a439e3228cfacca3fe101bb60ecb089ae1e05fca1a7bd87" +root = "0x18d610eff0bd1bd85cce6e38e89f49609d8c91ae3ede88cdf18acf728979dd2d" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000300" [inputs.avm_proof_data.public_inputs.start_tree_snapshots.public_data_tree] -root = "0x22b9fd687387ff560b10f96660c9c625231788ea917b9c5a5301d7880db82144" +root = "0x00e48e8c29cf89239d24810fd3afd21297b97e2ff944a39c7531581335ab8ec9" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008f" [inputs.avm_proof_data.public_inputs.start_gas_used] @@ -3319,14 +3319,14 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [inputs.avm_proof_data.public_inputs.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fc1" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fb2" [inputs.avm_proof_data.public_inputs.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.avm_proof_data.public_inputs.fee_payer] - inner = "0x06615e4b566a640e99213edb664c8c0b49c5e833c3a4b16116fe1de9d06382da" + inner = "0x0eaa5f9a2339cab09e553484a4b465925e63f182ba64af15e0617743b623872c" [[inputs.avm_proof_data.public_inputs.public_setup_call_requests]] is_static_call = false @@ -3650,13 +3650,13 @@ fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000 [[inputs.avm_proof_data.public_inputs.public_app_logic_call_requests]] is_static_call = false - calldata_hash = "0x1bfc2973ab1176b6dd88dcc443f15908690e858e61b22cfcdb1432e21566e3e4" + calldata_hash = "0x03dec40a4114e3b4d9ff38961119e35b9c5884a86045ece09abf1becbbde1afe" [inputs.avm_proof_data.public_inputs.public_app_logic_call_requests.msg_sender] - inner = "0x06615e4b566a640e99213edb664c8c0b49c5e833c3a4b16116fe1de9d06382da" + inner = "0x0eaa5f9a2339cab09e553484a4b465925e63f182ba64af15e0617743b623872c" [inputs.avm_proof_data.public_inputs.public_app_logic_call_requests.contract_address] - inner = "0x069db44ef2ffc86dea9bba7f714bab5c098fdc0ecf5db85cd0b1945c72ad1bc1" + inner = "0x0d4caa1a935c446cc7cf578160bb40bda34dc711292f9dbd8ef0951ef9216c05" [[inputs.avm_proof_data.public_inputs.public_app_logic_call_requests]] is_static_call = false @@ -4056,7 +4056,7 @@ fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000 "0x0000000000000000000000000000000000000000000000000000000000000000" ] nullifiers = [ - "0x0262527dc02a919de1026960c6500c94938aea4c783dc537dee787706fff2519", + "0x2a00dab7a47853f715ff988bc0fe2c98c0d26162189b8de85c511f75abf22221", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -4437,15 +4437,15 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000080" [inputs.avm_proof_data.public_inputs.end_tree_snapshots.note_hash_tree] -root = "0x260d93cb714eb47e56e7527239617cf3b1cd72af5fa6cc21dad7b4cfb278997a" +root = "0x0093fc4d0088ca8f86738c65d9d63e4bb39a2c6be2a83fcf6b69af8abd34cfbb" next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000002c0" [inputs.avm_proof_data.public_inputs.end_tree_snapshots.nullifier_tree] -root = "0x052a2f9bbcea817ac059ab3e00ac766ceb1edd7c1c7aef97058e8fcf65435562" +root = "0x2cbb306f1bec93b292e17a407e70a43dd02c2e5e25a1e61e4f40272c3fcd4861" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000340" [inputs.avm_proof_data.public_inputs.end_tree_snapshots.public_data_tree] -root = "0x295ef8793d1f05ecf233b6607736a6c4b776dbd0cabe2f0425bf08d9ab7ca853" +root = "0x13de9c6e68d01cf40925db182fa90410a912c468ecb43953484b73e3cf407794" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008f" [inputs.avm_proof_data.public_inputs.end_gas_used] @@ -4520,7 +4520,7 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x0000000000000000000000000000000000000000000000000000000000000000" ] nullifiers = [ - "0x0262527dc02a919de1026960c6500c94938aea4c783dc537dee787706fff2519", + "0x2a00dab7a47853f715ff988bc0fe2c98c0d26162189b8de85c511f75abf22221", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -4843,16 +4843,16 @@ fields = [ ] [[inputs.avm_proof_data.public_inputs.accumulated_data.public_data_writes]] - leaf_slot = "0x2c43088594a1b61b21c3d7bb9c5bae4bb5fefb52893fc6cd84cd908dfdf770d5" + leaf_slot = "0x00a37a91a78c15f7b3edb0910e6dda3cb641792d44c8aec57a341f34e9068b97" value = "0x0000000000000000000000000000000000000000000000000000000000001f40" [[inputs.avm_proof_data.public_inputs.accumulated_data.public_data_writes]] - leaf_slot = "0x16d3560d39e7f6c96fd0412449e8743e6641b22aeb1b75f02da3264381978482" + leaf_slot = "0x0fce00ff2889935aa47c9545d12bd21163820d22d65c2a6ddf3f8975eecdadac" value = "0x00000000000000000000000000000000000000000000000000000000000007d0" [[inputs.avm_proof_data.public_inputs.accumulated_data.public_data_writes]] - leaf_slot = "0x09fd5c7c298012061da066dcf7be4f12f36076f057acc0938e10ea9053c6e792" - value = "0x00000000000000000000000000000000000000000000021e19e0c9b0d92856d6" + leaf_slot = "0x0ba141be7707b610effe839006ce19b56369c383fd75436de163b39fdcf809d1" + value = "0x00000000000000000000000000000000000000000000021e19e0c9b0db708b20" [[inputs.avm_proof_data.public_inputs.accumulated_data.public_data_writes]] leaf_slot = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -9260,103 +9260,103 @@ fields = [ vk_index = "0x0000000000000000000000000000000000000000000000000000000000000005" vk_path = [ "0x1b23c3804f754a73a109576e989b6e2bd588fba8ffa913a2bdb7c218d2776ec2", - "0x1e2fdca8756556a0749fde2c3d7771479e7b14edbe6e059de1c3eb2d48cef9d8", + "0x211c77dabc1d0701605887c5e4943b8d4423b60064c3e79d2b0303d0b40ab669", "0x2b1e1e7283812220e8fa0a163f5e89d80b5abffa9452ac97941a650c5eda03a4", - "0x223b98513f87a3be6816ac1e2a1b87a807169110828d2b808a707609e4217d13", + "0x1579d8714bffc417282d461161468745ec125da568e082364e4896fbad931bd1", "0x0a5cccc6f5c49119df17ad49125046e1f8ade560372f415e56d28bab8a1fba34", "0x042567ea670fc3ff2b8c48b244f6a0c96944c6b969143cf0cfacfd97e5b929aa" ] [inputs.avm_proof_data.vk_data.vk] key = [ - "0x041db64f97a09322f266f6972857bec93915e6d9c3d55e45e8aa2ab70d31657a", - "0x0e95b96baaaef79298b718cc159c4ec3d4b1fa122b1dac7c43a71b99092cc207", - "0x0d4789d1e29d0eb11bf8daa696904ec04a4f3dfe029b165a70d9b8321d7c5111", - "0x14367a18389c747c5b080147634b28535a77324738760914ce615d710b35fa22", - "0x1f8614e8933bdf40047a76e777877c8f8359d9640da2e3345b5f1e011fa079ff", - "0x2c581fae771f234eec98108112dadae7caf505f45f7bbab714076c8952717223", - "0x2b406f17e1e1df45ddde1e83bd6d54c8ca68d4bed685396922bb8277143e4445", - "0x12648f55b10c799e2c1f6ed51c0c6615c415ee7a9435eff060cf9859bb6300b6", - "0x0124e6b33a4927fea0f41f9c7196f6fede8db0a88cb541d17de4bfa3eafa6240", - "0x16420393e301de17a01d01572d92e5081428f1b82dc9e1378bbbba6bf92c2fda", - "0x2e14039d8cf997bcfc9ed5be355269a5afd39b5759dd91e4443910a7398ca8d6", - "0x0b8d4e93a0743796f05e9e89f7b1918389140167de2da507910e99bba67a3795", - "0x062a89c37ab6a1ba1f4ef64a0e6a6fa5d00540e14934a2a764e4acf8e28d9247", - "0x25c884d9d067a23b8887cfc457d626f034cfdbe7d199bac883cb23d4e05aa6bd", - "0x02772e00dc84e809fb4a42f4732a91aafc7a4bf69befb82a95427933c3a935a3", - "0x030db8bcfa63ca93f7dfe6c7cbd59c300dd4b998e523ab84855dfad1f538055d", - "0x1afc00a039c80a7aa775898f5705f58ad66c73c45a67751e57053679f349b184", - "0x1df4841d626ef2d54c376732588106bcf83433a9259029cd658c73982dccbdc7", - "0x045c92f1d956ed4eef24bdfd9f8b6efa0f36683753fb73329f7b11e337950a58", - "0x1239562c76d6950266e140a331e139bc19fa494e2f9d5c8862b50c76ce816be2", - "0x0d115f5ed323c98af14d19c1976724c9f5b2211fd6e51c841649fa0825251019", - "0x2f0e1b01d56cc28102963bac0c5a61f6a7a441cb403ebe7b0bcc9e56632cd202", - "0x2b11d1f66f78f33b69a5d96f8fd9c6363eae49dd43fdfdee4b2feff77e092da1", - "0x1e8758ebf665bb24aee7dedc67546dd4e37e7bd083d50e2f18ca6f5561445b69", - "0x106573c34fc22e42626ab0775a49a7d530b891c79717cd7f7ac64462271e958f", - "0x24309c7673936033ec16fe866fe3a8f621acc11d9fdb7200256a511f5d27b46c", - "0x13225955cf1987bf75e0ddaae07a72f64b6ed713386153c9002458618c99b2cb", - "0x02c1aa55908e3a67b4840e3a0b1b5686018580571bbd50fe09059b489799010c", - "0x1ba594f12b1ef2041637e4a67216e3e55fa576de9d41f73e834db1c8231abc9e", - "0x0ff2155b43c9ba4abd142f31f06ee4b2c422b027de9b0729bc54531750786a18", - "0x0618d6ed7f81210ba1388220c8561978d691f4e34dd5d45878253e5e5581e524", - "0x1522ed40fee036f1c6e623eee5537fa79d92de070ea6af7247cfe1e9f43adfb9", - "0x16c6a13076878dd7775135001bea55352ccb5063019480dc9ee6190233705446", - "0x04ebaae483a52b616380bfab99f74eaefb199b3f4b87809c7e6fbf0bb1c78b21", - "0x02ab7a6529dbd5fe1877bd5581b8d60a738d23022150aa615ceafa9abecbfd55", - "0x0753bf20461d920ccb0be0a3fb2d5141b5e023cf458736803696a371fefba2e8", - "0x2e8bd7fbb5f7319f91974c80165f56ce72ee84c02f870cdd0dea0158894cfd34", - "0x2953e66c5d13076ad47ff8df59666464c379605b67e6aa2a45edaf054c994d68", - "0x0bdaf58663368543cab02a7c49367f06bfed981b39dead64e33f9b54c2d61a91", - "0x266b99a98c77b81a02e2f26b8b5a1a5bf15d934dee25759e457bc1623590b415", - "0x25a590692969ce699ce5432f67cf14ef4c991dc461b5fbaffe8b293b704f1760", - "0x29926dd3c153d033427d43eaf055aa9aad8d45c03d509009d48b89e787a6db99", - "0x00a15f2968907eda6f2d13d2f9f9f5ef5542f13dc0b2832c34dad502c8453003", - "0x14073441d66cb4cd0c0c5dd69607ca0e7743c09afd1904137d4ed1393e7a46ae", - "0x1eb28c1edff83a6ebce4175c3304582bd966bb3f3567c3cf0a49373f8f88b0b0", - "0x085e0744c14083bd9f01a91c1cd34d54b310ae739b7a786dccb95e6ed5857a7e", - "0x2699a5c62c21e0c2596cfa742027b12fea317a030e2146783e17b68819d50f2a", - "0x15c748e4f2ad67debb302d773b0f769a8ce19893c869b22ed457e03b26ecc5c6", - "0x1928b4556be3048fa74426262325ec11e1be8c1384566751edc75ae28a180c65", - "0x12adcdd926bdfdebd5f58bd957b65f4f2b47a852061d04326b4ea0173d71c173", - "0x117d9eb0f91608388bf340ab9a18e8dacc368d8a8276f5d187bf24d6946492e7", - "0x0ec7014c585ea22d463f56f75205c14014dddb1441f908b8b30f77648b4b7ced", - "0x1d9c76c9980e3a0eb60e321dbf7a416baa8efa79c012aeb728f9d68dff413de0", - "0x0ff2c38ee5dfbcd2570fed04ee78c9d1ae9ee5714369c066a99c22e3bec77154", - "0x0d3c21bacc507fd33ab59a0fcbd6b1dbf92a7d8a7b3d0d8e23d2d9cb3cc1053f", - "0x1fc315ba554f6f661733fcd64ee88e86f41fac15d41fdef7c262c6b66a227036", - "0x2ef6f582f9cbedd2820f8cc0fa2b4a56e2117c5ea33bfa07c0bb84e756f60525", - "0x21076b6cfd477970d085d5b1996f01046514b0f8e6920b6f9f63bc44e4866f28", - "0x066f0ce2e40f89ec8ce7007c430ac008744a281fbfa6a25a5840e8625af59b0a", - "0x187c95533d18657147a5e38582d1e8d9d8fe41da932a6003f4657389acb9b14d", - "0x26ab0b69d01674c82b4e688ce219bbbcc24a70627daa5d174f99eeda7e4fa6e2", - "0x2bca5ac65252fcf86d8da11fcfc7a05a1ff2b7f740f4eac755a50d8f854776d9", - "0x0907e415fef5d581dcd0ac9a174d013c4acff8d9e2e4e530aae4ca06c1b8316e", - "0x2455d141ba0cfa8d155da8fbd958985d33370163e66416bf37c01705cbc977b9", - "0x169137787ad6eca7fea25265db6cd1bc691f7e058c9960db4be3225428481e52", - "0x009c09c465d4b8fb7bc319149d295f650dceb152b618ec35d5b9e3292564c300", - "0x1d9c80febb2dae18165c2ae08534dc487e27158ebdb63183e8b864f815d1a65d", - "0x20ca6bad77d48b33698d8fd69af2b6abad537e8b7a091b87e57e009e94840cb1", - "0x10a0a56aefe0e05157f914c084bb8f0c9c34fe3858cda731944921a9bc8e93f8", - "0x1b4cc94623f455df9fe42cf5638294e7bd23dbda3f4ac9a8b004526cded100c1", - "0x04693a720f346d57589ba19416422f1f063f300435d9aa3c3e24e55c93f78b83", - "0x2b3bfaff596cea71c69f60fe31f1d02b05a8c96dbc956264e5ae1cf59f2e9ad3", - "0x29a3898c330a75e35e3ae93a066bec8de99dfb450f49e7f1205f04e5dc4afab0", - "0x083bf9d56bbbdc47564116118d2b45375f86ad528a3661d7dfaf5887751a2e7f", - "0x2c7e844dc64f8ba4321e6ecde94024901d5adf6b4e4942ea35ab488a55b8874c", - "0x0fdb2e771f19176dbcb2d67c7a61d90e63d05edb3f0c58e847b97d67b6e10954", - "0x030d599bdf3ac6a98a2c6444ab8a2be3e9a7c75e3e2d0d69832c568bc81dc683", - "0x2e65c35b9bde7b3a5651ce479998fa34cf814cb89877a560d4c02b1540295139", - "0x2d635b63dac1874add21de129d2b779df277966b3b194ab8791dd7339f7bb2d0", - "0x0538a3f027da95601a3816212cd85f1f47f1025a75c2e758abcd69491b1622be", - "0x0dc1eb3d5bcdacf2d40a5311b0ca7c7ea723b5aaf9e0c866a574ab7573bff397", - "0x2f5b01651ad01f436d1f59dc9b0b1c46d07f27dc0bb82ccbb823805ca1deee26", - "0x1931b51d69c68657e4cc24321d2737636beec0ff4c0e7f337e2f4e2f23380dc1", - "0x05f6cac8ca18a9e57847345f691315b942ce2fdb95080ad4e692b5d4b6f60946", - "0x1e8838d81f2daf353b79e6e1db209797e9dc994c19286b92eb3d38a27e268f69", - "0x0e9cc2d231353659d578b6745273417eec6565ae28bb4162af32aa6e55d561ff" + "0x0c0a4ccaf50163413b9591447bd47dd7d1538d40fa126fedddeae7d3437b5190", + "0x272f8198a2b45d00236ca96436519e32cae1ce1e203aca95440ab3c1878406aa", + "0x1464db37b87e4d3f4586907b601c45911e3baebb63e22216736f999c0d0826c3", + "0x012695e829d647fca1b3e4753377fbfe1470ae64b48b04e6da54557445ea5af3", + "0x2bd660a6ae3816b0a291dda637a8b5ba4122af24f4aaee8ed778726fd1beeffc", + "0x114d2ffc04b1ccb3e62ee5a3604b683365e85d6d02422cbc468863288bd930cb", + "0x143818483eb726b7dc5cae127737e9025f35714fac3cba49cabf2316b89f1cf0", + "0x2e6a453184c24bcd5db55556d1aa4e5d3ab3bf4ff8e2db1ef4958db9fa2f13b0", + "0x19a46dca1108e73b4f941ca536cecf4ab6efbbaedf061d081b5b5db30de6c0bd", + "0x0092f583e1e99b3aa8b80307814226328c8e953dc7d8b904ab5ffe338437a584", + "0x0fc92000e90596b89077e5b62488bcd984fcb9e857d41f36775e8980f23159d3", + "0x22ce305cbbd7b77dec56e53f5faec12bd9dd6d3196ec2b3116dcb72c7f7d5390", + "0x2092ed182b27e6c22975362706c072fe682dfd12d70e98add8ce60ac22008bfe", + "0x2183ba9cf608b9baf2254d8af60eb54f5b5d71e8a840e4f3e1e16cb76eae9ba3", + "0x22d3e49867e0ab2edd9ad35664f4836fd7bb2e483a1f5b9fb38e5aa61d882c38", + "0x2a7833f7d2d54315cc66a6ac699dbcc4a7628bfb269917809e1969db64ef4a79", + "0x1a750926dd24c05cc61122f9d169ef0ddb5d4878a39985bf69bb9a07657aa15f", + "0x2c5df83f45b1220013005ae2e89c69a9cae454002f757172df9f7c9804938bb7", + "0x19939c80e32a42009c4996cc2966c7d5f38cc6197170584a14bf8644d2083880", + "0x224148340b65b8d00126516af2c56feacef0e8dcdf8e1556db5905fbc5d79569", + "0x2a243e3c124c29248ca6687b1cc2f87e9a48935e7b608305ee88ca40d5297fc9", + "0x1362402233268047c2372ea5727aa86a8662c1b363123cd5b61be526c961a028", + "0x17bbc969d670f6bcacfacf9223f5b696bc591f0e8ac2622a6fe4469df43b497a", + "0x2e015049823ce1e5b46219c5a1fa3f141145ff5e9d56d136def5732629fbf653", + "0x3015595e682b45d3b5145fc3203484214b871f86c32add4426213a08cf2adc66", + "0x1d723fada6f4962f5de1dd4d563677f72261d3e934a7cd681b98c2417b775b0e", + "0x240fcde320f30470738ca87da8e7285048e8cbe7b64a01651420facb6e90e2e3", + "0x2a9f8d2ab53d9a450296b496ead4638f4159c53a408e54cb0abdbe8bee52794c", + "0x026092b39d755ca67d186d25e6fd8b841c9bb440b92553c205756baa2c3179e8", + "0x1e425a157bb324200fdb4dfe27bce115de07c3a68c703ebf8e05e139ad5ab437", + "0x2104f0d33654b7f632a8ae109cc41d1bf2b917a121bc4a1f4398e9810cfd7259", + "0x0f1802cbeb29977787b25563688314f1eda0f39fad54ee76b7fbac8218dfb9f6", + "0x24ec5563b2e38cae99470ab1c1ff5730f760c19b6ad952973ee30ac3776efca0", + "0x0f5d0f323e96d5798e1085153e954009fdc3e3f0871f33f584711de6391c8964", + "0x0cd9774d3db6d09378fb5701f3205c57d3d20add18e6894c3ac799b01bf8ebed", + "0x122dc1b299a390ce2684b715cccf311bc66ddc4975383728386c87cac0e913c3", + "0x02590910e8fb443aefbfab585bb607b6b5c948a5bd9f19685841fd31b25de315", + "0x1f5e7119913d1815f3f95e924afff9c47e071ff0ab6abe6b2d4f39ce22730ab3", + "0x0d33bae2634bd84dad3677fb6dca5b99297ff9fbb7213fa8ef8f28f87abdc1db", + "0x154ea4c04cc18575211184a27e5bacd9e92403d65a000d0256af2b10f50095ca", + "0x2332e73c4c3cab38afbc63ce0aaba47dfaabd65396650aa495e0fae909cf51b0", + "0x2323a161bb6a9447baa009c3a1dfc0a599d5531d405359b26c388c4def04cc0c", + "0x0923c3876f71fbf3d228b3998c549b4c70e2340d02fd3e39b54f54ff90bbf019", + "0x1e71f2975f2db3f2203c460ea4644045322a0848773f8bb9acb264ccbd366b0f", + "0x2828b9a5f1acf954db06cf2ecb0c47368df49407442fb5de54aca3b0910bd08a", + "0x1752fd4ff3a4afecb5977c192aadd5f07c6aa00cf4f568dc7ab8599a7d67a252", + "0x21097776532fe8f4e81a7a97598044d04452cc7afa659fd2121e221112c5ccdb", + "0x1e345499b070f66625d49c257edc4f5e2e64ed8a1dddcd8fe1a098f6cdc52e12", + "0x244938aec9ef61ca2d7a40bc8ac7291e5569c128a6ae61d8a55e1e44abff5a8d", + "0x2d2817bde3e18a024d47536004555b114af41faefe62f9712ce55626ecd44f4d", + "0x1d4d5b4156af2b2ee6da3f9991faaec372d5ee2b5db562e4063ea9bf6d6ce1ee", + "0x0edc1642bbdda3a68dfffb24f68664564fb18a7bbb34b4dec1ce4751e9e4cfa3", + "0x267a99e9ef7056c1d177359bbaeef1e648934ab860c36d729a3050a9bc4b7ea0", + "0x238a6b80526cfa1f63e5394d5827ee6b0131b7c778e468a50f0ce063a63f3940", + "0x2fc0bfc71678a8d39afe3bf63d722a38d7cb703005d04f545ff69237f5554fdd", + "0x1503088093ca0bca4e392cb8911f0e0790381ac71ca301b0134778ded1a117e0", + "0x2e028dbf5430fc97f3ac9774c461e8b8312663091de6eac91afa50ba05e0125d", + "0x2d4916685e66c85307ec52412fb02830ab9f0b67dc9a80f0f75c0be05ec893da", + "0x247043aa3093552c415d5ff53900e22df062e9e74eb3346c00b1b133a9d745ec", + "0x0384950ff27bb4cea1adbd5541dadc63ae52ab043d0844d5e97d89893bb79b4f", + "0x168badddb38069255e7d13778dcb6afcd98d78b8c221b95e6bb0ee6caeeb468c", + "0x2efb6f6379c50b5a212d3954c69403af9088f65d79be84a27112a1ade8b12673", + "0x2fe56a428107de08ed8f1899c301b456066dc654ec4b08453315438f540c92b4", + "0x010ddc556a15f7d864a12323a9439dfbe35a783f8e3377afe0916f6c62f2e73a", + "0x2fabe4d9c7d736e82719031df3f4b3089ba5089bf1acec0ad01261c7566dd071", + "0x252768dff65dc779a09a5d42a18ff2381e0844b7290583aeae5aa35c318644dd", + "0x08a3a3861facfb7d4a4ca083e466ebf18dda1f5c6ff1fcf4113f95879c036cfc", + "0x15d82038be7035418c70cdb94027642f90e401153a4de5b0dfd3e3e12f815c93", + "0x0189abb1b432d45c39e251b6eca0a9e2b0b1be0d58e5e25c7a553989467a7857", + "0x036566ed15e60a38289611ad11dc7d2be3655205e9d38b19512fa30b305938e5", + "0x2d9a95e50af7bf40ac7eaddb0ca0f1b71cd46b702a07ac8f7406639059bce39b", + "0x2608d64cd49cd4c1666df03e8b2c76aa8950a9ba1eb845978f7d36eafd8ae841", + "0x26506a30b7123feb0dc3f2965c2eb10158da217c8e574e0e505041a58d897758", + "0x1f8bbf9dc2e0a24d68f8da106d39ca95ad2e912e31f6f64a5b8256a4d23daf33", + "0x1590025f4d01117a8104cab1cf896a5326f6c4a4e5c537759943751f0f57215a", + "0x0e8ace3d24c2ce0a7eb135db3c0f650be7ed3655d3893301368f5b6f62e4667b", + "0x09e4c721932a21f3bd4316fdfb8b41bd04469ff0e3c3fcb9c5966661b2666856", + "0x2b9d9228d8cc54302bb8edf241f20e9cbb4bbee2660c9fdb316339b0f6db206e", + "0x2b95a32c493e80b245f9eb92ec89ee1efa43aa23b17ce05cb37ae745c6c0aa39", + "0x1a4ee058a2e9056f46876306ae118a38c02f78080bfecedfca7cb0f40f6ac039", + "0x217b5cc1336942e514e4f673b73dfd7a54535419f14c8cbd240fbd1692b7398d", + "0x2376bcd54dc76b1ad69affa575ec0f53f0b5fec03ec9ba04a6c2ac33b3af5af3", + "0x0c8c657661b93a4d127affd7b26533476e17512776c0705e1f2dd70b9bbac54a", + "0x25bd8f4a6eb81841ec321e6a6e938ebb19e4d3b6ae3c06ee9b0293c69c39c61d", + "0x2b8bb5ff55669b95b188ce95a2a9005e18aeca7fce653eaf22a71e6c44b3f445", + "0x03d2ad861561dc1185755c569970f12f01aea9a1249086429f8ea9ea54fe8d14" ] - hash = "0x0bc31a4bc8e07e6e49760c9d9dd6f510ac680a20528babef1a321fce59a2659c" + hash = "0x23b7cb2dbe57436ffc09594d856bfb050b91540dd0acf33e05cd53e1a3fe7ae4" [inputs.start_sponge_blob] fields = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -9380,10 +9380,10 @@ expected_fields = "0x00000000000000000000000000000000000000000000000000000000000 [inputs.archive_root_membership_witness] leaf_index = "6" sibling_path = [ - "0x25ae52e6471b9f31fad667d86fc542e4175865e5ded1e7036c159a86a2496cbe", - "0x10696ebdd781f09f33622f71733d2a3c05f9b6fdd457bb39b5ade060fbce583d", - "0x231469ae55167def14a4312aa95a9b70315e78476ea085540f1b668a0c7d8572", - "0x20c320873a30f5e15f1b86cb8b3ae3551fb96382686178ee562d5f5453f8a067", + "0x0d1be4b4f72d1144d2b9a93347448149d7c5b517a3a45c86ceb02addea2e8e25", + "0x0b41589e5ed044b136f82db871c5a223c8a603cb6fad205b0dc8496dbbda3cac", + "0x2166790c6a4fd651752a4b2f0177424d84e36e1da8c2405183e686ae25eb82a1", + "0x2bfa7db2c5ed971563c41ea7d368b09a13c27ddbf0bb2a91c124bc1c7881bf0a", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", @@ -12439,26 +12439,26 @@ fields = [ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.constants] -vk_tree_root = "0x0e88f44969aa6d4ff0d17db376dfa057ed3aa447725b0febf35af08e0d1d468e" -protocol_contract_tree_root = "0x1ed87d453cb7c21c5dbca65441925b3f9138fd1433928dda23342367bf94f7c0" +vk_tree_root = "0x2ca9a33f5bf72a45ff0bc18657afa956eb151243a9bc9d3c113e4c711634fd7e" +protocol_contract_tree_root = "0x2d4c1fe46d355909b04374f3890ac9b6649eabcd85e2c8dd82e237c5808626ba" [inputs.constants.last_archive] - root = "0x2bf1e26c0bb5173a5a06f21977f0deb873c284a2ca111d92a0c0307450553579" + root = "0x2ed2a7495c28fa869cd0d12d80eb7c29c5a9df32e7d65e54fbcda82668b94983" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" [inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000014" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680817b3" + timestamp = "0x00000000000000000000000000000000000000000000000000000000680a0d1c" [inputs.constants.global_variables.coinbase] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000145a" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001450" diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-block-merge/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-block-merge/Prover.toml index 0fe523e4216c..d5cc9c7fc97d 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-block-merge/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-block-merge/Prover.toml @@ -1,57 +1,107 @@ [[inputs.previous_rollup_data]] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs] out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" -vk_tree_root = "0x0e88f44969aa6d4ff0d17db376dfa057ed3aa447725b0febf35af08e0d1d468e" -protocol_contract_tree_root = "0x1ed87d453cb7c21c5dbca65441925b3f9138fd1433928dda23342367bf94f7c0" +proposed_block_header_hashes = [ + "0x00864fca4fd8a8919f1898b0c0c4c43bca1180a337e55a266a19f483bef8c588", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] +vk_tree_root = "0x2ca9a33f5bf72a45ff0bc18657afa956eb151243a9bc9d3c113e4c711634fd7e" +protocol_contract_tree_root = "0x2d4c1fe46d355909b04374f3890ac9b6649eabcd85e2c8dd82e237c5808626ba" prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.previous_archive] - root = "0x12426f1a7219669d8d584aae8673daae60083a411033ed1be83c1c7b60a41f0b" + root = "0x19417d1c6f2b53c337b3344464130f51735a5abd53b11808c3391a29dc1ec9fe" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.new_archive] - root = "0x00a03e097c9f5f687c2f39ebede1ea64f99cebe6e9b857a8a5ae772e5e39dbf5" + root = "0x2bbf3efb1d9ded1f0b832e85a76cf870890bb247932f227a1a719caccbf2c08c" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" block_number = "0x0000000000000000000000000000000000000000000000000000000000000007" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000012" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068081783" + timestamp = "0x00000000000000000000000000000000000000000000000000000000680a0cec" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.coinbase] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fd6" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fcc" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" block_number = "0x0000000000000000000000000000000000000000000000000000000000000007" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000012" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068081783" + timestamp = "0x00000000000000000000000000000000000000000000000000000000680a0cec" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.coinbase] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fd6" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fcc" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x00000000000000000000000000000000000000000000000000000000093bd180" + value = "0x000000000000000000000000000000000000000000000000000000000938eb00" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] value = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -337,19 +387,19 @@ prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x253ceb4d63e9a5a3f713ee05b34325c0ae08d2573c33981fc64d4a56d5eacc2e" +z = "0x275b78517fa2fd6910e2e790cb109995233d8e10ed6546cf1ea13647d7690547" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] limbs = [ - "0xae43e719071d08d80f91537843e05f", - "0x8a04f526720edf7350d97f43f61a3b", - "0x0aec" + "0xde0fbe8b39a66ee9762a21fe750240", + "0x0f937318bb3496d8c3df116d5c6974", + "0x6b16" ] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] inner = [ - "0x008ca8a2ef45fdc9c6782fbd6908b38fbe5209b165571beeaa8747e2e1fa09f7", - "0x000000000000000000000000000000c7142681040aff2ce3afd2c477fd573e82" + "0x0090d899bd746cff971516744cdaf5d99be963c7d9b52b9239e09cf9a905572f", + "0x000000000000000000000000000000eb53aa454aa40c9e6c1e7a8c02612e9e06" ] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] @@ -3229,128 +3279,128 @@ fields = [ [inputs.previous_rollup_data.vk] key = [ "0x0000000000000000000000000000000000000000000000000000000000400000", - "0x00000000000000000000000000000000000000000000000000000000000003f4", + "0x0000000000000000000000000000000000000000000000000000000000000424", "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x00000000000000000000000000000000000000000000000000000000000003da", - "0x00000000000000000000000000000000000000000000000000000000000003ea", - "0x000000000000000000000000000000468cf0d5d7f0678e87423a37c5aeb260c5", - "0x0000000000000000000000000000000000155bc3629df2ca0fad810b6c273db2", - "0x000000000000000000000000000000ceab2cfc3dfddac833aee9ed2b52b7b454", - "0x00000000000000000000000000000000001a441bb55131ccd7f132786b732752", - "0x00000000000000000000000000000005800321825b38473240a913987b559401", - "0x00000000000000000000000000000000002b538e1093b340a8a0683528828560", - "0x000000000000000000000000000000303465bb77d45de32ab53c47cf966602fc", - "0x00000000000000000000000000000000001dac7f70c6d9d68bc87a015c811cf8", - "0x000000000000000000000000000000fdffa3ae718a608af69af664a8dec6fe55", - "0x00000000000000000000000000000000000ef8fa54bc707440fab671df68b80b", - "0x000000000000000000000000000000fd55c370883a38bce94d4790aed832eed3", - "0x00000000000000000000000000000000002fcd8485757d4df0e785be0158fc88", - "0x000000000000000000000000000000afd2300f904f15600ccf7ac2dfa9ec28e3", - "0x000000000000000000000000000000000026068a037708ba08b5e4e86f9642ef", - "0x00000000000000000000000000000055a7f09fdc1ffacd4c533a6ada9f845457", - "0x000000000000000000000000000000000022b366950b161874740aa0d5161e55", - "0x000000000000000000000000000000682b77a91cd7b6e0ea11eac71343818ef8", - "0x00000000000000000000000000000000000cc54dfdcde9741cd90d30c46d2ccb", - "0x00000000000000000000000000000055daacff20c7012059aea2b77761ce8ba7", - "0x000000000000000000000000000000000017d71296ae57bfe7fab367f52a9483", - "0x000000000000000000000000000000c3d31faa26a3ba9f37ffdece13aef9904c", - "0x00000000000000000000000000000000000609d9f5a23a35812a3f56f842e6bf", - "0x000000000000000000000000000000cdeb10d16140aea28afcbebe5cbd60b633", - "0x00000000000000000000000000000000001f976bfa2b6ee0cb0a0544bac1eb44", - "0x000000000000000000000000000000e6a9379f531ea207de4c38b3eac969d590", - "0x0000000000000000000000000000000000168890ac957e785e5322018a09f155", - "0x000000000000000000000000000000dfc38022eaac25d496a4537759ce2bc920", - "0x00000000000000000000000000000000002bd0c4aa32c8a85d9b5200367521b5", - "0x000000000000000000000000000000dfc2ee256ee04daeb454ef393577c30305", - "0x000000000000000000000000000000000029e0a7e18850b27f078cb53833e28a", - "0x00000000000000000000000000000073152b770eb84ae8f40a0ed2f2357ed90e", - "0x00000000000000000000000000000000001eda1693f25ac1215f23dcecc98d79", - "0x000000000000000000000000000000487f831affd6735b1daf08e68541c5f9c5", - "0x00000000000000000000000000000000000e5eb4567c30ad338b32a4dc2ed114", - "0x000000000000000000000000000000a3a79c43e14fd9c4ce24328fcca6201839", - "0x00000000000000000000000000000000001225e2177cce11d272d4836f881b0b", - "0x0000000000000000000000000000007279c4be5ac32dc0c00d96516f6e717227", - "0x0000000000000000000000000000000000121d0dee60e882b366ece13c846462", - "0x00000000000000000000000000000044c696f4378dc7ac402dc7f05b3f2d2af5", - "0x000000000000000000000000000000000023559aa864836ff03796c4855a0d0d", - "0x00000000000000000000000000000014323a7c702550f7c705599de2830223b2", - "0x000000000000000000000000000000000007e95a9d68d5ba4fec5748230aeef8", - "0x00000000000000000000000000000073df14e1289fb2590a976d1404070238e3", - "0x000000000000000000000000000000000006f96fb198f9d00dd3a7517ed136be", - "0x0000000000000000000000000000006bd25f0bbfba12ae4e6607c61605ad2abf", - "0x00000000000000000000000000000000001bc21f5a15363a14edd1665f0b9b30", - "0x000000000000000000000000000000135093333b748a6829d53b1938a19c17de", - "0x00000000000000000000000000000000001c611e8faba60a719941fafa2e0bc0", - "0x000000000000000000000000000000f93dc04ba65236fe0057e9f84445bab9b4", - "0x00000000000000000000000000000000002e8ba71205d9425b5f18c1910cad49", - "0x0000000000000000000000000000005c1091ac49769b1de22d35329e9180e066", - "0x000000000000000000000000000000000004b93af1a37eb3c287b25cba1c0ff9", - "0x0000000000000000000000000000007eab72fd85e5dc2d3c9953085bf6881cd5", - "0x00000000000000000000000000000000001f05bf84457442ef424c29a3b04f6e", - "0x000000000000000000000000000000a479a8e4fd44f7e0ecf67e77e1e1ad4984", - "0x00000000000000000000000000000000000ddddfe019ef930b0497a3b462404d", - "0x00000000000000000000000000000026df99dce54a024fb28eac86679fc3ac16", - "0x00000000000000000000000000000000002cdb2dfd943ef25d6477316ddbe979", - "0x000000000000000000000000000000f501050c3843bd66b81316167fa368ca26", - "0x0000000000000000000000000000000000172b093803b5cf83b65ac1647a7011", - "0x000000000000000000000000000000a3dc922300e87093d33e699202306eab82", - "0x00000000000000000000000000000000001bbb99c263ac5d51dbc8ef89a19ebd", - "0x00000000000000000000000000000009e98073f035945f6d221f049bdc18938d", - "0x00000000000000000000000000000000000864abc7e7681a3849c8c348ea85af", - "0x000000000000000000000000000000eb47ed13c7577537875c19b9de74998bd9", - "0x000000000000000000000000000000000028706bd3d306d0034972a994afd9bf", - "0x00000000000000000000000000000005a8a0025cb4e3ba5ea9285ad1159b04f2", - "0x000000000000000000000000000000000028ab8077c15cecb6bca86047a46212", - "0x000000000000000000000000000000ee75a2b8635ebd01d4f11b4c4071bbd404", - "0x00000000000000000000000000000000001a88dff47194ad3fe3dbc59f5e5c21", - "0x000000000000000000000000000000c712d54c75784bd619005d5d198df382f2", - "0x00000000000000000000000000000000000ba177ed576047cb7fee50f9d34b04", - "0x00000000000000000000000000000038b0c822323f279491aa1d4df9eeed9455", - "0x00000000000000000000000000000000000bfde1bc2a8db146865150eec2b950", - "0x000000000000000000000000000000a89543cb12097c6756a4375cadf443e2ee", - "0x00000000000000000000000000000000001a023a23eb1e167388cc3700cb6bbc", - "0x0000000000000000000000000000001f564c490cea18bc13521c638f599c0045", - "0x000000000000000000000000000000000019cd552f4770b3b2b89cafefbc430e", - "0x00000000000000000000000000000061542755ccfee7d2a1e04214b9cbda957b", - "0x000000000000000000000000000000000023784aa0d201eb36188f7d52bb7967", - "0x0000000000000000000000000000004207cb937e255e6b44c076ba2f046a45d4", - "0x0000000000000000000000000000000000076bb66b745a6e084ad0403903b77f", - "0x00000000000000000000000000000044e6234263a96ea4c0ada41b28d4c8f5c1", - "0x00000000000000000000000000000000000f9019c88759f475af5664f35327f9", - "0x000000000000000000000000000000950682eb60cb5455d12d47d478edcd8744", - "0x00000000000000000000000000000000002674dcc5c46aace2a7b24c9177bca4", - "0x0000000000000000000000000000009d0400d74c2810099803ce00e4d212e027", - "0x00000000000000000000000000000000002dd78ffbcabe324f8fdd974ba4592e", - "0x000000000000000000000000000000835d6524088c85a6229c253f19f9075a24", - "0x00000000000000000000000000000000000ea53cd2576f3ed59997b9c31ade62", - "0x000000000000000000000000000000b63021ec911d878a8808271f9fc354f6c1", - "0x0000000000000000000000000000000000013899f19981c306831c30f8be091f", - "0x000000000000000000000000000000e9ea0973de12fdbcf9692352b0bb9e126c", - "0x00000000000000000000000000000000000f480ce1fe1a5e6d79c1aea34ff6bd", - "0x000000000000000000000000000000377185add84afd6c2c81cd920469f4eed8", - "0x00000000000000000000000000000000000b30da5e57df9005bb26388bec1e13", - "0x00000000000000000000000000000016d15d01c4e568368a015a4a1bd827a3b9", - "0x0000000000000000000000000000000000181038d51220ac7f524520f4dd4e00", - "0x000000000000000000000000000000f69b5e222476cd81abc41a7e1c7dab2bc2", - "0x00000000000000000000000000000000001fb2cec72c2a711d3a7cd9da9ae57b", + "0x000000000000000000000000000000000000000000000000000000000000040a", + "0x000000000000000000000000000000000000000000000000000000000000041a", + "0x000000000000000000000000000000f2c45d65b0111812d564bf2267d6f0dddf", + "0x0000000000000000000000000000000000235faacc80bf2d21e60ecd3c7812f2", + "0x000000000000000000000000000000be5a017186a8d1d75d544ca23f022235ee", + "0x0000000000000000000000000000000000167bcb28ae0a28c63d7e221275dfb4", + "0x00000000000000000000000000000079180bd450e3ef9580d6e7e33d4dc0a760", + "0x000000000000000000000000000000000003f44874db83739629e3d844492393", + "0x000000000000000000000000000000f167a4607f96a67a5cc7a85fadb98e11e7", + "0x00000000000000000000000000000000001055085c931127fe1af06007186b8e", + "0x000000000000000000000000000000db3322a75ecaa3ab9493c9452c4ad97a61", + "0x0000000000000000000000000000000000197c6aa1a01c96e1c45ad62d8da805", + "0x0000000000000000000000000000001213ba657d8add9d827e03b009031d155c", + "0x00000000000000000000000000000000001a4453dc88cfb20f7d50407d0d4337", + "0x000000000000000000000000000000096cd1cfa5679e70ed6717f8cce13e3df4", + "0x00000000000000000000000000000000000933711e0a04248be7a543ee654511", + "0x00000000000000000000000000000040063243d24bd89e0f8eb5c981957b95d0", + "0x0000000000000000000000000000000000105165b5af495efdacfbf3da8262ba", + "0x00000000000000000000000000000091b77512273d0df03128c05677738a4fe0", + "0x00000000000000000000000000000000000a9a973f0c63e3efbb287270671d49", + "0x0000000000000000000000000000001bb8c7dacaecc6ab0f9872e3137a324b80", + "0x000000000000000000000000000000000016145f8c4c0015c5eebcdecb5054ac", + "0x0000000000000000000000000000004b0188603817353cbc05cf3d6a14d44828", + "0x0000000000000000000000000000000000219d0b92889d113d936e8c4165f3a1", + "0x00000000000000000000000000000080ec427f9e448f1f88714c6ee8d7a556d1", + "0x0000000000000000000000000000000000171f0ca9771287b35070ae3d60d455", + "0x000000000000000000000000000000e6bee501455201368d829cd1ce79087f61", + "0x0000000000000000000000000000000000200a6916f2e94e0de862bccb7c66e9", + "0x000000000000000000000000000000ce79b607a7f0f58208394dd5ae4ed88772", + "0x0000000000000000000000000000000000289dbe505abab4d4613cf578f4ee04", + "0x0000000000000000000000000000006fa8efd3ab79446650425481b2a5ab9d2e", + "0x000000000000000000000000000000000015fc8d4c9ac4de8057f0c20283453b", + "0x000000000000000000000000000000dd21a4bb7949f9f56eadd2541c7c9062ed", + "0x00000000000000000000000000000000002d121f8fc47aff8eacaefbcde1f1ce", + "0x00000000000000000000000000000018bff39d61c2754aa4c28c7456f2444bf0", + "0x00000000000000000000000000000000000e294611f5fa9955eb0480363acbc8", + "0x000000000000000000000000000000f3abae48595c4c52db49983f18038ba0e6", + "0x0000000000000000000000000000000000247c1f6b6051e941f96d53d3df4c8a", + "0x00000000000000000000000000000097a9dcc7450fc684eb4b24b535e0e2c49d", + "0x00000000000000000000000000000000001e8bc37c6fe70f27462e4a19f76073", + "0x000000000000000000000000000000cf0d33b7761908433d06ba76dce6999bb5", + "0x00000000000000000000000000000000001fba355559d0718ace8a008f58d80f", + "0x000000000000000000000000000000dad5c2ca6d64dfd9c545713e7dfabb1bd8", + "0x00000000000000000000000000000000000596966ec53735aa5c2e41660aa74b", + "0x000000000000000000000000000000674e9036aa5ef3e036c7942275f09a687d", + "0x00000000000000000000000000000000000ed3263d2026e675c6d60454fecf9f", + "0x000000000000000000000000000000f05838102ceb9c8ee429f6c3e9216c2e83", + "0x000000000000000000000000000000000005623227ba6f2e6e5b30f9e5e94503", + "0x0000000000000000000000000000002e05f58ac4fd85442ca0b16bd844d47043", + "0x0000000000000000000000000000000000025ae2aa6769e0cf6ea9b1e9ea8e62", + "0x000000000000000000000000000000838e11620ffc5ec79c47885e9442ba1392", + "0x00000000000000000000000000000000000f21c8ff496b2e07b2fdea160c80e5", + "0x0000000000000000000000000000000ae4bfd7a86101e7e5dbb42424243bbba0", + "0x000000000000000000000000000000000001919bbc693110740ecfd2429d705c", + "0x000000000000000000000000000000a7deafde441ab4c90754443b2952a8e198", + "0x00000000000000000000000000000000002001194ea75123d7254656c7c2d2f9", + "0x000000000000000000000000000000ea35aead9eaff06c58030038a07f49d30d", + "0x000000000000000000000000000000000015a681766728e307c94623db1bbf27", + "0x000000000000000000000000000000ff05851a2117586003e4a693cad496356f", + "0x00000000000000000000000000000000001c8fd492db6ab43f0952effa308752", + "0x000000000000000000000000000000ff60324c262cbaa62314aeaa4d206ae2a7", + "0x000000000000000000000000000000000021ae7da4bb7bee063bb433e9916df5", + "0x000000000000000000000000000000ccc9ca8c64af3a993c9983479a2122ef87", + "0x000000000000000000000000000000000006f02446f55672ea11a17ad4f7c52c", + "0x0000000000000000000000000000005486e20b8039e514b7d1d8d73b753ce109", + "0x00000000000000000000000000000000000ee5215ab43323e02e030480af5a47", + "0x0000000000000000000000000000004f40e7e0e4363816365655ce2d3de2a549", + "0x000000000000000000000000000000000023352e65c67c386fedbe8cb8c1a157", + "0x0000000000000000000000000000005cc3c5f6a87428ceb3da89a28e2a3fe6e6", + "0x0000000000000000000000000000000000281a53a15a27d79e4e46974507c75d", + "0x0000000000000000000000000000009ba7afdd0fdd45624cfc488826a745f531", + "0x000000000000000000000000000000000006159d92d602a3625e1fa737a631bd", + "0x0000000000000000000000000000009acbf6bad019c4f06e716fc924a33f1203", + "0x000000000000000000000000000000000010409ee9706e5e8e72d6381f4db606", + "0x00000000000000000000000000000093638151006c368a56fdd00a665e8569e7", + "0x000000000000000000000000000000000023db83954e0b3091ab8afe297a5565", + "0x00000000000000000000000000000098e98affba889b0d4ece2b022b4576b071", + "0x00000000000000000000000000000000000b3c3391a272ab2a9befe595830f75", + "0x000000000000000000000000000000d74d1bd1d3b599970048c20d93fa4e44db", + "0x0000000000000000000000000000000000058cd6c800208a3d5d7c3a1720a93a", + "0x000000000000000000000000000000b9a2463dc018f0e3adc3762178a5722d8a", + "0x00000000000000000000000000000000001c01096eaafcca773d550e842de274", + "0x000000000000000000000000000000c3d379957e8c42c09410026b920267157a", + "0x0000000000000000000000000000000000009013d4a5159f769dfab31dd2901d", + "0x00000000000000000000000000000058ce78fd99a36d0b85123d56abdda1a431", + "0x000000000000000000000000000000000029a3f22c07727ce79c1fffbe4bbdb3", + "0x000000000000000000000000000000751a63b41218c33ae5d641c130f060ce34", + "0x000000000000000000000000000000000018a3d787ef1ec164dc62244409c559", + "0x000000000000000000000000000000a0340f3ea930787df40d68fdd647a9f7d0", + "0x0000000000000000000000000000000000230b997570d1f85ae65a57bb57a7d0", + "0x0000000000000000000000000000000bc60b4ea3525f05223875c1af3ed2b02d", + "0x0000000000000000000000000000000000236868e5e41937ed2cdc41de55f10b", + "0x000000000000000000000000000000249541e175626917b9aaedb0e2915d4177", + "0x00000000000000000000000000000000002fb85434d64a786207f332f20277da", + "0x000000000000000000000000000000aec46500b248445db79f52d6ed7b30158b", + "0x000000000000000000000000000000000002321694c1a17469bdd178eafdfa6e", + "0x00000000000000000000000000000023fd9365c6a81758f239e73dee60348b69", + "0x000000000000000000000000000000000014cbd4ad9a23e8adbaa2eb703f2801", + "0x000000000000000000000000000000a1dd8f964e4f1c6a0c2c1407da434a5d2f", + "0x000000000000000000000000000000000018ee0334d49c017b30c8e7656c679f", + "0x000000000000000000000000000000f1571f393c77481ab166deb9cc943c32f7", + "0x00000000000000000000000000000000002f977fa69325d670afb3b6523af5c6", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000945c3182d468e621b8f15b92e67af5839", - "0x00000000000000000000000000000000002310b424058e92b518d7a03e3eb5e8", - "0x0000000000000000000000000000001d6cf6dd16125b61517ad9fd5b94b3fed2", - "0x00000000000000000000000000000000001faecd336505024e27ccbe2c916e44" + "0x00000000000000000000000000000023635349e868409c83d379c32a81c115d0", + "0x00000000000000000000000000000000000c7e2f1646f595e8080c7fd3326ea5", + "0x000000000000000000000000000000c2dc015ec1cda2c5db6d1cd7259bd31f8d", + "0x000000000000000000000000000000000015a4bd8394f361c4955603162ee359" ] -hash = "0x069cbfb5286e85ee7ce691251c6379a8336a1b2da06943fbf0f98666bdebe954" +hash = "0x2ea28e97095831795ca661de3ab61186dbc210b503134e51beb27eae20418166" [inputs.previous_rollup_data.vk_witness] leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" sibling_path = [ - "0x1ccee5a9c85bc062b6fa5ac008d9b31d3701e25b326e6a670cf68ca6e85b9ee3", - "0x1cb3d9ed21126a16f090ff0f9e10287c3c5235acdba2117ee54b5bc49c97a08b", - "0x2e133e22d161c41043ea7ef2758c7b51be0ada628afa5a0cd7ebb2b258134721", - "0x2fa9633929cccbcc4776c410cc5f4315b5a3cc9f91de60871a3e8d7a5503505c", + "0x2b182eb820127920e5fa90ca76380f319adab799d239737ffbe3bfdcd30b00a9", + "0x025c37ebbb9ffb9b8fc9460a2c2e4a6299aef560600c948621778c0598d3fc25", + "0x20327946d4b0480337a05b934ae548cf54166d7e47e4cf507b80e22807d950d3", + "0x1c928e7bfd756013034a6faef411dd7b791ce88c9f42adb22a032f461bee9ac9", "0x0a5cccc6f5c49119df17ad49125046e1f8ade560372f415e56d28bab8a1fba34", "0x042567ea670fc3ff2b8c48b244f6a0c96944c6b969143cf0cfacfd97e5b929aa" ] @@ -3358,57 +3408,107 @@ sibling_path = [ [[inputs.previous_rollup_data]] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs] out_hash = "0x00db4f24d6eff7983ec163d02c230d6a44237feabd8a2da284edce08afc71435" -vk_tree_root = "0x0e88f44969aa6d4ff0d17db376dfa057ed3aa447725b0febf35af08e0d1d468e" -protocol_contract_tree_root = "0x1ed87d453cb7c21c5dbca65441925b3f9138fd1433928dda23342367bf94f7c0" +proposed_block_header_hashes = [ + "0x0084f8c7649d4752c8c09259e41761cc9c20db8e2a0b9b7dae2a0f973b57e5dc", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] +vk_tree_root = "0x2ca9a33f5bf72a45ff0bc18657afa956eb151243a9bc9d3c113e4c711634fd7e" +protocol_contract_tree_root = "0x2d4c1fe46d355909b04374f3890ac9b6649eabcd85e2c8dd82e237c5808626ba" prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.previous_archive] - root = "0x00a03e097c9f5f687c2f39ebede1ea64f99cebe6e9b857a8a5ae772e5e39dbf5" + root = "0x2bbf3efb1d9ded1f0b832e85a76cf870890bb247932f227a1a719caccbf2c08c" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.new_archive] - root = "0x2bf1e26c0bb5173a5a06f21977f0deb873c284a2ca111d92a0c0307450553579" + root = "0x2ed2a7495c28fa869cd0d12d80eb7c29c5a9df32e7d65e54fbcda82668b94983" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000013" - timestamp = "0x000000000000000000000000000000000000000000000000000000006808179b" + timestamp = "0x00000000000000000000000000000000000000000000000000000000680a0d04" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.coinbase] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fd6" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fcc" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000013" - timestamp = "0x000000000000000000000000000000000000000000000000000000006808179b" + timestamp = "0x00000000000000000000000000000000000000000000000000000000680a0d04" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.coinbase] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fd6" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fcc" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x00000000000000000000000000000000000000000000000000000000401a4e7a" + value = "0x0000000000000000000000000000000000000000000000000000000040062bd4" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] value = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -3694,19 +3794,19 @@ prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x1cf7cc2d12bf95135e6bb6a5b6b1557c5177f5467adf39ad4f86e38193d88537" +z = "0x116b47233baf191669767a4c40e5111c0c2d0d4a1b4229995630aa46d4232d41" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] limbs = [ - "0x6dcc672dffd96ab11c637978a8908c", - "0x682501cefb43fac9f90bf1a8b71da3", - "0x7187" + "0x9fe14e28e3417682153b934e5c4f5b", + "0xd87937dbe92b9a41cfabed37dacdd2", + "0x1f1a" ] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] inner = [ - "0x00a725cb288922c64c2f57719a6070841edebbb5336a5276e9fd83a19320f54c", - "0x000000000000000000000000000000fe228e6ac86d495386c8bd24fcc7e487a8" + "0x00a8318ffae25ca0ed7d2ed73cfeaa8ad44f5e7a7c702da61cb8e5001c26ec88", + "0x00000000000000000000000000000022ef83543da9e254a2f61faf7cc9bdb6ef" ] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] @@ -6586,128 +6686,128 @@ fields = [ [inputs.previous_rollup_data.vk] key = [ "0x0000000000000000000000000000000000000000000000000000000000800000", - "0x00000000000000000000000000000000000000000000000000000000000003f4", + "0x0000000000000000000000000000000000000000000000000000000000000424", "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x00000000000000000000000000000000000000000000000000000000000003da", - "0x00000000000000000000000000000000000000000000000000000000000003ea", - "0x0000000000000000000000000000000da9ca4d829c3076db464196e7b0b823b1", - "0x0000000000000000000000000000000000061ee3e7e4290a853d275a86fec326", - "0x00000000000000000000000000000069d29843dfbe74eed0ee5d0cdf632be985", - "0x000000000000000000000000000000000014213eefa99a5bc5bba62498e886a6", - "0x00000000000000000000000000000066d0402c0a1d364ee21b250f9fea54e345", - "0x000000000000000000000000000000000001d88c46ee84dfc8dbce53cb3653aa", - "0x00000000000000000000000000000078e7c5acc401ebc65256e77e92d16c8f74", - "0x000000000000000000000000000000000027978040f512a5fbf2d98a2e673c38", - "0x0000000000000000000000000000009dec1cabe64ab5a9de1b9e821ed271b069", - "0x00000000000000000000000000000000000d8974629e61e184e9ef4f1dded832", - "0x000000000000000000000000000000e597237c693964f50d9933463bcd5cef0f", - "0x0000000000000000000000000000000000274cc93f6bd72e1a9c14019b36b2e1", - "0x00000000000000000000000000000028a273c201b86cf32e793679b97fd794e3", - "0x0000000000000000000000000000000000270195244985dd5e3f9fac7e6e9344", - "0x000000000000000000000000000000521bfaa594fbdc8599b4217324c8fd659f", - "0x00000000000000000000000000000000000d769b8e13c77b390b63bef85c371c", - "0x000000000000000000000000000000352c26263aa4477b4bfce7c09fad6cb33e", - "0x000000000000000000000000000000000018745d27f6f71a82eddfdae4a5ed99", - "0x00000000000000000000000000000096a874f69d7c507612f6e2daecc45a4e09", - "0x00000000000000000000000000000000002cbe45e9eb99a9bca77485e886551f", - "0x00000000000000000000000000000040a6d65abc214594d05bf5ddd4898291b7", - "0x00000000000000000000000000000000001e607634183cac025e892419dbbfb5", - "0x000000000000000000000000000000546d282ac58a9c50a37f8fde63c0530d18", - "0x000000000000000000000000000000000026f4b956ce7fe56301a8ef450c99b2", - "0x000000000000000000000000000000e22cf3743e5cb7f3a371bafa34a51c6f3e", - "0x0000000000000000000000000000000000174619de5df7d784e3601e194d981a", - "0x000000000000000000000000000000911c4ac4eb3c690d3b6aaab8591d96837b", - "0x00000000000000000000000000000000002272ec1535e8941efb0182efe0574e", - "0x000000000000000000000000000000ddc9e16c2fba42d5325f619c57357842b5", - "0x0000000000000000000000000000000000021a8d53335dffabc18a25601ebfa7", - "0x00000000000000000000000000000019796976de50f3338df995899eac326d07", - "0x000000000000000000000000000000000010189ae3ea97eda1d42e79680b34a3", - "0x00000000000000000000000000000001f6a9ae4b85a96f96a7b23fea66a84767", - "0x0000000000000000000000000000000000258d0ae58c88f58a50901d7022d68a", - "0x000000000000000000000000000000e3c6c252ac9d842d8be107a5ee36f48c4c", - "0x00000000000000000000000000000000002e0a924f6c5b40fc2cab3fcb03fdb5", - "0x000000000000000000000000000000528a37535bd23c3b3b67efadab27cb0bc9", - "0x00000000000000000000000000000000000df339a747cf1f04b370990bc892bb", - "0x0000000000000000000000000000006e5d2f7bab7f624fdb4f89f761f6d85e91", - "0x00000000000000000000000000000000002e2791ed629c54d9a466f3c7603156", - "0x0000000000000000000000000000002e250d34bcb03ab0bcacbe8a3fc82dc475", - "0x000000000000000000000000000000000005e366e5aed5b8b95784789d422347", - "0x000000000000000000000000000000dd3a0f1daf1df192738f806aa3f1809cef", - "0x00000000000000000000000000000000000e5a7d61f5f140424e636f623ce954", - "0x000000000000000000000000000000d5f243f41b48ab1572dbdb7338da4d39bb", - "0x00000000000000000000000000000000000c699c047dd18f7c731afb8e42645b", - "0x000000000000000000000000000000b0a72b4a04da5f1bb9a0ffde679e4205f0", - "0x000000000000000000000000000000000013ceb784436cfee8dc9c80ace6694c", - "0x000000000000000000000000000000b15923ac053dc4e663eaabcf3b103dca32", - "0x00000000000000000000000000000000002483ab05fd1d426c59c2cce52c03e2", - "0x000000000000000000000000000000dc3a1e1bb61dd1231c58d0c3ab10cb3c4d", - "0x00000000000000000000000000000000001faf974efb3df207dc2e5ee5c1a8dc", - "0x0000000000000000000000000000007447e7a5ed422aaf408855ac6353c2f5c9", - "0x00000000000000000000000000000000001adfee01de9e73abcac55e5eddf4d1", - "0x000000000000000000000000000000542b41aea2ae085b3f6083bdb9b0f3f7c2", - "0x000000000000000000000000000000000013b57f55d7de22b3562493a0f3bcb4", - "0x0000000000000000000000000000001edf310b073604b5de0ef383e009810688", - "0x0000000000000000000000000000000000249317681dc17022d51afb3fced9c9", - "0x000000000000000000000000000000a9adfab920bce4ae07b6cbc7ab2063d152", - "0x0000000000000000000000000000000000189b6f5615898cd0e8fa22ea3db349", - "0x0000000000000000000000000000008d5206451bb03ab748bbe80e7072fcd257", - "0x00000000000000000000000000000000002feb818d4a1fd9e90a160ac19ad342", - "0x0000000000000000000000000000008422d3f23bfc90b4c2812112c6b6ef191e", - "0x00000000000000000000000000000000002650286e5fbc15c2b0ee49a2afe19d", - "0x000000000000000000000000000000cd4984348b99eaa141e4267395f9498e15", - "0x00000000000000000000000000000000002445c5d9251a116f4d5dd3e247f6ba", - "0x000000000000000000000000000000ebe0cf9323598b71c7f0929d91c5eb056f", - "0x0000000000000000000000000000000000084931501d78ed73d905b9b3e220fb", - "0x000000000000000000000000000000863477aa67f56423a0f565d3e02ac1c299", - "0x00000000000000000000000000000000001f0baee9b46ec7eec0ed6d041bbddf", - "0x000000000000000000000000000000e14e2d026b917c5db878d472a89b214848", - "0x000000000000000000000000000000000012917cace8664dd3ea6795517951e9", - "0x0000000000000000000000000000002466442db3ffe41ca062ccc875ca70f0fb", - "0x00000000000000000000000000000000002df73d3b2062c3180bc637ff07e2ce", - "0x000000000000000000000000000000250d47b2bb066d3aa861a7fda17fcb9b72", - "0x00000000000000000000000000000000000e7090ae1912cbc10d2cd6a509eda0", - "0x000000000000000000000000000000f556c5c5bf1df1d63333fc89c03cb70232", - "0x000000000000000000000000000000000011be2ce37a488f3d4d358d1d4e9b99", - "0x000000000000000000000000000000d5072ebd625af00df24ca3e8913d66f569", - "0x00000000000000000000000000000000002e66d8ee25bf9699c83be89f6ff8f1", - "0x000000000000000000000000000000154ce3d4179b9c55abea1e498451a45d4e", - "0x000000000000000000000000000000000027f51c00532c8bfff4994276278696", - "0x00000000000000000000000000000025f56da1bede7feb4655f4df53940afc0c", - "0x0000000000000000000000000000000000190e3795a9fdb795d643e49a734146", - "0x00000000000000000000000000000050d1b6dfaff2d2c5abe4ed8c56cc176dc5", - "0x000000000000000000000000000000000025ff411db197a1f181b2966f397e86", - "0x000000000000000000000000000000e2e587d24b0ad383cfd47adc734958a6ef", - "0x000000000000000000000000000000000007ba08b5e67c187210ed06db4bf394", - "0x000000000000000000000000000000620e9b3d19c8cdff7e3a31fa3fc0c168dc", - "0x0000000000000000000000000000000000010aedec6b4712a533b6efea7019d1", - "0x00000000000000000000000000000063cde6622d653dbd3321a6cfc6a2d3d6c5", - "0x0000000000000000000000000000000000008438b4884539fa320e9323d1f484", - "0x00000000000000000000000000000026a3b7eafa0d91361a86c3901078392db1", - "0x00000000000000000000000000000000001ef0e855b11bb37d7a306198d1d6af", - "0x0000000000000000000000000000006fc7532a51760b09301fc1d0f165815d21", - "0x00000000000000000000000000000000002711b761e5f73eace7dd8c66c0c711", - "0x000000000000000000000000000000afdfcd94b14289ae8727001d12b2e35dac", - "0x0000000000000000000000000000000000136609fbf4de871dc22fb27033dfab", - "0x0000000000000000000000000000002cd4d9cfe09a023e3fb6fd74baf2689b82", - "0x00000000000000000000000000000000000c9054a9084deaa4ce84c4673a73d3", + "0x000000000000000000000000000000000000000000000000000000000000040a", + "0x000000000000000000000000000000000000000000000000000000000000041a", + "0x000000000000000000000000000000934897daf401b9425dc78b03371a8504b0", + "0x0000000000000000000000000000000000280dc66faad098247215f7cf35405b", + "0x0000000000000000000000000000003befa209d88d8764712c77bd0afa59940e", + "0x00000000000000000000000000000000000934f12dab6bbfa89edc418e0b1aba", + "0x00000000000000000000000000000089b766f57e9ee54aa01788427e99cafa3f", + "0x00000000000000000000000000000000001677517d19321df6da969900da35ae", + "0x0000000000000000000000000000002ddde54464d9554873de3ee2d6f99ca970", + "0x000000000000000000000000000000000001108769955a969c075c3bf6aee0bd", + "0x000000000000000000000000000000c214bf56c9657e511e0e388a3c528b16ec", + "0x0000000000000000000000000000000000054c342d1a3408817c83f8b8c71e86", + "0x0000000000000000000000000000006122a888cb354e25427985ff204745630a", + "0x00000000000000000000000000000000000adb838e11b5d545add34a95fb5a08", + "0x00000000000000000000000000000079d3fab49f4b334f750485479702c4ffb1", + "0x0000000000000000000000000000000000123f0273626b34af88c8db2b9f2a38", + "0x000000000000000000000000000000d5dbea77135933fe49a8d0f3686cfafb73", + "0x000000000000000000000000000000000009d0776d17333e04d28de2390b7dd7", + "0x000000000000000000000000000000c022ad186bc083ac5b0d12db54d7f951d2", + "0x00000000000000000000000000000000001249e07d49c3a87278fce9b80297f0", + "0x00000000000000000000000000000051bccc6a1449ba83082d25f9d48b9aa4f4", + "0x000000000000000000000000000000000001f5abf14c9f7977aef49002d5d67e", + "0x000000000000000000000000000000f62f1d5418eef6f8c86f62d4a0f0027acb", + "0x000000000000000000000000000000000029bbf75523b61a288e42a7905a1bc5", + "0x00000000000000000000000000000013ff391509c55445cf7f59ff93da23e141", + "0x00000000000000000000000000000000001adaee1f50b07363b3e20fd8756023", + "0x000000000000000000000000000000ebd38778b3274496532399746d9ad2b21e", + "0x00000000000000000000000000000000001f0792f3fb8d0a1fa047b39c348a0b", + "0x000000000000000000000000000000c38c90b96e080b0443ac3b57f0807e82ce", + "0x000000000000000000000000000000000002425fdb1a2c58a9b62b7b8a0e5500", + "0x000000000000000000000000000000a708114c3daf427c2287a8cc7b20bbf540", + "0x000000000000000000000000000000000012e877f11410cb19a1b65654d7a9a4", + "0x000000000000000000000000000000eecef20dc187efe319d6d994576c7984e4", + "0x000000000000000000000000000000000025d0b777fa9195c3889979d8bdca17", + "0x000000000000000000000000000000630835f8b02fdbf88fa9f803464e1588d0", + "0x00000000000000000000000000000000000987c92dcb61aa77a4bca7fc862274", + "0x0000000000000000000000000000004128f632e49e1fb817c6a63d034baddc71", + "0x000000000000000000000000000000000020ebd3fce9f06ce46dce12d2d6ed8b", + "0x00000000000000000000000000000094d6f1a5b810038f921f5ef96ca8c381fe", + "0x00000000000000000000000000000000000b7f422cfaf66ca1231d8f908b002f", + "0x000000000000000000000000000000fc2a6cf036ce1e53d0f1f0820fe61b8925", + "0x000000000000000000000000000000000000ca6ab9a91c364ac73da91f9e4861", + "0x0000000000000000000000000000006661f8fa01bbf42cb03d003860f0475fe1", + "0x00000000000000000000000000000000001af7764ea6117c2f5c85cce9c4b4bb", + "0x00000000000000000000000000000002e93aed6fc9f55324a043557f6f623532", + "0x00000000000000000000000000000000000fdf4efc34c49b86255faef79f636e", + "0x0000000000000000000000000000006e56b2a7c09a0f926b71c9490ca0f0afc6", + "0x00000000000000000000000000000000001f5b6d1d86034032b007f53e25deb6", + "0x0000000000000000000000000000009e5a26f8cda8dcdc5b5dffb8ba94a80b9b", + "0x00000000000000000000000000000000002183203a13886ffb96b096e09303c2", + "0x000000000000000000000000000000905997808014e14f4d4525f54102a6af83", + "0x000000000000000000000000000000000011bcef7d91186257889c98a4f9b8fa", + "0x000000000000000000000000000000abed5471cb69d3ee35fdfb79ae46e4d106", + "0x00000000000000000000000000000000002025cadc36892461577944c38205bc", + "0x0000000000000000000000000000002c580ae3a90d49840dad60d01780379b09", + "0x00000000000000000000000000000000002f24a51bf1616f4d10b49d19cd04c3", + "0x0000000000000000000000000000004c935af29f995c6c246ad595ff31519163", + "0x00000000000000000000000000000000000b7b0490fbbc1c076e2723e7882150", + "0x0000000000000000000000000000001afb592e87cbc44fad4becc07ec6851138", + "0x000000000000000000000000000000000003f66d241dbc07e7ebc609f71f3a72", + "0x000000000000000000000000000000801ffdcc23bd998ba0f9065d41b1554451", + "0x0000000000000000000000000000000000257a1265c5a8c2ca6baf9d8057f30a", + "0x000000000000000000000000000000e7da4c9f33c5cb5a2fa344f7e19d7b8266", + "0x00000000000000000000000000000000000ee3f98dd8d4718cb7b58f5f7bdcba", + "0x000000000000000000000000000000527cd215fcd6e07c908a273461bad875e0", + "0x00000000000000000000000000000000000f4de6a9adb91b361738572f7cdb99", + "0x000000000000000000000000000000b30c648caa22d5a4fe4bb12c1c00cbe8d9", + "0x0000000000000000000000000000000000179eaca96c64206b2c1e37c7f6666f", + "0x00000000000000000000000000000032f883c627b6cc9031113ef29c3a27f85a", + "0x0000000000000000000000000000000000057a5fa408ddc9acffd3cc86905b81", + "0x00000000000000000000000000000044fd1fa5f029f60bb3720505f80f7f01d0", + "0x00000000000000000000000000000000002f38f2697901e5f246424c9cd53030", + "0x000000000000000000000000000000753670b8a744c46cd0690e0afa5a8e9edc", + "0x000000000000000000000000000000000016b5265a785a4515a87d698f6bb302", + "0x000000000000000000000000000000bebbdb3e9945e0acedeb11fb63213601cf", + "0x000000000000000000000000000000000014b34f9693f00240ad54d405dccca5", + "0x00000000000000000000000000000055b657bd18e17712cec1d147585a2eac5d", + "0x0000000000000000000000000000000000100f9995ee34c58d688c26185b9736", + "0x000000000000000000000000000000917d7d8a20dd72aa5cef9c35968cd5278e", + "0x00000000000000000000000000000000000afa02205eb445fdb022d80525bc37", + "0x0000000000000000000000000000009a2a3af04bf1fea0357da087832494aad1", + "0x000000000000000000000000000000000021f9284c93413b0aaee3d1d118ee9d", + "0x00000000000000000000000000000005aef7da150d1f8a565811c3b219f819ac", + "0x00000000000000000000000000000000001dc7f57ac44b84db49e3a3dec9a275", + "0x000000000000000000000000000000b0cc4afba15c26503e9d421235333ef737", + "0x0000000000000000000000000000000000249795b9226cc070b35bf18f068468", + "0x000000000000000000000000000000a1df7d029b9ff4ee2daa206366393a7f31", + "0x00000000000000000000000000000000002a3f1db615617f2856ecabbfea3662", + "0x00000000000000000000000000000008b2769342754a7fb7764ba017cc543239", + "0x0000000000000000000000000000000000089d976f0a0dda0128ed6e5328907e", + "0x00000000000000000000000000000040aca0f2e0b6d770a2cf109a76532ed852", + "0x0000000000000000000000000000000000150652cf9f6b08bc31ddd4d3499362", + "0x00000000000000000000000000000049a9a7fc74679e24111f0349561c3f5be8", + "0x00000000000000000000000000000000001d751d973e4b64092b3cc8513f0a24", + "0x00000000000000000000000000000025b56a9d19de3a92e0578bc12373abad43", + "0x000000000000000000000000000000000006672a2f08656e68b0e298139a8558", + "0x000000000000000000000000000000870f121db70afc1411a31f5de38a65e652", + "0x00000000000000000000000000000000000a809bd48dc7ac613f62898ee9d058", + "0x000000000000000000000000000000dcd70143ba7789af0ba2b0ced39aa6c031", + "0x00000000000000000000000000000000002b2dc2aa64d7fbd3f023315aa26f9a", + "0x0000000000000000000000000000007e8aa43cd4201c3d7635a6a1d97d188d4e", + "0x00000000000000000000000000000000000f77c508797e4e19f7ce2a5f1730b9", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000001eb58630a1a302b5f29bc1ff8a4f61e6a3", - "0x0000000000000000000000000000000000031b753f5744ae1e0ff590d5c8e4bf", - "0x000000000000000000000000000000459e02f2a9893120bd84f0bcaa5ba3b2e2", - "0x00000000000000000000000000000000000381e07389d60d19fe783b2909eeed" + "0x000000000000000000000000000000284d252457c0445e48eb8f5c3d1c78a081", + "0x00000000000000000000000000000000002abf3cbc34ba2a63ce48168ac2a842", + "0x0000000000000000000000000000002e14916d032cfc24f7b35b5781862c5f0b", + "0x0000000000000000000000000000000000169222d74303fd96f50eb51cefabdd" ] -hash = "0x23348b060c3d86d42eb56e6ea4760ea83b5311c634cbdf24d481fec575259a26" +hash = "0x2d37af6559f8764d8fa73b0ed049ad7bf38c1497a428a480900cd1f6a82c2011" [inputs.previous_rollup_data.vk_witness] leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" sibling_path = [ - "0x2b435003f8031d437a5c3b194b7b4e3590a4b77d710d4439d95aead4abafedf7", - "0x1f7742ec15b2aa0234c42bb1286644e70373561dd95424b038c00e23f2411f22", - "0x2e133e22d161c41043ea7ef2758c7b51be0ada628afa5a0cd7ebb2b258134721", - "0x2fa9633929cccbcc4776c410cc5f4315b5a3cc9f91de60871a3e8d7a5503505c", + "0x1d5d57a7fb39980680d9e96aca49c670f2bc0539912d74161a9af065459bcbdf", + "0x02dbc4c00d840fd2f9e1474a041bd4bf2864077f20c527114bf523af58330d1e", + "0x20327946d4b0480337a05b934ae548cf54166d7e47e4cf507b80e22807d950d3", + "0x1c928e7bfd756013034a6faef411dd7b791ce88c9f42adb22a032f461bee9ac9", "0x0a5cccc6f5c49119df17ad49125046e1f8ade560372f415e56d28bab8a1fba34", "0x042567ea670fc3ff2b8c48b244f6a0c96944c6b969143cf0cfacfd97e5b929aa" ] diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-block-root/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-block-root/Prover.toml index 436a86202119..f688aad83d46 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-block-root/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-block-root/Prover.toml @@ -3,57 +3,57 @@ rollup_type = "0x0000000000000000000000000000000000000000000000000000000000000001" num_txs = "0x0000000000000000000000000000000000000000000000000000000000000002" out_hash = "0x00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb" -accumulated_fees = "0x0000000000000000000000000000000000000000000000000000000036de7cfa" -accumulated_mana_used = "0x000000000000000000000000000000000000000000000000000000000001b937" +accumulated_fees = "0x000000000000000000000000000000000000000000000000000000001be24634" +accumulated_mana_used = "0x000000000000000000000000000000000000000000000000000000000000e07f" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants] - vk_tree_root = "0x0e88f44969aa6d4ff0d17db376dfa057ed3aa447725b0febf35af08e0d1d468e" - protocol_contract_tree_root = "0x1ed87d453cb7c21c5dbca65441925b3f9138fd1433928dda23342367bf94f7c0" + vk_tree_root = "0x2ca9a33f5bf72a45ff0bc18657afa956eb151243a9bc9d3c113e4c711634fd7e" + protocol_contract_tree_root = "0x2d4c1fe46d355909b04374f3890ac9b6649eabcd85e2c8dd82e237c5808626ba" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.last_archive] - root = "0x00a03e097c9f5f687c2f39ebede1ea64f99cebe6e9b857a8a5ae772e5e39dbf5" + root = "0x2bbf3efb1d9ded1f0b832e85a76cf870890bb247932f227a1a719caccbf2c08c" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000013" - timestamp = "0x000000000000000000000000000000000000000000000000000000006808179b" + timestamp = "0x00000000000000000000000000000000000000000000000000000000680a0d04" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.coinbase] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fd6" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fcc" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.note_hash_tree] -root = "0x2a210f33edaa26344e4020ae52e79f6a85441af233181925ba9318ee9dee8459" +root = "0x1b1744762a36bdf22968c082e560e62c7436825aa5febe023b0cbd7dc914c9a7" next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000001c0" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.nullifier_tree] -root = "0x26e385201b7b194a3116edd3095eb08c3426a090e12f0c3be2e7f4c9e1c97d68" +root = "0x0c28b79cc1be09f56e4ef8b7c60878a0b5de05639aaea24b1a28550bee682dc4" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000240" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.public_data_tree] -root = "0x1955da4d91ed3a7a9ca53b7cbebcc4c8454a26666a95894186f81c6b61a17f89" +root = "0x0306a5673c379f0789056b7cf87f08f175768751bbb35616068be0dcdb117f34" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.note_hash_tree] -root = "0x2a210f33edaa26344e4020ae52e79f6a85441af233181925ba9318ee9dee8459" +root = "0x0093fc4d0088ca8f86738c65d9d63e4bb39a2c6be2a83fcf6b69af8abd34cfbb" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000240" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.nullifier_tree] -root = "0x0d4615ea8ded14fbe3a6827ffdb73e12089560d3b764eeb5c4e030e1055e3657" +root = "0x1b686f58a0701c79d6081a01f1e7ef2c5a4ac6314197d80993d8c68fd099b94e" next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000002c0" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.public_data_tree] -root = "0x05ae2908ae282dce5403098eb79b25a877286e8a6e86ba9e3b4ff01aaf4d41e0" -next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008f" +root = "0x23111304e36d67b20dc68b03e6e75905c34ab30732396a0377fdb9b8b0fb3676" +next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob] fields = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -75,22 +75,22 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 squeeze_mode = false [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob] - fields = "0x0000000000000000000000000000000000000000000000000000000000000016" + fields = "0x0000000000000000000000000000000000000000000000000000000000000050" expected_fields = "0x000000000000000000000000000000000000000000000000000000000000005c" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob.sponge] cache = [ - "0x00000000000000000000000000000000000000000000021e19e0c9b0f985d386", - "0x06615e4b566a640e99213edb664c8c0b49c5e833c3a4b16116fe1de9d06382da", - "0x09fd5c7c298012061da066dcf7be4f12f36076f057acc0938e10ea9053c6e792" + "0x0ba141be7707b610effe839006ce19b56369c383fd75436de163b39fdcf809d1", + "0x00000000000000000000000000000000000000000000021e19e0c9b116aabe40", + "0x0eaa5f9a2339cab09e553484a4b465925e63f182ba64af15e0617743b623872c" ] state = [ - "0x1b9cbb362a628a340df827668a5d69b02696af12e06d2caeba8c017d0359453f", - "0x27b1a802172a0a3bf0ac4ca37e0e63643318d443b294c5822742887425cc6a4e", - "0x28ad9cce1de3b1b07607dcd3de4d667dc01af6d8a5ecf0ae73c7e9ac8da2a80c", - "0x1f5972306d7067e3ee6f71c2978e6d62e9fdac96dc9a1214a552608d3fbfcb57" + "0x075c433a0db82458a5150114df4037f90adf457ea11d479e5d3cbba525e682ff", + "0x1dd1d22f016dfdcbec2b674a6c54d8c4aa9b77a9df0226997739b87dcd5c438b", + "0x196f6f03376b2f7bb2dfb30c1c54db84c86f4e622795be33040fd43d420a7ef4", + "0x1cad5bf6a68c3c8d188d3ac0ca29d22650ea4613960a5ba2334abf6ddd78e666" ] - cache_size = "0x0000000000000000000000000000000000000000000000000000000000000001" + cache_size = "0x0000000000000000000000000000000000000000000000000000000000000002" squeeze_mode = false [inputs.previous_rollup_data.proof] @@ -639,90 +639,90 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000034", "0x0000000000000000000000000000000000000000000000000000000000000044", - "0x00000000000000000000000000000023688700f2ec6120152ccc3911683bc64b", - "0x000000000000000000000000000000000008d96b9410dfefa02a86e2a0731199", - "0x00000000000000000000000000000087c8ee22b2fe2160ec8dd4c290937d84df", - "0x00000000000000000000000000000000000773c44d9fa3dbcfba6f041774a1ea", - "0x00000000000000000000000000000003838adfee820a464f464d47adfd2000d0", - "0x0000000000000000000000000000000000006aa23b160e600df5a42b25ab1f10", - "0x00000000000000000000000000000015f6af83b73e201afc509df099590d9465", - "0x000000000000000000000000000000000015f2e933b1e9fb6c5d6efa3c772194", - "0x000000000000000000000000000000b1f3a109cde1cd40c1d6696c7bd1ff6168", - "0x00000000000000000000000000000000002989547053368de49120675a5378e2", - "0x00000000000000000000000000000070b03b6a5cefbc004ad85d9bb0357014af", - "0x00000000000000000000000000000000002c716c26fa8335491fcfac80c51696", - "0x000000000000000000000000000000bf438c55417cd40ebaf89d190b93f5e71c", - "0x0000000000000000000000000000000000262727220f13af69351fad3c3081a0", - "0x000000000000000000000000000000c58609ad5ca5cf230155560834585ee44f", - "0x00000000000000000000000000000000001c0139f692a5a406804d724f9bad6e", - "0x00000000000000000000000000000064e5f6ebc5575a196cc800f7adc6bec32f", - "0x00000000000000000000000000000000001034bd6ab708ba479e5a4f7845985b", - "0x000000000000000000000000000000ec4ee86a97a5725508401cab31477eff1a", - "0x0000000000000000000000000000000000233c6f080591e1912d4663f1a29776", - "0x000000000000000000000000000000d714f173ee5823275ea8161be0adee0476", - "0x000000000000000000000000000000000008e8eb8bdb34a4327e7f7001ac7c28", - "0x00000000000000000000000000000014b865807fc6c828d7ebd65babebaba31f", - "0x000000000000000000000000000000000013f063e250bb0513b14d8f87530ed3", + "0x00000000000000000000000000000043f6116a5cea185e509c9911a66398b11c", + "0x0000000000000000000000000000000000023089b4bbef53e5ffffe6ebc127f3", + "0x000000000000000000000000000000c9118cf878e7fa8fcee46c120dce4045b9", + "0x00000000000000000000000000000000002a90482a24e1b99e39eb40e466b98c", + "0x000000000000000000000000000000ba616bb6d51baca584c302469757d1805f", + "0x0000000000000000000000000000000000116ccfac719ee0e8088a26209dab4f", + "0x000000000000000000000000000000214419e09d6bb7e7d4b74a8834757a0f94", + "0x0000000000000000000000000000000000264c8e7e037c8b874a2b35cdacba32", + "0x000000000000000000000000000000d32743e14b3aeb1023f17a49ec0a8facf3", + "0x00000000000000000000000000000000001c8703f338f157522288f6ac46ac91", + "0x0000000000000000000000000000007bd5e134cebebe8c2f7e3d0420420794b3", + "0x0000000000000000000000000000000000145cb58180aa1abd3898ea5924ed1a", + "0x0000000000000000000000000000002238c195f081ce8deb7c534d771ddcaf77", + "0x000000000000000000000000000000000022e1a189c584b63da14fe565667fa6", + "0x0000000000000000000000000000000f9d20e3f64147c0aeb376d8a15f8f3ec5", + "0x000000000000000000000000000000000007947c8acacbc5eac69a7e840cf0cc", + "0x0000000000000000000000000000004ea6c16ba743d23c8c13a9e339c4931dc2", + "0x000000000000000000000000000000000013011eb030a10e1886b95a5b700a6f", + "0x0000000000000000000000000000003ebbc42312af66c106a6b67ce442a9333b", + "0x00000000000000000000000000000000002e5e68066878fb80f3ff96fab80bd6", + "0x0000000000000000000000000000006e62e8f5a58cb4a51d1f506046fdf2eeb2", + "0x0000000000000000000000000000000000075b6a187050a3cb1a50673ffdfc4a", + "0x0000000000000000000000000000002167e0a06a8b5a56d4333b091826006234", + "0x00000000000000000000000000000000001b8570f531d70ffe9d8adcb3eb541c", "0x00000000000000000000000000000071810e31f4f779c964d1dbc69bedfc1dcf", "0x00000000000000000000000000000000000450fef0cb3f70a9a9f8c263497c32", "0x000000000000000000000000000000c744ce72df743a59aa4dc765dc6c5a2ab3", "0x00000000000000000000000000000000001730dbb1a13afc4166953bd769ee0c", - "0x000000000000000000000000000000f666e21008b6780902cdb6667f92315556", - "0x00000000000000000000000000000000002f58e7eeda89c854213554af4d4fdd", - "0x0000000000000000000000000000001fe03c57ab9825eeddb4e269edc314df0c", - "0x00000000000000000000000000000000002836a42aa7aef1071a359d537cac70", - "0x000000000000000000000000000000b0e4d113a8e9aa20a9f634dd8eb2fab33c", - "0x000000000000000000000000000000000008a863ad160a93c94884d74fab9166", - "0x00000000000000000000000000000043c469e22b725a9917b00f756c1a7b136b", - "0x000000000000000000000000000000000002ecebfecef3674ecf4813389d006a", - "0x0000000000000000000000000000008106df3a7b6b43a110f3817ec7753b310e", - "0x000000000000000000000000000000000027c25a77dce7649df06d2140226eb4", - "0x000000000000000000000000000000591a350b25603b367b151ccc70fe6f5d82", - "0x0000000000000000000000000000000000125662351cfd70c733a9ad2f38c558", - "0x000000000000000000000000000000edeeb160da1e90d50778fefba2b7cb95ba", - "0x0000000000000000000000000000000000198bcf9da50bca2f87ab58809949df", - "0x00000000000000000000000000000033f9cf9d6ce4284818061f8ebeddfc6194", - "0x0000000000000000000000000000000000168eda044ae4a158814b25872cd6cf", - "0x000000000000000000000000000000d1ee7ccb1fedf996f7924b112745019229", - "0x0000000000000000000000000000000000024c1af5a8002e5883b64e34a4c57a", - "0x0000000000000000000000000000001efc8c413da11616dbf63d82f911a80d9f", - "0x00000000000000000000000000000000000e301ccc0737ad90a9d181e266cd00", - "0x0000000000000000000000000000001edb022bbebc3f13356e6528eb55b0c284", - "0x0000000000000000000000000000000000078b4f8f85255ccda43738fde34101", - "0x000000000000000000000000000000b6709f64e4df78515d08b9c5e353d99cd1", - "0x00000000000000000000000000000000000b7656360b2da2d7c017e7e8884911", - "0x0000000000000000000000000000003ff7cd6974a1bcdba3693f67a622cff1bf", - "0x00000000000000000000000000000000002dba878eff5fa58806197dd3e352f8", - "0x000000000000000000000000000000c5cc732e1eb8db1a6deb1fc2758105716f", - "0x0000000000000000000000000000000000178bf2f09a9bdd8048721fa84bc393", - "0x0000000000000000000000000000004cd017ad6e2769446edd2b383653632248", - "0x00000000000000000000000000000000002e837faa3dd40530e19373108e3fde", - "0x0000000000000000000000000000002b3a46ab919ada5a1f0f86a5edfafcef3f", - "0x0000000000000000000000000000000000245a892b62edca16cd6311cf44d93d", - "0x000000000000000000000000000000f4e2624ff03591b247653e7e549bf26514", - "0x000000000000000000000000000000000000ccedb69af766bc2f2c1ba40254ed", - "0x00000000000000000000000000000014dad3647464706b5860eb906958314223", - "0x000000000000000000000000000000000023812a7bb7fa036c261351e2cc4191", - "0x0000000000000000000000000000005c7d33de8df768e9e6a1ec570f38757cb2", - "0x000000000000000000000000000000000020d448a0cc1180554f5ae317abaeaf", - "0x000000000000000000000000000000498a4ec6e75565fd2b4a9b09caeb078ac6", - "0x000000000000000000000000000000000022c8f8f828c7671c3c8b7122baae8c", - "0x00000000000000000000000000000043829bb48aaad1701153cd51600f0e45fa", - "0x00000000000000000000000000000000001072e42d5461decdf6e72bcb92d5d0", - "0x0000000000000000000000000000004f2de6763bcc91447e21f6e1273c984edc", - "0x000000000000000000000000000000000024030a6dccd5839b31fe1171eab758", - "0x0000000000000000000000000000006aa1476286abd094b4bd0717bcfa9562e3", - "0x000000000000000000000000000000000017b6fbef29460eea4a353743cb6223", - "0x0000000000000000000000000000004f28e22c4cc1b6d033d430e4a649c69b47", - "0x00000000000000000000000000000000001dbbdd487b0ca33e0a80d94cb15781", - "0x000000000000000000000000000000b31819678cd0ce47ea09d423725d19a87c", - "0x00000000000000000000000000000000000a832aa1dd3eb11a411de1db9c4e33", - "0x0000000000000000000000000000000c9d34f2fb549709c82f23861489447513", - "0x000000000000000000000000000000000014cfcb86eeb907f666d651a33ea9c9", - "0x0000000000000000000000000000006984fb75c0f1ec9b706c159248661cff4b", - "0x00000000000000000000000000000000001ac7c9725bd26462a700443f19ad5d", - "0x0000000000000000000000000000009d206f79ad2142798b0b894760e1cc3fe6", - "0x0000000000000000000000000000000000143b904ad4499247c661697393214b", + "0x000000000000000000000000000000cfade7b9f23a3e23e85765e374e962ceaf", + "0x00000000000000000000000000000000002974f9701156cc72dd107cec5fe012", + "0x0000000000000000000000000000009b830aa6ff0d34c0f26c504bc05efd7ad8", + "0x00000000000000000000000000000000000f0f6d589df5b377ef33f9637f95bc", + "0x000000000000000000000000000000bbc71914615488973f77ef743a213a9233", + "0x00000000000000000000000000000000001ea6edd3ae66eb7cb3d1f48ed46598", + "0x000000000000000000000000000000b8e2b914923dd7f495dd7d79524fc38f0e", + "0x000000000000000000000000000000000029d666a9069851fdb5a2b2508411ba", + "0x0000000000000000000000000000000d45427f70bf3a5cc86190ae99602c2e44", + "0x00000000000000000000000000000000002b7a40182cbcd9b3e1a0501400fd49", + "0x000000000000000000000000000000d1bd4a3c6d5120469e0e49cc9b8f44cddb", + "0x0000000000000000000000000000000000060517c0214218c7f931a8fd9e5708", + "0x0000000000000000000000000000008415ac36f635560073dd67662460d8cd2b", + "0x000000000000000000000000000000000018f6f96b9145716ab6712069bfebec", + "0x0000000000000000000000000000008db2e1537dfa222bb93497f87ef33ee4ae", + "0x000000000000000000000000000000000027674110298789b46e2beda1bfdb53", + "0x0000000000000000000000000000008f09c110eca9cd8018245729db096ad37e", + "0x0000000000000000000000000000000000167da588cbad4b1682e32114c63723", + "0x000000000000000000000000000000c32184b45d60f58bd62c2b0a9496988a70", + "0x000000000000000000000000000000000028eff6b71913e0ed94af3f21605b7f", + "0x0000000000000000000000000000007222ca3c441dcfb264881c5f41266f1f35", + "0x000000000000000000000000000000000017fa7f46a938eb14c03c521e051272", + "0x0000000000000000000000000000008f86d3c7258714e2147225539d11663861", + "0x00000000000000000000000000000000000d5b47d3e91802087cea0deae20683", + "0x000000000000000000000000000000a116a3b2d03877215df0e364a51a1e186e", + "0x00000000000000000000000000000000002b233cdeaee8877b41ce6c4748663b", + "0x000000000000000000000000000000646e65591de2c8b1719dd1c1e62c22c954", + "0x00000000000000000000000000000000000844f34852c41664710a7d778a4fdc", + "0x000000000000000000000000000000f84b2b431c0b0d4e1a03069bba41379e18", + "0x00000000000000000000000000000000001d5b49efa1fb72ebcfd50a8612f961", + "0x00000000000000000000000000000038113d8e5d61c5f5d4f6c22163846eafc3", + "0x000000000000000000000000000000000007121cee7da710f51e64cfbd4d3a24", + "0x00000000000000000000000000000079332ba5685c9e02a428f5ecee04f33db2", + "0x000000000000000000000000000000000001cc080e0213c4f90c4d58545abe01", + "0x000000000000000000000000000000e01723ad5e58887bee09afc68d0dfe6728", + "0x00000000000000000000000000000000002608a493621d650a4056670264cebd", + "0x000000000000000000000000000000d55d1e137f975debf94d7a33e8d74de6e1", + "0x00000000000000000000000000000000000c8736f365f5bb8ee0d9b07b4dadf0", + "0x0000000000000000000000000000003db77799f267c35c36908155077b0af7c0", + "0x0000000000000000000000000000000000222db905fce69dad0d690c31911283", + "0x000000000000000000000000000000993866a874748615c46b1509061606d6c3", + "0x00000000000000000000000000000000001167e0bf67d37e2da40e19b809d52e", + "0x000000000000000000000000000000579a66a020e12eb5749db58074c8cce6d7", + "0x00000000000000000000000000000000002eb9f894dcd06c274dafbde67c5a8d", + "0x000000000000000000000000000000af32aa962e9a699f966f28fd0d09692587", + "0x00000000000000000000000000000000000a0eba9726d156b11f56f586a68f99", + "0x0000000000000000000000000000005acef4393c4a3577265c3a27b61723df6a", + "0x0000000000000000000000000000000000254d8ff8371a77d0d003d1d55c4c91", + "0x0000000000000000000000000000008bd9f818a4d3882259427b951850e4e6e7", + "0x000000000000000000000000000000000026c31e0814279876fe8d6423b11c60", + "0x0000000000000000000000000000003c5e0dc7ef31f54f2846aea6a832e2fb06", + "0x000000000000000000000000000000000028ce86290fb868caaa0fdfb6c938b0", + "0x000000000000000000000000000000283b23e48139c64ac93b01a75f93a5f1c8", + "0x0000000000000000000000000000000000200ffaca81a91e06ac787d6b7728e1", + "0x000000000000000000000000000000d60167ba3bca9acca1dcc0af52e9337a29", + "0x00000000000000000000000000000000002141d43aee5067e5f15358474cc992", "0x000000000000000000000000000000124cb4ae53dc6564c3df03730ef7a6da5e", "0x0000000000000000000000000000000000164aec94a3d3289d4eb305da1a05ec", "0x000000000000000000000000000000ce4fd05922a89a6a4b10ebec049e0b9058", @@ -743,20 +743,20 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000f94b2fbfb170675c43b7420ecea2675dd5", - "0x0000000000000000000000000000000000118cdd6c0ec4f20ef48d1a8df0f201", - "0x00000000000000000000000000000084aaef2826bc76c65f6d1cc4f133d39d46", - "0x0000000000000000000000000000000000265d3c8a327a4d5823af48dd10e220" + "0x0000000000000000000000000000008ef86b20aca05bc3d49a301f54fd4f9240", + "0x000000000000000000000000000000000027650b7cc0e2955eded074efb78412", + "0x0000000000000000000000000000005fdc5ab664a74fa0d3dade93952dbb8ba6", + "0x000000000000000000000000000000000022593d5705dbb6f4ca2d24a3311b55" ] -hash = "0x2b435003f8031d437a5c3b194b7b4e3590a4b77d710d4439d95aead4abafedf7" +hash = "0x1d5d57a7fb39980680d9e96aca49c670f2bc0539912d74161a9af065459bcbdf" [inputs.previous_rollup_data.vk_witness] leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" sibling_path = [ - "0x23348b060c3d86d42eb56e6ea4760ea83b5311c634cbdf24d481fec575259a26", - "0x1f7742ec15b2aa0234c42bb1286644e70373561dd95424b038c00e23f2411f22", - "0x2e133e22d161c41043ea7ef2758c7b51be0ada628afa5a0cd7ebb2b258134721", - "0x2fa9633929cccbcc4776c410cc5f4315b5a3cc9f91de60871a3e8d7a5503505c", + "0x2d37af6559f8764d8fa73b0ed049ad7bf38c1497a428a480900cd1f6a82c2011", + "0x02dbc4c00d840fd2f9e1474a041bd4bf2864077f20c527114bf523af58330d1e", + "0x20327946d4b0480337a05b934ae548cf54166d7e47e4cf507b80e22807d950d3", + "0x1c928e7bfd756013034a6faef411dd7b791ce88c9f42adb22a032f461bee9ac9", "0x0a5cccc6f5c49119df17ad49125046e1f8ade560372f415e56d28bab8a1fba34", "0x042567ea670fc3ff2b8c48b244f6a0c96944c6b969143cf0cfacfd97e5b929aa" ] @@ -766,75 +766,75 @@ sibling_path = [ rollup_type = "0x0000000000000000000000000000000000000000000000000000000000000000" num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" -accumulated_fees = "0x00000000000000000000000000000000000000000000000000000000093bd180" -accumulated_mana_used = "0x0000000000000000000000000000000000000000000000000000000000004a40" +accumulated_fees = "0x000000000000000000000000000000000000000000000000000000002423e5a0" +accumulated_mana_used = "0x00000000000000000000000000000000000000000000000000000000000122f8" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants] - vk_tree_root = "0x0e88f44969aa6d4ff0d17db376dfa057ed3aa447725b0febf35af08e0d1d468e" - protocol_contract_tree_root = "0x1ed87d453cb7c21c5dbca65441925b3f9138fd1433928dda23342367bf94f7c0" + vk_tree_root = "0x2ca9a33f5bf72a45ff0bc18657afa956eb151243a9bc9d3c113e4c711634fd7e" + protocol_contract_tree_root = "0x2d4c1fe46d355909b04374f3890ac9b6649eabcd85e2c8dd82e237c5808626ba" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.last_archive] - root = "0x00a03e097c9f5f687c2f39ebede1ea64f99cebe6e9b857a8a5ae772e5e39dbf5" + root = "0x2bbf3efb1d9ded1f0b832e85a76cf870890bb247932f227a1a719caccbf2c08c" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000013" - timestamp = "0x000000000000000000000000000000000000000000000000000000006808179b" + timestamp = "0x00000000000000000000000000000000000000000000000000000000680a0d04" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.coinbase] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fd6" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fcc" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.note_hash_tree] -root = "0x2a210f33edaa26344e4020ae52e79f6a85441af233181925ba9318ee9dee8459" +root = "0x0093fc4d0088ca8f86738c65d9d63e4bb39a2c6be2a83fcf6b69af8abd34cfbb" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000240" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.nullifier_tree] -root = "0x0d4615ea8ded14fbe3a6827ffdb73e12089560d3b764eeb5c4e030e1055e3657" +root = "0x1b686f58a0701c79d6081a01f1e7ef2c5a4ac6314197d80993d8c68fd099b94e" next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000002c0" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.public_data_tree] -root = "0x05ae2908ae282dce5403098eb79b25a877286e8a6e86ba9e3b4ff01aaf4d41e0" -next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008f" +root = "0x23111304e36d67b20dc68b03e6e75905c34ab30732396a0377fdb9b8b0fb3676" +next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.note_hash_tree] -root = "0x260d93cb714eb47e56e7527239617cf3b1cd72af5fa6cc21dad7b4cfb278997a" +root = "0x0093fc4d0088ca8f86738c65d9d63e4bb39a2c6be2a83fcf6b69af8abd34cfbb" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000280" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.nullifier_tree] -root = "0x1ddc49f96c8241468a439e3228cfacca3fe101bb60ecb089ae1e05fca1a7bd87" +root = "0x18d610eff0bd1bd85cce6e38e89f49609d8c91ae3ede88cdf18acf728979dd2d" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000300" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.public_data_tree] -root = "0x22b9fd687387ff560b10f96660c9c625231788ea917b9c5a5301d7880db82144" +root = "0x00e48e8c29cf89239d24810fd3afd21297b97e2ff944a39c7531581335ab8ec9" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008f" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob] - fields = "0x0000000000000000000000000000000000000000000000000000000000000016" + fields = "0x0000000000000000000000000000000000000000000000000000000000000050" expected_fields = "0x000000000000000000000000000000000000000000000000000000000000005c" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob.sponge] cache = [ - "0x00000000000000000000000000000000000000000000021e19e0c9b0f985d386", - "0x06615e4b566a640e99213edb664c8c0b49c5e833c3a4b16116fe1de9d06382da", - "0x09fd5c7c298012061da066dcf7be4f12f36076f057acc0938e10ea9053c6e792" + "0x0ba141be7707b610effe839006ce19b56369c383fd75436de163b39fdcf809d1", + "0x00000000000000000000000000000000000000000000021e19e0c9b116aabe40", + "0x0eaa5f9a2339cab09e553484a4b465925e63f182ba64af15e0617743b623872c" ] state = [ - "0x1b9cbb362a628a340df827668a5d69b02696af12e06d2caeba8c017d0359453f", - "0x27b1a802172a0a3bf0ac4ca37e0e63643318d443b294c5822742887425cc6a4e", - "0x28ad9cce1de3b1b07607dcd3de4d667dc01af6d8a5ecf0ae73c7e9ac8da2a80c", - "0x1f5972306d7067e3ee6f71c2978e6d62e9fdac96dc9a1214a552608d3fbfcb57" + "0x075c433a0db82458a5150114df4037f90adf457ea11d479e5d3cbba525e682ff", + "0x1dd1d22f016dfdcbec2b674a6c54d8c4aa9b77a9df0226997739b87dcd5c438b", + "0x196f6f03376b2f7bb2dfb30c1c54db84c86f4e622795be33040fd43d420a7ef4", + "0x1cad5bf6a68c3c8d188d3ac0ca29d22650ea4613960a5ba2334abf6ddd78e666" ] - cache_size = "0x0000000000000000000000000000000000000000000000000000000000000001" + cache_size = "0x0000000000000000000000000000000000000000000000000000000000000002" squeeze_mode = false [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob] @@ -843,15 +843,15 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob.sponge] cache = [ - "0x001ce4f3d134647866f72d6f50e61f9a03236e439c80d549b6be02b4a126155d", - "0x00e0929b75660ef4b8538a0db70f0ad32b4f3ab5fbfba158744245ea462af1d3", - "0x00ce76a2eceded7a4b0ec9c86fde363a95b21ff5f6e3bc8c921d86d497f257a3" + "0x0ba141be7707b610effe839006ce19b56369c383fd75436de163b39fdcf809d1", + "0x00000000000000000000000000000000000000000000021e19e0c9b0f286d8a0", + "0x00000000000000000000000000000000000000000000000000000000000003e8" ] state = [ - "0x13c431fbb30a9d5e6d7e5e18dd5db7615787ab240e9978b7bf04e81e241e7f41", - "0x0683928b77d53d31dd6287d5f646d36433d5f4e74f2557502deb4e696734bec9", - "0x25226d8b2a717f3784b211e7e6ded881ebd5da20e8262c800ebe0bd393b1fe0e", - "0x0d47a147ca0697555fd0ef6aa0a53164d887336b3ba517e46e54c161f10be280" + "0x2577ce1d5072a367ea528375323460748a6ad318292ed4be9edf83270513286a", + "0x0505276dd83cf88c6a3af3f889f4ee4c1dc9de704909e4b1902485c5ce779172", + "0x189d7b00cd3ff25ec07c6e4c8ab20fb106e3782d452e3d1c12b5cf06a907aee6", + "0x2d52f1ae104174e03993ca9e779bd914e5045dcd535c39070fe071d6c15d14c0" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000002" squeeze_mode = false @@ -1402,90 +1402,90 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000034", "0x0000000000000000000000000000000000000000000000000000000000000044", - "0x000000000000000000000000000000521b9d4f83c543b2d84cfdc2bd2a98fb40", - "0x00000000000000000000000000000000001339c78afbaf20ae75727c7b732af4", - "0x00000000000000000000000000000080022768f68ea22b61825c0c21bfb8ac3d", - "0x000000000000000000000000000000000015ff4c9ac04d118866917d85503b7e", - "0x00000000000000000000000000000070713038ce33770306927dd8ca492322b2", - "0x00000000000000000000000000000000002fee639887369cd3a83579202b79dc", - "0x00000000000000000000000000000061bab45392977e273d132d7cb7a44ff202", - "0x0000000000000000000000000000000000155170bb6e84f41b220e351ccccd36", - "0x000000000000000000000000000000d762b23206e8619049ccdc3d9d72db53e8", - "0x000000000000000000000000000000000027b2187681c7d7d762978a8699d1ad", - "0x000000000000000000000000000000fb6231cdcee4bf02adf80ab4f5b4e1b7f7", - "0x0000000000000000000000000000000000158ff5241a1461fb0a35fd985ec474", - "0x000000000000000000000000000000c4953b141659032c469ce6770f016b7980", - "0x000000000000000000000000000000000006920ab0aa6f66843372f54781ca2b", - "0x000000000000000000000000000000c7af0b22593cce863a4a8ca0b240d074ca", - "0x00000000000000000000000000000000000dfdc634e7b62976f6ce0549fe233a", - "0x000000000000000000000000000000c1d033ae709c039af90b2234226cb5c4f8", - "0x00000000000000000000000000000000002dc468919a1be7cbd81296c1733377", - "0x0000000000000000000000000000005d502fdc01a9736a9219cf912d9694a2e9", - "0x000000000000000000000000000000000021aafb24e110636d9df075e9bc6b86", - "0x000000000000000000000000000000a7d84e314ba33098291f60dea80b20d68f", - "0x0000000000000000000000000000000000217076933f7d213145d14d14915da8", - "0x000000000000000000000000000000a16d19f8a7acf7d489e6271afc1b954c20", - "0x00000000000000000000000000000000001c765879c0be34217b869c3b7a9a67", + "0x000000000000000000000000000000af9c88751f58d61f042e640720a0a23066", + "0x00000000000000000000000000000000001225563adbbe76285b5d2f4506eb08", + "0x000000000000000000000000000000ad6bfa4bb51f3c4f899caceda72d69520a", + "0x00000000000000000000000000000000000717e53109c19a207905e54314143f", + "0x000000000000000000000000000000437f9f7d66a0522576e2fcfc80f8a67772", + "0x00000000000000000000000000000000000620855bd7afa125ed18963734e798", + "0x0000000000000000000000000000009b4b5735b19b352e6992e4e6ec0412a521", + "0x0000000000000000000000000000000000023474c36e77e7149cfa653883eff5", + "0x00000000000000000000000000000044543a47775019483badaec45f886582d3", + "0x0000000000000000000000000000000000291b45d4cacd05acc54c81c2cf9720", + "0x0000000000000000000000000000005ef932fbff5e8dc75c816e2711cf8a6669", + "0x00000000000000000000000000000000001359097ae404a0134058e9f01f2b4d", + "0x000000000000000000000000000000a410cd6dedac6ffee8a1e09222833f1510", + "0x00000000000000000000000000000000000aeb399ef4d65d73ba51cd9772943c", + "0x000000000000000000000000000000c568a8b049b0fd4e1b9bb3ce9608b6d9f2", + "0x000000000000000000000000000000000014f673ab8805dfecb0761bf1307775", + "0x000000000000000000000000000000a5ee4935d22a4c9a20b1a891a0f7241160", + "0x000000000000000000000000000000000028b915b0bc75d778b06e7fa64990dc", + "0x000000000000000000000000000000ab0f19324e4196c3a71b2b66d4e8f30faf", + "0x00000000000000000000000000000000000640002d6d1d813e777debbea88bc0", + "0x0000000000000000000000000000003eb2fd643f87db27ffe1a2ef71d336c832", + "0x00000000000000000000000000000000000462378bf88054e17663ff1097be0d", + "0x0000000000000000000000000000007863927c65042524ec8e8179185aceec36", + "0x000000000000000000000000000000000009ad5747c754f45465da75a929bbb0", "0x000000000000000000000000000000e7bab6896d9724b5b46b796551dc5feed2", "0x00000000000000000000000000000000001fd93debdcf16cc93f99efd69e938d", "0x0000000000000000000000000000004b94434e1705c9bc2a4f5b2bc2a05c3c03", "0x00000000000000000000000000000000002a29d5563fd08e454dace1605a1aa5", - "0x000000000000000000000000000000c605d0398cd0b2427c3c9c461bb8429b53", - "0x0000000000000000000000000000000000196952a7e4218337f71f1105909c3d", - "0x0000000000000000000000000000006cae2999b90655b65fb2612f6692e2adf9", - "0x00000000000000000000000000000000002dacb567e258b182d2aa0f0c2673e9", - "0x000000000000000000000000000000fa23b5130fb864af7b45be9abdfee90f81", - "0x00000000000000000000000000000000001b5f38c9b239993607e4bd64e1ec0e", - "0x000000000000000000000000000000bdd3479bd2de629e84156d2c0af3b2ef68", - "0x00000000000000000000000000000000001da27039bf77a359382fc0c56838d9", - "0x000000000000000000000000000000e7039a59b6348c66427f2c08e1b4a38415", - "0x00000000000000000000000000000000000d34616a91f79d7613bbfb94ed0d38", - "0x000000000000000000000000000000ffa72e0f4b9857447bc99abb6f83d42647", - "0x0000000000000000000000000000000000193a8bcc5d47c5f43e6cc581ac0eca", - "0x000000000000000000000000000000609f79166c04a86fef382541bd1c5ab9ee", - "0x00000000000000000000000000000000000db5fa9f0bd6341244daf0d59d7b4d", - "0x0000000000000000000000000000009d97a8c8a3a70077827e2478347af83d11", - "0x000000000000000000000000000000000014360d2aa26b853c45cc56f3ee4d6c", - "0x00000000000000000000000000000037daba742d12aec1b27f76d1d8eb3a1604", - "0x000000000000000000000000000000000010c19122bb08b25208f5814a2d9813", - "0x000000000000000000000000000000be2d452540b2e3de92b42c11ac9e70887d", - "0x000000000000000000000000000000000003735685535ef50a290d4f0f8ed48a", - "0x000000000000000000000000000000c3aa132938397ac9298dc4c631930c2bc1", - "0x000000000000000000000000000000000006842deb4d313e699e597b702ee51f", - "0x000000000000000000000000000000de052dfd6c354afef2580b20acf839687b", - "0x000000000000000000000000000000000029a034fd3752a404c9c1d34be06c6d", - "0x000000000000000000000000000000d1760e3a79672913c859049adbc670838c", - "0x00000000000000000000000000000000000e49d5809084137fc7bc71ba11ae4c", - "0x00000000000000000000000000000018da3c85d452ca91d4c8ae233f3d0ca0cb", - "0x00000000000000000000000000000000002c681b077e84d38c1602e9f572a11b", - "0x000000000000000000000000000000c3d40a67c4190b20133a492d8f79fbbc55", - "0x00000000000000000000000000000000002974c1b596b95212c42728a3f49557", - "0x000000000000000000000000000000f79eef4973eea5c82bd426545a37c7ed2d", - "0x00000000000000000000000000000000001ba2cfcf9b6a183c6c6657d58479ee", - "0x0000000000000000000000000000000e0432dd54f4992443978a547a3553f2bc", - "0x0000000000000000000000000000000000257ed05f3910112f34e3a6132c0f1a", - "0x000000000000000000000000000000febd659aed367ed7407b257704072b88ae", - "0x000000000000000000000000000000000019758526889ecf9801abc067968aeb", - "0x000000000000000000000000000000a3f503fe809fcdea4f4c89790ee9476c07", - "0x0000000000000000000000000000000000054ca4d7b7aef2ff8d05cd828cc7e8", - "0x00000000000000000000000000000082e978a687f226b9d9f6c475d76ad7d0f2", - "0x0000000000000000000000000000000000170d4cfd2d18c54304a6d903bf1a0f", - "0x0000000000000000000000000000006fa34ea411efa79fa5ead29b0692bf2b77", - "0x0000000000000000000000000000000000019bf1e5985e2e1a266a8864a7a581", - "0x00000000000000000000000000000024284a91b4778943659263b48bbdb337ea", - "0x00000000000000000000000000000000002fb6187962b45dd22bcb08a54d2f9f", - "0x0000000000000000000000000000000eded336e987654dfa087268cadec1569b", - "0x00000000000000000000000000000000001f1b47740cf8487a80c45c4609935b", - "0x0000000000000000000000000000000eee28b9fc49c81a286626062375e866a8", - "0x000000000000000000000000000000000011e1f7acbb598eb1167aa3ae001439", - "0x000000000000000000000000000000afd2eac7b63630be51019a6bf88b5d2641", - "0x00000000000000000000000000000000002488ee8880b7c23776f33c1f1078eb", - "0x0000000000000000000000000000002275b7c90182400ba595c7685146405aad", - "0x0000000000000000000000000000000000263a1385b1d49c3dbac85c2b943a14", - "0x00000000000000000000000000000099b6b8028401bdf9add9b6a3e9f3f16f1d", - "0x00000000000000000000000000000000002c92c0237e464563a30456b3e0b917", - "0x000000000000000000000000000000f9cf12c30ec2f4e80b51e603a07fa28f2e", - "0x000000000000000000000000000000000025f210d401c32dcfdd334443a6745a", + "0x0000000000000000000000000000007b5e0848bbdc8d2326d2a5c09e6dc1fe96", + "0x0000000000000000000000000000000000131370c0130dc0a8d250fe31ce6d77", + "0x0000000000000000000000000000009382864ad094ecb8a82bce5053acf2e003", + "0x00000000000000000000000000000000002cd37a3fe945bd14184b022723d0eb", + "0x0000000000000000000000000000005de49f7bc32ab69d79e3676ad79e280870", + "0x00000000000000000000000000000000001c8be598d23f42f3b9ee74dfdb3af3", + "0x000000000000000000000000000000037bbe77d0ba1e0e68e64a4d1d83d07d05", + "0x00000000000000000000000000000000002fcb4232e55a9d3e8020399c7db13e", + "0x000000000000000000000000000000195d6008136a0932508907dca38dc31821", + "0x00000000000000000000000000000000002623032e1b5d17234fd4192fb09650", + "0x000000000000000000000000000000bcb120c4a7c38dda16c30a94af7ee8ae00", + "0x00000000000000000000000000000000001955c4ea71fce3511ce3ba6fd75588", + "0x00000000000000000000000000000044d25cd1ddca7c31a0e77ccdedf7e1d69b", + "0x000000000000000000000000000000000013ecc66844e5cb3441df2894454004", + "0x000000000000000000000000000000b5f4959c7e9057cde8cd244adeb8a2e8e9", + "0x00000000000000000000000000000000002df682bbc19832586a3fc03c785026", + "0x000000000000000000000000000000bf72c6f3242449c607a63a06f6965b8b19", + "0x00000000000000000000000000000000000f819841ab0d74f50e5c7c899ba932", + "0x00000000000000000000000000000018945cfb73a27d5989c9a602bb0cd046c6", + "0x00000000000000000000000000000000000885e54877991e797596a1bfb389b3", + "0x000000000000000000000000000000b2273cfadda585dd7bf55204c720fe9dd5", + "0x00000000000000000000000000000000000d0c600c2323caa5739e905e0be892", + "0x000000000000000000000000000000fe8a1294e1328e6ed4d41c5628af446dbc", + "0x00000000000000000000000000000000002ba9c9c770b04780b5fc67c35a3951", + "0x0000000000000000000000000000008c44bbb9e994bc33f63f14c040f895ceac", + "0x00000000000000000000000000000000001679700e89ce3f572307f460be8982", + "0x0000000000000000000000000000007bec27458f0bbd0e882262f7b435591953", + "0x00000000000000000000000000000000002bd59badb671a59faad3c8a25f9e9b", + "0x00000000000000000000000000000046e9e6fed52c74ba05d0cc392fb2b553c3", + "0x0000000000000000000000000000000000016ee18d0f053749d525ff73310241", + "0x000000000000000000000000000000696b339f6989db50278a96bf420b598edb", + "0x00000000000000000000000000000000002204c18ff1263c087868403e82c7da", + "0x000000000000000000000000000000652d2db496162c0ea7f802ad2b5567e7ef", + "0x000000000000000000000000000000000025cf8c450d0823cf8c1476712e92b1", + "0x00000000000000000000000000000070192899e329020f151bb736a2e5b27645", + "0x000000000000000000000000000000000010b8af9743de0e5b303e9ad07bc7f7", + "0x00000000000000000000000000000046edce0b8601f413ef065feba801919362", + "0x00000000000000000000000000000000001771e2a06c9d529d7978b979e319d1", + "0x00000000000000000000000000000046d2739b58a20b1a5f8779ed77b3f323e1", + "0x0000000000000000000000000000000000170b7d3d17e723661fee2083633ecd", + "0x0000000000000000000000000000002ab24da0b2289e9bb05015cef0ccacb9c6", + "0x000000000000000000000000000000000010cdbb47f7e6a2e614e25d363db028", + "0x000000000000000000000000000000e46ae376e73b6696667e3f209ac48f3c0d", + "0x00000000000000000000000000000000002367331b7cc93f2f509bda60d1a6a6", + "0x000000000000000000000000000000885cf897867eef60cfa5fcf75b115f8bdc", + "0x00000000000000000000000000000000002758c4ed57ac79cc3a9cb1fe8ef988", + "0x0000000000000000000000000000004b11d82f62d46af173e92c8d4c18ce9630", + "0x00000000000000000000000000000000002e0e0ea689623eb526f33c866d621a", + "0x00000000000000000000000000000063d7908000fcdd6a8aa2ca530efab2e354", + "0x00000000000000000000000000000000000fac914b72f4d887002abd9f4d7af6", + "0x000000000000000000000000000000d7e4a02c886d7385fca4dc56ab99af9c9b", + "0x00000000000000000000000000000000001a80635cbb4dcd369f989942aa3b63", + "0x000000000000000000000000000000982958b720ce131a90713f173740c9ff8f", + "0x00000000000000000000000000000000002a3138c7273493a374a4d167f7412a", + "0x0000000000000000000000000000002cf4525c9150c115ea13d37ff1ed05e079", + "0x000000000000000000000000000000000022383735a319430dcc1f2c9b8b9584", "0x000000000000000000000000000000e97fb648fc1ff99f9988a73de181e0de22", "0x000000000000000000000000000000000024cae2d5d2c4daefe858889eeb01b8", "0x000000000000000000000000000000e072297115d09425f5612d626dc82f1002", @@ -1506,20 +1506,20 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000df09a35ec29cb8b8e65d374b7ee4b958e4", - "0x00000000000000000000000000000000002a4f5048b3b3a1f217328f560fbb64", - "0x000000000000000000000000000000d05ec9df459e02b89c2805cd568a2f3522", - "0x000000000000000000000000000000000015775347bfde9959a7eeca6a09dded" + "0x00000000000000000000000000000067d2c18c4215e98fca6e81d131c817f4a0", + "0x00000000000000000000000000000000000bfe99f5d87b2edb82dc1c00777ff1", + "0x000000000000000000000000000000b9ef440a184c6c20610890e41aca86bf61", + "0x000000000000000000000000000000000016bb4bc398395484c889ad78f48dcf" ] -hash = "0x139a036976ef42dc38c7932e2e678f7ce993134e15e566c8582d93a47dbd6873" +hash = "0x0d34c4a04593e7d4c2ce9859b5e7c569f7ec7999fc359fc3784ddb69819c1459" [inputs.previous_rollup_data.vk_witness] -leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" +leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" sibling_path = [ - "0x1751bf2ab202248a6492799a5f9f642977f1b79534bfd21a4f5593ddb904fd83", + "0x0969e5658f9ac7f1acd7a350fd1de7f58029386e0c52761e0e6fb5daa2f2ade2", "0x166d9200203972a67e495e091356eb547f3ad77502de0163b0eb32598c42137d", "0x2b1e1e7283812220e8fa0a163f5e89d80b5abffa9452ac97941a650c5eda03a4", - "0x223b98513f87a3be6816ac1e2a1b87a807169110828d2b808a707609e4217d13", + "0x1579d8714bffc417282d461161468745ec125da568e082364e4896fbad931bd1", "0x0a5cccc6f5c49119df17ad49125046e1f8ade560372f415e56d28bab8a1fba34", "0x042567ea670fc3ff2b8c48b244f6a0c96944c6b969143cf0cfacfd97e5b929aa" ] @@ -1563,9 +1563,9 @@ l1_to_l2_message_subtree_sibling_path = [ "0x21849764e1aa64b83a69e39d27eedaec2a8f97066e5ddb74634ffdb11388dd9a" ] previous_archive_sibling_path = [ - "0x297d8753690bbab3658c769fec9f6a42f352ba70161497f8aa29f3c8a9757ae3", - "0x10696ebdd781f09f33622f71733d2a3c05f9b6fdd457bb39b5ade060fbce583d", - "0x231469ae55167def14a4312aa95a9b70315e78476ea085540f1b668a0c7d8572", + "0x0c69924fdb4aa3de9ab308b6cf12d38cbcee14f81b5006d5600fe511524d2455", + "0x0b41589e5ed044b136f82db871c5a223c8a603cb6fad205b0dc8496dbbda3cac", + "0x2166790c6a4fd651752a4b2f0177424d84e36e1da8c2405183e686ae25eb82a1", "0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", @@ -1597,7 +1597,7 @@ new_archive_sibling_path = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1", "0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290", - "0x200cda60dae7aaa9c7183ee6a6bba594d918c54d48b0a6b51edab4de5794cd67", + "0x1f25d3f391e0ef589f1f8148a0944afdbf2de7a29ef3a8a84f1eac58c6a1607a", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", @@ -1629,9 +1629,9 @@ prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [inputs.data.l1_to_l2_roots] vk_path = [ "0x2de10a60f15a5ad7277cd8cfd38bad426d8d9e76c2cd7f6fbc08b74d2f8abccb", - "0x1e3ecb6691c3654e787f2bffb487a3b217b9d7e4d5e8128d6c6e4746d72e640e", - "0x0665fce8d742d639d8d465316feed5305470a98a4491760dc88ec374a20af806", - "0x2fa9633929cccbcc4776c410cc5f4315b5a3cc9f91de60871a3e8d7a5503505c", + "0x2e3f06c63095e18e555c476ea488e2ea70d82c20057cf538ac7060746c89eb01", + "0x1879cd6beb959e8b5c0f9f307bb2a4944aa871febbcbc7cceaf47ac472f5756b", + "0x1c928e7bfd756013034a6faef411dd7b791ce88c9f42adb22a032f461bee9ac9", "0x0a5cccc6f5c49119df17ad49125046e1f8ade560372f415e56d28bab8a1fba34", "0x042567ea670fc3ff2b8c48b244f6a0c96944c6b969143cf0cfacfd97e5b929aa" ] @@ -2102,90 +2102,90 @@ prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" "0x0000000000000000000000000000000000000000000000000000000000000013", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000003", - "0x0000000000000000000000000000006daf08e7394c326e81ac98b454f77204eb", - "0x0000000000000000000000000000000000203b52b63ad93e87d56a758c2bff8c", - "0x0000000000000000000000000000007f8a4d42f55204ba5e77cf70e8b6801800", - "0x00000000000000000000000000000000002c24a76a8f171330b78eaf92257041", - "0x0000000000000000000000000000004e88c3c332b3b1a381410eb3f729d57b17", - "0x000000000000000000000000000000000022aacef6126fdc1f4525b07bff5bc2", - "0x000000000000000000000000000000993e0c75a9b7aa1a6b87b7e07483c8424c", - "0x0000000000000000000000000000000000007f4c7649e915a219c486f232b82b", - "0x00000000000000000000000000000013b691ff3ecc290e5177e1078304b41883", - "0x0000000000000000000000000000000000039ae6d3a5aade5d2dd1a574f0dbdd", - "0x000000000000000000000000000000c4e78d0e0663b734c3dcc88ab601d45b72", - "0x00000000000000000000000000000000000ea46fae7daa674eadd6fe208b951f", - "0x00000000000000000000000000000086f3341488c951668dc1fddcce7214b2e9", - "0x0000000000000000000000000000000000113becdb3f8c645edada70e00bf7f4", - "0x00000000000000000000000000000099845d3b5708af3f18dde7b2bc338d0b04", - "0x000000000000000000000000000000000029eff3ec28af3f13da060e9d811935", - "0x000000000000000000000000000000110e761a23d57e1be2a5644cf92a7946ef", - "0x00000000000000000000000000000000001d9f56caf099c8b92cb3c9dc148968", - "0x000000000000000000000000000000c1a42de2c873967d1037eadc9405d80b4e", - "0x0000000000000000000000000000000000090ecf4dbf00b40e07b2d080a95652", - "0x0000000000000000000000000000004ec4cf7a4c58fbed34f002e908caca8745", - "0x000000000000000000000000000000000022789d1e48787608747c866fd4d5b0", - "0x00000000000000000000000000000043827fb50acc5193aa3779c3eab07e1eae", - "0x00000000000000000000000000000000002a5ad91ec7955cbdd5b64d760b1831", + "0x0000000000000000000000000000003d5a0249e963162c33c162b999bf75bf1c", + "0x00000000000000000000000000000000002681986196186b3b84c36ca529b931", + "0x0000000000000000000000000000003c76e7d4c25e7140e71c6da7d4ca3d5b48", + "0x0000000000000000000000000000000000228ee2a5e5cd4daa3583acc080fbf5", + "0x0000000000000000000000000000009b4603d2175203f3d694ae1a2a329db73b", + "0x000000000000000000000000000000000021884a7d34ade1eb0edc2e9e2f62f2", + "0x000000000000000000000000000000b462eeec820b7d44a93e5fce569849c69d", + "0x0000000000000000000000000000000000061d37a931ce3c40122d80a567c745", + "0x0000000000000000000000000000007f6448f3bd57da416bf24775f57e8732d1", + "0x00000000000000000000000000000000002048e5d82eaa80b3b1150b113b6e3a", + "0x00000000000000000000000000000068302cfe0fdb81064c84f213d7b77e69e0", + "0x000000000000000000000000000000000017fd8d0e8d0623d00069caf6344321", + "0x0000000000000000000000000000007d117d9a0d8fc79b5fee4bfb0b7f8a178e", + "0x0000000000000000000000000000000000038e342d903e020c03e4048373eb5d", + "0x000000000000000000000000000000ad378ca79db9fd0402d026c903ba2fa2c3", + "0x000000000000000000000000000000000012d43a228a8d5c3930ce0ad68439a4", + "0x000000000000000000000000000000285fefead73ef1da47f020e443d485e495", + "0x00000000000000000000000000000000002bd766cf1d461f67506b77475f8ff2", + "0x000000000000000000000000000000f0e6a6b44c15ef74794de29340b9bdfa36", + "0x000000000000000000000000000000000003952261f6b560e4da097c1ad78f50", + "0x000000000000000000000000000000ac888a5c2959b93fbbbc968cea4b714cfd", + "0x00000000000000000000000000000000001ee1e4ccc9480d09bc3a81181b8cbb", + "0x00000000000000000000000000000076ecefe0a4afee92716ec85a8bb29ce1ea", + "0x0000000000000000000000000000000000220b0bf5b5f1b33e975934b50d01bd", "0x000000000000000000000000000000b862080874183fbd8beafade4db201cf5c", "0x00000000000000000000000000000000000d51c793d0f427c476d6580576b5fb", "0x000000000000000000000000000000de866f4da1aad9653b7f3eb7e2596c60cc", "0x00000000000000000000000000000000000034d03c26f3f80a0c7216002f7e18", - "0x0000000000000000000000000000006327e9af8aaba2906fff5434672b0b7db7", - "0x000000000000000000000000000000000016dc722a0218e2ca9efda7a82c84b0", - "0x000000000000000000000000000000bb476c35192be8854b7c2786df842c2494", - "0x000000000000000000000000000000000017205cc7a5b83f4c51cd65dd09ecc8", - "0x000000000000000000000000000000de353a71dd90efb08fd15e2f6f104e4dbc", - "0x0000000000000000000000000000000000121169aecc689a9587460af8d14372", - "0x000000000000000000000000000000b83dee77a7dff8332b9e35419e3c5bf078", - "0x00000000000000000000000000000000000524120b9338d573c4333a03149dc5", - "0x00000000000000000000000000000021ea43b0d99228f554d292934462181694", - "0x000000000000000000000000000000000003bfd8a7db1e3bc662ef9a30c239e3", - "0x000000000000000000000000000000942358ed069dc945b1598a20efbd845c20", - "0x000000000000000000000000000000000015ac19888a3f44d8f251734356b3f0", - "0x000000000000000000000000000000eb43e3119beeb63834263410101d445b1b", - "0x000000000000000000000000000000000003247fa9405299c756dfce216bddab", - "0x00000000000000000000000000000017594df9dfe3f3cbb49344a4ef96963d55", - "0x000000000000000000000000000000000005da22ccb348e74bb46ecfa19d8f13", - "0x00000000000000000000000000000071a2963041612a334227821bedf517ea2f", - "0x000000000000000000000000000000000013ab7a2f073940d80617800d389ef0", - "0x00000000000000000000000000000054ac2df368151f8cd63f8b6172a76de2a5", - "0x000000000000000000000000000000000014172954e0d6d5e11e77970dcb4546", - "0x000000000000000000000000000000e5739f1ace457e07d5041d88312e1e5160", - "0x000000000000000000000000000000000006fc551dfcb041a8e4df85cf7c4763", - "0x0000000000000000000000000000009d729b4ccb8a05efffb66826cbfce1fadd", - "0x00000000000000000000000000000000001835052a5e42388b6b206f35e140e6", - "0x00000000000000000000000000000082b9d1db986fb40207e17a590f442a1f99", - "0x00000000000000000000000000000000002ebe7ebddf234485c928ea543ca888", - "0x00000000000000000000000000000054e08e0182a4bcae86fb2461ed1fd58510", - "0x0000000000000000000000000000000000228c95062e8e6b39231190a50260de", - "0x0000000000000000000000000000002badd737e0ad2968287f2c60952292231d", - "0x00000000000000000000000000000000002ccca72989698c45acbae1663631a5", - "0x000000000000000000000000000000dd0f4f7c35558ff8003e98552b67c15e8c", - "0x0000000000000000000000000000000000101c9b0bc176694deaaf86f578d70a", - "0x000000000000000000000000000000a2625e03541080af27f3fb1c9d785c8b82", - "0x000000000000000000000000000000000005d638d2595b65cedf42a3dc678966", - "0x00000000000000000000000000000010af9a24ead2e4ebb273dc6ee47ed728d5", - "0x0000000000000000000000000000000000082e11201d8a7d2282cfa22c92f842", - "0x00000000000000000000000000000037c25cc147aed75a9efa6c69b24a00abb0", - "0x0000000000000000000000000000000000182b105c5b9d527e8be7427a34b52d", - "0x000000000000000000000000000000ee6c8bee61bc4495ec156eec25e6c6365b", - "0x00000000000000000000000000000000000f1553a6323ce655c3e6f83628f2de", - "0x0000000000000000000000000000004c3d7e9114bab8aedb1f8dad7c74c60d06", - "0x00000000000000000000000000000000000fac357503de8740ee02750f4cad32", - "0x0000000000000000000000000000007b3bb7c2b4026ec27b36f8c2d98b78407c", - "0x00000000000000000000000000000000001d621ecec945f0e63c3afc0c93ec72", - "0x0000000000000000000000000000001d2f35c94f8d787b75f24bc583ad8e79b8", - "0x00000000000000000000000000000000000b6428640dbc177037edbe30d987df", - "0x000000000000000000000000000000b2038cdfc28d95fcc2be4a3eb49451a44c", - "0x00000000000000000000000000000000000f1008e721231c139e8eba8d177a37", - "0x00000000000000000000000000000096004414002e71501dfa177be7810347a5", - "0x000000000000000000000000000000000017e8d41278e33350a9225ec4da6136", - "0x000000000000000000000000000000661591c124f938f3bc21d36771d65e1d06", - "0x0000000000000000000000000000000000271524010f3fe312a13a40237ffafb", - "0x00000000000000000000000000000099596969cedfd44ddbe1902176c5549fb7", - "0x00000000000000000000000000000000002d4b2a3e0f15b85f97549808dc2d2f", - "0x0000000000000000000000000000009a024a4939f5f0ed8a3063fcdad53810f0", - "0x000000000000000000000000000000000028ce340fe7c56f37d471292f012134", + "0x000000000000000000000000000000e4449e8d886442b24df5a0089b8c53f323", + "0x000000000000000000000000000000000017a6c298488c4306249f2eb6652f3c", + "0x000000000000000000000000000000037c257d78b8d5e4d3c375656bde7bca15", + "0x000000000000000000000000000000000029c1d078d87acb8e57dc230ac6b03a", + "0x0000000000000000000000000000005a2d6612276326b3b16a718a152cb1d7b3", + "0x00000000000000000000000000000000002298f5b607b97ecffa432bb283cc94", + "0x00000000000000000000000000000072dc182a00ddcbe99dc3767af7f21981e8", + "0x00000000000000000000000000000000002e7f589e4bf4535700f8ca5d8f73b2", + "0x000000000000000000000000000000b64b3d8ac5afebc8cdd35f748f3c3ca4b7", + "0x000000000000000000000000000000000012846dffbb3d53e5ec8caef295ea0c", + "0x000000000000000000000000000000ba442396e24604898531d21f48a2528089", + "0x00000000000000000000000000000000000a8c44c8754e2db8fa9708f8619e11", + "0x0000000000000000000000000000002e684c9dd03f144cba7c1e831a609f4345", + "0x00000000000000000000000000000000002ae063df77ab48cb50e21b4c0c322d", + "0x0000000000000000000000000000000553c982b5e9e189340512509555f2020c", + "0x0000000000000000000000000000000000245fdc66fa2482515a8c6a3d05e575", + "0x0000000000000000000000000000008c253987a3ecf67ccf8dea4ec9ccf2feec", + "0x00000000000000000000000000000000001c2566e1651f07a292b8f0cb5343c9", + "0x000000000000000000000000000000873533f960f12b1fcc3197753e09282c9f", + "0x00000000000000000000000000000000000fd0a6c2bc9af9884f414f714b6aee", + "0x000000000000000000000000000000c9a2cc191a6431b112442e17ac7061ca2b", + "0x0000000000000000000000000000000000202cdd4f28ff895d477d1f76b28209", + "0x000000000000000000000000000000d5de342309f60f77154e8e94dae8cc218c", + "0x000000000000000000000000000000000007e69fb71e3590f4af7539579f5835", + "0x0000000000000000000000000000003858fe1e0dcc7682b90b0177123c7d19ba", + "0x00000000000000000000000000000000000f52adc510b7a9a3d411a1f9b370a3", + "0x0000000000000000000000000000007fbce6e5c5904b73919bc2ed59182d5d1b", + "0x00000000000000000000000000000000002d180a23e496a0872c067a7291e660", + "0x000000000000000000000000000000563d92ef48b75ab1449063cd05feb71c49", + "0x00000000000000000000000000000000001df538e45bb71cf781d518841ff8db", + "0x000000000000000000000000000000178d815d3ca9fa5ec8fd0e2d3fe2a48f34", + "0x00000000000000000000000000000000002b82340305f7100fdb5e47540715c6", + "0x00000000000000000000000000000075b914766cf0e8cdf180dabf0905238d1f", + "0x00000000000000000000000000000000000f55b70b1ad00f526f876c6834455e", + "0x0000000000000000000000000000003d252d277ba01c00e1e7c9a406785369df", + "0x00000000000000000000000000000000002afa8c594b59385496e4158a5a31c2", + "0x000000000000000000000000000000d2adea2281b8d86d0e873c386eb880ce93", + "0x000000000000000000000000000000000000cbc3776124d65f781ba2d0ffb1d7", + "0x00000000000000000000000000000002aad31a1aa9eb53c5e8ef4040c07d70b5", + "0x00000000000000000000000000000000002202c205955f2005d4b5644b87578c", + "0x000000000000000000000000000000688d24b55d19e572a19827bca8604aece3", + "0x00000000000000000000000000000000001c4940d4f4f0d683f0f3ec59ca1085", + "0x000000000000000000000000000000c1b623c5707f1ee00d6b0325e76ca49ff9", + "0x00000000000000000000000000000000000f9ee2a9eb34be59de1d3dae6ea755", + "0x0000000000000000000000000000004e18533ba5362734925ef01a32eda21ba7", + "0x0000000000000000000000000000000000203bc3427bc7a00a09f312b1d41111", + "0x000000000000000000000000000000c78021974b8892dd3ff5b48ed4c0884b4d", + "0x000000000000000000000000000000000024b77a56ea3977a8d77f2a049b82a8", + "0x0000000000000000000000000000000c91cd2589eb1999932125fb50dca540e4", + "0x00000000000000000000000000000000001e98a55fa24c2f3054df6df661fbda", + "0x000000000000000000000000000000b0c52b72d9a8e16274a7277cd52cce64c0", + "0x00000000000000000000000000000000002ad378b218e59190145447df4bb7d5", + "0x000000000000000000000000000000261075948778a5652d6e90e06073646ca1", + "0x000000000000000000000000000000000025bd7893c4c66ead384b01538f9b9d", + "0x0000000000000000000000000000007fe687c79dc6b3adcae59d67609595a97b", + "0x00000000000000000000000000000000001c3b4038b6380f279f0513db7a42af", "0x000000000000000000000000000000725ce8e8fb5c6346f6dfeb9261eb398cee", "0x00000000000000000000000000000000000721ab622e3899d1164f3cf8c1bf06", "0x0000000000000000000000000000009656984ef9db170ea5f30f9ec4165d1919", @@ -2206,29 +2206,29 @@ prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000d9058765f3068abc02ae8d716fb0d10c50", - "0x000000000000000000000000000000000002bcd8f8a0f3e037115f66fd20a72a", - "0x000000000000000000000000000000cbe2303e94dbe4e1fe8a287f7c90937106", - "0x00000000000000000000000000000000002d249bee6937b59b80982a85b5f2cb" + "0x0000000000000000000000000000003e9782222e28b6e5d224f1637a599202d6", + "0x000000000000000000000000000000000004336199c3523158b0cec80da93287", + "0x000000000000000000000000000000570b870148eae8078705d83fbe91186526", + "0x0000000000000000000000000000000000022d805fefb09e9a563444b4577a87" ] - hash = "0x269668ab00c49fdfc07c0788f284e849e4ca75e8ecd33a257b11424332acb6bc" + hash = "0x2385089914bc53f8c6da615ae8d89885234cbafa139ce9dc7cabe125d48a77df" [inputs.data.l1_to_l2_roots.public_inputs] sha_root = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" converted_root = "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e" - vk_tree_root = "0x0e88f44969aa6d4ff0d17db376dfa057ed3aa447725b0febf35af08e0d1d468e" + vk_tree_root = "0x2ca9a33f5bf72a45ff0bc18657afa956eb151243a9bc9d3c113e4c711634fd7e" [inputs.data.previous_block_header] - total_fees = "0x00000000000000000000000000000000000000000000000000000000093bd180" + total_fees = "0x000000000000000000000000000000000000000000000000000000000938eb00" total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000004a40" [inputs.data.previous_block_header.last_archive] - root = "0x12426f1a7219669d8d584aae8673daae60083a411033ed1be83c1c7b60a41f0b" + root = "0x19417d1c6f2b53c337b3344464130f51735a5abd53b11808c3391a29dc1ec9fe" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" [inputs.data.previous_block_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x0038c5af956c032924eadad4baba4e006883b3cbec02873207b5a4ae6bf2696c" + blobs_hash = "0x00f1c66ee74ce3a7dc27c07d9f8b2446b391deb9a1c7280c05a296b9976f2168" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -2237,128 +2237,128 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000070" [inputs.data.previous_block_header.state.partial.note_hash_tree] -root = "0x2a210f33edaa26344e4020ae52e79f6a85441af233181925ba9318ee9dee8459" +root = "0x1b1744762a36bdf22968c082e560e62c7436825aa5febe023b0cbd7dc914c9a7" next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000001c0" [inputs.data.previous_block_header.state.partial.nullifier_tree] -root = "0x26e385201b7b194a3116edd3095eb08c3426a090e12f0c3be2e7f4c9e1c97d68" +root = "0x0c28b79cc1be09f56e4ef8b7c60878a0b5de05639aaea24b1a28550bee682dc4" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000240" [inputs.data.previous_block_header.state.partial.public_data_tree] -root = "0x1955da4d91ed3a7a9ca53b7cbebcc4c8454a26666a95894186f81c6b61a17f89" +root = "0x0306a5673c379f0789056b7cf87f08f175768751bbb35616068be0dcdb117f34" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [inputs.data.previous_block_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" block_number = "0x0000000000000000000000000000000000000000000000000000000000000007" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000012" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068081783" + timestamp = "0x00000000000000000000000000000000000000000000000000000000680a0cec" [inputs.data.previous_block_header.global_variables.coinbase] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [inputs.data.previous_block_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.data.previous_block_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fd6" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fcc" [inputs.blob_data] blobs_fields = [ - "0x000000000000000000000000000000000074785f737461727400000c00010000", - "0x04e133eb3b70690b0fab92450c5d8388c353b05923dda20e1ebc99796625c84f", - "0x00020000000000000000000000000000000000000000000000000000242f4350", - "0x0000000000000000000000000000000000000000000000000000000004000001", - "0x28933befaa263c5a9bac97a4f3e9449d57eec6d37b6f8cecd99bb03778ddeb87", - "0x0000000000000000000000000000000000000000000000000000000006000006", - "0x2c43088594a1b61b21c3d7bb9c5bae4bb5fefb52893fc6cd84cd908dfdf770d5", - "0x0000000000000000000000000000000000000000000000000000000000002328", - "0x16d3560d39e7f6c96fd0412449e8743e6641b22aeb1b75f02da3264381978482", - "0x00000000000000000000000000000000000000000000000000000000000003e8", - "0x09fd5c7c298012061da066dcf7be4f12f36076f057acc0938e10ea9053c6e792", - "0x00000000000000000000000000000000000000000000021e19e0c9b10c350d30", - "0x000000000000000000000000000000000074785f737461727400000a00010000", - "0x19fad0aa24b4ad5c5ebc1e774551b06c5aa6071050d4e9dfa5abc51b64cdd61c", - "0x0002000000000000000000000000000000000000000000000000000012af39aa", - "0x0000000000000000000000000000000000000000000000000000000004000001", - "0x0155dea4cde86b4778b477e0e743f4ecefce3697ef40dd07426a901249d28ee9", - "0x0000000000000000000000000000000000000000000000000000000006000004", - "0x2c49de90f49be6e1837d1e0f75bd0dca50129a7135b86dabd8bce25ed9934206", - "0x06615e4b566a640e99213edb664c8c0b49c5e833c3a4b16116fe1de9d06382da", - "0x09fd5c7c298012061da066dcf7be4f12f36076f057acc0938e10ea9053c6e792", - "0x00000000000000000000000000000000000000000000021e19e0c9b0f985d386", "0x000000000000000000000000000000000074785f737461727400004600010000", - "0x28c5f228b68db22a3f724d65f68018830ab3a6db937988738a50760f4de22f4e", - "0x00020000000000000000000000000000000000000000000000000000093bd180", + "0x05ce1abc8b59acf48657d367a7179ca3d6d5330f6b7e070c5ee6dfa9f88f9595", + "0x000200000000000000000000000000000000000000000000000000000938eb00", "0x0000000000000000000000000000000000000000000000000000000003000002", - "0x1512b8368e4cacc466fd5e1cb36a88da57bd3f226e394ae546e865abc01e0997", - "0x17c27f94e5f307fc57f5414f1a7e86faae80617652c679823e40772ec7d32ece", + "0x22f7d7afc2a5c077274611be87a07a18f7fe8d130158e0f633aecda97a844f8e", + "0x1d7cebf488ced3a2293fc9e88053f9efddd52df6b1d66384516b97d299123e7c", "0x0000000000000000000000000000000000000000000000000000000004000002", - "0x06c059f27d4161d30b1a451ead284b99299a0c8e77e310a63653a5ad5c30b192", - "0x2e8523207a84af4892b9106b545330a410b46bbdcc6d7f39dc29436a277c16ab", + "0x2b3a56c78500814c0116913ee7edbc095d22e3c92765be4089ebfe469b14e416", + "0x11c24df150fb29ec38ef47737b6db9ab26fc6e85583d1b5cfaacf5314a468ac0", "0x0000000000000000000000000000000000000000000000000000000006000002", - "0x09fd5c7c298012061da066dcf7be4f12f36076f057acc0938e10ea9053c6e792", - "0x00000000000000000000000000000000000000000000021e19e0c9b0f04a0206", + "0x0ba141be7707b610effe839006ce19b56369c383fd75436de163b39fdcf809d1", + "0x00000000000000000000000000000000000000000000021e19e0c9b129541974", "0x0000000000000000000000000000000000000000000000000000000007000039", "0x0000000000000000000000000000000000000000000000000000000000000012", - "0x227e0d84baa4c41bb3a9f8522d61a22fa402a4212b87850433326e4658874d03", - "0x0a7b197553284a7dac5817f01913206517d193ded50156ed73093baaf23473db", - "0x00005d46707662f1d1a88ab01410c464ff571b28b3f42ec8c399d787614e7bba", - "0x001763371d0472526b0775ab559183e0b59a281c04dbdde78b283d3a122d81ab", - "0x0041eee7c238a0e458ef0de01fdf77c0417df3b57ac735ab798c7297943de665", - "0x00dca30dc1756f9f9dbc8f8f6231d36143f46fabbc6241aa541d05c9724eb9bf", - "0x008e71dd55dbb8b5521e1bfe21a2a3dcb042def1152db822f3f63c7e603d383b", - "0x00333bf6305e1e9e96e064b818149c30be922858e61a5c003c6cb3e00c937d40", - "0x00933e3dfcebf2b4e2ef4a3b065210b5eaf484880d309174a6e20944bf3a9aaf", - "0x00d350a1f15bbf939d9749229b38e8ce1ec871091df85d868721250a848be7be", - "0x0036787243c691b5a96ddc40fa0056025334c6bb32050ad9f6b8ed750894b716", - "0x0028f783ea2a066a562eb8850512d4dfb2c4e254c769f9d66c25df25d73fb69e", - "0x00db23baf15e7d8ea50e355a8feb78a07b755de4492b084572fe905c436df8da", - "0x0088d2c5a766cda801cf9dd27337c9af922bcdfd2b10a24eda0c85eefce4c845", - "0x00b9453e963c09408df4b205bb4eb6c61374f557f9c7ed13c904f272582549e4", - "0x0069821c9aa6c2b5e443a38c961a75ad0dd5c248af04db4a325e1c4c9aba11b1", - "0x00a99f520ccf843538e0322a3784afea00b462764703cf27087b403ebe2b4b6a", - "0x00747430bd457d9aea943eb10835032b4cdf5cbbb5b12bfc3b91940a1f1598a6", + "0x0fe86ac1163f7265e65023b6abe14ce91c0a0ea16337c8479c9529751b44166c", + "0x1674e4fcbe85c537b3d9b36718e7fb3efae0c5b25d3a0835490e5c3afe50bafc", + "0x000078b2ca24f0d78d42dcd4d330c1046b4962afac3a9fa98abebcead4df40cd", + "0x0007d50f0ed8c8c42cf348123c03a8b1c4f75f6a77615109f66254eb54f5c5b9", + "0x0082b583a5539bd921fd9e7be44b459a4964be84878012c1a30d28c34cd1c763", + "0x002f034d50435f57b8e3164d50d23f57fe5afb71091abe588c5d6b8820d75859", + "0x00b999c562144185738b4e0968c302f68aa10affc930e74a94eadb163b5028fd", + "0x00a57df51a95a4fe352f7ca5e0af137a88132bae6a17241ba1bc6d9ee34bd95c", + "0x00fe55ecb7f3785f7afebfa35442a9776da9913d2f3623103c02cc3da95e7b6e", + "0x004f91bdac47fd3f3d7f35795f7bce8995868855d25214052a55fb7d0637efd2", + "0x00ded717d535ea9de70edc0d890af9145a26dc6075364a6e04c19ba1347465f4", + "0x000e23136103def6c17e4e9123e1de4dd90f8c8b37bf758db894c1f3e99e0c41", + "0x001044e9889c6ee55c02cba63d9d0216cf377cfccbf52b586148feb207e88369", + "0x006a15c5f97fe5c2994b66e5c5913c5d42c4aa92fbbcc775f99723fbf03702db", + "0x008708ef62d8b1130bcb7ba175c98ba7bfb3be5ebba2753aba15481eca748302", + "0x002d8ebb5448086b9223507dc354cc827ddfa69240282a579e16e94d0d6a2747", + "0x004c9505ef4cb6215a5baf42477f711770498437c7cec9bc30ead5d1e1343fba", + "0x0045fa41c7ec2f4a5c80258cedef18a334f4ee1be5d2d049b538dd8ee4ecb9ac", "0x0000000000000000000000000000000000000000000000000000000000000012", - "0x00f016c710a888b14ea3561abae6855ee2e6d9a23a48993f7468cb352e4a89e6", - "0x1f397ea26480717ea8241efc851c8442c8990f4c4c559b38a84ebd8fed94f4b7", - "0x0000abca2b358056a4eb9272b26892189521ac1a5e7be7e7bc9866001844e93f", - "0x0004e437532f600425da74f8a2cb920cbac663f11cad9d57a53b59193392df66", - "0x00212b72a8e23891316a39d014d19ed6b3bdbe4f86d1dc8528027851b3a0b080", - "0x0033f962bbd3a5df970f0fb4b934725cdaf242c7f4cbfa3246f1b591333190a8", - "0x00f833f12fd445cd04d4262dbad13f28291d4df9255f0317ab3ccfca5cfac70a", - "0x00b220eb02ec439845161a6b73f9c9f97a77039b1f0d1cee6d238ffeff7ca059", - "0x001d110e8868f9f8a8b60affa85b0e88be346ffcb3a90dda46bc186db1199865", - "0x00ab42543abb004604e5d8252448e46422f6cda9450739d15f04fdc1cc8b11ba", - "0x004df49ba4e38cb5a83ea4ee460b0618a7768e4fe166d2a9b514d2e4540e6640", - "0x009c5485d846b09bfa60127f22faf79542ac8fa4069a65e52db0230c14ed33b0", - "0x0051b5a700e183c6853e96723d03b2a162801fbc5a9385e6d6f50026a835f21b", - "0x002669a9f7cfb910d8c2eac38cdfd0981ceae479fbf0155075e61bc5cd2bfa48", - "0x001424ad27cf7d0aacdfa4a27a00a73e7ea3c48d60812f40341e25d03b4b3b09", - "0x00be1c465c6f4d1592f70ea62a6c1db21fbfe90998e809c97f56a77748ccbb25", - "0x000c547e23a631d8deaa8ad2f83b0d5696b580af8b1f64821586b6799a225aab", - "0x004bc73b51eae6e2e53f47e0206cb59b5221e8032f105a2b525fcf977cfc3515", + "0x0eab4c88976429c2963ad5bb83daaa3d76fafb66c6a55ac443279b5b828e67b9", + "0x259dd06409cb3eea3954832c049dab7e838b3e3cb6384e6edec9dbc105d8903b", + "0x00012d2baf7827df549c81cbc78b28e6adec483be338df59cfb3932356dfa61b", + "0x00ed677dbd6cc4dbfdd14aad4baaa411d7778a2c5a6d09a81e017a93e2ab0c5a", + "0x0016b472bb00f46d60c79ab10e7b9fe7923d18922383757f4d8db56302c03074", + "0x006546a6d964091429ad2a1e5b0a2e38deae1af0ebadf2663b50bd6c6144b69c", + "0x00e77586161489f79d83d138b2ddcdc095d746d8cc6354ae757d302ab0b3198b", + "0x0015d40b7da9574040a1451950e2fd8911b46ad3da26ff19da6f319e0869c615", + "0x00dbfd31bdf909df80d96c4977e95f313fe4002094a66c63d1f5e66517ffa47c", + "0x00befd626a0a40eb61dca462684793a9641c90c5c24e2d5291a20eba2a6791dc", + "0x00db2cc63bb63451c23583052ca98222e2df1a2e291ab2c256d3fe54696c7e38", + "0x003706429c07adab64d165cc88f7e3df021583b60627c1c0d5f89eafaed595f9", + "0x00ca5e9199692a9cbed349d7b908cd17956d72f95d72968b5daf843ad01d349b", + "0x0059a7e233f48bfb1f3656be471736b42471d41909031c6a00eb0ede9f637de4", + "0x00696ee3216b8c4f305380d296f4d543237541622c1db3060b37c7e026a4c2f9", + "0x00993783eddaf7918d5e08c3e0e4b234ce8da899fa870ae4053bbe7739eec8f4", + "0x00eacebedd3def81a0086c4ac75bf57e1ad8a489ed82a283b47200511dc65fed", + "0x00a2123a7ebb9fbd8e466ecaf2fcc6969f1f47da91ba6d3fa2b3bc054b52ec10", "0x0000000000000000000000000000000000000000000000000000000000000012", - "0x05b43c0f85c2cf5df9b60376a0635325f3fc0fdf513406183a2cb5f89eda8d77", - "0x2de35ac09b4a9814e65d3291c90bfd4022d89d15c854ff6f75b4c4492834ab13", - "0x000198c9c918799b9674121de6e8244008ac7277ce3a401d4d24ba9750f7f366", - "0x00c611cd0b09e44df26d05e1c0e7d2cbbb27c967d84580245437cd83a9660326", - "0x00f4e63c8b4a7ea94d78585155d461e88e31c59377566aef454a026e054b5c61", - "0x00bf8a861d19ac44b503680c4d25e7792eac193f4ddf222d2a3d659cebd3826c", - "0x001fe825ff7ccdb10223757476c52520fd243f0e56ec40c01a55dc0df418317e", - "0x00bc616806c6b7c75e4833eee123ac0e18faf4866d9a714b8b48a35b6531c31a", - "0x0011ea12d6ae99a7c70a6a8a4862e8a7a96e2a4d1761b33a067e13eb94f3a007", - "0x003d8220a7e88915044ad4e541d0240a0ab653332bc55929b5307f10963d7571", - "0x006fa43d93bdd8c44504290286c0979e835ad4d1ba83c7760ac933e7ff8690f5", - "0x00d856e4b056594a629f7b137790be82cbb8366284d8e4b6d7773f54dde9f965", - "0x00426f9ad4ad8986642628ca3eb1fb3e9dc1b55d2ffee67582af65740ae3f4d5", - "0x005d720d1c15e27e8f5ee5f19d2cbcf14a366929b03ae74537521566f609c4e9", - "0x004cfe3e694d47ac46f6c531f5b70068418f8467454a5bd559fa2fcadd133452", - "0x00ce76a2eceded7a4b0ec9c86fde363a95b21ff5f6e3bc8c921d86d497f257a3", - "0x001ce4f3d134647866f72d6f50e61f9a03236e439c80d549b6be02b4a126155d", - "0x00e0929b75660ef4b8538a0db70f0ad32b4f3ab5fbfba158744245ea462af1d3", + "0x26f64a4bb31891b08f500f0a132f77c525bc074141a50bddd609497e1e309480", + "0x07cb87f253872b1de9692b2dcdcd4b1a18fca2bf044bdeb9f38646235f9f148f", + "0x0000062ae8394923f6e08783d91614a79e869e5dac68585f869796fedd400680", + "0x002eb0e8a3be3a28044f1554fdb49315db8ffda86a0ea37debb1fdfd0692cbed", + "0x002a758e6ffc2a024be8e137918409931585d8090bb7654b829c60edd7956e2e", + "0x00c66236b0ce275d2eac3172b3fb454e82bb4cb6cba22d774564f647a67876b2", + "0x004efe56730e46e4c355c3db17db4f30fdf4e42afd9c401f1dc417df27281a3c", + "0x00a212f6cf3c490759e82b336c089d0f4a1db6e268aae77d88c74b79c98723c8", + "0x0078e103ab1862b64a8a61088361e8f3f7bbb55b5602dab56fbe601bb4f1cb35", + "0x00060d37f4956363300ee0eab2b07c57d75e51823f3f7af60b3d1b9b9c758af2", + "0x002a7034b27d3dbe7ca3d1e29c732018f65ff49bcf8fde49c9109a567f6d3feb", + "0x007d7615cb9427ffdaa8221e80ec18880b0403247e525cda5548dfece1af9cca", + "0x0070d01e0bc277d103ad68e9342af055d4eb424c0912cb0c3c43350650c61266", + "0x0061e86edd178193042e84442f73716855712153de9b9e59b20cb47c7797935d", + "0x004dc8f463cb6dc94ea2c4eeff81619dedf30b4e18885f5a15a3c80435cb8925", + "0x003498967a634112d0a79fd6b8f499090e928d52aaaf49a000882dae894cffdb", + "0x003893491dd96d5b47f6e837fc38911d4ebd0013a1f88f94554a152888990321", + "0x00b42a0ddf27f8a260a03e4ce24fe840bebbe1241cc114df1f268848c982ba40", + "0x000000000000000000000000000000000074785f737461727400000a00010000", + "0x1637c01f7fa7e72e04f73979de217f6a87783c45efe54a0e45c98ca066e9c5ec", + "0x0002000000000000000000000000000000000000000000000000000012a95b34", + "0x0000000000000000000000000000000000000000000000000000000004000001", + "0x2c417f5ffeb6e7b55ecbe3be09de8452c5a26eb63458be8ea37a95144e30f99e", + "0x0000000000000000000000000000000000000000000000000000000006000004", + "0x29da03962e18e96058c2c96284e8990b6d3f2985231c75a675bd5a07540fcd4c", + "0x0eaa5f9a2339cab09e553484a4b465925e63f182ba64af15e0617743b623872c", + "0x0ba141be7707b610effe839006ce19b56369c383fd75436de163b39fdcf809d1", + "0x00000000000000000000000000000000000000000000021e19e0c9b116aabe40", + "0x000000000000000000000000000000000074785f737461727400000c00010000", + "0x17ce5f0c1ae7bb15dad31d591efa7d4075e5c297ab690bac38012a6ae5079a11", + "0x000200000000000000000000000000000000000000000000000000002423e5a0", + "0x0000000000000000000000000000000000000000000000000000000004000001", + "0x28872ffa33bab8a4fa95f59daf0daa03408b42220b11eac049b537856aaae472", + "0x0000000000000000000000000000000000000000000000000000000006000006", + "0x00a37a91a78c15f7b3edb0910e6dda3cb641792d44c8aec57a341f34e9068b97", + "0x0000000000000000000000000000000000000000000000000000000000002328", + "0x0fce00ff2889935aa47c9545d12bd21163820d22d65c2a6ddf3f8975eecdadac", + "0x00000000000000000000000000000000000000000000000000000000000003e8", + "0x0ba141be7707b610effe839006ce19b56369c383fd75436de163b39fdcf809d1", + "0x00000000000000000000000000000000000000000000021e19e0c9b0f286d8a0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -14556,12 +14556,12 @@ blobs_fields = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000" ] -blobs_hash = "0x003a661eda53caac93fc748ad4dfae2d129779012115ab7557cdd9c752d3beb8" +blobs_hash = "0x003ad75ad10d7deac9a5de7a2c2eac412eeb283ec363892e813224318c513ed1" [[inputs.blob_data.blob_commitments]] inner = [ - "0x00a725cb288922c64c2f57719a6070841edebbb5336a5276e9fd83a19320f54c", - "0x000000000000000000000000000000fe228e6ac86d495386c8bd24fcc7e487a8" + "0x00a8318ffae25ca0ed7d2ed73cfeaa8ad44f5e7a7c702da61cb8e5001c26ec88", + "0x00000000000000000000000000000022ef83543da9e254a2f61faf7cc9bdb6ef" ] [[inputs.blob_data.blob_commitments]] diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/block_root_or_block_merge_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/block_root_or_block_merge_public_inputs.nr index 637fb5c801ad..28ef80788036 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/block_root_or_block_merge_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/block_root_or_block_merge_public_inputs.nr @@ -48,6 +48,7 @@ pub struct BlockRootOrBlockMergePublicInputs { pub start_global_variables: GlobalVariables, // Global variables for the first block in the range pub end_global_variables: GlobalVariables, // Global variables for the last block in the range pub out_hash: Field, // Merkle node of the L2-to-L1 messages merkle roots in the block range + pub proposed_block_header_hashes: [Field; AZTEC_MAX_EPOCH_DURATION], // Hashes of proposed block headers for the block range pub fees: [FeeRecipient; AZTEC_MAX_EPOCH_DURATION], // Concatenation of all coinbase and fees for the block range pub vk_tree_root: Field, // Root of allowed vk tree pub protocol_contract_tree_root: Field, // Root of protocol contract tree @@ -69,6 +70,7 @@ impl Empty for BlockRootOrBlockMergePublicInputs { start_global_variables: GlobalVariables::empty(), end_global_variables: GlobalVariables::empty(), out_hash: 0, + proposed_block_header_hashes: [0; AZTEC_MAX_EPOCH_DURATION], fees: [FeeRecipient::empty(); AZTEC_MAX_EPOCH_DURATION], vk_tree_root: 0, protocol_contract_tree_root: 0, @@ -85,6 +87,7 @@ impl Eq for BlockRootOrBlockMergePublicInputs { & (self.start_global_variables.eq(other.start_global_variables)) & (self.end_global_variables.eq(other.end_global_variables)) & (self.out_hash == other.out_hash) + & (self.proposed_block_header_hashes.eq(other.proposed_block_header_hashes)) & (self.fees.eq(other.fees)) & (self.vk_tree_root == other.vk_tree_root) & (self.protocol_contract_tree_root == other.protocol_contract_tree_root) @@ -103,6 +106,7 @@ impl Serialize for BlockRootOrBl fields.extend_from_array(self.start_global_variables.serialize()); fields.extend_from_array(self.end_global_variables.serialize()); fields.push(self.out_hash as Field); + fields.extend_from_array(self.proposed_block_header_hashes); for i in 0..AZTEC_MAX_EPOCH_DURATION { fields.extend_from_array(self.fees[i].serialize()); } @@ -129,6 +133,7 @@ impl Deserialize for BlockRootOr start_global_variables: reader.read_struct(GlobalVariables::deserialize), end_global_variables: reader.read_struct(GlobalVariables::deserialize), out_hash: reader.read(), + proposed_block_header_hashes: reader.read_array(), fees: reader.read_struct_array( FeeRecipient::deserialize, [FeeRecipient::empty(); AZTEC_MAX_EPOCH_DURATION], diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_merge/block_merge_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_merge/block_merge_rollup_inputs.nr index a0e7d9fe737d..4ea43df93e54 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_merge/block_merge_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_merge/block_merge_rollup_inputs.nr @@ -51,6 +51,9 @@ impl BlockMergeRollupInputs { let out_hash = components::compute_blocks_out_hash(self.previous_rollup_data); + let proposed_block_header_hashes = + components::accumulate_proposed_block_header_hashes(left, right); + let fees = components::accumulate_blocks_fees(left, right); // TODO: We need to eventually accumulate blob info to a single BlobPublicInputs instance which will verify multiple blobs in one call @@ -65,6 +68,7 @@ impl BlockMergeRollupInputs { start_global_variables: left.start_global_variables, end_global_variables: right.end_global_variables, out_hash, + proposed_block_header_hashes, fees, vk_tree_root: left.vk_tree_root, protocol_contract_tree_root: left.protocol_contract_tree_root, diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/components/block_root_rollup_output_composer.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/components/block_root_rollup_output_composer.nr index fc6717e5c31b..31933c45eb1e 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/components/block_root_rollup_output_composer.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/components/block_root_rollup_output_composer.nr @@ -16,6 +16,7 @@ use types::{ content_commitment::ContentCommitment, merkle_tree::{append_only_tree, calculate_empty_tree_root}, partial_state_reference::PartialStateReference, + proposed_block_header::ProposedBlockHeader, state_reference::StateReference, traits::{Empty, Hash}, }; @@ -52,16 +53,18 @@ impl BlockRootRollupOutputComposer { let constants = self.merged_rollup.constants; // Build the block hash for this by hashing the header and then insert the new leaf to archive tree. - let new_block_hash = self - .create_new_block_header(constants, self.merged_rollup.end, blob_data.blobs_hash) - .hash(); + let new_block_header = + self.create_new_block_header(constants, self.merged_rollup.end, blob_data.blobs_hash); + let new_block_hash = new_block_header.hash(); let new_archive = self.update_archive(constants.last_archive, new_block_hash); + let proposed_block_header_hash = self.create_proposed_block_header(new_block_header).hash(); let block_blob_public_inputs = self.get_block_blob_public_inputs(blob_data); self.finish_with_new_values( constants, new_archive, + proposed_block_header_hash, self.merged_rollup.out_hash, block_blob_public_inputs, self.merged_rollup.accumulated_fees, @@ -75,17 +78,19 @@ impl BlockRootRollupOutputComposer { empty_effect_blob_public_input: BlobPublicInputs, is_padding: bool, ) -> BlockRootOrBlockMergePublicInputs { - let new_archive = if is_padding { - constants.last_archive + let (new_archive, proposed_block_header_hash) = if is_padding { + (constants.last_archive, 0) } else { - let new_block_hash = self - .create_new_block_header( - constants, - self.data.previous_block_header.state.partial, - empty_effect_blobs_hash, - ) - .hash(); - self.update_archive(constants.last_archive, new_block_hash) + let new_block_header = self.create_new_block_header( + constants, + self.data.previous_block_header.state.partial, + empty_effect_blobs_hash, + ); + let new_block_hash = new_block_header.hash(); + ( + self.update_archive(constants.last_archive, new_block_hash), + self.create_proposed_block_header(new_block_header).hash(), + ) }; let mut block_blob_public_inputs = BlockBlobPublicInputs::empty(); @@ -96,6 +101,7 @@ impl BlockRootRollupOutputComposer { self.finish_with_new_values( constants, new_archive, + proposed_block_header_hash, 0 /* out_hash */, block_blob_public_inputs, 0, /* accumulated_fees */ @@ -106,10 +112,14 @@ impl BlockRootRollupOutputComposer { self, constants: ConstantRollupData, new_archive: AppendOnlyTreeSnapshot, + proposed_block_header_hash: Field, out_hash: Field, block_blob_public_inputs: BlockBlobPublicInputs, accumulated_fees: Field, ) -> BlockRootOrBlockMergePublicInputs { + let mut proposed_block_header_hashes = [0; AZTEC_MAX_EPOCH_DURATION]; + proposed_block_header_hashes[0] = proposed_block_header_hash; + let mut fees = [FeeRecipient::empty(); AZTEC_MAX_EPOCH_DURATION]; fees[0] = FeeRecipient { recipient: constants.global_variables.coinbase, @@ -125,6 +135,7 @@ impl BlockRootRollupOutputComposer { start_global_variables: constants.global_variables, // we have asserted that left.constants == right.constants => ... end_global_variables: constants.global_variables, // ...with a current block range of 1, we only have 1 set of constants out_hash, + proposed_block_header_hashes, fees, vk_tree_root: constants.vk_tree_root, protocol_contract_tree_root: constants.protocol_contract_tree_root, @@ -171,6 +182,19 @@ impl BlockRootRollupOutputComposer { } } + fn create_proposed_block_header(_self: Self, block_header: BlockHeader) -> ProposedBlockHeader { + ProposedBlockHeader { + last_archive_root: block_header.last_archive.root, + content_commitment: block_header.content_commitment, + slot_number: block_header.global_variables.slot_number, + timestamp: block_header.global_variables.timestamp, + coinbase: block_header.global_variables.coinbase, + fee_recipient: block_header.global_variables.fee_recipient, + gas_fees: block_header.global_variables.gas_fees, + total_mana_used: block_header.total_mana_used, + } + } + fn update_archive( self, last_archive: AppendOnlyTreeSnapshot, diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr index 4f11779bc44b..3e8b1963b52d 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr @@ -68,6 +68,16 @@ pub fn assert_prev_block_rollups_follow_on_from_each_other( } } +pub fn accumulate_proposed_block_header_hashes( + left: BlockRootOrBlockMergePublicInputs, + right: BlockRootOrBlockMergePublicInputs, +) -> [Field; AZTEC_MAX_EPOCH_DURATION] { + array_merge( + left.proposed_block_header_hashes, + right.proposed_block_header_hashes, + ) +} + pub fn accumulate_blocks_fees( left: BlockRootOrBlockMergePublicInputs, right: BlockRootOrBlockMergePublicInputs, diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_inputs.nr index 41d5937b8edd..7f0682bbae7c 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_inputs.nr @@ -56,6 +56,9 @@ impl RootRollupInputs { let out_hash = components::compute_blocks_out_hash(self.previous_rollup_data); + let proposed_block_header_hashes = + components::accumulate_proposed_block_header_hashes(left, right); + let fees = components::accumulate_blocks_fees(left, right); // TODO: We need to eventually accumulate blob info to a single BlobPublicInputs instance which will verify multiple blobs in one call @@ -70,7 +73,10 @@ impl RootRollupInputs { end_timestamp: right.end_global_variables.timestamp, end_block_number: right.end_global_variables.block_number, out_hash, + proposed_block_header_hashes, fees, + chain_id: right.end_global_variables.chain_id, + version: right.end_global_variables.version, vk_tree_root: left.vk_tree_root, protocol_contract_tree_root: left.protocol_contract_tree_root, prover_id: self.prover_id, diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_public_inputs.nr index a0dca33af5f8..1c59b135a69e 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_public_inputs.nr @@ -2,6 +2,7 @@ use crate::abis::block_root_or_block_merge_public_inputs::FeeRecipient; use dep::types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot; use dep::types::constants::AZTEC_MAX_EPOCH_DURATION; use blob::blob_public_inputs::BlockBlobPublicInputs; + pub struct RootRollupPublicInputs { // Snapshot of archive tree before/after this rollup has been processed pub previous_archive: AppendOnlyTreeSnapshot, @@ -9,7 +10,10 @@ pub struct RootRollupPublicInputs { pub end_timestamp: u64, pub end_block_number: Field, pub out_hash: Field, + pub proposed_block_header_hashes: [Field; AZTEC_MAX_EPOCH_DURATION], pub fees: [FeeRecipient; AZTEC_MAX_EPOCH_DURATION], + pub chain_id: Field, + pub version: Field, pub vk_tree_root: Field, pub protocol_contract_tree_root: Field, pub prover_id: Field, diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-merge/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-merge/Prover.toml index 06f3164f4dd0..c552caec2b7b 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-merge/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-merge/Prover.toml @@ -3,57 +3,57 @@ rollup_type = "0x0000000000000000000000000000000000000000000000000000000000000000" num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" -accumulated_fees = "0x00000000000000000000000000000000000000000000000000000000242f4350" -accumulated_mana_used = "0x00000000000000000000000000000000000000000000000000000000000122f8" +accumulated_fees = "0x000000000000000000000000000000000000000000000000000000000938eb00" +accumulated_mana_used = "0x0000000000000000000000000000000000000000000000000000000000004a40" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants] - vk_tree_root = "0x0e88f44969aa6d4ff0d17db376dfa057ed3aa447725b0febf35af08e0d1d468e" - protocol_contract_tree_root = "0x1ed87d453cb7c21c5dbca65441925b3f9138fd1433928dda23342367bf94f7c0" + vk_tree_root = "0x2ca9a33f5bf72a45ff0bc18657afa956eb151243a9bc9d3c113e4c711634fd7e" + protocol_contract_tree_root = "0x2d4c1fe46d355909b04374f3890ac9b6649eabcd85e2c8dd82e237c5808626ba" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.last_archive] - root = "0x00a03e097c9f5f687c2f39ebede1ea64f99cebe6e9b857a8a5ae772e5e39dbf5" + root = "0x2bbf3efb1d9ded1f0b832e85a76cf870890bb247932f227a1a719caccbf2c08c" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000013" - timestamp = "0x000000000000000000000000000000000000000000000000000000006808179b" + timestamp = "0x00000000000000000000000000000000000000000000000000000000680a0d04" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.coinbase] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fd6" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fcc" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.note_hash_tree] -root = "0x2a210f33edaa26344e4020ae52e79f6a85441af233181925ba9318ee9dee8459" +root = "0x1b1744762a36bdf22968c082e560e62c7436825aa5febe023b0cbd7dc914c9a7" next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000001c0" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.nullifier_tree] -root = "0x26e385201b7b194a3116edd3095eb08c3426a090e12f0c3be2e7f4c9e1c97d68" +root = "0x0c28b79cc1be09f56e4ef8b7c60878a0b5de05639aaea24b1a28550bee682dc4" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000240" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.public_data_tree] -root = "0x1955da4d91ed3a7a9ca53b7cbebcc4c8454a26666a95894186f81c6b61a17f89" +root = "0x0306a5673c379f0789056b7cf87f08f175768751bbb35616068be0dcdb117f34" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.note_hash_tree] -root = "0x2a210f33edaa26344e4020ae52e79f6a85441af233181925ba9318ee9dee8459" +root = "0x0093fc4d0088ca8f86738c65d9d63e4bb39a2c6be2a83fcf6b69af8abd34cfbb" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.nullifier_tree] -root = "0x263138d3e0245b63ab76eb58f02587c4f3a5262482517f85d238df4f9601a302" +root = "0x045e87ab7fe89bccdd0065da09137bd04f747ea0f6c4c7dde49f5d928a0bdebd" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000280" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.public_data_tree] -root = "0x10a5ba2d506fed90c8a1de206016e77866076c41b3245e93efe2cc9d722dd1b9" -next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008f" +root = "0x2efaaa1e5b3949fdcc3a63e0a985c5db385b7d87b230a7dc61940373f4a1959e" +next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob] fields = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -75,22 +75,22 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 squeeze_mode = false [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob] - fields = "0x000000000000000000000000000000000000000000000000000000000000000c" + fields = "0x0000000000000000000000000000000000000000000000000000000000000046" expected_fields = "0x000000000000000000000000000000000000000000000000000000000000005c" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob.sponge] cache = [ - "0x00000000000000000000000000000000000000000000000000000000000003e8", - "0x09fd5c7c298012061da066dcf7be4f12f36076f057acc0938e10ea9053c6e792", - "0x00000000000000000000000000000000000000000000021e19e0c9b10c350d30" + "0x00b42a0ddf27f8a260a03e4ce24fe840bebbe1241cc114df1f268848c982ba40", + "0x003498967a634112d0a79fd6b8f499090e928d52aaaf49a000882dae894cffdb", + "0x003893491dd96d5b47f6e837fc38911d4ebd0013a1f88f94554a152888990321" ] state = [ - "0x1ac0629f888681e9bc964d45628dfaa8350e42d52530b6d669edb122a9fd4f3c", - "0x28b9e0c2440470692c29ee74d7dae80b54d53427070accf3d08e0b3869f1f9c7", - "0x1a8cb5fcfa2a0fa653c3cbbd9a3faf90f490036eff253687713cd7ee44864754", - "0x2b891700e4c2ea4ba71a288871a5775d0e15e9c7cb790f98a0f35beedeefd22c" + "0x065cf958bf3cf0d2a8f410bb460b6c0813d8a208af26cc151b932652c2fbd7d0", + "0x040aea884a0b4e719bdf3495bc017dd0ca1e7d769ac383479b6803ea991d75c1", + "0x266d4eef8e521b25bde21da1d39a1afc22956d2240e7b9c8f6402970bd6c6613", + "0x2b2b4bf0416af18b3a5b6d6f57ecc6b735992611e2380ee8fb66dad07bf14199" ] - cache_size = "0x0000000000000000000000000000000000000000000000000000000000000003" + cache_size = "0x0000000000000000000000000000000000000000000000000000000000000001" squeeze_mode = false [inputs.previous_rollup_data.proof] @@ -639,90 +639,90 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000034", "0x0000000000000000000000000000000000000000000000000000000000000044", - "0x000000000000000000000000000000307f5b8d76dd2a6510221d72ef2af872de", - "0x000000000000000000000000000000000021c674ae84acf95641d459aaeebf73", - "0x0000000000000000000000000000002e1d308105f1ae6bed2310a0f6f3554c6d", - "0x00000000000000000000000000000000001645f93a33f9454bd3a48f0435ab7c", - "0x000000000000000000000000000000f9514ed6fb8f36b60052b4a7ee87b58891", - "0x0000000000000000000000000000000000236c0e98f540a52818d53063f80ab3", - "0x000000000000000000000000000000093d4fb792c433f8a3f78651fbd00154bf", - "0x000000000000000000000000000000000015fef1f8ac1fa0afe6d4b86d0703fd", - "0x000000000000000000000000000000f3f1d5db5cd86529eb4be793a1c09c90d0", - "0x00000000000000000000000000000000002b1c0b1b6e6ff40a1db0d56b92e48c", - "0x000000000000000000000000000000c87448ac0aa0ac0289540732c0be55a27c", - "0x00000000000000000000000000000000001d4b1bb612a4e03e99d6a34eb8a19c", - "0x000000000000000000000000000000653b6a66eb5f828a305feebcc32e6c4991", - "0x000000000000000000000000000000000022cb8bb34f30da3b2cafa6bed058d2", - "0x000000000000000000000000000000cf167ec9502aef45bcc3e9532e0c35213d", - "0x0000000000000000000000000000000000089988b259ea79bc7e5279a584fcca", - "0x000000000000000000000000000000559ea843cb44625df56c97d84fd431af08", - "0x000000000000000000000000000000000007419e3e6e97977939958acc8a257a", - "0x000000000000000000000000000000a5db67870c6c3fcc896f2837fe8861abf1", - "0x0000000000000000000000000000000000104e397c72db51d5e8ef949bc4a736", - "0x00000000000000000000000000000018728c390bc83fa2ac2ecd34989b3200c3", - "0x00000000000000000000000000000000001fc6ff9c5f27febaa9bfa3efa16c42", - "0x000000000000000000000000000000ace95fb022b84dd977890e6b4b6e2f02ff", - "0x000000000000000000000000000000000007d5e1c80a25150fcc9d4e5069a8bd", + "0x000000000000000000000000000000a768ed676843599b422c9e067aa2474f85", + "0x0000000000000000000000000000000000008d9158a175d58ef9d5fd635f1da2", + "0x000000000000000000000000000000a4baa64d2937d0572830bd54adf65fac01", + "0x00000000000000000000000000000000000e03a8f808732c790b786a934c3634", + "0x0000000000000000000000000000004b1c1d41e60b419ffe25714e2aecae7610", + "0x00000000000000000000000000000000001022ddf34c93ec2c6a9f20aa5a14c0", + "0x0000000000000000000000000000005e1c9bec3dbee8141597f690f5dae13726", + "0x00000000000000000000000000000000000e2a3885eb7a5cb70584c5fa1324b7", + "0x0000000000000000000000000000001f028b9a157b94ccd24b82915657266d00", + "0x00000000000000000000000000000000001fad46aad2a6f03b067077c8e4e2ea", + "0x000000000000000000000000000000b6bf80d6151d957f21da4cf1d79a0f52a7", + "0x000000000000000000000000000000000023e95f738bf821b96eab2a5ccfd16d", + "0x0000000000000000000000000000002c26b63c0e5df871f5a2924aa8513342d3", + "0x0000000000000000000000000000000000300c9ad149711903bda944a231f5ca", + "0x000000000000000000000000000000bf5c5019fa690564f7f1414588a14e35a0", + "0x000000000000000000000000000000000024fbf63ca5add63cda039bb4fdc208", + "0x0000000000000000000000000000001bd84240c4bcce123f27bd6d3d1be579ef", + "0x00000000000000000000000000000000000ddd3c34b0920a7745a9d6f371ad67", + "0x0000000000000000000000000000008bf9186defa9aca257cabc6d0a55ef82ef", + "0x000000000000000000000000000000000026b176f2d8e4849ea03d3013196943", + "0x0000000000000000000000000000005cb31726228eb159bd9da4fde63ceeffb1", + "0x00000000000000000000000000000000000032b9b8b0edbbb34cf39d0b1649d5", + "0x00000000000000000000000000000068856b90e8bd1b7ea9eb0ddf87ae1efa97", + "0x00000000000000000000000000000000001f4d7837d6371689e6f0318d858a18", "0x000000000000000000000000000000e7bab6896d9724b5b46b796551dc5feed2", "0x00000000000000000000000000000000001fd93debdcf16cc93f99efd69e938d", "0x0000000000000000000000000000004b94434e1705c9bc2a4f5b2bc2a05c3c03", "0x00000000000000000000000000000000002a29d5563fd08e454dace1605a1aa5", - "0x00000000000000000000000000000001ff2ac57b1c52fd3a5589a5ef3ef608cc", - "0x00000000000000000000000000000000000ae1f6d097efb73837c888206b5627", - "0x0000000000000000000000000000006a94cb27951e584fc7f6a77c685ad6b3d6", - "0x000000000000000000000000000000000019033c84dd0600c909bb8890907b6c", - "0x0000000000000000000000000000002f797ff83a0322e549a331c3e371e42317", - "0x000000000000000000000000000000000001682d1c02a03f8a86ecf633d68035", - "0x000000000000000000000000000000264c49167f0708052d371dbd0b9db133f9", - "0x00000000000000000000000000000000000def14918ebd1ec70252b1aa4f2f30", - "0x0000000000000000000000000000005a0ea3aa1dcb16c1e378a12776139175e6", - "0x00000000000000000000000000000000002230ef6d2bbfa1e43387c54053acda", - "0x0000000000000000000000000000002eba4a74542fcfc0d0c9f20f4266c29be2", - "0x0000000000000000000000000000000000122782fec208fa2da7a3806b3f0411", - "0x000000000000000000000000000000e47cd90b2766343c427897b438440f85f0", - "0x000000000000000000000000000000000001843b9079a49fdcd73c16b776afce", - "0x00000000000000000000000000000053362ad18d8713df3273e67f27a98bc375", - "0x00000000000000000000000000000000001a78a3a8232eb885f480c958fe96b3", - "0x0000000000000000000000000000007d034f697037899c24c6eff17ec8ec99b3", - "0x0000000000000000000000000000000000237adf05233c7587b7816cc71e1206", - "0x00000000000000000000000000000083d2a090d67772f3c78797cee894b1563f", - "0x00000000000000000000000000000000001b6075b87892de831d14dba4b42ca1", - "0x0000000000000000000000000000009e67d900ce38bc0a8ba4ba574627e95535", - "0x000000000000000000000000000000000023a12ad8dc157995bee182a1984bba", - "0x000000000000000000000000000000f8611d968082bab97c4caff11d8504e7b2", - "0x000000000000000000000000000000000023747bf4d19033795b66878bc77504", - "0x0000000000000000000000000000007012d641797376834f136a3cc9239b1922", - "0x00000000000000000000000000000000000bc4036aff2fd78afa72b53d26ea9a", - "0x0000000000000000000000000000009f79a73ba8c460801141cfef6a699f52bd", - "0x000000000000000000000000000000000011c13766ad192df4ddada5b412b0e0", - "0x00000000000000000000000000000057079418ae7686eb442cc4a9e4fa08a908", - "0x00000000000000000000000000000000002ae5e170f3e228b1ea2bbcbd277f42", - "0x000000000000000000000000000000da3cef02586fd7acdb2868edec4cde83c7", - "0x000000000000000000000000000000000001e2d8a35f8d8d85af2f433537c377", - "0x000000000000000000000000000000f9e997bb1718df60f3f958a827db0eea9e", - "0x000000000000000000000000000000000021fdeb56e87b959d2e0d48dfc5517b", - "0x000000000000000000000000000000d5110e9037e70d55d6c726a7608703009c", - "0x000000000000000000000000000000000012d7b7a753bffe46b32fbf04299da3", - "0x000000000000000000000000000000d33100f3a27346c959de3636e67373bad0", - "0x00000000000000000000000000000000002ea5a3a3baec5d0f9ace2c6400d566", - "0x0000000000000000000000000000006562dea7d8149e7e1b43fc816fd8eacbe7", - "0x000000000000000000000000000000000019b679db1fbc606804a344b7c338b9", - "0x0000000000000000000000000000002cb02cc09d5c9dc19cc3a089bf6027f0c0", - "0x00000000000000000000000000000000002959370c7abaefcf98ee27bf19313f", - "0x0000000000000000000000000000001592dcd3bb305e32b40619d9135153f03b", - "0x0000000000000000000000000000000000282d2b2c5f2bf993517721fd2d2b1f", - "0x0000000000000000000000000000001acd10314f56403d936c89faaf382c46c0", - "0x000000000000000000000000000000000009b9d53924cf543750b6d278659b6f", - "0x00000000000000000000000000000094f08329658951cbed51f33549fe64ab5f", - "0x0000000000000000000000000000000000164697c899d232d842f48ce348f492", - "0x000000000000000000000000000000afd86924f1e86aa270ad8c6da8343f4a77", - "0x00000000000000000000000000000000000314a4b080634c56931653166fbabf", - "0x000000000000000000000000000000eb1246f4419815e47f1d5ae8d6dba6d962", - "0x00000000000000000000000000000000001f313c2da4433c6c54d4af0d2b2b17", - "0x000000000000000000000000000000236795d1eebaf06bfbdb1493a682637d52", - "0x000000000000000000000000000000000011b0eeaa05e3097cd5da0a34873236", - "0x000000000000000000000000000000dad932f24983ce4571cd0ead65267e8e7b", - "0x000000000000000000000000000000000015240dde6f5f8790cc86a5fc2fb794", + "0x0000000000000000000000000000004088d11e3e9cc1754d3336ed890a8920a8", + "0x000000000000000000000000000000000013b21dc489437bf27d0750d51e86e2", + "0x00000000000000000000000000000034fa883588a4ab4b84316c5d2da5fe0821", + "0x000000000000000000000000000000000010ff74c0cd73d1c0bb15c022493cb1", + "0x00000000000000000000000000000093740f0150a6d73a0eee1a99d910cfc8c3", + "0x0000000000000000000000000000000000012d1a93291827412ee83584e817e8", + "0x000000000000000000000000000000e7daa5ec14f6c4f0dc1e74a2b0a1d0d10a", + "0x000000000000000000000000000000000002d4c796235833e32b8127ca46a058", + "0x000000000000000000000000000000cc1d1399a8aa30784fbffef503675ea05b", + "0x00000000000000000000000000000000001866e3f06554b952c3c1ff796141db", + "0x00000000000000000000000000000085a454789ddeffd687edd98856c4e226ba", + "0x000000000000000000000000000000000008520d8f85f1428b7395378a064772", + "0x0000000000000000000000000000001fc9dfcdcb3a7c5bc1ab2f05e186a3e2e0", + "0x00000000000000000000000000000000001ffa675245b8ac2f830b9e76f86d1d", + "0x0000000000000000000000000000009eb3faae15a211037ddcfd7f3dcf3380b4", + "0x000000000000000000000000000000000021adf0881fda43de2df86fb65201f3", + "0x000000000000000000000000000000239ae5bafcd0de431dd1d6dec9f2e5769c", + "0x00000000000000000000000000000000001cb3d81e233738b5f333b4a4df1c85", + "0x0000000000000000000000000000000a4a08b77b6a55a5477f70b98df51ed0eb", + "0x00000000000000000000000000000000001bd92a7c2b698c6f83bb1742e74620", + "0x000000000000000000000000000000777df8c717260dd4423790111f90c55402", + "0x0000000000000000000000000000000000103d6db19a1db8973700250fcb569a", + "0x0000000000000000000000000000003c965677c9146b88c625882b2a24bb7615", + "0x0000000000000000000000000000000000269e9219fb25b975aa0f6d62cb854f", + "0x00000000000000000000000000000056b2ee8e539be0d4385ea337e89a7cf239", + "0x00000000000000000000000000000000001170a4a71a433b074f7a5cac91a735", + "0x0000000000000000000000000000009ec1f6e94c003b89e47b2c62df4a3d2ceb", + "0x00000000000000000000000000000000001b237b4c6d931d046c059953e1ef89", + "0x00000000000000000000000000000052b4f44bd6b86818b017ece858b0492988", + "0x00000000000000000000000000000000000308a110c3d1aaa21b2a24a8c27c15", + "0x00000000000000000000000000000097baf95e01494474e68d6a828ca2435c25", + "0x0000000000000000000000000000000000132583d49f5e680599e51992469e68", + "0x000000000000000000000000000000c8dd521b2e5d1c7b6f345f718705272546", + "0x00000000000000000000000000000000000795a2ab73584d119d0b60c0eedff1", + "0x000000000000000000000000000000471eae61d1a6d33dfcc0168927cd4e4c49", + "0x000000000000000000000000000000000017b81e029f2d0786355892299f2f15", + "0x0000000000000000000000000000001a3fdc4dfd079bface5c9bccb5a35a50fd", + "0x0000000000000000000000000000000000297d69f5a505cb200e63caef359387", + "0x000000000000000000000000000000d5d89172022cea31a534247e69fcb74a84", + "0x00000000000000000000000000000000001e2bd59b757e46d337fa99d8245511", + "0x000000000000000000000000000000b4d9e35b62db3d4733de2522202ef4f877", + "0x0000000000000000000000000000000000258d84b2dace2fa46db09be8ef7dbe", + "0x000000000000000000000000000000622e8dbc445c7cbb330a9dc3dc160d53bc", + "0x00000000000000000000000000000000002ea86fbc3305df7c31cf60b7176ded", + "0x000000000000000000000000000000beb619f9026ef0be0aea93ce8447b02cbc", + "0x000000000000000000000000000000000022992c295190447701b5dc259f79f6", + "0x00000000000000000000000000000035dec07a472218661201711fd06993546f", + "0x00000000000000000000000000000000001514bfc3c52b17f601968e3ba891eb", + "0x000000000000000000000000000000333124801df92108e914e794591ad20aa5", + "0x000000000000000000000000000000000016e14444c0066acae8c16ba4799ffb", + "0x000000000000000000000000000000f895b44066de60da130cf9d7dace4ef881", + "0x00000000000000000000000000000000000cbedc5851c6487272b080e4ef81a4", + "0x000000000000000000000000000000043844ae0d4adc4ff5b4d41b5ecdc9008b", + "0x00000000000000000000000000000000001ad0b16dcd1050344ec032e9febe3e", + "0x000000000000000000000000000000e52828c884243239913fb5d369d9ad4ae3", + "0x000000000000000000000000000000000005b5580990801228c0ed4542e3552f", "0x000000000000000000000000000000e97fb648fc1ff99f9988a73de181e0de22", "0x000000000000000000000000000000000024cae2d5d2c4daefe858889eeb01b8", "0x000000000000000000000000000000e072297115d09425f5612d626dc82f1002", @@ -743,20 +743,20 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000001567f3f96a0c53ad32d96de09ac1cae126", - "0x000000000000000000000000000000000026baae0f0d8505282894f5ada72223", - "0x00000000000000000000000000000011679c6c956cae3c86d399a00bb3aa46de", - "0x00000000000000000000000000000000001bd9f4cdafea960e099cb8afad8a8a" + "0x000000000000000000000000000000c00b82f8fe929a578eec1e4499c853056e", + "0x00000000000000000000000000000000002ef560e02b9d4049c7763c505bbdec", + "0x00000000000000000000000000000092814a8b43f8784e84b5d2ff2f9c574a0d", + "0x00000000000000000000000000000000001dae738e0d94bbe74aa067ffcbb47c" ] -hash = "0x1751bf2ab202248a6492799a5f9f642977f1b79534bfd21a4f5593ddb904fd83" +hash = "0x0969e5658f9ac7f1acd7a350fd1de7f58029386e0c52761e0e6fb5daa2f2ade2" [inputs.previous_rollup_data.vk_witness] -leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" +leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" sibling_path = [ - "0x139a036976ef42dc38c7932e2e678f7ce993134e15e566c8582d93a47dbd6873", + "0x0d34c4a04593e7d4c2ce9859b5e7c569f7ec7999fc359fc3784ddb69819c1459", "0x166d9200203972a67e495e091356eb547f3ad77502de0163b0eb32598c42137d", "0x2b1e1e7283812220e8fa0a163f5e89d80b5abffa9452ac97941a650c5eda03a4", - "0x223b98513f87a3be6816ac1e2a1b87a807169110828d2b808a707609e4217d13", + "0x1579d8714bffc417282d461161468745ec125da568e082364e4896fbad931bd1", "0x0a5cccc6f5c49119df17ad49125046e1f8ade560372f415e56d28bab8a1fba34", "0x042567ea670fc3ff2b8c48b244f6a0c96944c6b969143cf0cfacfd97e5b929aa" ] @@ -766,94 +766,94 @@ sibling_path = [ rollup_type = "0x0000000000000000000000000000000000000000000000000000000000000000" num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" -accumulated_fees = "0x0000000000000000000000000000000000000000000000000000000012af39aa" +accumulated_fees = "0x0000000000000000000000000000000000000000000000000000000012a95b34" accumulated_mana_used = "0x000000000000000000000000000000000000000000000000000000000000963f" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants] - vk_tree_root = "0x0e88f44969aa6d4ff0d17db376dfa057ed3aa447725b0febf35af08e0d1d468e" - protocol_contract_tree_root = "0x1ed87d453cb7c21c5dbca65441925b3f9138fd1433928dda23342367bf94f7c0" + vk_tree_root = "0x2ca9a33f5bf72a45ff0bc18657afa956eb151243a9bc9d3c113e4c711634fd7e" + protocol_contract_tree_root = "0x2d4c1fe46d355909b04374f3890ac9b6649eabcd85e2c8dd82e237c5808626ba" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.last_archive] - root = "0x00a03e097c9f5f687c2f39ebede1ea64f99cebe6e9b857a8a5ae772e5e39dbf5" + root = "0x2bbf3efb1d9ded1f0b832e85a76cf870890bb247932f227a1a719caccbf2c08c" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000013" - timestamp = "0x000000000000000000000000000000000000000000000000000000006808179b" + timestamp = "0x00000000000000000000000000000000000000000000000000000000680a0d04" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.coinbase] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fd6" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fcc" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.note_hash_tree] -root = "0x2a210f33edaa26344e4020ae52e79f6a85441af233181925ba9318ee9dee8459" +root = "0x0093fc4d0088ca8f86738c65d9d63e4bb39a2c6be2a83fcf6b69af8abd34cfbb" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.nullifier_tree] -root = "0x263138d3e0245b63ab76eb58f02587c4f3a5262482517f85d238df4f9601a302" +root = "0x045e87ab7fe89bccdd0065da09137bd04f747ea0f6c4c7dde49f5d928a0bdebd" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000280" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.public_data_tree] -root = "0x10a5ba2d506fed90c8a1de206016e77866076c41b3245e93efe2cc9d722dd1b9" -next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008f" +root = "0x2efaaa1e5b3949fdcc3a63e0a985c5db385b7d87b230a7dc61940373f4a1959e" +next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.note_hash_tree] -root = "0x2a210f33edaa26344e4020ae52e79f6a85441af233181925ba9318ee9dee8459" +root = "0x0093fc4d0088ca8f86738c65d9d63e4bb39a2c6be2a83fcf6b69af8abd34cfbb" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000240" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.nullifier_tree] -root = "0x0d4615ea8ded14fbe3a6827ffdb73e12089560d3b764eeb5c4e030e1055e3657" +root = "0x1b686f58a0701c79d6081a01f1e7ef2c5a4ac6314197d80993d8c68fd099b94e" next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000002c0" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.public_data_tree] -root = "0x05ae2908ae282dce5403098eb79b25a877286e8a6e86ba9e3b4ff01aaf4d41e0" -next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008f" +root = "0x23111304e36d67b20dc68b03e6e75905c34ab30732396a0377fdb9b8b0fb3676" +next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob] - fields = "0x000000000000000000000000000000000000000000000000000000000000000c" + fields = "0x0000000000000000000000000000000000000000000000000000000000000046" expected_fields = "0x000000000000000000000000000000000000000000000000000000000000005c" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob.sponge] cache = [ - "0x00000000000000000000000000000000000000000000000000000000000003e8", - "0x09fd5c7c298012061da066dcf7be4f12f36076f057acc0938e10ea9053c6e792", - "0x00000000000000000000000000000000000000000000021e19e0c9b10c350d30" + "0x00b42a0ddf27f8a260a03e4ce24fe840bebbe1241cc114df1f268848c982ba40", + "0x003498967a634112d0a79fd6b8f499090e928d52aaaf49a000882dae894cffdb", + "0x003893491dd96d5b47f6e837fc38911d4ebd0013a1f88f94554a152888990321" ] state = [ - "0x1ac0629f888681e9bc964d45628dfaa8350e42d52530b6d669edb122a9fd4f3c", - "0x28b9e0c2440470692c29ee74d7dae80b54d53427070accf3d08e0b3869f1f9c7", - "0x1a8cb5fcfa2a0fa653c3cbbd9a3faf90f490036eff253687713cd7ee44864754", - "0x2b891700e4c2ea4ba71a288871a5775d0e15e9c7cb790f98a0f35beedeefd22c" + "0x065cf958bf3cf0d2a8f410bb460b6c0813d8a208af26cc151b932652c2fbd7d0", + "0x040aea884a0b4e719bdf3495bc017dd0ca1e7d769ac383479b6803ea991d75c1", + "0x266d4eef8e521b25bde21da1d39a1afc22956d2240e7b9c8f6402970bd6c6613", + "0x2b2b4bf0416af18b3a5b6d6f57ecc6b735992611e2380ee8fb66dad07bf14199" ] - cache_size = "0x0000000000000000000000000000000000000000000000000000000000000003" + cache_size = "0x0000000000000000000000000000000000000000000000000000000000000001" squeeze_mode = false [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob] - fields = "0x0000000000000000000000000000000000000000000000000000000000000016" + fields = "0x0000000000000000000000000000000000000000000000000000000000000050" expected_fields = "0x000000000000000000000000000000000000000000000000000000000000005c" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob.sponge] cache = [ - "0x00000000000000000000000000000000000000000000021e19e0c9b0f985d386", - "0x06615e4b566a640e99213edb664c8c0b49c5e833c3a4b16116fe1de9d06382da", - "0x09fd5c7c298012061da066dcf7be4f12f36076f057acc0938e10ea9053c6e792" + "0x0ba141be7707b610effe839006ce19b56369c383fd75436de163b39fdcf809d1", + "0x00000000000000000000000000000000000000000000021e19e0c9b116aabe40", + "0x0eaa5f9a2339cab09e553484a4b465925e63f182ba64af15e0617743b623872c" ] state = [ - "0x1b9cbb362a628a340df827668a5d69b02696af12e06d2caeba8c017d0359453f", - "0x27b1a802172a0a3bf0ac4ca37e0e63643318d443b294c5822742887425cc6a4e", - "0x28ad9cce1de3b1b07607dcd3de4d667dc01af6d8a5ecf0ae73c7e9ac8da2a80c", - "0x1f5972306d7067e3ee6f71c2978e6d62e9fdac96dc9a1214a552608d3fbfcb57" + "0x075c433a0db82458a5150114df4037f90adf457ea11d479e5d3cbba525e682ff", + "0x1dd1d22f016dfdcbec2b674a6c54d8c4aa9b77a9df0226997739b87dcd5c438b", + "0x196f6f03376b2f7bb2dfb30c1c54db84c86f4e622795be33040fd43d420a7ef4", + "0x1cad5bf6a68c3c8d188d3ac0ca29d22650ea4613960a5ba2334abf6ddd78e666" ] - cache_size = "0x0000000000000000000000000000000000000000000000000000000000000001" + cache_size = "0x0000000000000000000000000000000000000000000000000000000000000002" squeeze_mode = false [inputs.previous_rollup_data.proof] @@ -1402,90 +1402,90 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000034", "0x0000000000000000000000000000000000000000000000000000000000000044", - "0x000000000000000000000000000000307f5b8d76dd2a6510221d72ef2af872de", - "0x000000000000000000000000000000000021c674ae84acf95641d459aaeebf73", - "0x0000000000000000000000000000002e1d308105f1ae6bed2310a0f6f3554c6d", - "0x00000000000000000000000000000000001645f93a33f9454bd3a48f0435ab7c", - "0x000000000000000000000000000000f9514ed6fb8f36b60052b4a7ee87b58891", - "0x0000000000000000000000000000000000236c0e98f540a52818d53063f80ab3", - "0x000000000000000000000000000000093d4fb792c433f8a3f78651fbd00154bf", - "0x000000000000000000000000000000000015fef1f8ac1fa0afe6d4b86d0703fd", - "0x000000000000000000000000000000f3f1d5db5cd86529eb4be793a1c09c90d0", - "0x00000000000000000000000000000000002b1c0b1b6e6ff40a1db0d56b92e48c", - "0x000000000000000000000000000000c87448ac0aa0ac0289540732c0be55a27c", - "0x00000000000000000000000000000000001d4b1bb612a4e03e99d6a34eb8a19c", - "0x000000000000000000000000000000653b6a66eb5f828a305feebcc32e6c4991", - "0x000000000000000000000000000000000022cb8bb34f30da3b2cafa6bed058d2", - "0x000000000000000000000000000000cf167ec9502aef45bcc3e9532e0c35213d", - "0x0000000000000000000000000000000000089988b259ea79bc7e5279a584fcca", - "0x000000000000000000000000000000559ea843cb44625df56c97d84fd431af08", - "0x000000000000000000000000000000000007419e3e6e97977939958acc8a257a", - "0x000000000000000000000000000000a5db67870c6c3fcc896f2837fe8861abf1", - "0x0000000000000000000000000000000000104e397c72db51d5e8ef949bc4a736", - "0x00000000000000000000000000000018728c390bc83fa2ac2ecd34989b3200c3", - "0x00000000000000000000000000000000001fc6ff9c5f27febaa9bfa3efa16c42", - "0x000000000000000000000000000000ace95fb022b84dd977890e6b4b6e2f02ff", - "0x000000000000000000000000000000000007d5e1c80a25150fcc9d4e5069a8bd", + "0x000000000000000000000000000000af9c88751f58d61f042e640720a0a23066", + "0x00000000000000000000000000000000001225563adbbe76285b5d2f4506eb08", + "0x000000000000000000000000000000ad6bfa4bb51f3c4f899caceda72d69520a", + "0x00000000000000000000000000000000000717e53109c19a207905e54314143f", + "0x000000000000000000000000000000437f9f7d66a0522576e2fcfc80f8a67772", + "0x00000000000000000000000000000000000620855bd7afa125ed18963734e798", + "0x0000000000000000000000000000009b4b5735b19b352e6992e4e6ec0412a521", + "0x0000000000000000000000000000000000023474c36e77e7149cfa653883eff5", + "0x00000000000000000000000000000044543a47775019483badaec45f886582d3", + "0x0000000000000000000000000000000000291b45d4cacd05acc54c81c2cf9720", + "0x0000000000000000000000000000005ef932fbff5e8dc75c816e2711cf8a6669", + "0x00000000000000000000000000000000001359097ae404a0134058e9f01f2b4d", + "0x000000000000000000000000000000a410cd6dedac6ffee8a1e09222833f1510", + "0x00000000000000000000000000000000000aeb399ef4d65d73ba51cd9772943c", + "0x000000000000000000000000000000c568a8b049b0fd4e1b9bb3ce9608b6d9f2", + "0x000000000000000000000000000000000014f673ab8805dfecb0761bf1307775", + "0x000000000000000000000000000000a5ee4935d22a4c9a20b1a891a0f7241160", + "0x000000000000000000000000000000000028b915b0bc75d778b06e7fa64990dc", + "0x000000000000000000000000000000ab0f19324e4196c3a71b2b66d4e8f30faf", + "0x00000000000000000000000000000000000640002d6d1d813e777debbea88bc0", + "0x0000000000000000000000000000003eb2fd643f87db27ffe1a2ef71d336c832", + "0x00000000000000000000000000000000000462378bf88054e17663ff1097be0d", + "0x0000000000000000000000000000007863927c65042524ec8e8179185aceec36", + "0x000000000000000000000000000000000009ad5747c754f45465da75a929bbb0", "0x000000000000000000000000000000e7bab6896d9724b5b46b796551dc5feed2", "0x00000000000000000000000000000000001fd93debdcf16cc93f99efd69e938d", "0x0000000000000000000000000000004b94434e1705c9bc2a4f5b2bc2a05c3c03", "0x00000000000000000000000000000000002a29d5563fd08e454dace1605a1aa5", - "0x00000000000000000000000000000001ff2ac57b1c52fd3a5589a5ef3ef608cc", - "0x00000000000000000000000000000000000ae1f6d097efb73837c888206b5627", - "0x0000000000000000000000000000006a94cb27951e584fc7f6a77c685ad6b3d6", - "0x000000000000000000000000000000000019033c84dd0600c909bb8890907b6c", - "0x0000000000000000000000000000002f797ff83a0322e549a331c3e371e42317", - "0x000000000000000000000000000000000001682d1c02a03f8a86ecf633d68035", - "0x000000000000000000000000000000264c49167f0708052d371dbd0b9db133f9", - "0x00000000000000000000000000000000000def14918ebd1ec70252b1aa4f2f30", - "0x0000000000000000000000000000005a0ea3aa1dcb16c1e378a12776139175e6", - "0x00000000000000000000000000000000002230ef6d2bbfa1e43387c54053acda", - "0x0000000000000000000000000000002eba4a74542fcfc0d0c9f20f4266c29be2", - "0x0000000000000000000000000000000000122782fec208fa2da7a3806b3f0411", - "0x000000000000000000000000000000e47cd90b2766343c427897b438440f85f0", - "0x000000000000000000000000000000000001843b9079a49fdcd73c16b776afce", - "0x00000000000000000000000000000053362ad18d8713df3273e67f27a98bc375", - "0x00000000000000000000000000000000001a78a3a8232eb885f480c958fe96b3", - "0x0000000000000000000000000000007d034f697037899c24c6eff17ec8ec99b3", - "0x0000000000000000000000000000000000237adf05233c7587b7816cc71e1206", - "0x00000000000000000000000000000083d2a090d67772f3c78797cee894b1563f", - "0x00000000000000000000000000000000001b6075b87892de831d14dba4b42ca1", - "0x0000000000000000000000000000009e67d900ce38bc0a8ba4ba574627e95535", - "0x000000000000000000000000000000000023a12ad8dc157995bee182a1984bba", - "0x000000000000000000000000000000f8611d968082bab97c4caff11d8504e7b2", - "0x000000000000000000000000000000000023747bf4d19033795b66878bc77504", - "0x0000000000000000000000000000007012d641797376834f136a3cc9239b1922", - "0x00000000000000000000000000000000000bc4036aff2fd78afa72b53d26ea9a", - "0x0000000000000000000000000000009f79a73ba8c460801141cfef6a699f52bd", - "0x000000000000000000000000000000000011c13766ad192df4ddada5b412b0e0", - "0x00000000000000000000000000000057079418ae7686eb442cc4a9e4fa08a908", - "0x00000000000000000000000000000000002ae5e170f3e228b1ea2bbcbd277f42", - "0x000000000000000000000000000000da3cef02586fd7acdb2868edec4cde83c7", - "0x000000000000000000000000000000000001e2d8a35f8d8d85af2f433537c377", - "0x000000000000000000000000000000f9e997bb1718df60f3f958a827db0eea9e", - "0x000000000000000000000000000000000021fdeb56e87b959d2e0d48dfc5517b", - "0x000000000000000000000000000000d5110e9037e70d55d6c726a7608703009c", - "0x000000000000000000000000000000000012d7b7a753bffe46b32fbf04299da3", - "0x000000000000000000000000000000d33100f3a27346c959de3636e67373bad0", - "0x00000000000000000000000000000000002ea5a3a3baec5d0f9ace2c6400d566", - "0x0000000000000000000000000000006562dea7d8149e7e1b43fc816fd8eacbe7", - "0x000000000000000000000000000000000019b679db1fbc606804a344b7c338b9", - "0x0000000000000000000000000000002cb02cc09d5c9dc19cc3a089bf6027f0c0", - "0x00000000000000000000000000000000002959370c7abaefcf98ee27bf19313f", - "0x0000000000000000000000000000001592dcd3bb305e32b40619d9135153f03b", - "0x0000000000000000000000000000000000282d2b2c5f2bf993517721fd2d2b1f", - "0x0000000000000000000000000000001acd10314f56403d936c89faaf382c46c0", - "0x000000000000000000000000000000000009b9d53924cf543750b6d278659b6f", - "0x00000000000000000000000000000094f08329658951cbed51f33549fe64ab5f", - "0x0000000000000000000000000000000000164697c899d232d842f48ce348f492", - "0x000000000000000000000000000000afd86924f1e86aa270ad8c6da8343f4a77", - "0x00000000000000000000000000000000000314a4b080634c56931653166fbabf", - "0x000000000000000000000000000000eb1246f4419815e47f1d5ae8d6dba6d962", - "0x00000000000000000000000000000000001f313c2da4433c6c54d4af0d2b2b17", - "0x000000000000000000000000000000236795d1eebaf06bfbdb1493a682637d52", - "0x000000000000000000000000000000000011b0eeaa05e3097cd5da0a34873236", - "0x000000000000000000000000000000dad932f24983ce4571cd0ead65267e8e7b", - "0x000000000000000000000000000000000015240dde6f5f8790cc86a5fc2fb794", + "0x0000000000000000000000000000007b5e0848bbdc8d2326d2a5c09e6dc1fe96", + "0x0000000000000000000000000000000000131370c0130dc0a8d250fe31ce6d77", + "0x0000000000000000000000000000009382864ad094ecb8a82bce5053acf2e003", + "0x00000000000000000000000000000000002cd37a3fe945bd14184b022723d0eb", + "0x0000000000000000000000000000005de49f7bc32ab69d79e3676ad79e280870", + "0x00000000000000000000000000000000001c8be598d23f42f3b9ee74dfdb3af3", + "0x000000000000000000000000000000037bbe77d0ba1e0e68e64a4d1d83d07d05", + "0x00000000000000000000000000000000002fcb4232e55a9d3e8020399c7db13e", + "0x000000000000000000000000000000195d6008136a0932508907dca38dc31821", + "0x00000000000000000000000000000000002623032e1b5d17234fd4192fb09650", + "0x000000000000000000000000000000bcb120c4a7c38dda16c30a94af7ee8ae00", + "0x00000000000000000000000000000000001955c4ea71fce3511ce3ba6fd75588", + "0x00000000000000000000000000000044d25cd1ddca7c31a0e77ccdedf7e1d69b", + "0x000000000000000000000000000000000013ecc66844e5cb3441df2894454004", + "0x000000000000000000000000000000b5f4959c7e9057cde8cd244adeb8a2e8e9", + "0x00000000000000000000000000000000002df682bbc19832586a3fc03c785026", + "0x000000000000000000000000000000bf72c6f3242449c607a63a06f6965b8b19", + "0x00000000000000000000000000000000000f819841ab0d74f50e5c7c899ba932", + "0x00000000000000000000000000000018945cfb73a27d5989c9a602bb0cd046c6", + "0x00000000000000000000000000000000000885e54877991e797596a1bfb389b3", + "0x000000000000000000000000000000b2273cfadda585dd7bf55204c720fe9dd5", + "0x00000000000000000000000000000000000d0c600c2323caa5739e905e0be892", + "0x000000000000000000000000000000fe8a1294e1328e6ed4d41c5628af446dbc", + "0x00000000000000000000000000000000002ba9c9c770b04780b5fc67c35a3951", + "0x0000000000000000000000000000008c44bbb9e994bc33f63f14c040f895ceac", + "0x00000000000000000000000000000000001679700e89ce3f572307f460be8982", + "0x0000000000000000000000000000007bec27458f0bbd0e882262f7b435591953", + "0x00000000000000000000000000000000002bd59badb671a59faad3c8a25f9e9b", + "0x00000000000000000000000000000046e9e6fed52c74ba05d0cc392fb2b553c3", + "0x0000000000000000000000000000000000016ee18d0f053749d525ff73310241", + "0x000000000000000000000000000000696b339f6989db50278a96bf420b598edb", + "0x00000000000000000000000000000000002204c18ff1263c087868403e82c7da", + "0x000000000000000000000000000000652d2db496162c0ea7f802ad2b5567e7ef", + "0x000000000000000000000000000000000025cf8c450d0823cf8c1476712e92b1", + "0x00000000000000000000000000000070192899e329020f151bb736a2e5b27645", + "0x000000000000000000000000000000000010b8af9743de0e5b303e9ad07bc7f7", + "0x00000000000000000000000000000046edce0b8601f413ef065feba801919362", + "0x00000000000000000000000000000000001771e2a06c9d529d7978b979e319d1", + "0x00000000000000000000000000000046d2739b58a20b1a5f8779ed77b3f323e1", + "0x0000000000000000000000000000000000170b7d3d17e723661fee2083633ecd", + "0x0000000000000000000000000000002ab24da0b2289e9bb05015cef0ccacb9c6", + "0x000000000000000000000000000000000010cdbb47f7e6a2e614e25d363db028", + "0x000000000000000000000000000000e46ae376e73b6696667e3f209ac48f3c0d", + "0x00000000000000000000000000000000002367331b7cc93f2f509bda60d1a6a6", + "0x000000000000000000000000000000885cf897867eef60cfa5fcf75b115f8bdc", + "0x00000000000000000000000000000000002758c4ed57ac79cc3a9cb1fe8ef988", + "0x0000000000000000000000000000004b11d82f62d46af173e92c8d4c18ce9630", + "0x00000000000000000000000000000000002e0e0ea689623eb526f33c866d621a", + "0x00000000000000000000000000000063d7908000fcdd6a8aa2ca530efab2e354", + "0x00000000000000000000000000000000000fac914b72f4d887002abd9f4d7af6", + "0x000000000000000000000000000000d7e4a02c886d7385fca4dc56ab99af9c9b", + "0x00000000000000000000000000000000001a80635cbb4dcd369f989942aa3b63", + "0x000000000000000000000000000000982958b720ce131a90713f173740c9ff8f", + "0x00000000000000000000000000000000002a3138c7273493a374a4d167f7412a", + "0x0000000000000000000000000000002cf4525c9150c115ea13d37ff1ed05e079", + "0x000000000000000000000000000000000022383735a319430dcc1f2c9b8b9584", "0x000000000000000000000000000000e97fb648fc1ff99f9988a73de181e0de22", "0x000000000000000000000000000000000024cae2d5d2c4daefe858889eeb01b8", "0x000000000000000000000000000000e072297115d09425f5612d626dc82f1002", @@ -1506,20 +1506,20 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000001567f3f96a0c53ad32d96de09ac1cae126", - "0x000000000000000000000000000000000026baae0f0d8505282894f5ada72223", - "0x00000000000000000000000000000011679c6c956cae3c86d399a00bb3aa46de", - "0x00000000000000000000000000000000001bd9f4cdafea960e099cb8afad8a8a" + "0x00000000000000000000000000000067d2c18c4215e98fca6e81d131c817f4a0", + "0x00000000000000000000000000000000000bfe99f5d87b2edb82dc1c00777ff1", + "0x000000000000000000000000000000b9ef440a184c6c20610890e41aca86bf61", + "0x000000000000000000000000000000000016bb4bc398395484c889ad78f48dcf" ] -hash = "0x1751bf2ab202248a6492799a5f9f642977f1b79534bfd21a4f5593ddb904fd83" +hash = "0x0d34c4a04593e7d4c2ce9859b5e7c569f7ec7999fc359fc3784ddb69819c1459" [inputs.previous_rollup_data.vk_witness] leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" sibling_path = [ - "0x139a036976ef42dc38c7932e2e678f7ce993134e15e566c8582d93a47dbd6873", + "0x0969e5658f9ac7f1acd7a350fd1de7f58029386e0c52761e0e6fb5daa2f2ade2", "0x166d9200203972a67e495e091356eb547f3ad77502de0163b0eb32598c42137d", "0x2b1e1e7283812220e8fa0a163f5e89d80b5abffa9452ac97941a650c5eda03a4", - "0x223b98513f87a3be6816ac1e2a1b87a807169110828d2b808a707609e4217d13", + "0x1579d8714bffc417282d461161468745ec125da568e082364e4896fbad931bd1", "0x0a5cccc6f5c49119df17ad49125046e1f8ade560372f415e56d28bab8a1fba34", "0x042567ea670fc3ff2b8c48b244f6a0c96944c6b969143cf0cfacfd97e5b929aa" ] diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-root/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-root/Prover.toml index efb183f3abaa..d58ef14a48f9 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-root/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-root/Prover.toml @@ -4,63 +4,113 @@ prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [[inputs.previous_rollup_data]] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs] out_hash = "0x00201496223ba670899c10fa0b2a2d65993893162620515ed5d2f6fc25dba2d4" -vk_tree_root = "0x0e88f44969aa6d4ff0d17db376dfa057ed3aa447725b0febf35af08e0d1d468e" -protocol_contract_tree_root = "0x1ed87d453cb7c21c5dbca65441925b3f9138fd1433928dda23342367bf94f7c0" +proposed_block_header_hashes = [ + "0x00864fca4fd8a8919f1898b0c0c4c43bca1180a337e55a266a19f483bef8c588", + "0x0084f8c7649d4752c8c09259e41761cc9c20db8e2a0b9b7dae2a0f973b57e5dc", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] +vk_tree_root = "0x2ca9a33f5bf72a45ff0bc18657afa956eb151243a9bc9d3c113e4c711634fd7e" +protocol_contract_tree_root = "0x2d4c1fe46d355909b04374f3890ac9b6649eabcd85e2c8dd82e237c5808626ba" prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.previous_archive] - root = "0x12426f1a7219669d8d584aae8673daae60083a411033ed1be83c1c7b60a41f0b" + root = "0x19417d1c6f2b53c337b3344464130f51735a5abd53b11808c3391a29dc1ec9fe" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.new_archive] - root = "0x2bf1e26c0bb5173a5a06f21977f0deb873c284a2ca111d92a0c0307450553579" + root = "0x2ed2a7495c28fa869cd0d12d80eb7c29c5a9df32e7d65e54fbcda82668b94983" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" block_number = "0x0000000000000000000000000000000000000000000000000000000000000007" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000012" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068081783" + timestamp = "0x00000000000000000000000000000000000000000000000000000000680a0cec" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.coinbase] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fd6" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fcc" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000013" - timestamp = "0x000000000000000000000000000000000000000000000000000000006808179b" + timestamp = "0x00000000000000000000000000000000000000000000000000000000680a0d04" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.coinbase] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fd6" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fcc" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x00000000000000000000000000000000000000000000000000000000093bd180" + value = "0x000000000000000000000000000000000000000000000000000000000938eb00" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x00000000000000000000000000000000000000000000000000000000401a4e7a" + value = "0x0000000000000000000000000000000000000000000000000000000040062bd4" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] value = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -340,19 +390,19 @@ prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x253ceb4d63e9a5a3f713ee05b34325c0ae08d2573c33981fc64d4a56d5eacc2e" +z = "0x275b78517fa2fd6910e2e790cb109995233d8e10ed6546cf1ea13647d7690547" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] limbs = [ - "0xae43e719071d08d80f91537843e05f", - "0x8a04f526720edf7350d97f43f61a3b", - "0x0aec" + "0xde0fbe8b39a66ee9762a21fe750240", + "0x0f937318bb3496d8c3df116d5c6974", + "0x6b16" ] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] inner = [ - "0x008ca8a2ef45fdc9c6782fbd6908b38fbe5209b165571beeaa8747e2e1fa09f7", - "0x000000000000000000000000000000c7142681040aff2ce3afd2c477fd573e82" + "0x0090d899bd746cff971516744cdaf5d99be963c7d9b52b9239e09cf9a905572f", + "0x000000000000000000000000000000eb53aa454aa40c9e6c1e7a8c02612e9e06" ] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] @@ -389,19 +439,19 @@ z = "0x0000000000000000000000000000000000000000000000000000000000000000" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x1cf7cc2d12bf95135e6bb6a5b6b1557c5177f5467adf39ad4f86e38193d88537" +z = "0x116b47233baf191669767a4c40e5111c0c2d0d4a1b4229995630aa46d4232d41" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] limbs = [ - "0x6dcc672dffd96ab11c637978a8908c", - "0x682501cefb43fac9f90bf1a8b71da3", - "0x7187" + "0x9fe14e28e3417682153b934e5c4f5b", + "0xd87937dbe92b9a41cfabed37dacdd2", + "0x1f1a" ] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] inner = [ - "0x00a725cb288922c64c2f57719a6070841edebbb5336a5276e9fd83a19320f54c", - "0x000000000000000000000000000000fe228e6ac86d495386c8bd24fcc7e487a8" + "0x00a8318ffae25ca0ed7d2ed73cfeaa8ad44f5e7a7c702da61cb8e5001c26ec88", + "0x00000000000000000000000000000022ef83543da9e254a2f61faf7cc9bdb6ef" ] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] @@ -3232,128 +3282,128 @@ fields = [ [inputs.previous_rollup_data.vk] key = [ "0x0000000000000000000000000000000000000000000000000000000000200000", - "0x00000000000000000000000000000000000000000000000000000000000003f4", + "0x0000000000000000000000000000000000000000000000000000000000000424", "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x00000000000000000000000000000000000000000000000000000000000003da", - "0x00000000000000000000000000000000000000000000000000000000000003ea", - "0x0000000000000000000000000000002c7ebcdc0e12f36805d2aec89bcf3584c4", - "0x00000000000000000000000000000000000cf8ff6d528f565981d0addc0e0e3b", - "0x0000000000000000000000000000008c162cd5d4a6f1a99a956bf41cf6ba76e6", - "0x00000000000000000000000000000000002306a0dc4140ff82e3de43a3747ddf", - "0x000000000000000000000000000000e6d41cbe02fcbdbda09d8953c7093fef17", - "0x00000000000000000000000000000000002957d10b232fb5b9e386da1559209f", - "0x000000000000000000000000000000758e2136c73797e19e4141053abb22e7ab", - "0x0000000000000000000000000000000000056e12d953d9bc2fc805a0bd363ba7", - "0x0000000000000000000000000000001c1feabd5a4766e4844eb77ddd15197f89", - "0x0000000000000000000000000000000000092070f193dc95bbcd6c74e316a32f", - "0x000000000000000000000000000000c66698b51c3a774d492f775caa04492855", - "0x0000000000000000000000000000000000185a5614c4b73e6efea74302db3f35", - "0x000000000000000000000000000000bb062fc90939b3a33e526d484b187ae913", - "0x00000000000000000000000000000000002d7f32d485e10b739402d8dfcb514a", - "0x000000000000000000000000000000350c1a351fc1aa3a3a82361091210122f6", - "0x0000000000000000000000000000000000287c647df2ba58366dfa17aa03ec3b", - "0x00000000000000000000000000000052011e6dc4c923137beaefda30fae58a29", - "0x000000000000000000000000000000000001dd7d1348152445dcf234113135d8", - "0x000000000000000000000000000000cd2f0d8def9b01346e5e469bdadabe24b3", - "0x000000000000000000000000000000000015f65e603d611533dda0ec94310d2c", - "0x00000000000000000000000000000072bdbd48aebad9149ca099619ee179aa48", - "0x0000000000000000000000000000000000107677c48381cc619898b657f57b8b", - "0x000000000000000000000000000000f8b9ed44f705e074821bf4e9d2fea726a0", - "0x00000000000000000000000000000000000009cc8aaf2ef5aa45ff850673b2fa", - "0x0000000000000000000000000000001302f251b4dac62841ae1bd13df945d49c", - "0x00000000000000000000000000000000000f622837c4f0df5a76db7277b6cf69", - "0x0000000000000000000000000000008eda01b03bfa9b49c349dd7dba73bd4838", - "0x0000000000000000000000000000000000301757bba30d67e713f1b362c965f9", - "0x000000000000000000000000000000293b0d2c3864650f6414eaa705a7d9009e", - "0x00000000000000000000000000000000000017f3497d6f8e79ad09a60312c9f7", - "0x00000000000000000000000000000084facb3b83ec5fea1ed5be0870f67b698e", - "0x00000000000000000000000000000000002624e9f773d2f80915bb891460ed1d", - "0x000000000000000000000000000000b27aad33562cbabdc0b1df4bb24bdb2d54", - "0x0000000000000000000000000000000000022c9f35a415703fdbe731c7afb222", - "0x000000000000000000000000000000c1e721857d96e96056e0b46d0f714a6468", - "0x00000000000000000000000000000000000f4f1a0f8866f36cd09f18824f3202", - "0x000000000000000000000000000000f07f43138c5bb19512d6b825c145d0f200", - "0x0000000000000000000000000000000000097ebfda52b89d78de02fc1e82354b", - "0x000000000000000000000000000000816d9e86c9370d415c0c8d21e18b267aa5", - "0x00000000000000000000000000000000000733440384a991dc72ddf363734ffc", - "0x000000000000000000000000000000d3e5c025e3718714deb08296f73901b8ea", - "0x0000000000000000000000000000000000281f1946cd7d8341c09caf0f50cf09", - "0x000000000000000000000000000000ea052d596b1cd79cf6d0e5a720b7eb6072", - "0x000000000000000000000000000000000027bab207d1ed700c68f3dd4c887a50", - "0x00000000000000000000000000000042fb96e5f50b24a086d73c2ae8e6146e21", - "0x00000000000000000000000000000000001a19670792ef3c5f1edcbc40115570", - "0x000000000000000000000000000000758b601b29aaa9876dab02d255e94904d6", - "0x00000000000000000000000000000000000681de3713e9fed812fa7d26c2f391", - "0x000000000000000000000000000000aed7a9a98599d31510a630acef23d61ed8", - "0x000000000000000000000000000000000000c1e5180d3967e3c928b75992116c", - "0x00000000000000000000000000000085a5e08b413dd7348f59700ec9a43869ab", - "0x00000000000000000000000000000000002a1d81d4fd5b8bbf20ff64e9b882e9", - "0x000000000000000000000000000000122a12ade7af7833cb22bc14e0ae8a47ee", - "0x0000000000000000000000000000000000110c48849561799037916e0a5d4729", - "0x00000000000000000000000000000009ddb949841bc452dafe22dc748debe756", - "0x00000000000000000000000000000000000617b02302e246e906bbfe96960bbc", - "0x000000000000000000000000000000753ccb4f736ab626d3bfaf1726827fabc8", - "0x00000000000000000000000000000000002aad2a1fc22a887a2e5c42f26e014a", - "0x000000000000000000000000000000c821b33bf17246c5762f5d8004b8c87a23", - "0x00000000000000000000000000000000002020c528a2254b4b19ae2a0b0eadc3", - "0x000000000000000000000000000000bb984bbc4e963922abceefd86049f32c1f", - "0x00000000000000000000000000000000001fe37f3a880d7c13461e670862bb65", - "0x000000000000000000000000000000c343ecf20ba5a70d3333097fdd6e603943", - "0x00000000000000000000000000000000002d6e83f40729e731bd1c26c75524a5", - "0x0000000000000000000000000000006476fd2e58a5a5d532f2d4d85b9c684ff8", - "0x000000000000000000000000000000000026407a455980f38d9b081a1a43b8d0", - "0x000000000000000000000000000000407bd16707fe866652890ab9dd1543cc9c", - "0x0000000000000000000000000000000000201fb12a18b95a735fa89429e8b98c", - "0x000000000000000000000000000000262f6b089b23c6b1d0b42af1ebefdefe0c", - "0x00000000000000000000000000000000001014624626289de79bad4373d0ad4f", - "0x000000000000000000000000000000b4c186370c68a4576c849d05bd4c58d751", - "0x00000000000000000000000000000000000cde30bde98a1326ea276e7fe15479", - "0x000000000000000000000000000000b5b832dc16e7480613fb3319eade7cd4a6", - "0x000000000000000000000000000000000012f1a231811e218ad5ab117391ace8", - "0x000000000000000000000000000000d66a4fb59c28e234463f3b4a44b79c58a4", - "0x000000000000000000000000000000000011a30cf8328e6d389a0229910e4f24", - "0x00000000000000000000000000000051ad89705f2968d4d5e17067de2880e3c2", - "0x0000000000000000000000000000000000011d594b530c84601e9331e8b2c3c8", - "0x000000000000000000000000000000d5274378185e3e64c7b8e03221fff7bbe1", - "0x00000000000000000000000000000000002b80fd7327842831e88752b4a70035", - "0x00000000000000000000000000000020adaf9abf4e71f61dd66f9f909aaa1f6f", - "0x0000000000000000000000000000000000165d1363b9a5f956887766e7e417d6", - "0x000000000000000000000000000000d4b09131dd830ad1c486cc5099de1af2ef", - "0x0000000000000000000000000000000000171db86640f0d7eccbca17580d4cad", - "0x00000000000000000000000000000050190beddf49f49ca143550370ff05a583", - "0x00000000000000000000000000000000002d26b502043c651f1d43ccd1cd3d8e", - "0x000000000000000000000000000000771a627d9293261b513e8334917822952b", - "0x000000000000000000000000000000000003287962ec49d7525f6a0478615b50", - "0x0000000000000000000000000000008119e229e16a072dadfc501e845de8636f", - "0x00000000000000000000000000000000002b71a8d62325e84edffb93822dffe6", - "0x000000000000000000000000000000b70344374476bd9f14c5a4d2a97ab26256", - "0x00000000000000000000000000000000002d9697913326f6140c0941651329ac", - "0x000000000000000000000000000000246089daba55a613a8e0532c54799b527e", - "0x0000000000000000000000000000000000051e22e4eeb2054a4973fa2dd38714", - "0x000000000000000000000000000000dd9fb6025de99f4710520420e9fa24b07e", - "0x000000000000000000000000000000000010c6272a2822c97cbcbb832d198c40", - "0x0000000000000000000000000000008694bae0220cc8de0f5c8d971d2df21f6d", - "0x0000000000000000000000000000000000241d72b3b591ca47827fa5aad3814c", - "0x00000000000000000000000000000008e54f90cfd15792dbb6419adbaf2fb714", - "0x00000000000000000000000000000000001d8508ffd1e727e45eb477de78e8eb", + "0x000000000000000000000000000000000000000000000000000000000000040a", + "0x000000000000000000000000000000000000000000000000000000000000041a", + "0x0000000000000000000000000000001dc7b7d136639bf362692acbeea43ece41", + "0x00000000000000000000000000000000000341338b4b5fe17abfb0b99825ff33", + "0x000000000000000000000000000000d3b7d979775705dac63882b00838d6b2be", + "0x0000000000000000000000000000000000122aff9511615066bae43eb135bfa0", + "0x000000000000000000000000000000448b98f8ded46c907b58077178cb16de45", + "0x00000000000000000000000000000000001905b2ecbb6b6aac44b0967a4c4d5d", + "0x000000000000000000000000000000e85450d8a219d653029ea733b71b61ffbf", + "0x000000000000000000000000000000000012ef764b739010162371304f026f1f", + "0x0000000000000000000000000000008af1ed99aa58262aa7718f5c89a7c322e4", + "0x00000000000000000000000000000000000467a4de1cecac4f3e813e19723778", + "0x0000000000000000000000000000002b2cdbf7e252d6059905cc0d734bb5332d", + "0x0000000000000000000000000000000000170ca38b2dae581c5680e9f6539790", + "0x000000000000000000000000000000295b36797d9ed28bb6faed50ab0cd49cc3", + "0x000000000000000000000000000000000028068119a5d997247cabadffe70934", + "0x00000000000000000000000000000075e93c6e8954a739c876b225c718322c80", + "0x000000000000000000000000000000000025e5dca4b77f534f017da9fd656ca7", + "0x0000000000000000000000000000002ffb010ef36615d5fd0a0c95be2b67dcb8", + "0x00000000000000000000000000000000000b38e858b52709206450e5199d3d03", + "0x000000000000000000000000000000e9b6c61fc0af3fd7a4e0c12a861d31e537", + "0x000000000000000000000000000000000010c6d1de87190d893856fb3b50ce96", + "0x0000000000000000000000000000006b1e5a4674d295fe3266ec52e88d5ec792", + "0x0000000000000000000000000000000000139ca248383704957f81acdd926db2", + "0x000000000000000000000000000000eccbe12358dbf74b0acbe34c9282176f2a", + "0x00000000000000000000000000000000002b0ee4de317cd8f449853b02822adb", + "0x0000000000000000000000000000009eed1a82f362a2a849e30ca0f07978c836", + "0x000000000000000000000000000000000013a2ac032c0d52256af7c1a95feba6", + "0x000000000000000000000000000000c7f1ab3a9d5e56fa19af7d20fdeb3b9ef3", + "0x0000000000000000000000000000000000303115523841b191d7bfdcc5ac091a", + "0x0000000000000000000000000000008a2db7e51ee89641449bdafd66c5a4f79d", + "0x0000000000000000000000000000000000006ebdf75ef5151aeee2cc3c8de5ba", + "0x000000000000000000000000000000decc6e62fb38b85114bfe076dc757d847b", + "0x0000000000000000000000000000000000296f2ca2cd4d9003080fe3707ef758", + "0x0000000000000000000000000000009f64154a49210e99717913faa434e891e5", + "0x000000000000000000000000000000000028bef4e97cd106fd92e088b46b6e1f", + "0x0000000000000000000000000000003feebf3982172efa71cf6122e5a79d6515", + "0x000000000000000000000000000000000006c40d0fc673de23515cfd71193775", + "0x0000000000000000000000000000007828abfd6f73e8f20199db0c134173b2a8", + "0x00000000000000000000000000000000000c35fd41a7131b4fe79bd22b3d60bc", + "0x000000000000000000000000000000b04c15f8f4bbf8b9c893d1f6a9d2d8abbb", + "0x000000000000000000000000000000000021774de3df37d636157bd967525d0e", + "0x0000000000000000000000000000007c5963aad6e640bee7863f7422fd1825ab", + "0x000000000000000000000000000000000015d042b8f6097daf4c2784fd45c780", + "0x00000000000000000000000000000070c00c3dbc9e639ba7696e317bfbaab5b1", + "0x0000000000000000000000000000000000103e49465e7671d51dd5451d6120a7", + "0x000000000000000000000000000000bfbb3f6b35dab45c5201b74ed9d0ca4c08", + "0x0000000000000000000000000000000000184eac9ee9116530c8956fe15a4154", + "0x000000000000000000000000000000a2cd9ffd0fd1315ddfa7657c727984df50", + "0x000000000000000000000000000000000001bf6a1f7c4576227ea2988c82e3ba", + "0x0000000000000000000000000000004e4de793ebf798d985eebad9e7b96059d7", + "0x0000000000000000000000000000000000032285e216735c72214364f42d2acf", + "0x0000000000000000000000000000008a0c559b67a12ec73d421dc37f4dea0863", + "0x000000000000000000000000000000000025766a9ea34f1b8851adf186806da6", + "0x000000000000000000000000000000488471fa8b3a7b81502078ae082e609eae", + "0x000000000000000000000000000000000014751dadab5f3856403ae0b57bdcc8", + "0x00000000000000000000000000000034d4a0bcbbd53ce120c3a69c7b1557c39a", + "0x00000000000000000000000000000000001bfa2fafa1a6ee508458b6e59bb12c", + "0x0000000000000000000000000000005f459ce7f459fc29339faa81f661fa3f95", + "0x000000000000000000000000000000000006ddef94628267bcd2337ee7094620", + "0x00000000000000000000000000000066a0aa070cfd3ccbea47441c1452da6a44", + "0x00000000000000000000000000000000001a5618c5425bc7378836acd1515a8f", + "0x0000000000000000000000000000006a332008ec6a09dbb4c3abd30240338c98", + "0x00000000000000000000000000000000000d4963e2a29616635c0c7617e3cde7", + "0x000000000000000000000000000000afb79aa4f2535b98f4433efb5dedaa888e", + "0x00000000000000000000000000000000002e5452b9e508b06ff7ed13b11a158c", + "0x0000000000000000000000000000009daafa45e43a24bb2b4c486c0504790886", + "0x00000000000000000000000000000000002b9a075a25dcd7896feecd750265b4", + "0x0000000000000000000000000000004c5330ca8cbf8006bd8f5e6a6d302fd953", + "0x0000000000000000000000000000000000258e92e6ce8b8324c2fc05edd56be4", + "0x000000000000000000000000000000f108299b89145ac8cc9696d5c6a70d7692", + "0x00000000000000000000000000000000002319e6a7ac0c94862f80190fc83999", + "0x000000000000000000000000000000db231a5ba9379f3a897fdf171a960bddf2", + "0x000000000000000000000000000000000015615123811e92a487916d6394da07", + "0x00000000000000000000000000000027dfff23ff3b2cbd0b02ae0209676ccccc", + "0x000000000000000000000000000000000013f7087b3b1d3ddab33ea2bfb68617", + "0x0000000000000000000000000000006e1f54f413b548407563d8b2678f13f05a", + "0x0000000000000000000000000000000000003591d17508df2478e83af65c921e", + "0x0000000000000000000000000000008721d0ae409ee2394d130e0ace7b17c2d1", + "0x00000000000000000000000000000000002b3f1b7eb2cba6568f0d27e0c723f5", + "0x000000000000000000000000000000457e51ed27362194cdce88877e61e4f133", + "0x00000000000000000000000000000000000afd82f3794317f6af5fa5eb4818ff", + "0x00000000000000000000000000000052cce859e4445b2c7aa2596065ebdd656d", + "0x0000000000000000000000000000000000276b8d3c1781e260c8e0043496f952", + "0x00000000000000000000000000000086db61b7230bd1e0aac17fc1b23fbde430", + "0x00000000000000000000000000000000001cde68892c3c3743ea9ee8883ea7cd", + "0x000000000000000000000000000000751a63b41218c33ae5d641c130f060ce34", + "0x000000000000000000000000000000000018a3d787ef1ec164dc62244409c559", + "0x000000000000000000000000000000a0340f3ea930787df40d68fdd647a9f7d0", + "0x0000000000000000000000000000000000230b997570d1f85ae65a57bb57a7d0", + "0x0000000000000000000000000000000bc60b4ea3525f05223875c1af3ed2b02d", + "0x0000000000000000000000000000000000236868e5e41937ed2cdc41de55f10b", + "0x000000000000000000000000000000249541e175626917b9aaedb0e2915d4177", + "0x00000000000000000000000000000000002fb85434d64a786207f332f20277da", + "0x000000000000000000000000000000aec46500b248445db79f52d6ed7b30158b", + "0x000000000000000000000000000000000002321694c1a17469bdd178eafdfa6e", + "0x00000000000000000000000000000023fd9365c6a81758f239e73dee60348b69", + "0x000000000000000000000000000000000014cbd4ad9a23e8adbaa2eb703f2801", + "0x000000000000000000000000000000a1dd8f964e4f1c6a0c2c1407da434a5d2f", + "0x000000000000000000000000000000000018ee0334d49c017b30c8e7656c679f", + "0x000000000000000000000000000000f1571f393c77481ab166deb9cc943c32f7", + "0x00000000000000000000000000000000002f977fa69325d670afb3b6523af5c6", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000002e04805dfc1d5449bda96260dbe8ab32d9", - "0x000000000000000000000000000000000007d2255a6aa3f2715477c274eb19fb", - "0x0000000000000000000000000000003a3f40cb50772c24f4324a2c84e4c29457", - "0x000000000000000000000000000000000011ae21be1156f13c0089e999ce9218" + "0x0000000000000000000000000000005525e6de54895cf187f3b43f7ee4af169b", + "0x00000000000000000000000000000000000a29d3c4aa9c909457f2242cd75064", + "0x000000000000000000000000000000fd0e9ba75e68228bf0c915541238e11202", + "0x000000000000000000000000000000000004212ce37f7789c9fd29c7f267e092" ] -hash = "0x1b9709e2202e27890102bcc8372c681d606adaef6db7e2896d9ce521687914ef" +hash = "0x2c174d20fabdeab1ff2b2b5f93fe53143a6bd0b5a052dcc72b9db741f46956eb" [inputs.previous_rollup_data.vk_witness] leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000c" sibling_path = [ - "0x05f2429d34abc3fafc4fe7add87ec1a2025bc5ec856a825c113cf42ed0380a35", - "0x22f484092eeb2eb1fec435333abb77e3a56e511811b8b512962138d69cce9229", - "0x0665fce8d742d639d8d465316feed5305470a98a4491760dc88ec374a20af806", - "0x2fa9633929cccbcc4776c410cc5f4315b5a3cc9f91de60871a3e8d7a5503505c", + "0x0884fef05c91af90b3ec0e3a8ae7f6cec293718672ef8a635f49ceee120dd2a7", + "0x2d2127653785be233e56dae11cb38c8c5bfde19e7b93afba736a8ada678b6078", + "0x1879cd6beb959e8b5c0f9f307bb2a4944aa871febbcbc7cceaf47ac472f5756b", + "0x1c928e7bfd756013034a6faef411dd7b791ce88c9f42adb22a032f461bee9ac9", "0x0a5cccc6f5c49119df17ad49125046e1f8ade560372f415e56d28bab8a1fba34", "0x042567ea670fc3ff2b8c48b244f6a0c96944c6b969143cf0cfacfd97e5b929aa" ] @@ -3361,57 +3411,107 @@ sibling_path = [ [[inputs.previous_rollup_data]] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs] out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" -vk_tree_root = "0x0e88f44969aa6d4ff0d17db376dfa057ed3aa447725b0febf35af08e0d1d468e" -protocol_contract_tree_root = "0x1ed87d453cb7c21c5dbca65441925b3f9138fd1433928dda23342367bf94f7c0" +proposed_block_header_hashes = [ + "0x001b5871432bde4c510a6911baa82017bc1e36abb930efecfda4d6e682b76aa6", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] +vk_tree_root = "0x2ca9a33f5bf72a45ff0bc18657afa956eb151243a9bc9d3c113e4c711634fd7e" +protocol_contract_tree_root = "0x2d4c1fe46d355909b04374f3890ac9b6649eabcd85e2c8dd82e237c5808626ba" prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.previous_archive] - root = "0x2bf1e26c0bb5173a5a06f21977f0deb873c284a2ca111d92a0c0307450553579" + root = "0x2ed2a7495c28fa869cd0d12d80eb7c29c5a9df32e7d65e54fbcda82668b94983" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.new_archive] - root = "0x2c838415f7b9590882e2f2a922bd36f1162553f988026c24e13f025364188a58" + root = "0x0837090ee5b22412c88e662d25eff2038e46b192eb03a08300026968e1d86820" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000014" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680817b3" + timestamp = "0x00000000000000000000000000000000000000000000000000000000680a0d1c" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.coinbase] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000145a" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001450" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000536cf012" + version = "0x000000000000000000000000000000000000000000000000000000004a717c31" block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000014" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680817b3" + timestamp = "0x00000000000000000000000000000000000000000000000000000000680a0d1c" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.coinbase] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000145a" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001450" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x000000000000000000000000000000000000000000000000000000001721ab30" + value = "0x0000000000000000000000000000000000000000000000000000000017164d80" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x000000000000000000000000d4f5e48746e1397485a0c16f9e47253621278dcd" + inner = "0x000000000000000000000000c5e825710cc0fb2e8db8f4fa4421ccb3cfd4eca1" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] value = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -3697,19 +3797,19 @@ prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x1d5a0cc9dd9202561cee6c36788065e3c346373f094b75d613893ba0453d4656" +z = "0x13da2f8dd0ca2e854338566d62529ed3de62529e87dab4594b7625a59afaa0c5" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] limbs = [ - "0x529907ed0e58446750648744bd7452", - "0x2eedd0812f9e40f20eec454b597e6b", - "0x5b10" + "0xf0cd959fbfcb475bc7f9c6b33552eb", + "0x5871ea852d62ffcc2b9a685de02365", + "0x073d" ] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] inner = [ - "0x0087ce2c3c133cb6461da9270b0c15a7aede02a7dbf992fb8b7d1d576791b5d2", - "0x000000000000000000000000000000473e0ad637f73102be3f5bf71a5d3d860d" + "0x008153914554154f397ce16fab9eaaab2df39df7398611dccc9be2f8cf3fe92d", + "0x00000000000000000000000000000045fe91de32904b6bd07f13ad8bb24f200a" ] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] @@ -6589,128 +6689,128 @@ fields = [ [inputs.previous_rollup_data.vk] key = [ "0x0000000000000000000000000000000000000000000000000000000000400000", - "0x00000000000000000000000000000000000000000000000000000000000003f4", + "0x0000000000000000000000000000000000000000000000000000000000000424", "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x00000000000000000000000000000000000000000000000000000000000003da", - "0x00000000000000000000000000000000000000000000000000000000000003ea", - "0x000000000000000000000000000000468cf0d5d7f0678e87423a37c5aeb260c5", - "0x0000000000000000000000000000000000155bc3629df2ca0fad810b6c273db2", - "0x000000000000000000000000000000ceab2cfc3dfddac833aee9ed2b52b7b454", - "0x00000000000000000000000000000000001a441bb55131ccd7f132786b732752", - "0x00000000000000000000000000000005800321825b38473240a913987b559401", - "0x00000000000000000000000000000000002b538e1093b340a8a0683528828560", - "0x000000000000000000000000000000303465bb77d45de32ab53c47cf966602fc", - "0x00000000000000000000000000000000001dac7f70c6d9d68bc87a015c811cf8", - "0x000000000000000000000000000000fdffa3ae718a608af69af664a8dec6fe55", - "0x00000000000000000000000000000000000ef8fa54bc707440fab671df68b80b", - "0x000000000000000000000000000000fd55c370883a38bce94d4790aed832eed3", - "0x00000000000000000000000000000000002fcd8485757d4df0e785be0158fc88", - "0x000000000000000000000000000000afd2300f904f15600ccf7ac2dfa9ec28e3", - "0x000000000000000000000000000000000026068a037708ba08b5e4e86f9642ef", - "0x00000000000000000000000000000055a7f09fdc1ffacd4c533a6ada9f845457", - "0x000000000000000000000000000000000022b366950b161874740aa0d5161e55", - "0x000000000000000000000000000000682b77a91cd7b6e0ea11eac71343818ef8", - "0x00000000000000000000000000000000000cc54dfdcde9741cd90d30c46d2ccb", - "0x00000000000000000000000000000055daacff20c7012059aea2b77761ce8ba7", - "0x000000000000000000000000000000000017d71296ae57bfe7fab367f52a9483", - "0x000000000000000000000000000000c3d31faa26a3ba9f37ffdece13aef9904c", - "0x00000000000000000000000000000000000609d9f5a23a35812a3f56f842e6bf", - "0x000000000000000000000000000000cdeb10d16140aea28afcbebe5cbd60b633", - "0x00000000000000000000000000000000001f976bfa2b6ee0cb0a0544bac1eb44", - "0x000000000000000000000000000000e6a9379f531ea207de4c38b3eac969d590", - "0x0000000000000000000000000000000000168890ac957e785e5322018a09f155", - "0x000000000000000000000000000000dfc38022eaac25d496a4537759ce2bc920", - "0x00000000000000000000000000000000002bd0c4aa32c8a85d9b5200367521b5", - "0x000000000000000000000000000000dfc2ee256ee04daeb454ef393577c30305", - "0x000000000000000000000000000000000029e0a7e18850b27f078cb53833e28a", - "0x00000000000000000000000000000073152b770eb84ae8f40a0ed2f2357ed90e", - "0x00000000000000000000000000000000001eda1693f25ac1215f23dcecc98d79", - "0x000000000000000000000000000000487f831affd6735b1daf08e68541c5f9c5", - "0x00000000000000000000000000000000000e5eb4567c30ad338b32a4dc2ed114", - "0x000000000000000000000000000000a3a79c43e14fd9c4ce24328fcca6201839", - "0x00000000000000000000000000000000001225e2177cce11d272d4836f881b0b", - "0x0000000000000000000000000000007279c4be5ac32dc0c00d96516f6e717227", - "0x0000000000000000000000000000000000121d0dee60e882b366ece13c846462", - "0x00000000000000000000000000000044c696f4378dc7ac402dc7f05b3f2d2af5", - "0x000000000000000000000000000000000023559aa864836ff03796c4855a0d0d", - "0x00000000000000000000000000000014323a7c702550f7c705599de2830223b2", - "0x000000000000000000000000000000000007e95a9d68d5ba4fec5748230aeef8", - "0x00000000000000000000000000000073df14e1289fb2590a976d1404070238e3", - "0x000000000000000000000000000000000006f96fb198f9d00dd3a7517ed136be", - "0x0000000000000000000000000000006bd25f0bbfba12ae4e6607c61605ad2abf", - "0x00000000000000000000000000000000001bc21f5a15363a14edd1665f0b9b30", - "0x000000000000000000000000000000135093333b748a6829d53b1938a19c17de", - "0x00000000000000000000000000000000001c611e8faba60a719941fafa2e0bc0", - "0x000000000000000000000000000000f93dc04ba65236fe0057e9f84445bab9b4", - "0x00000000000000000000000000000000002e8ba71205d9425b5f18c1910cad49", - "0x0000000000000000000000000000005c1091ac49769b1de22d35329e9180e066", - "0x000000000000000000000000000000000004b93af1a37eb3c287b25cba1c0ff9", - "0x0000000000000000000000000000007eab72fd85e5dc2d3c9953085bf6881cd5", - "0x00000000000000000000000000000000001f05bf84457442ef424c29a3b04f6e", - "0x000000000000000000000000000000a479a8e4fd44f7e0ecf67e77e1e1ad4984", - "0x00000000000000000000000000000000000ddddfe019ef930b0497a3b462404d", - "0x00000000000000000000000000000026df99dce54a024fb28eac86679fc3ac16", - "0x00000000000000000000000000000000002cdb2dfd943ef25d6477316ddbe979", - "0x000000000000000000000000000000f501050c3843bd66b81316167fa368ca26", - "0x0000000000000000000000000000000000172b093803b5cf83b65ac1647a7011", - "0x000000000000000000000000000000a3dc922300e87093d33e699202306eab82", - "0x00000000000000000000000000000000001bbb99c263ac5d51dbc8ef89a19ebd", - "0x00000000000000000000000000000009e98073f035945f6d221f049bdc18938d", - "0x00000000000000000000000000000000000864abc7e7681a3849c8c348ea85af", - "0x000000000000000000000000000000eb47ed13c7577537875c19b9de74998bd9", - "0x000000000000000000000000000000000028706bd3d306d0034972a994afd9bf", - "0x00000000000000000000000000000005a8a0025cb4e3ba5ea9285ad1159b04f2", - "0x000000000000000000000000000000000028ab8077c15cecb6bca86047a46212", - "0x000000000000000000000000000000ee75a2b8635ebd01d4f11b4c4071bbd404", - "0x00000000000000000000000000000000001a88dff47194ad3fe3dbc59f5e5c21", - "0x000000000000000000000000000000c712d54c75784bd619005d5d198df382f2", - "0x00000000000000000000000000000000000ba177ed576047cb7fee50f9d34b04", - "0x00000000000000000000000000000038b0c822323f279491aa1d4df9eeed9455", - "0x00000000000000000000000000000000000bfde1bc2a8db146865150eec2b950", - "0x000000000000000000000000000000a89543cb12097c6756a4375cadf443e2ee", - "0x00000000000000000000000000000000001a023a23eb1e167388cc3700cb6bbc", - "0x0000000000000000000000000000001f564c490cea18bc13521c638f599c0045", - "0x000000000000000000000000000000000019cd552f4770b3b2b89cafefbc430e", - "0x00000000000000000000000000000061542755ccfee7d2a1e04214b9cbda957b", - "0x000000000000000000000000000000000023784aa0d201eb36188f7d52bb7967", - "0x0000000000000000000000000000004207cb937e255e6b44c076ba2f046a45d4", - "0x0000000000000000000000000000000000076bb66b745a6e084ad0403903b77f", - "0x00000000000000000000000000000044e6234263a96ea4c0ada41b28d4c8f5c1", - "0x00000000000000000000000000000000000f9019c88759f475af5664f35327f9", - "0x000000000000000000000000000000950682eb60cb5455d12d47d478edcd8744", - "0x00000000000000000000000000000000002674dcc5c46aace2a7b24c9177bca4", - "0x0000000000000000000000000000009d0400d74c2810099803ce00e4d212e027", - "0x00000000000000000000000000000000002dd78ffbcabe324f8fdd974ba4592e", - "0x000000000000000000000000000000835d6524088c85a6229c253f19f9075a24", - "0x00000000000000000000000000000000000ea53cd2576f3ed59997b9c31ade62", - "0x000000000000000000000000000000b63021ec911d878a8808271f9fc354f6c1", - "0x0000000000000000000000000000000000013899f19981c306831c30f8be091f", - "0x000000000000000000000000000000e9ea0973de12fdbcf9692352b0bb9e126c", - "0x00000000000000000000000000000000000f480ce1fe1a5e6d79c1aea34ff6bd", - "0x000000000000000000000000000000377185add84afd6c2c81cd920469f4eed8", - "0x00000000000000000000000000000000000b30da5e57df9005bb26388bec1e13", - "0x00000000000000000000000000000016d15d01c4e568368a015a4a1bd827a3b9", - "0x0000000000000000000000000000000000181038d51220ac7f524520f4dd4e00", - "0x000000000000000000000000000000f69b5e222476cd81abc41a7e1c7dab2bc2", - "0x00000000000000000000000000000000001fb2cec72c2a711d3a7cd9da9ae57b", + "0x000000000000000000000000000000000000000000000000000000000000040a", + "0x000000000000000000000000000000000000000000000000000000000000041a", + "0x000000000000000000000000000000f2c45d65b0111812d564bf2267d6f0dddf", + "0x0000000000000000000000000000000000235faacc80bf2d21e60ecd3c7812f2", + "0x000000000000000000000000000000be5a017186a8d1d75d544ca23f022235ee", + "0x0000000000000000000000000000000000167bcb28ae0a28c63d7e221275dfb4", + "0x00000000000000000000000000000079180bd450e3ef9580d6e7e33d4dc0a760", + "0x000000000000000000000000000000000003f44874db83739629e3d844492393", + "0x000000000000000000000000000000f167a4607f96a67a5cc7a85fadb98e11e7", + "0x00000000000000000000000000000000001055085c931127fe1af06007186b8e", + "0x000000000000000000000000000000db3322a75ecaa3ab9493c9452c4ad97a61", + "0x0000000000000000000000000000000000197c6aa1a01c96e1c45ad62d8da805", + "0x0000000000000000000000000000001213ba657d8add9d827e03b009031d155c", + "0x00000000000000000000000000000000001a4453dc88cfb20f7d50407d0d4337", + "0x000000000000000000000000000000096cd1cfa5679e70ed6717f8cce13e3df4", + "0x00000000000000000000000000000000000933711e0a04248be7a543ee654511", + "0x00000000000000000000000000000040063243d24bd89e0f8eb5c981957b95d0", + "0x0000000000000000000000000000000000105165b5af495efdacfbf3da8262ba", + "0x00000000000000000000000000000091b77512273d0df03128c05677738a4fe0", + "0x00000000000000000000000000000000000a9a973f0c63e3efbb287270671d49", + "0x0000000000000000000000000000001bb8c7dacaecc6ab0f9872e3137a324b80", + "0x000000000000000000000000000000000016145f8c4c0015c5eebcdecb5054ac", + "0x0000000000000000000000000000004b0188603817353cbc05cf3d6a14d44828", + "0x0000000000000000000000000000000000219d0b92889d113d936e8c4165f3a1", + "0x00000000000000000000000000000080ec427f9e448f1f88714c6ee8d7a556d1", + "0x0000000000000000000000000000000000171f0ca9771287b35070ae3d60d455", + "0x000000000000000000000000000000e6bee501455201368d829cd1ce79087f61", + "0x0000000000000000000000000000000000200a6916f2e94e0de862bccb7c66e9", + "0x000000000000000000000000000000ce79b607a7f0f58208394dd5ae4ed88772", + "0x0000000000000000000000000000000000289dbe505abab4d4613cf578f4ee04", + "0x0000000000000000000000000000006fa8efd3ab79446650425481b2a5ab9d2e", + "0x000000000000000000000000000000000015fc8d4c9ac4de8057f0c20283453b", + "0x000000000000000000000000000000dd21a4bb7949f9f56eadd2541c7c9062ed", + "0x00000000000000000000000000000000002d121f8fc47aff8eacaefbcde1f1ce", + "0x00000000000000000000000000000018bff39d61c2754aa4c28c7456f2444bf0", + "0x00000000000000000000000000000000000e294611f5fa9955eb0480363acbc8", + "0x000000000000000000000000000000f3abae48595c4c52db49983f18038ba0e6", + "0x0000000000000000000000000000000000247c1f6b6051e941f96d53d3df4c8a", + "0x00000000000000000000000000000097a9dcc7450fc684eb4b24b535e0e2c49d", + "0x00000000000000000000000000000000001e8bc37c6fe70f27462e4a19f76073", + "0x000000000000000000000000000000cf0d33b7761908433d06ba76dce6999bb5", + "0x00000000000000000000000000000000001fba355559d0718ace8a008f58d80f", + "0x000000000000000000000000000000dad5c2ca6d64dfd9c545713e7dfabb1bd8", + "0x00000000000000000000000000000000000596966ec53735aa5c2e41660aa74b", + "0x000000000000000000000000000000674e9036aa5ef3e036c7942275f09a687d", + "0x00000000000000000000000000000000000ed3263d2026e675c6d60454fecf9f", + "0x000000000000000000000000000000f05838102ceb9c8ee429f6c3e9216c2e83", + "0x000000000000000000000000000000000005623227ba6f2e6e5b30f9e5e94503", + "0x0000000000000000000000000000002e05f58ac4fd85442ca0b16bd844d47043", + "0x0000000000000000000000000000000000025ae2aa6769e0cf6ea9b1e9ea8e62", + "0x000000000000000000000000000000838e11620ffc5ec79c47885e9442ba1392", + "0x00000000000000000000000000000000000f21c8ff496b2e07b2fdea160c80e5", + "0x0000000000000000000000000000000ae4bfd7a86101e7e5dbb42424243bbba0", + "0x000000000000000000000000000000000001919bbc693110740ecfd2429d705c", + "0x000000000000000000000000000000a7deafde441ab4c90754443b2952a8e198", + "0x00000000000000000000000000000000002001194ea75123d7254656c7c2d2f9", + "0x000000000000000000000000000000ea35aead9eaff06c58030038a07f49d30d", + "0x000000000000000000000000000000000015a681766728e307c94623db1bbf27", + "0x000000000000000000000000000000ff05851a2117586003e4a693cad496356f", + "0x00000000000000000000000000000000001c8fd492db6ab43f0952effa308752", + "0x000000000000000000000000000000ff60324c262cbaa62314aeaa4d206ae2a7", + "0x000000000000000000000000000000000021ae7da4bb7bee063bb433e9916df5", + "0x000000000000000000000000000000ccc9ca8c64af3a993c9983479a2122ef87", + "0x000000000000000000000000000000000006f02446f55672ea11a17ad4f7c52c", + "0x0000000000000000000000000000005486e20b8039e514b7d1d8d73b753ce109", + "0x00000000000000000000000000000000000ee5215ab43323e02e030480af5a47", + "0x0000000000000000000000000000004f40e7e0e4363816365655ce2d3de2a549", + "0x000000000000000000000000000000000023352e65c67c386fedbe8cb8c1a157", + "0x0000000000000000000000000000005cc3c5f6a87428ceb3da89a28e2a3fe6e6", + "0x0000000000000000000000000000000000281a53a15a27d79e4e46974507c75d", + "0x0000000000000000000000000000009ba7afdd0fdd45624cfc488826a745f531", + "0x000000000000000000000000000000000006159d92d602a3625e1fa737a631bd", + "0x0000000000000000000000000000009acbf6bad019c4f06e716fc924a33f1203", + "0x000000000000000000000000000000000010409ee9706e5e8e72d6381f4db606", + "0x00000000000000000000000000000093638151006c368a56fdd00a665e8569e7", + "0x000000000000000000000000000000000023db83954e0b3091ab8afe297a5565", + "0x00000000000000000000000000000098e98affba889b0d4ece2b022b4576b071", + "0x00000000000000000000000000000000000b3c3391a272ab2a9befe595830f75", + "0x000000000000000000000000000000d74d1bd1d3b599970048c20d93fa4e44db", + "0x0000000000000000000000000000000000058cd6c800208a3d5d7c3a1720a93a", + "0x000000000000000000000000000000b9a2463dc018f0e3adc3762178a5722d8a", + "0x00000000000000000000000000000000001c01096eaafcca773d550e842de274", + "0x000000000000000000000000000000c3d379957e8c42c09410026b920267157a", + "0x0000000000000000000000000000000000009013d4a5159f769dfab31dd2901d", + "0x00000000000000000000000000000058ce78fd99a36d0b85123d56abdda1a431", + "0x000000000000000000000000000000000029a3f22c07727ce79c1fffbe4bbdb3", + "0x000000000000000000000000000000751a63b41218c33ae5d641c130f060ce34", + "0x000000000000000000000000000000000018a3d787ef1ec164dc62244409c559", + "0x000000000000000000000000000000a0340f3ea930787df40d68fdd647a9f7d0", + "0x0000000000000000000000000000000000230b997570d1f85ae65a57bb57a7d0", + "0x0000000000000000000000000000000bc60b4ea3525f05223875c1af3ed2b02d", + "0x0000000000000000000000000000000000236868e5e41937ed2cdc41de55f10b", + "0x000000000000000000000000000000249541e175626917b9aaedb0e2915d4177", + "0x00000000000000000000000000000000002fb85434d64a786207f332f20277da", + "0x000000000000000000000000000000aec46500b248445db79f52d6ed7b30158b", + "0x000000000000000000000000000000000002321694c1a17469bdd178eafdfa6e", + "0x00000000000000000000000000000023fd9365c6a81758f239e73dee60348b69", + "0x000000000000000000000000000000000014cbd4ad9a23e8adbaa2eb703f2801", + "0x000000000000000000000000000000a1dd8f964e4f1c6a0c2c1407da434a5d2f", + "0x000000000000000000000000000000000018ee0334d49c017b30c8e7656c679f", + "0x000000000000000000000000000000f1571f393c77481ab166deb9cc943c32f7", + "0x00000000000000000000000000000000002f977fa69325d670afb3b6523af5c6", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000945c3182d468e621b8f15b92e67af5839", - "0x00000000000000000000000000000000002310b424058e92b518d7a03e3eb5e8", - "0x0000000000000000000000000000001d6cf6dd16125b61517ad9fd5b94b3fed2", - "0x00000000000000000000000000000000001faecd336505024e27ccbe2c916e44" + "0x00000000000000000000000000000023635349e868409c83d379c32a81c115d0", + "0x00000000000000000000000000000000000c7e2f1646f595e8080c7fd3326ea5", + "0x000000000000000000000000000000c2dc015ec1cda2c5db6d1cd7259bd31f8d", + "0x000000000000000000000000000000000015a4bd8394f361c4955603162ee359" ] -hash = "0x069cbfb5286e85ee7ce691251c6379a8336a1b2da06943fbf0f98666bdebe954" +hash = "0x2ea28e97095831795ca661de3ab61186dbc210b503134e51beb27eae20418166" [inputs.previous_rollup_data.vk_witness] leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" sibling_path = [ - "0x1ccee5a9c85bc062b6fa5ac008d9b31d3701e25b326e6a670cf68ca6e85b9ee3", - "0x1cb3d9ed21126a16f090ff0f9e10287c3c5235acdba2117ee54b5bc49c97a08b", - "0x2e133e22d161c41043ea7ef2758c7b51be0ada628afa5a0cd7ebb2b258134721", - "0x2fa9633929cccbcc4776c410cc5f4315b5a3cc9f91de60871a3e8d7a5503505c", + "0x2b182eb820127920e5fa90ca76380f319adab799d239737ffbe3bfdcd30b00a9", + "0x025c37ebbb9ffb9b8fc9460a2c2e4a6299aef560600c948621778c0598d3fc25", + "0x20327946d4b0480337a05b934ae548cf54166d7e47e4cf507b80e22807d950d3", + "0x1c928e7bfd756013034a6faef411dd7b791ce88c9f42adb22a032f461bee9ac9", "0x0a5cccc6f5c49119df17ad49125046e1f8ade560372f415e56d28bab8a1fba34", "0x042567ea670fc3ff2b8c48b244f6a0c96944c6b969143cf0cfacfd97e5b929aa" ] diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/address/eth_address.nr b/noir-projects/noir-protocol-circuits/crates/types/src/address/eth_address.nr index f50aab7ff93a..7276af6d6b1f 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/address/eth_address.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/address/eth_address.nr @@ -64,4 +64,13 @@ impl EthAddress { pub fn assert_is_zero(self) { assert(self.to_field() == 0); } + + pub fn to_be_bytes(self) -> [u8; 20] { + let field_bytes: [u8; 32] = self.inner.to_be_bytes(); + let mut bytes = [0; 20]; + for i in 0..20 { + bytes[i] = field_bytes[i + 12]; + } + bytes + } } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr index 1490569cf0b7..d8482e80d765 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr @@ -293,6 +293,17 @@ pub global BLOCK_HEADER_LENGTH_BYTES: u32 = APPEND_ONLY_TREE_SNAPSHOT_LENGTH_BYT - 12 + 32 * TOTAL_FEES_LENGTH + 32 * TOTAL_MANA_USED_LENGTH; +pub global PROPOSED_BLOCK_HEADER_LENGTH: u32 = 1 /* last_archive_root */ + + CONTENT_COMMITMENT_LENGTH + + 1 /* slot_number */ + + 1 /* timestamp */ + + 1 /* coinbase */ + + 1 /* fee_recipient */ + + GAS_FEES_LENGTH + + TOTAL_MANA_USED_LENGTH; +pub global PROPOSED_BLOCK_HEADER_LENGTH_BYTES: u32 = (PROPOSED_BLOCK_HEADER_LENGTH - 2) * 32 + + 8 /* timestamp */ + + 20 /* coinbase */; pub global PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: u32 = CALL_CONTEXT_LENGTH + 4 + MAX_BLOCK_NUMBER_LENGTH @@ -438,15 +449,24 @@ pub global BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH: u32 = 2 * APPEND_ONLY_TREE_SNAPSHOT_LENGTH + 2 * GLOBAL_VARIABLES_LENGTH + 1 /* out_hash */ + + AZTEC_MAX_EPOCH_DURATION /* proposedBlockHeaderHashes */ + AZTEC_MAX_EPOCH_DURATION * FEE_RECIPIENT_LENGTH + 1 /* vk_tree_root */ + 1 /* protocol_contract_tree_root */ + 1 /* prover_id */ + AZTEC_MAX_EPOCH_DURATION * BLOB_PUBLIC_INPUTS * BLOBS_PER_BLOCK; -// + 6 for end_timestamp, end_block_number, out_hash, vk_tree_root, protocol_contract_tree_root, prover_id -pub global ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH: u32 = 2 * APPEND_ONLY_TREE_SNAPSHOT_LENGTH - + 6 - + AZTEC_MAX_EPOCH_DURATION * FEE_RECIPIENT_LENGTH +pub global ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH: u32 = APPEND_ONLY_TREE_SNAPSHOT_LENGTH /* previous_archive */ + + APPEND_ONLY_TREE_SNAPSHOT_LENGTH /* end_archive */ + + 1 /* end_timestamp */ + + 1 /* end_block_number */ + + 1 /* out_hash */ + + 1 /* chain_id */ + + 1 /* version */ + + 1 /* vk_tree_root */ + + 1 /* protocol_contract_tree_root */ + + 1 /* prover_id */ + + AZTEC_MAX_EPOCH_DURATION /* proposedBlockHeaderHashes */ + + AZTEC_MAX_EPOCH_DURATION * FEE_RECIPIENT_LENGTH /* fees */ + AZTEC_MAX_EPOCH_DURATION * BLOB_PUBLIC_INPUTS * BLOBS_PER_BLOCK; pub global GET_NOTES_ORACLE_RETURN_LENGTH: u32 = 674; pub global NOTE_HASHES_NUM_BYTES_PER_BASE_ROLLUP: u32 = 32 * MAX_NOTE_HASHES_PER_TX; diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/lib.nr b/noir-projects/noir-protocol-circuits/crates/types/src/lib.nr index c0e54fdb74a7..680f0cf67ba5 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/lib.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/lib.nr @@ -22,6 +22,7 @@ pub mod type_packing; pub mod shared_mutable; pub mod content_commitment; pub mod block_header; +pub mod proposed_block_header; pub(crate) mod tests; diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/proposed_block_header.nr b/noir-projects/noir-protocol-circuits/crates/types/src/proposed_block_header.nr new file mode 100644 index 000000000000..07838ceb4321 --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/types/src/proposed_block_header.nr @@ -0,0 +1,155 @@ +use crate::{ + abis::gas_fees::GasFees, + address::{AztecAddress, EthAddress}, + constants::{PROPOSED_BLOCK_HEADER_LENGTH, PROPOSED_BLOCK_HEADER_LENGTH_BYTES}, + content_commitment::ContentCommitment, + hash::sha256_to_field, + traits::{Deserialize, Empty, FromField, Hash, Serialize, ToField}, + utils::reader::Reader, +}; + +pub struct ProposedBlockHeader { + pub last_archive_root: Field, + pub content_commitment: ContentCommitment, + + // Partial global_variables: + pub slot_number: Field, + pub timestamp: u64, + pub coinbase: EthAddress, + pub fee_recipient: AztecAddress, + pub gas_fees: GasFees, + + pub total_mana_used: Field, +} + +impl Eq for ProposedBlockHeader { + fn eq(self, other: Self) -> bool { + self.last_archive_root.eq(other.last_archive_root) + & self.content_commitment.eq(other.content_commitment) + & (self.slot_number == 0) + & (self.timestamp == 0) + & (self.coinbase.is_zero()) + & (self.fee_recipient.is_zero()) + & (self.gas_fees.is_empty()) + & self.total_mana_used.eq(other.total_mana_used) + } +} + +impl Serialize for ProposedBlockHeader { + fn serialize(self) -> [Field; PROPOSED_BLOCK_HEADER_LENGTH] { + let mut serialized: BoundedVec = BoundedVec::new(); + + serialized.push(self.last_archive_root); + serialized.extend_from_array(self.content_commitment.serialize()); + serialized.push(self.slot_number); + serialized.push(self.timestamp as Field); + serialized.push(self.coinbase.to_field()); + serialized.push(self.fee_recipient.to_field()); + serialized.extend_from_array(self.gas_fees.serialize()); + serialized.push(self.total_mana_used); + + serialized.storage() + } +} + +impl Deserialize for ProposedBlockHeader { + fn deserialize(serialized: [Field; PROPOSED_BLOCK_HEADER_LENGTH]) -> Self { + let mut reader = Reader::new(serialized); + + ProposedBlockHeader { + last_archive_root: reader.read(), + content_commitment: reader.read_struct(ContentCommitment::deserialize), + slot_number: reader.read(), + timestamp: reader.read() as u64, + coinbase: EthAddress::from_field(reader.read()), + fee_recipient: AztecAddress::from_field(reader.read()), + gas_fees: reader.read_struct(GasFees::deserialize), + total_mana_used: reader.read(), + } + } +} + +impl Empty for ProposedBlockHeader { + fn empty() -> Self { + Self { + last_archive_root: 0, + content_commitment: ContentCommitment::empty(), + slot_number: 0, + timestamp: 0, + coinbase: EthAddress::zero(), + fee_recipient: AztecAddress::zero(), + gas_fees: GasFees::empty(), + total_mana_used: 0, + } + } +} + +impl ProposedBlockHeader { + pub fn to_be_bytes(self) -> [u8; PROPOSED_BLOCK_HEADER_LENGTH_BYTES] { + let mut bytes = [0; PROPOSED_BLOCK_HEADER_LENGTH_BYTES]; + + let last_archive_root_bytes: [u8; 32] = self.last_archive_root.to_be_bytes(); + let num_txs_bytes: [u8; 32] = self.content_commitment.num_txs.to_be_bytes(); + let blobs_hash_bytes: [u8; 32] = self.content_commitment.blobs_hash.to_be_bytes(); + let in_hash_bytes: [u8; 32] = self.content_commitment.in_hash.to_be_bytes(); + let out_hash_bytes: [u8; 32] = self.content_commitment.out_hash.to_be_bytes(); + let slot_number_bytes: [u8; 32] = self.slot_number.to_be_bytes(); + let coinbase_bytes: [u8; 20] = self.coinbase.to_be_bytes(); + let fee_recipient_bytes: [u8; 32] = self.fee_recipient.to_field().to_be_bytes(); + let gas_fees_per_da_gas_bytes: [u8; 32] = self.gas_fees.fee_per_da_gas.to_be_bytes(); + let gas_fees_per_l2_gas_bytes: [u8; 32] = self.gas_fees.fee_per_l2_gas.to_be_bytes(); + let total_mana_used_bytes: [u8; 32] = self.total_mana_used.to_be_bytes(); + + for i in 0..32 { + bytes[i] = last_archive_root_bytes[i]; + bytes[i + 0x20] = num_txs_bytes[i]; + bytes[i + 0x40] = blobs_hash_bytes[i]; + bytes[i + 0x60] = in_hash_bytes[i]; + bytes[i + 0x80] = out_hash_bytes[i]; + bytes[i + 0xa0] = slot_number_bytes[i]; + } + + let mut timestamp = self.timestamp; + for i in 0..8 { + bytes[0xc8 - 1 - i] = timestamp as u8; + timestamp = timestamp >> 8; + } + + for i in 0..20 { + bytes[i + 0xc8] = coinbase_bytes[i]; + } + + for i in 0..32 { + bytes[i + 0xdc] = fee_recipient_bytes[i]; + bytes[i + 0xfc] = gas_fees_per_da_gas_bytes[i]; + bytes[i + 0x11c] = gas_fees_per_l2_gas_bytes[i]; + bytes[i + 0x13c] = total_mana_used_bytes[i]; + } + + bytes + } +} + +impl Hash for ProposedBlockHeader { + fn hash(self) -> Field { + sha256_to_field(self.to_be_bytes()) + } +} + +#[test] +fn serialization_of_empty() { + let header = ProposedBlockHeader::empty(); + let serialized = header.serialize(); + let deserialized = ProposedBlockHeader::deserialize(serialized); + assert(header.eq(deserialized)); +} + +#[test] +fn empty_hash_is_zero() { + let header = ProposedBlockHeader::empty(); + let hash = header.hash(); + + // Value from proposed_block_header.test.ts "computes empty hash" test + let test_data_empty_hash = 0x002e384af86a480f952aa16443fd29646a9063865e62d7c403fc7ed697bb7712; + assert_eq(hash, test_data_empty_hash); +} diff --git a/yarn-project/archiver/src/archiver/archiver.test.ts b/yarn-project/archiver/src/archiver/archiver.test.ts index 0447bb87555e..db090f702806 100644 --- a/yarn-project/archiver/src/archiver/archiver.test.ts +++ b/yarn-project/archiver/src/archiver/archiver.test.ts @@ -25,6 +25,8 @@ import type { ArchiverInstrumentation } from './instrumentation.js'; import { KVArchiverDataStore } from './kv_archiver_store/kv_archiver_store.js'; interface MockRollupContractRead { + /** Returns the rollup version. */ + getVersion: () => Promise; /** Given an L2 block number, returns the archive. */ archiveAt: (args: readonly [bigint]) => Promise<`0x${string}`>; /** Given an L2 block number, returns provenBlockNumber, provenArchive, pendingBlockNumber, pendingArchive, archiveForLocalPendingBlockNumber, provenEpochNumber. */ @@ -97,6 +99,7 @@ describe('Archiver', () => { logger = createLogger('archiver:test'); now = +new Date(); publicClient = mock({ + getChainId: () => Promise.resolve(1), // Return a block with a reasonable timestamp getBlock: ((args: any) => ({ timestamp: args.blockNumber * BigInt(DefaultL1ContractsConfig.ethereumSlotDuration) + BigInt(now), @@ -139,6 +142,7 @@ describe('Archiver', () => { mockRollupRead.archiveAt.mockImplementation((args: readonly [bigint]) => Promise.resolve(blocks[Number(args[0] - 1n)].archive.root.toString()), ); + mockRollupRead.getVersion.mockImplementation(() => Promise.resolve(1n)); mockRollupEvents = mock(); mockRollupEvents.L2BlockProposed.mockImplementation((filter: any, { fromBlock, toBlock }) => Promise.resolve(l2BlockProposedLogs.filter(log => log.blockNumber! >= fromBlock && log.blockNumber! <= toBlock)), @@ -606,13 +610,24 @@ describe('Archiver', () => { * @returns A fake tx with calldata that corresponds to calling process in the Rollup contract. */ async function makeRollupTx(l2Block: L2Block) { - const header = toHex(l2Block.header.toBuffer()); + const header = toHex(l2Block.header.toPropose().toBuffer()); const blobInput = Blob.getEthBlobEvaluationInputs(await Blob.getBlobs(l2Block.body.toBlobFields())); const archive = toHex(l2Block.archive.root.toBuffer()); + const stateReference = toHex(l2Block.header.state.toBuffer()); const rollupInput = encodeFunctionData({ abi: RollupAbi, functionName: 'propose', - args: [{ header, archive, oracleInput: { feeAssetPriceModifier: 0n }, txHashes: [] }, [], blobInput], + args: [ + { + header, + archive, + stateReference, + oracleInput: { feeAssetPriceModifier: 0n }, + txHashes: [], + }, + [], + blobInput, + ], }); const forwarderInput = encodeFunctionData({ diff --git a/yarn-project/archiver/src/archiver/archiver.ts b/yarn-project/archiver/src/archiver/archiver.ts index 9b2bc526c950..b834b754322e 100644 --- a/yarn-project/archiver/src/archiver/archiver.ts +++ b/yarn-project/archiver/src/archiver/archiver.ts @@ -57,7 +57,11 @@ import { type GetContractReturnType, createPublicClient, fallback, getContract, import type { ArchiverDataStore, ArchiverL1SynchPoint } from './archiver_store.js'; import type { ArchiverConfig } from './config.js'; -import { retrieveBlocksFromRollup, retrieveL1ToL2Messages } from './data_retrieval.js'; +import { + retrieveBlocksFromRollup, + retrieveL1ToL2Messages, + retrievedBlockToPublishedL2Block, +} from './data_retrieval.js'; import { NoBlobBodiesFoundError } from './errors.js'; import { ArchiverInstrumentation } from './instrumentation.js'; import type { DataRetrieval } from './structs/data_retrieval.js'; @@ -551,7 +555,9 @@ export class Archiver extends EventEmitter implements ArchiveSource, Traceable { `Retrieved ${retrievedBlocks.length} new L2 blocks between L1 blocks ${searchStartBlock} and ${searchEndBlock} with last processed L1 block ${lastProcessedL1BlockNumber}.`, ); - for (const block of retrievedBlocks) { + const publishedBlocks = retrievedBlocks.map(b => retrievedBlockToPublishedL2Block(b)); + + for (const block of publishedBlocks) { this.log.debug(`Ingesting new L2 block ${block.block.number} with ${block.block.body.txEffects.length} txs`, { blockHash: block.block.hash(), l1BlockNumber: block.l1.blockNumber, @@ -560,13 +566,13 @@ export class Archiver extends EventEmitter implements ArchiveSource, Traceable { }); } - const [processDuration] = await elapsed(() => this.store.addBlocks(retrievedBlocks)); + const [processDuration] = await elapsed(() => this.store.addBlocks(publishedBlocks)); this.instrumentation.processNewBlocks( - processDuration / retrievedBlocks.length, - retrievedBlocks.map(b => b.block), + processDuration / publishedBlocks.length, + publishedBlocks.map(b => b.block), ); - for (const block of retrievedBlocks) { + for (const block of publishedBlocks) { this.log.info(`Downloaded L2 block ${block.block.number}`, { blockHash: await block.block.hash(), blockNumber: block.block.number, diff --git a/yarn-project/archiver/src/archiver/data_retrieval.ts b/yarn-project/archiver/src/archiver/data_retrieval.ts index 950af8d3ef46..69f2c6023bbe 100644 --- a/yarn-project/archiver/src/archiver/data_retrieval.ts +++ b/yarn-project/archiver/src/archiver/data_retrieval.ts @@ -6,13 +6,12 @@ import type { EthAddress } from '@aztec/foundation/eth-address'; import { Signature, type ViemSignature } from '@aztec/foundation/eth-signature'; import { Fr } from '@aztec/foundation/fields'; import { type Logger, createLogger } from '@aztec/foundation/log'; -import { numToUInt32BE } from '@aztec/foundation/serialize'; import { ForwarderAbi, type InboxAbi, RollupAbi } from '@aztec/l1-artifacts'; import { Body, L2Block } from '@aztec/stdlib/block'; import { InboxLeaf } from '@aztec/stdlib/messaging'; import { Proof } from '@aztec/stdlib/proofs'; import { AppendOnlyTreeSnapshot } from '@aztec/stdlib/trees'; -import { BlockHeader } from '@aztec/stdlib/tx'; +import { BlockHeader, GlobalVariables, ProposedBlockHeader, StateReference } from '@aztec/stdlib/tx'; import { type GetContractEventsReturnType, @@ -27,6 +26,65 @@ import { NoBlobBodiesFoundError } from './errors.js'; import type { DataRetrieval } from './structs/data_retrieval.js'; import type { L1PublishedData, PublishedL2Block } from './structs/published.js'; +export type RetrievedL2Block = { + l2BlockNumber: bigint; + archiveRoot: Fr; + stateReference: StateReference; + header: ProposedBlockHeader; + body: Body; + l1: L1PublishedData; + chainId: Fr; + version: Fr; + signatures: Signature[]; +}; + +export function retrievedBlockToPublishedL2Block(retrievedBlock: RetrievedL2Block): PublishedL2Block { + const { + l2BlockNumber, + archiveRoot, + stateReference, + header: proposedHeader, + body, + l1, + chainId, + version, + signatures, + } = retrievedBlock; + + const archive = new AppendOnlyTreeSnapshot( + archiveRoot, + Number(l2BlockNumber + 1n), // nextAvailableLeafIndex + ); + + const globalVariables = GlobalVariables.from({ + chainId, + version, + blockNumber: new Fr(l2BlockNumber), + slotNumber: proposedHeader.slotNumber, + timestamp: new Fr(proposedHeader.timestamp), + coinbase: proposedHeader.coinbase, + feeRecipient: proposedHeader.feeRecipient, + gasFees: proposedHeader.gasFees, + }); + + const header = BlockHeader.from({ + lastArchive: new AppendOnlyTreeSnapshot(proposedHeader.lastArchiveRoot, Number(l2BlockNumber)), + contentCommitment: proposedHeader.contentCommitment, + state: stateReference, + globalVariables, + totalFees: body.txEffects.reduce((accum, txEffect) => accum.add(txEffect.transactionFee), Fr.ZERO), + totalManaUsed: proposedHeader.totalManaUsed, + }); + + const block = new L2Block(archive, header, body); + + return { + block, + l1, + signatures, + }; +} + /** * Fetches new L2 blocks. * @param publicClient - The viem public client to use for transaction retrieval. @@ -43,8 +101,8 @@ export async function retrieveBlocksFromRollup( searchStartBlock: bigint, searchEndBlock: bigint, logger: Logger = createLogger('archiver'), -): Promise { - const retrievedBlocks: PublishedL2Block[] = []; +): Promise { + const retrievedBlocks: RetrievedL2Block[] = []; do { if (searchStartBlock > searchEndBlock) { break; @@ -90,14 +148,14 @@ export async function retrieveBlocksFromRollup( * @param logs - L2BlockProposed logs. * @returns - An array blocks. */ -export async function processL2BlockProposedLogs( +async function processL2BlockProposedLogs( rollup: GetContractReturnType, publicClient: ViemPublicClient, blobSinkClient: BlobSinkClientInterface, logs: GetContractEventsReturnType, logger: Logger, -): Promise { - const retrievedBlocks: PublishedL2Block[] = []; +): Promise { + const retrievedBlocks: RetrievedL2Block[] = []; await asyncPool(10, logs, async log => { const l2BlockNumber = log.args.blockNumber!; const archive = log.args.archive!; @@ -122,7 +180,11 @@ export async function processL2BlockProposedLogs( timestamp: await getL1BlockTime(publicClient, log.blockNumber), }; - retrievedBlocks.push({ ...block, l1 }); + const chainId = new Fr(await publicClient.getChainId()); + + const version = new Fr(await rollup.read.getVersion({ blockNumber: log.blockNumber })); + + retrievedBlocks.push({ ...block, l1, chainId, version }); logger.trace(`Retrieved L2 block ${l2BlockNumber} from L1 tx ${log.transactionHash}`, { l1BlockNumber: log.blockNumber, l2BlockNumber, @@ -202,7 +264,7 @@ function extractRollupProposeCalldata(forwarderData: Hex, rollupAddress: Hex): H * TODO: Add retries and error management. * @param publicClient - The viem public client to use for transaction retrieval. * @param txHash - Hash of the tx that published it. - * @param l2BlockNum - L2 block number. + * @param l2BlockNumber - L2 block number. * @returns L2 block from the calldata, deserialized */ async function getBlockFromRollupTx( @@ -210,10 +272,10 @@ async function getBlockFromRollupTx( blobSinkClient: BlobSinkClientInterface, txHash: `0x${string}`, blobHashes: Buffer[], // TODO(md): buffer32? - l2BlockNum: bigint, + l2BlockNumber: bigint, rollupAddress: Hex, logger: Logger, -): Promise> { +): Promise> { const { input: forwarderData, blockHash } = await publicClient.getTransaction({ hash: txHash }); const rollupData = extractRollupProposeCalldata(forwarderData, rollupAddress); @@ -226,10 +288,11 @@ async function getBlockFromRollupTx( throw new Error(`Unexpected rollup method called ${rollupFunctionName}`); } - const [decodedArgs, signatures] = rollupArgs! as readonly [ + const [decodedArgs, signatures, _blobInput] = rollupArgs! as readonly [ { header: Hex; archive: Hex; + stateReference: Hex; blockHash: Hex; oracleInput: { feeAssetPriceModifier: bigint; @@ -240,10 +303,10 @@ async function getBlockFromRollupTx( Hex, ]; - const header = BlockHeader.fromBuffer(Buffer.from(hexToBytes(decodedArgs.header))); + const header = ProposedBlockHeader.fromBuffer(Buffer.from(hexToBytes(decodedArgs.header))); const blobBodies = await blobSinkClient.getBlobSidecar(blockHash, blobHashes); if (blobBodies.length === 0) { - throw new NoBlobBodiesFoundError(Number(l2BlockNum)); + throw new NoBlobBodiesFoundError(Number(l2BlockNumber)); } let blockFields: Fr[]; @@ -259,23 +322,20 @@ async function getBlockFromRollupTx( } // The blob source gives us blockFields, and we must construct the body from them: - const blockBody = Body.fromBlobFields(blockFields); + const body = Body.fromBlobFields(blockFields); - const blockNumberFromHeader = header.globalVariables.blockNumber.toBigInt(); + const archiveRoot = new Fr(Buffer.from(hexToBytes(decodedArgs.archive))); - if (blockNumberFromHeader !== l2BlockNum) { - throw new Error(`Block number mismatch: expected ${l2BlockNum} but got ${blockNumberFromHeader}`); - } - - const archive = AppendOnlyTreeSnapshot.fromBuffer( - Buffer.concat([ - Buffer.from(hexToBytes(decodedArgs.archive)), // L2Block.archive.root - numToUInt32BE(Number(l2BlockNum + 1n)), // L2Block.archive.nextAvailableLeafIndex - ]), - ); + const stateReference = StateReference.fromBuffer(Buffer.from(hexToBytes(decodedArgs.stateReference))); - const block = new L2Block(archive, header, blockBody); - return { block, signatures: signatures.map(Signature.fromViemSignature) }; + return { + l2BlockNumber, + archiveRoot, + stateReference, + header, + body, + signatures: signatures.map(Signature.fromViemSignature), + }; } /** diff --git a/yarn-project/bb-prover/src/verifier/bb_verifier.ts b/yarn-project/bb-prover/src/verifier/bb_verifier.ts index 1597284396b0..4e2fdea445f1 100644 --- a/yarn-project/bb-prover/src/verifier/bb_verifier.ts +++ b/yarn-project/bb-prover/src/verifier/bb_verifier.ts @@ -12,7 +12,14 @@ import { promises as fs } from 'fs'; import * as path from 'path'; import { fileURLToPath } from 'url'; -import { BB_RESULT, PROOF_FILENAME, VK_FILENAME, verifyClientIvcProof, verifyProof } from '../bb/execute.js'; +import { + BB_RESULT, + PROOF_FILENAME, + PUBLIC_INPUTS_FILENAME, + VK_FILENAME, + verifyClientIvcProof, + verifyProof, +} from '../bb/execute.js'; import type { BBConfig } from '../config.js'; import { getUltraHonkFlavorForCircuit } from '../honk.js'; import { writeClientIVCProofToOutputDirectory } from '../prover/proof_utils.js'; @@ -42,13 +49,16 @@ export class BBCircuitVerifier implements ClientProtocolCircuitVerifier { public async verifyProofForCircuit(circuit: ServerProtocolArtifact, proof: Proof) { const operation = async (bbWorkingDirectory: string) => { + const publicInputsFileName = path.join(bbWorkingDirectory, PUBLIC_INPUTS_FILENAME); const proofFileName = path.join(bbWorkingDirectory, PROOF_FILENAME); const verificationKeyPath = path.join(bbWorkingDirectory, VK_FILENAME); const verificationKey = this.getVerificationKeyData(circuit); this.logger.debug(`${circuit} Verifying with key: ${verificationKey.keyAsFields.hash.toString()}`); - await fs.writeFile(proofFileName, proof.buffer); + // TODO(https://github.com/AztecProtocol/aztec-packages/issues/13189): Put this proof parsing logic in the proof class. + await fs.writeFile(publicInputsFileName, proof.buffer.slice(0, proof.numPublicInputs * 32)); + await fs.writeFile(proofFileName, proof.buffer.slice(proof.numPublicInputs * 32)); await fs.writeFile(verificationKeyPath, verificationKey.keyAsBytes); const result = await verifyProof( diff --git a/yarn-project/constants/src/constants.gen.ts b/yarn-project/constants/src/constants.gen.ts index 35ecca34b5eb..13a87539361e 100644 --- a/yarn-project/constants/src/constants.gen.ts +++ b/yarn-project/constants/src/constants.gen.ts @@ -171,6 +171,8 @@ export const TOTAL_FEES_LENGTH = 1; export const TOTAL_MANA_USED_LENGTH = 1; export const BLOCK_HEADER_LENGTH = 25; export const BLOCK_HEADER_LENGTH_BYTES = 648; +export const PROPOSED_BLOCK_HEADER_LENGTH = 12; +export const PROPOSED_BLOCK_HEADER_LENGTH_BYTES = 348; export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 724; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 908; export const PRIVATE_CONTEXT_INPUTS_LENGTH = 40; @@ -194,8 +196,8 @@ export const PRIVATE_TO_ROLLUP_KERNEL_CIRCUIT_PUBLIC_INPUTS_LENGTH = 782; export const AVM_CIRCUIT_PUBLIC_INPUTS_LENGTH = 1026; export const CONSTANT_ROLLUP_DATA_LENGTH = 13; export const BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH = 52; -export const BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 984; -export const ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 970; +export const BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 1032; +export const ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 1020; export const GET_NOTES_ORACLE_RETURN_LENGTH = 674; export const NOTE_HASHES_NUM_BYTES_PER_BASE_ROLLUP = 2048; export const NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 2048; diff --git a/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts b/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts index d415046c1c34..328852ed0642 100644 --- a/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts +++ b/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts @@ -290,60 +290,28 @@ describe('L1Publisher integration', () => { // The json formatting in forge is a bit brittle, so we convert Fr to a number in the few values below. // This should not be a problem for testing as long as the values are not larger than u32. archive: `0x${block.archive.root.toBuffer().toString('hex').padStart(64, '0')}`, + blobInputs: Blob.getEthBlobEvaluationInputs(blobs), + blockNumber: block.number, body: `0x${block.body.toBuffer().toString('hex')}`, decodedHeader: { + lastArchiveRoot: `0x${block.header.lastArchive.root.toBuffer().toString('hex').padStart(64, '0')}`, contentCommitment: { blobsHash: `0x${block.header.contentCommitment.blobsHash.toString('hex').padStart(64, '0')}`, inHash: `0x${block.header.contentCommitment.inHash.toString('hex').padStart(64, '0')}`, outHash: `0x${block.header.contentCommitment.outHash.toString('hex').padStart(64, '0')}`, numTxs: Number(block.header.contentCommitment.numTxs), }, - globalVariables: { - blockNumber: block.number, - slotNumber: `0x${block.header.globalVariables.slotNumber.toBuffer().toString('hex').padStart(64, '0')}`, - chainId: Number(block.header.globalVariables.chainId.toBigInt()), - timestamp: Number(block.header.globalVariables.timestamp.toBigInt()), - version: Number(block.header.globalVariables.version.toBigInt()), - coinbase: `0x${block.header.globalVariables.coinbase.toBuffer().toString('hex').padStart(40, '0')}`, - feeRecipient: `0x${block.header.globalVariables.feeRecipient.toBuffer().toString('hex').padStart(64, '0')}`, - gasFees: { - feePerDaGas: block.header.globalVariables.gasFees.feePerDaGas.toNumber(), - feePerL2Gas: block.header.globalVariables.gasFees.feePerL2Gas.toNumber(), - }, + slotNumber: `0x${block.header.globalVariables.slotNumber.toBuffer().toString('hex').padStart(64, '0')}`, + timestamp: Number(block.header.globalVariables.timestamp.toBigInt()), + coinbase: `0x${block.header.globalVariables.coinbase.toBuffer().toString('hex').padStart(40, '0')}`, + feeRecipient: `0x${block.header.globalVariables.feeRecipient.toBuffer().toString('hex').padStart(64, '0')}`, + gasFees: { + feePerDaGas: block.header.globalVariables.gasFees.feePerDaGas.toNumber(), + feePerL2Gas: block.header.globalVariables.gasFees.feePerL2Gas.toNumber(), }, - totalFees: `0x${block.header.totalFees.toBuffer().toString('hex').padStart(64, '0')}`, totalManaUsed: `0x${block.header.totalManaUsed.toBuffer().toString('hex').padStart(64, '0')}`, - lastArchive: { - nextAvailableLeafIndex: block.header.lastArchive.nextAvailableLeafIndex, - root: `0x${block.header.lastArchive.root.toBuffer().toString('hex').padStart(64, '0')}`, - }, - stateReference: { - l1ToL2MessageTree: { - nextAvailableLeafIndex: block.header.state.l1ToL2MessageTree.nextAvailableLeafIndex, - root: `0x${block.header.state.l1ToL2MessageTree.root.toBuffer().toString('hex').padStart(64, '0')}`, - }, - partialStateReference: { - noteHashTree: { - nextAvailableLeafIndex: block.header.state.partial.noteHashTree.nextAvailableLeafIndex, - root: `0x${block.header.state.partial.noteHashTree.root.toBuffer().toString('hex').padStart(64, '0')}`, - }, - nullifierTree: { - nextAvailableLeafIndex: block.header.state.partial.nullifierTree.nextAvailableLeafIndex, - root: `0x${block.header.state.partial.nullifierTree.root.toBuffer().toString('hex').padStart(64, '0')}`, - }, - publicDataTree: { - nextAvailableLeafIndex: block.header.state.partial.publicDataTree.nextAvailableLeafIndex, - root: `0x${block.header.state.partial.publicDataTree.root - .toBuffer() - .toString('hex') - .padStart(64, '0')}`, - }, - }, - }, }, - header: `0x${block.header.toBuffer().toString('hex')}`, - publicInputsHash: `0x${block.getPublicInputsHash().toBuffer().toString('hex').padStart(64, '0')}`, - blobInputs: Blob.getEthBlobEvaluationInputs(blobs), + header: `0x${block.header.toPropose().toBuffer().toString('hex')}`, numTxs: block.body.txEffects.length, }, }; @@ -476,8 +444,9 @@ describe('L1Publisher integration', () => { functionName: 'propose', args: [ { - header: `0x${block.header.toBuffer().toString('hex')}`, + header: `0x${block.header.toPropose().toBuffer().toString('hex')}`, archive: `0x${block.archive.root.toBuffer().toString('hex')}`, + stateReference: `0x${block.header.state.toBuffer().toString('hex')}`, oracleInput: { feeAssetPriceModifier: 0n, }, diff --git a/yarn-project/end-to-end/src/composed/integration_proof_verification.test.ts b/yarn-project/end-to-end/src/composed/integration_proof_verification.test.ts index d04b815d05a1..ee84125ec989 100644 --- a/yarn-project/end-to-end/src/composed/integration_proof_verification.test.ts +++ b/yarn-project/end-to-end/src/composed/integration_proof_verification.test.ts @@ -1,5 +1,6 @@ import { fileURLToPath } from '@aztec/aztec.js'; import { BBCircuitVerifier } from '@aztec/bb-prover'; +import { AGGREGATION_OBJECT_LENGTH } from '@aztec/constants'; import { type ExtendedViemWalletClient, createExtendedL1Client, deployL1Contract } from '@aztec/ethereum'; import type { Logger } from '@aztec/foundation/log'; import { HonkVerifierAbi, HonkVerifierBytecode, IVerifierAbi } from '@aztec/l1-artifacts'; @@ -87,7 +88,10 @@ describe('proof_verification', () => { describe('bb', () => { it('verifies proof', async () => { - await expect(circuitVerifier.verifyProofForCircuit('RootRollupArtifact', proof)).resolves.toBeUndefined(); + // TODO(https://github.com/AztecProtocol/aztec-packages/issues/13188): Handle the pairing point object without these hacks. + const modifiedProof = Proof.fromString(proof.toString()); + modifiedProof.numPublicInputs -= AGGREGATION_OBJECT_LENGTH; + await expect(circuitVerifier.verifyProofForCircuit('RootRollupArtifact', modifiedProof)).resolves.toBeUndefined(); }); }); diff --git a/yarn-project/end-to-end/src/e2e_p2p/gossip_network.test.ts b/yarn-project/end-to-end/src/e2e_p2p/gossip_network.test.ts index b4436711e9df..5a1093af517a 100644 --- a/yarn-project/end-to-end/src/e2e_p2p/gossip_network.test.ts +++ b/yarn-project/end-to-end/src/e2e_p2p/gossip_network.test.ts @@ -1,6 +1,6 @@ import type { Archiver } from '@aztec/archiver'; import type { AztecNodeService } from '@aztec/aztec-node'; -import { sleep } from '@aztec/aztec.js'; +import { Fr, sleep } from '@aztec/aztec.js'; import type { SequencerClient } from '@aztec/sequencer-client'; import { BlockAttestation, ConsensusPayload } from '@aztec/stdlib/p2p'; @@ -125,7 +125,9 @@ describe('e2e_p2p_network', () => { const dataStore = ((nodes[0] as AztecNodeService).getBlockSource() as Archiver).dataStore; const [block] = await dataStore.getBlocks(blockNumber, blockNumber); const payload = ConsensusPayload.fromBlock(block.block); - const attestations = block.signatures.filter(s => !s.isEmpty).map(sig => new BlockAttestation(payload, sig)); + const attestations = block.signatures + .filter(s => !s.isEmpty) + .map(sig => new BlockAttestation(new Fr(blockNumber), payload, sig)); const signers = attestations.map(att => att.getSender().toString()); t.logger.info(`Attestation signers`, { signers }); diff --git a/yarn-project/end-to-end/src/e2e_p2p/gossip_network_no_cheat.test.ts b/yarn-project/end-to-end/src/e2e_p2p/gossip_network_no_cheat.test.ts index 80229b233cf6..80f0a87fe5f3 100644 --- a/yarn-project/end-to-end/src/e2e_p2p/gossip_network_no_cheat.test.ts +++ b/yarn-project/end-to-end/src/e2e_p2p/gossip_network_no_cheat.test.ts @@ -1,6 +1,6 @@ import type { Archiver } from '@aztec/archiver'; import type { AztecNodeService } from '@aztec/aztec-node'; -import { EthAddress, sleep } from '@aztec/aztec.js'; +import { EthAddress, Fr, sleep } from '@aztec/aztec.js'; import { addL1Validator } from '@aztec/cli/l1'; import { EthCheatCodesWithState } from '@aztec/ethereum/test'; import { RollupAbi } from '@aztec/l1-artifacts/RollupAbi'; @@ -204,7 +204,9 @@ describe('e2e_p2p_network', () => { const dataStore = ((nodes[0] as AztecNodeService).getBlockSource() as Archiver).dataStore; const [block] = await dataStore.getBlocks(blockNumber, blockNumber); const payload = ConsensusPayload.fromBlock(block.block); - const attestations = block.signatures.filter(s => !s.isEmpty).map(sig => new BlockAttestation(payload, sig)); + const attestations = block.signatures + .filter(s => !s.isEmpty) + .map(sig => new BlockAttestation(new Fr(block.block.number), payload, sig)); const signers = attestations.map(att => att.getSender().toString()); t.logger.info(`Attestation signers`, { signers }); diff --git a/yarn-project/end-to-end/src/e2e_p2p/reex.test.ts b/yarn-project/end-to-end/src/e2e_p2p/reex.test.ts index bf84a619b68c..91337a05b1eb 100644 --- a/yarn-project/end-to-end/src/e2e_p2p/reex.test.ts +++ b/yarn-project/end-to-end/src/e2e_p2p/reex.test.ts @@ -130,6 +130,7 @@ describe('e2e_p2p_reex', () => { // Abusing javascript to access the nodes signing key const signer = (node as any).sequencer.sequencer.validatorClient.validationService.keyStore; const newProposal = new BlockProposal( + proposal.blockNumber, proposal.payload, await signer.signMessage(getHashedSignaturePayload(proposal.payload, SignatureDomainSeparator.blockProposal)), ); diff --git a/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json b/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json index 0aa2277b4265..c2441e1fb1bf 100644 --- a/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json +++ b/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json @@ -1 +1 @@ -{"proof":"0x0000b2e400000597000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000003dc00000000000000000000000000000000000000000000000000000000000000010237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae00000000000000000000000000000000000000000000000000000000000000010d479a9973afca679d8246d894b92f79675c4ebe01db6d6f1b20e98368a4129500000000000000000000000000000000000000000000000000000000000000032da55666630fdf8594065c377958c827dc1c130dac91f17c6699b53dce60ef7506d1612daf507b160ff518e5f0df28014966c7a498e474e1e88ab9813389fe0e000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000183a8619af9f5968db6aef510e527aae5927e5df6092d9498f183f4bc2afc5b115c4ba754a1c246494577702f41a1f2f87b62dd22356c3e52e041870e8b1ebfc00000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000103d54df615ab5d910000000000000000000000000000000000000000000000010c09879420f63ed50000000000000000000000000000000000000000000000067b948ec6de78969a00000000000000000000000000000000000000000000000000002fb9983cc784000000000000000000000000000000000000000000000004d25138948fa1019900000000000000000000000000000000000000000000000cc0c2e95f2338bd20000000000000000000000000000000000000000000000001bd2764d36be817ac0000000000000000000000000000000000000000000000000002896033c7c1ea00000000000000000000000000000000000000000000000e1327bcb74ac3c5380000000000000000000000000000000000000000000000091fbbaa38ae5f649f00000000000000000000000000000000000000000000000df26374cda4a95f5f00000000000000000000000000000000000000000000000000017b91fe4fa5cd00000000000000000000000000000000000000000000000298d35be6962d2c0300000000000000000000000000000000000000000000000f04c15652d7c8d78700000000000000000000000000000000000000000000000d7139f74133c70f060000000000000000000000000000000000000000000000000001f80f2550fd16000000000000000000000000000000f3a0d88e7ec5bdbd558467d44c604fa1c70000000000000000000000000000000000027234bba8ff5b1fbc7a7259ecae1e0000000000000000000000000000006f121e44201caef92676331ccbe126fd3a00000000000000000000000000000000001ff94ff7f6a76697a3fe6c88f8df23000000000000000000000000000000cc0a86849036d3bfdf173a1977895e6868000000000000000000000000000000000024b4df4038efbbfa3561acb4b0f7cf0000000000000000000000000000008653353a8bf37fcfa8ef191f95ebe1be1200000000000000000000000000000000000369029059e2ec172985d5a4344cf3000000000000000000000000000000e76f96061889807a8885b9d3fcce7917a100000000000000000000000000000000001b50ec5afeffc2323eaa9e58e23fe80000000000000000000000000000005aaee50c39a4e5ac4e59384c9b0e061ba50000000000000000000000000000000000133f81c5f7fb90777f564135f1beee000000000000000000000000000000d3af96f7ffa8abbae7efea472c417513f800000000000000000000000000000000001a64a2596a31f148377ad9b94a644100000000000000000000000000000081ab6d2572f482b5efc4f9754903dfb14f0000000000000000000000000000000000153e2f313789115c69c2aeadcfa3c300000000000000000000000000000097657e195a4e3494202383635b31df178e00000000000000000000000000000000001b753e0748a93a4d9dee8c5dc8152a000000000000000000000000000000f379dca46ae12dc4496557888113a926cc000000000000000000000000000000000019e91e77e1d76d2936dd5def9ca9f50000000000000000000000000000009087a51f512664a95a453c948e7b8f875900000000000000000000000000000000002e84370013eccb907961c07fe8071e000000000000000000000000000000df1bc58c1ad4630ab2a840e3a1780fa45200000000000000000000000000000000001e81a7b42a827bc15c994701e38e020000000000000000000000000000001bf9cbfc47f90da995d226e46c81ad669700000000000000000000000000000000000bc5e01203ec6d731651f3eb0c589c000000000000000000000000000000b2ff23c9d981a6c25c68ac2e5f0cc6bd900000000000000000000000000000000000016c16d05be5e24bcb536bc3aa4bc1000000000000000000000000000000e6c44f35b0f63707ec12ec52527ae824c200000000000000000000000000000000001ed76bdf2366bb5a33019a08015848000000000000000000000000000000a4f9c8448ad94ef0937bf334d9024c3c700000000000000000000000000000000000051b0c9f6302338a8d63e201c529600299c879db9ec2ba9cb1928d3eb03d92357367559812d5c4f7e396716bdf59f22dca85f90592dd6f1b9eb32942d11acaf2c080f2e1a69acc4bfe5f228420a60f2745f44c1814c1f1454b275b6f1493d0e109dd4bdd7dd386a7f9b59838f940a61d74997beee67b90f66e6a31381f906bff582b7feb4d6cdd65ccdbbc8d40f3860aeda2fd86c39d1f48e6e889f8ffbb7cd795c41cc464cccba9c0d959eab24bf42a1c0807c3a8b910e5a48b926228224ed66ff2bbe970d6489517f71f8a0f7dd623b45bbae596c958958b35ae60548a5fba085836d69701129f6935f4d6781ce61ab55ac57392e2d98f2d9073a9be81b0c7cf2ec19020aab1706944f6b4d80a2e1d65e474b556cfbac652280976d920c22901559d9a790711cdda7cc31b2c01c3252e809b26d3b53728ce6d05ce2c198bb676362ff266244cfc1e13d4f8abb227051e4fab89494f2826a0bbf4b653194f3f29bd73f8306f89aa319476ff0178fd08306955bca7ccecca7c9b0c2341c22bb80c69910797f54b8392f000587f55f818ac5405744a3731264379df2bc6e085de863c5afdc225373badf91b676e7faf19ca8bf73629f445091b09bbd2e1b3a37ce35876b72c52dc7c54e1708804acca1f9ccf3cf5a9f65742474c3c02d87f177335fd0b814ce4001c4a9dae9d652c08215de4bbfb2c5e26f1f237a72aa4388b3abe4bfe1c4c1a0a97b218cb8d176bb220d40a1981b0d7683d2d2ad63c1a25062db5d0ec78cb26b858788a202496e05e0cf7e41ebc37e520be3ae7afd48eeaf75c9e27f1374b4fee8d8f1718521354ab1c57e481b8cd5105c3c96ddb2021e4f356726ad9da1804271a262f14eeb5e28e0db9353c3ddb4b8e7990c7a99fff8b67c97b9c1b6fe9ce5a42ed04f866aba27c01a7bc21e8846ec1f70caa8ddff6f3a794c0a08cd449b3796fd30ec3a8861db015e6b9c4e79ed2da189f9df2a66e716ce6a8127311e43836eea2802efea6eefa1ab083b9eeef8720a6c5f3477c710261418513666e8d8508c9c6608b6b1600b804ca146d540353a5b9541c75761321ac62e3208d6e18e76d7fe512feb0ca34fb2d1446e8fdf919173cfc1fc7ca76e4592bb9db5e25a899ab45c71625a68152d10887febad3615ebb4c17a14c595ee2e180fc01474aa2f3b36c959951776c64672050a13b5eaefe8373a57751523f18a15192bdafab61b98f318bc19aa9fcbfd3097e843f2bf44fb5f1c51348590f022b26f109b22962eba48e85cac3f6aa091f0b12f9d193924765059e2ab3edda9d56aefabd245b73b4fa1cabd9fdfcc921421ee04202d1bc52273bc2d890acad650101b5cbd56d56cce5d19f57494d2a274501fe3e9e123de9560b4c6414847f6ee50acb969e5424875bae8c25fee31369d7074e6cb608a69f65390fbc9b51256777f1c53cea8008f1455204108f90c21bc20f6c5567d36ed014fe3891fabed1ef3d0b2c1b6b0f0d5b2df74889348268189522ddc933cd5d88ae258df1705f887f1b616899721ebbe1f048c75d133cdfc17411784c82ac62fa8d31064f317e0780fbfb5dd9850129acb60dfee095d7eb7e1f0f7a5b95c242593f264deaf26aaa4e6177adb5187ac869e95a60a5f03f8df00f00f04cfa660723d649204409ca6ef4e8809caafa4305d0c43110237edc4f30e90dd3cd0805a1139d2c8fb7c4fefc46dcff43e5f3aa9595b76fae6e155f1e816f1038c2493e22ce030f2c0a2fc3942429d2a34bccaf63a7197b160546dd579bf21bfd3cc2896e372a38b2d6c6e3886a53b6c2ad1de53a7afe90411f370f0d27c717551ad492d348276ebf621d59f1e86e8b100ef74e536fa6711ba2887d1dddae047dc117979906809a82e8992e0d309753174975693d2ba0ea6bbbd245fef33d2b61cf146223cf02310e9cfe9a383b709f6885d291aa67168d5b69e3aaac6ff205e9a395fcf21e31cf4e4deb878a40449e8b6d1a8d7b98517ef96e33b17ad2c402292880c98a44963fcba3d38e401a087182f3632ab971d4b38d032876857e4808d4581bcd2061e73b4fc9a0d8222612981d94c05cc50e0ce3fab3d586cfa4492c9c1a259046d197e63702bf280d953d607acb17a2f5eac438d008c57f312eff2c9b063ba79751a18d4ecb3d31d592e426219f28f8757662eb0afc8650c3fed41c2c7a64fdc08163b7e6fd63a21d6e86260a876cfb638356a37e07ec158264b40729189e109e2278a94340f1cf3c658e72fb636f14d9ed2dc5360fd9ac0af73d13b76b101f6e0e6af4bce452e5b1b432c6cf24894957a1225bc9046e5dcfef820a422e67741056e0f73cf54b74f8ebba229fc589dfdc72bbea5ff9655b7a693a15e4c10a9c062f550bf37715bbaaf2bcdd39644cc9b1ae9d504c558766ee270a076ece08cf9af15097445fd703f50d4db7e49920c4dd8db907aeb22b8e094a061eb9e6a7dc3fe24d953684d4ef5efd23877e2d7573bff2e17a4561c5fc865aa215d9905c46abaf5dd7ad8a5c7ff3346e64adaf75b2ee6a0d3877df9facf080761f98298b968ac81aed1fb0281f4325f98cc9f2f80fee39068b4191f82234ceab0c52ef9eeaf0ec9f130cdea2415df5a4db8e8ca6729f2962e82fb2762a391029153cf4d928364c69699557ac4d10868509f6e91d96c3193d595be31b3db812422972de89582881bb0b775cec2adb14a9d87be40aa13d445ae2768b34b110e1ea05dc9661028af33976bda4c5812db12d88b16a0f5a060302078af6c721e2c01e2efd4df3b9e681bb2d5457e1bc69151e17d783fd194ea1212367a4ae6dddaa1900b5e6a52f653e9fa60ffac084839514d0bb409e9482ac3f23fff55e1fde9bda035d4ed446a6abba751a270a28e776a81cf6e1bcbde92cf7e55a99bf01defa6d264be2422675914dc70228fabd19b3e71b083b773899051ddf7eaeaba00b1d3d0d04d63751b4784591bb5dbfc33554ef156f0abb6b03048b416a4f63166ac5a118bcef044b7cfd12270a467029f8a8457e3e0cb86523f2dba11fadc5f4b2d0b5004e2c8bd8ed741e4c46e01269287c1b44ac20f1d55854fe7e4f88c35ae3ac3410637a17200d51f70132bf22199f3c89344edadef31e0a45c4385cdb8fafd11000c040945970e3a00fd119c68adbc6e9b5317b9bd62a3aaaeacaaa1b9cbf51611f509c77d094c62878ba8c7e7f872ba5d51206aef7cc90eca1f4e33038a01f840af3f0d4707fc2221433646d1918f597401704bd443cc1bcb6c05a2b92c9623f0bcd52a6d63fe77ded2ff85d4a992322cdba11f8556b3dc970ffca988ed82f2a201ab4b3bfb9391c57b4ec2342990853fcdc7264a307723af3e0938d793a5c21133b0084fdf9966cddf81e18365cbf5eb0a28f4e6887f27c432535f370fa862c213046b4fcdc11a9f7568d643d398d019bfd0a7fd6584566e67a5638c28f379728e89dc45eaac68bfe44a344f43438bb6981ecbf4474d5eb6629b6ca7745d74b2898685067780347ea9ba1ba2449c07a985bcb20398eb3e99805e6fd256607270952922a2732a3ceb602c53fc91db24ec25fcdfc1f5ec05b8b2102ec9b36b8be2cf4108bb4e1912ba789c4d896359d0c3c55053014926576f8c7bf72df48c4351ad15875a71fc2f418352a69a81ed4467ea65aa72561e76939f7a70ac82fe3a810615a74716353179317244796d2e4bd82ff042dc68167eb74ae59fdac153fa82e7edcba4785e6e0594e24c48031413c3fc7fd74e8ebb501ee06e71ac2b4e0c61d78ba82758ed5a47e223994496af8a1a9761e2905714cd9020deb2d47a0a12a1aa42667a8aeeba9f58601c422802400cee240046f1c3300853b83907f600d452170c56e2eb04c1e5ca9538751e4cc2095c56357b6efde0807128f339a8ddb002b547a831f72918bd7e0105c895d07ad67a61012a22837e5790f37ecb84d0824130af0e2b030e81c4cca3160a11a90f1eaa273a7da480b1ae853557cdbab08b71bcd2a8d8821eaec376264679714c81687024717628a00d4de5e96d065af301418eeafac9f1197dafca3548f94a8d3fecfa2042607969c980ba1d15150efb5301a579389f23c3ef5516f3bdfd0ffa79adc72c8fdb5dabd5584435a87633c995e12817217bbb9883a35162a130a0bf9baed871cf94b950c6096a5df05f4b3d0cd0202bb79c069c14d7f4cf226801f3499f7cb2cce99cb60868cb627c4fee22ec410718e6c273f1b2536cd3dd36ca270f7ce1884f1f1c8f7987877aaaa4f82023c15b01f300b3fc357110db12413718abb27cae5e923b00c4c1ed7d2650d29c3ff0a80c91c580160701de5490b8e71378e5bc8f743d5d0db13dbeb1a18dc78d4a215747b0a69e603cc0ef06c6bc20f79779774fea435eb83af49ded3b413e4cba51ace881e3c00e953182c436af0b4582e7d1550f5366cf6f7f911d3e21901114b1aea1887cf20c1d343dec00fbed08f641bec0db9ce64e7b3e6ebf482baaf7edb1d96791ba51f9a160c268fed8dd3034796954566639dcf311cacac3d27aa4e372fb0fd900b212b8569bb99ae815a17a78c0ca0c5991e9ea17243c673460ec35a1f09fdd396a3790f792492acb6a96ec5219ca128a3fd45a083e122861bb2a07f19ec73050d3f02e65df6472cd4bc93ab2be89fb689c70bee939237027d843bb51db7b1231f9e873dc038b86d0a346172d9ea9aeecd81e0f548f13e63b03ec6e22ef97d00f6bffec7c1c1724ca18f6358157e7c24b3c630f0b17ca104e7e789a325ecd79251e1760cca1798a50e3f3750b9be59906369396bed1b61a7cc56cd161691c34fb4006a0b1959861a41db3c67cffd4daa61d0c6240e43880a5f0ecf2714fe3e854f7f1c4f229206284a2a503b9672efd27e0c56145b920cf83c7671e62f3087233dd48644a18c3c07ebb8463fd8ff1c59dbcef9a3c5e54935bfdd9f9e105a737ba5250f4fc1b4a4c661bc48f371f15fbb27955dcaa7c80bc9d2eabb490318dd831c8023d15612c73bcdbe0c7f2db70b15bf2b881877c403d1b191722326d96f93b7aefabca028bfe27270ce00a2c9b9636f2ef5287932d3e2e96330b3030e0fe71624bf79ec2953c8e9df8c0e8a7451b3ca197393399ccc98d8e3367a2b7cfaa2cb7e2e60d1f5c3df941ff37466dc3bef116158565d17ebb56df48d6a015088ef17d0500e39c49262cf7e27cd276beedf3d71a1c69159271a196e590b162d5cf704ba3c96b42b6afaed9f51c6d08f0747799db81f080067b744f55320014cca7f94ba25589f829e9c99fa9f867f12095c65ded85a119eaaf1bf41deec2a5e6d5afb2c7ba77452e5137c6167e91c0204cd6a927118874bf7115d0d118c245d552ed8088bc7ec231142580eb354c893da6f3fda136e9657f439bde9bcd612ff07816a9cafc8924de0c82c67ad7bed598a9a7412f322468ef92907407654086440dbe1c58404ce4f5baea0be4b45bd1449269466ba85b8093e153e6e40950c1243f39744f4b84c31be6f6633d87e44d55ce8896ec264589b569dc754ea2b2ba4f7abf2ffa5d67a7d6b667c88db5ffa8658cecbc77ba8f36d2c6b900cfe81076784263be3237e2a4859585876955208744a155b99d318bd52cd08a058ea9a1de48ccef2475868cee8f79fa4a733267fe2ff2993d875ca3bd1c1ad8b96cacc28398347aa78bc154636b9979622c9631e072f8ef34e7f50325702ce2098d1951138ac09a826fcb73c80d6be13ef6c1be749cec155f535a2c35e497ab3046fe514e91cf90fe22b6cb50b374bb85a7b792e8698884aefd1bf62b4188e543b43a622ab3050c3db9282b8e412a5d51aa91e008e624c44cdae0e603ba04ac574549f075f78bd156c9cf93d7cf0e519ca3b3655b507ad4525de78c10c3abfd403fab62a955e29e7c985a641a00dea541ac49435f418276abd510f24ebcdc81fc3513c1fdb77173a32f66561525ca3367e5a4e140ffe19f6250204736a5d8e91e69806106f27fe6fb0ec3d214112dc66c0b2352b7051a92d8444668c087eb9a04299c011715c683f17b8a04064dafd5cd15ce77e3af576be8437f76df94053128a967f2b2c8be3aeef482b78af22298b7c7bfe73e475ea6e4e37c90e2080058a0737ee0b3258e7820630b9d421ec8902a79749eaac0a0a8bd7e818e5717e549ef62f8e033a2ae78e13309a176f4f00dea74e3c5f5311f1ada44bed1e716bafc13a904f09a50684604db24fa643a895ba51aef5d5d482ebaf8baf0248d07ea058a881f6011ed3270d7235b8b88a605cfb1c766ba18bc68186862bed5711c4c4cfca74cf11d356cb15e22217c4ad3f1ddaff93257f2490a0ee4d730e37a38dada7dd969e296bfaa0b4938fef11784b578c4e791102ddde57bf777ae47cb592702b8945150c98be0bc52571a272ab82ed03338f3af48f9514c17fec916dac1eaf3c06949420f587f3c385d4880fca802d69b59970f8c83543eb9cd1c34844faaa1d306ef606996526f2bc007b028093cd4c3439f0eb49951a3c8503f519fab76ab39e493e079564d61db64d48db49b554d12568f27dc165c22431fa5436cebe6123cf5f281e7ebfaf723db9210f87a72023bda9038be386ae6d3bb6c77d9c17ca8fdc8bc52fb3cf0aa51093606246ef27d8a0145ab2973cbd6d618b90cea988c24692945328bb5b8a78bb5baeb18291d8ebd4ceb8a33fcd1ff15ca17ef8b4d3b4dc2516850d76a840392f7fe4babb905b7117dd4bb97c6ab67d0be93a3135dc4b52ace1540da742ab6d03796949d082678bb5719e1035c6dc68284690c6816599650322f91e6f276c1e9cd8f6222a7bdb9d715c9b006fc664dc55b74bb9b06fb3feb2c53906dd58850c209ff3a50972bc04dac4a766e66eb5356e35a16338ef7c2de97cb618df0f1bbd10f9a777d6bc924a229be77bb22ae03618b4e9486d4b999272611e05168e828b0130118c7cec7b5edb9b2c3289854911380a09e7a147a6c17c05570a49f32ed8b35b4fc578c6d3105d809d199134617a865ed5282cb03e3f74b286097a9312daeeeb30a338de3f491d351877c5f29c8c9fbd0ba4398f77d278ab7d00b32747e45034390c34677ce1f9a62d059748c583c8cf46e843e6c293de6d340c5522b6067f6b13f03cd8af586c429e5d9b43e0a6bd2e75f9a43468d8075ac528e6054f318bf63e2dabb7152b45390615a24b1cf43be957084dd7ff0b5f78841bb9ed3b7524ec5394871b656a89b6326b4380f2a623759d00f2fdf0666e335405b557dd780e33c163b7dd6a2d2213b898bbdf06694612d007ab978598d2de501ceee4c7f0e22f6639b032feefefdea63da01198dedf226db7709e2bf70948fe0a6a6dbcde55519d07d7b8fa940de560d2447f3622009630789c7c2c0a65369f1ede770636f3bfd2c7e91a257c3d864f662f27f574ca69afa9ea466406697f3400c1b9eca76176d201c04fc3525e4ff9eb66e19ffa574e05ee1d53d025b80b65016ffdf253493075d3a3c5ac0adc75e609bab166bc4cfa32f4f48defa657d41e2972bf4da3f4ac8d355ac1f6c74c870425b1c0a72897c0b2dce92ef8728dcf621212836cd12e02c87e2b482204a282cc2326bd320a235fcf2cc6305c04cff58e285dc0dc77888f20bab7afb1ac435bcdea0dd02b47222c422d85ed8f1ae25d922c22bac11a84143610f3b961d980edd9a039b58092d17a5c7f1a479033c8317d022ea9a80f5f3a9de355fde6e97b747a5aea3012ec53f230cc9ac182cdca924709d704b4578b0c0d179279df667e84eb9be4b79498a5abcd0a0416d030cea04827d5c669485512da16d3419c1051b2391d02c944a09dd7760c7e6bf78bcda2a5064a469399199e1ad88a8ea378dc15c99e0bfa9a5ee83251fcbcf8f604f46f7a077039074ef3e6e9e57867fe20a3dffa4d123d5f71539c124b24f396bc6afd32066641db5aaff0cf6119ea6c4764badca9e5125e484be9cc4eb4e4a61840e772149dfec9eef43b3cd53194d1b21e018f97a553b25583fa8ca3c15912aa0079a9108fa124c923fee2fdef0cb6afd51d1a6975c3aa82bdf5b1ebb2bdc3e74b22002394a8bfaaf0d471a836691a7b3d31a80e2e672ee89f20a97be25fb3f09b9bf815f2c579b0486d6a6716374aceef869dba050f24b5a99027c8153c53ac72c5171a14cb383e5dea8edebe8d91f7887821cb285804592dc8a7d000047cf276496f2ca62b1bdc1237c667bdd419f7d9aac2d45ee6835bbb78e1f70d2e07fe18f7801e98022a4a1e6066d7faffd2e7e8a3b2a2b49e86d784b7fdaf642bcbea89cea711f10096e17e6d54b77c19a678bf28c0bc17612a87924b38c1fae0bb8cb15e872273285c7d9249ee0305e299d71e21bc5e94c0d7c184ca89995b81f2263442a52da4dc3b5a3bb45ab7004d0850a3dc66cbe64150f05ffdc3a1a67e94f357f6f6170d37b97cc457708123feaf3c28b211d2a6ea2f3b95e50f9ac89f74a5afe7c9071400acb078f6e3c924a3e63b57394ea803f52a14e837e329d31858aed0e6960c7326bc6108c5d5fc9751d7bd43ca5a949709efbb6a17f78b925f9d0ea4439c25040a1f40c4c9664ea6a592a0f8db63ceca0f97b1cf982a98853991c3bec137086c5edcb9b267101bcb290af3957ff3896214734a6fcf98807fafd4f9a5534307d7f7485c7bc369e76886b3766222ed0464f9abb28dc4418d88aa151ebc8769000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002ddbc11522fdb37cd54d66ff0d031224c534fa1d99035f3a76e1c851eb98abf11683a6e8603dc51d00fa6ab5460727b4164079075cefcb9b73be96c560d96d8d0bfab78d21f72b9b9ba69ec56a4e3984d0a4f0adbdc1b631d8cec4e45fac6f7a2b68f4f799bd6dd8e98a75e7bb5359120cd031659754cd7a43e14c69b7b7a4ca02f607c7e95907fb1a303c11ff8d559462243b5a32e5c69d74675687d927c4010543237165fb042e777b14b7c8b7b8d0dc9dd68684401bf0f192c6bb076a9a912fce5c2a4cf11181087641da559972c4b35b31a1993718bfca40c9a8693ea372001f08c21298463a9e00d48291b81d296a37902e3476b531a9e41b611d627b4523be885842b6a96910d0fdd0f3bf3939e1a9a5217e332455392112139b1f55420d768328c6bbe2d917c39a94e76423a02df8f0a8593b35d9b29679adc519b51c0a3fed47b7d6bb0072bde12e48a412f8a98c3ca43a385095337c055b6800680d01018f80508e71f91230a165e3d6c96af799b4b1a8b384ce34eb2413346df1d0258d88c0e73cfc4f0933b2eaa8d5ae54ef83c5e99539e4dd5976e5c935bad92a163ba68768fe12f7eca3f21916dd679633457cf392bd07d1f9785599b9285f2409296c76caa4014273e98d36e8c5fe622cf294031d04600d67d54f3e33953ffb119cdcc5a1543f792caead9cbb4689973e43ee745db52a4c6532e108ee3c32dd243a2728e468044612ac3b88b6d2abee33bccc89664928c2b626e108f1df458a090e891bcd6ccca7af5dac51c8884d91ec4c7a28b96c66924bfad57fe53f91bc27aad909837eae75448b9b006decc64b880beb9a5acfbd7db42c95a4f81c188a0cde069d2ca358498603edf1a393a5370003978a74568aa7245e4ac08e66af9507e0c7752b5c4349c734afff0ab4e15dac077453a448249b5d4c4d707f74e54410fa5fbd682c4c067a845bfdb234805f2960e72c4141371dd78b2ac9e78206dc21f7b8beee045d462dcce3e861bd832822290ca1d44fd3210ac2d823b18300970acd8f5af1fc6288526609e3e7158fc3e862910f33b49c30d5bd7c0061ab0a2606a4d894bd6bba7db8a91460442e656f130e0920c6b8dfee2af159b08debb0ce2bff3feb549bf676c2c23b1d303c7c787fec3af98868e7107bc339f2a0421f0529d1a64e7f51301082ed283722bec32fc4058a7b6d89836618c5a861a3de1e95250df0ac0d913887e33eb5b4d6c028cec45804f2e735e7927ef56e85557f03a60b863ea6d1123a4167f0fe78403d246cc3ae226d209eabded6c94dc8ae27b14e0467892da92ff4333e3dab741135cd7a3d322962594b1a5babb279a14d7c994307a53022df0fd582387b05f51be1417c9eebbd258c1996d5ae7cec960914c6c70fda04a512d10d1cef63c589416e38c3959545e317bfd131e6af034f4e722899244a4395fdc1142f327eeafb131869f590fb6ae3c6d5163cec626944ea346936263479b13287b25f41c366d557921da4f311979033f8b949f01028e7984b000302ef578d87bd0f1279bb67c0338e8401d0c3dcb03850183c82eb91293ee4313d018b3c7b802c5fec69ce923fc17c7de8e188edbcb3656229a20b958a5b417f5513244866b7e29af836249e5e621116c00c48f688e3b70866b47d338f0ae1da48031c0f1c3a33155686f7691aab538e8cd7d80a45f492f792e5e21d751a06bf880c5612ac1da3c2cf3783d8b81c3ae4045ef6dcfd4ef34a74659f3029a3e1d212261a1b47e19f579c1ce48c3707d5ec61436bb435c6d1ccf129d88f3153f4aa4a00000000000000000000000000000063d9d8d71404157eb9145a961a7f7859160000000000000000000000000000000000143ce09bdfc295fa61945d0e28c5f1000000000000000000000000000000264b9ab8900bc11d63ead0c03f7e903d400000000000000000000000000000000000297e7593e99062c7b0df616d482e930000000000000000000000000000002e93628d47b15a68952fcb4057be835db20000000000000000000000000000000000006b39f99b64b03c67b4db8fce3da6000000000000000000000000000000ac62d6f017b91f88f52e75b90c74862a9400000000000000000000000000000000001643b7bc26a819053b1333ed82cb7800000000000000000000000000000091bd70369e88869e490bdafb5cb26bdc9000000000000000000000000000000000000dd9123ca345150cff84b58034fd2400000000000000000000000000000037dd34ffc38a8368227472182605c9d8040000000000000000000000000000000000027a9a93a8911854d836f4b2e02dc10000000000000000000000000000000e1cda90bc884b5895a4399c2b4f97608b00000000000000000000000000000000001c0edb8bb62c8d5fc150c1da4a5cf60000000000000000000000000000001f0cc784165acfbf64e74c8d60d52cdb850000000000000000000000000000000000054116be84b9259d5af02a7a708fe30000000000000000000000000000005ef69f1d29233660bcdbe7632b8952b3d8000000000000000000000000000000000030058df00b1633a6dbea05c433384500000000000000000000000000000073a789e69e9035b40f5f5bfc9649e46ce800000000000000000000000000000000001d7d2d9774ee5799bf12fa0df396c9000000000000000000000000000000b54830c5de8e14fd8e325a99dc4c46b32b0000000000000000000000000000000000192d72e1c3df08f68c61748d838dcc00000000000000000000000000000014c077826c347323b56ec87d3765a40501000000000000000000000000000000000000918e90c42e1b4241c6deffd4a375000000000000000000000000000000f0b2edfa65e0315734c9eb0b2fc624de790000000000000000000000000000000000296ae7f79f9bc2b560a363c223e8a0000000000000000000000000000000eb4cb0bcdc7a5a3385ed80a3af61c4ae8b00000000000000000000000000000000002b6ee3130739a352a20e891e512bd3000000000000000000000000000000350cedd0e109c80a7077e852e8e0e1c71b0000000000000000000000000000000000212fca72dcd4b411fee680b9a7f56300000000000000000000000000000094e3b7945e503766aa63a39bc82124def80000000000000000000000000000000000155b4e636cbc620ba1aefbf88764c7000000000000000000000000000000aae845f1261b00814adb5d08243e7b9d75000000000000000000000000000000000012f0f42d54a5195c0da148bce2ff4b0000000000000000000000000000006100b564556553256275a80b73f791559f000000000000000000000000000000000018a90133159d272596287bc01348ef000000000000000000000000000000fb680cac0c832d4d327daf11220e2c507e00000000000000000000000000000000001ef2676b31e934d25616343c8aa9740000000000000000000000000000008a23167c62e6e2015b83e77cc711b1bbf90000000000000000000000000000000000192f767a29cbcb17e080f0d71a417e0000000000000000000000000000003f6f84c1a27f75bfbbe336c99f6e2ec7e100000000000000000000000000000000000b68a0f1287299b94a59150d2362bd000000000000000000000000000000dc80e22cc0525b96d070992d75101dfa9500000000000000000000000000000000000d47dc1ad7ba36c3ae6f4c4c6cf7b0000000000000000000000000000000225a7fb811e266f22189b5247f4e521119000000000000000000000000000000000025203813115395e05262fa62dd3dee0000000000000000000000000000006610313efe88407bad338e07a33b0b4ecf000000000000000000000000000000000007d64baa3c9e9d19af7d978fb9218d00000000000000000000000000000094f54aadd2c3f51f446b8a2e28d93ad20300000000000000000000000000000000002153b035beb4ef431f68e93dfbc81a0000000000000000000000000000009f6da8fb227b9b0287e50d1f46bfb9d7f20000000000000000000000000000000000271fb22a92fe7a00136d2734dc5e6b000000000000000000000000000000638e64589bd2b7fe9baf56b2662d2986b600000000000000000000000000000000001bdfd01817faf3fa096e04782685ea000000000000000000000000000000a88b2944a3a0a1e3e22b97c51f202afecb00000000000000000000000000000000001bed22f73c9b520966edcfa9c60d7b0000000000000000000000000000008fa49b75512dc93e0073b2144105d68201000000000000000000000000000000000004bbd2fd6dbd1bf0679c6d5cd2df450000000000000000000000000000008eaa9861f96071db670cafe2358625da310000000000000000000000000000000000125605f8f3bf8e21c117bb5352f1940000000000000000000000000000008bc5264cc4d3838d7f5cc1d9574d4ce70700000000000000000000000000000000002e3a86246ff868491c0970d330cdae0000000000000000000000000000005f8b8885efc5e108f1aa47ec365bd1d47f000000000000000000000000000000000010d5dc1de8641f633d54c8cfc5a6620000000000000000000000000000009adfd18ab035ac2279aace684cb18f9e3400000000000000000000000000000000001c260c7bf92861c3bba0907e3e08ce0000000000000000000000000000007b4fd3e0780107c48f90d2b5e4f25479bf00000000000000000000000000000000002f4da73ff082a27f7b11e49f55b6b40000000000000000000000000000000719161d5d9945e36b02dd8b82921764590000000000000000000000000000000000207a360fb08fb7a07079c25581c7890000000000000000000000000000006e0a3066ef6eb7c3937a8dc08afaf7afdb000000000000000000000000000000000029f16a68711855d03610851717b9690000000000000000000000000000009b3ea8848e6946845a36584f01fa51c12a00000000000000000000000000000000001752bf5bd5738574672d65f9e63e4b000000000000000000000000000000ab13b9df79c94a0ba64782867f564365b80000000000000000000000000000000000151658ee2dbae3cd6896c2a1c371e10000000000000000000000000000003df28e172f8a09cbd2c32b0b90ab9773bd000000000000000000000000000000000025407a46eb0ce63b0997710d341b56000000000000000000000000000000030499d339f2b44828c2119a7faf3af29a00000000000000000000000000000000002c89ca055d19cb31d25d682322a582000000000000000000000000000000d006f8c62844d76cd0ff4031a630e9756900000000000000000000000000000000001c93ee64fe493f10a1bca911c3a8f00000000000000000000000000000004e429bb69f358a436f088cdc4c5fb590a00000000000000000000000000000000000175effb7e02a137d4a6c93624854a7000000000000000000000000000000eb66098683f97503a5633f638e8f58cbff00000000000000000000000000000000000b97da3690b016024cec5d4d6757a2000000000000000000000000000000aafa700deb31dfcca7586bb94c81f5410c0000000000000000000000000000000000137b0d6a57667d7e00fced77f5fb99000000000000000000000000000000b6568c6d6ab2f999a87eafd44ab9c1571b000000000000000000000000000000000004baef934661960e6412fd1fe7e8dd0000000000000000000000000000003991d0f8f06f12b42a3c179bdd51a81d75000000000000000000000000000000000030306b57f8fb480a16f5bc379a7a6800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001d9c325d0ee6e2871c065558150baf04ead6494bada4611783f9c8e3ed835cb31734beaed64130c9a7792dcf8ac95baab35c43ed3fca3a625ac9ac64049cf3571c296b7d7856db80c8eaeb95990b033406fdd76d860af32e194e0d818fcffc95112b154f783d955fa15376b8a3396b2090dd6d765a83439b421f7206596f592c282415fffab3c36a04016a5e8f1b4393f722fba5212cbefe0706b5fad0e2d8442da92db3ba11940fc1357d77ff8862b2c14d41e57e1dda083076af1bd4b8cf1f06302abce23c2ea7f1a6e1f54e2ceddf944626f52e9dc512f8e4ef15c26df46d1724cbcc9da2848b9f190fa3115510c27492ef53536377d544cd345e29fe476d219a8a92dab1e0d9287c6a531bb35001512ffea3d322f5235496dd0ed512ba752b133b0a39866586a0e6480c71786edbcdbd2f8a603eae732aa1734ce71935f9019a3f7466556ecc363edb3e8764050cbf16e5d9434dc94c346eaea473cb605409720f05c0939a0299afcb87747120fe1b1583bbafc86b6dc7433cf98d499f5118b2b2571cfee1a2cc661e5b460cbc5064c33605a1802af9735efd195b6cd1931b18a257e9028b58b349ba4935ee4ad903a2d665d872d9e56ccdaa2d3330a1d40a99c40dd893e083e38506ab13a952750ae7fe37975673850ffc9f2c912374b613e83a461ffecc9bcb2ce4d2aa8d246913be050f9ab114b15967a305a3f4486123c2d060781f7bbde5139f76e161ea4306bd1d495451d724324e15ac8e29eb772e042ce8cfbd59d137bd0f7e42c46595f8c0ec7763b88d215dee681456d1e17722df43a1c2a29aba785493351a14e8ea167e50f6e4fbed3a70c8386407a5222e198ba1e4658cde8e823be818aa2c01d1cb12a2e1aa8cab906d71ca642dc93ac72c4caf79b03d04276bf63c5fd87a35ee834f1930f348c55bc764f224d960031a1b200cdda403cb070a0bc2da551594477a5a54a0f337e39dc89e58fac5d302621de40a99fe4c01ecf1d04b1eac102e340b3e5243db938ca247bc087d9bc234452dc1842c5c1c7857c5e920dd1ef5a5f79309bf440017c098e8587b7052a43b220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f361e5a37efd4aa4075bf015903c3487d00000000000000000000000000000000000032b2054a1ff4c126ad4ec5e29b9d3000000000000000000000000000000876adbd07f9f901d08177ac6324681d1450000000000000000000000000000000000255574deb2c3d5304e587fcce71573000000000000000000000000000000d7b73474106c95250ec9c74d11adf96bd50000000000000000000000000000000000181995a8e81d6a488a3ae7a0eb9c0a00000000000000000000000000000017402103869df1f8aef9325bd12154318f00000000000000000000000000000000000304f0967ee8e5284d63977b14d66e000003dc","publicInputs":"0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae000000010d479a9973afca679d8246d894b92f79675c4ebe01db6d6f1b20e98368a41295000000032da55666630fdf8594065c377958c827dc1c130dac91f17c6699b53dce60ef7506d1612daf507b160ff518e5f0df28014966c7a498e474e1e88ab9813389fe0e000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000183a8619af9f5968db6aef510e527aae5927e5df6092d9498f183f4bc2afc5b115c4ba754a1c246494577702f41a1f2f87b62dd22356c3e52e041870e8b1ebfc00000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"} \ No newline at end of file +{"proof":"0x0000b88006f32a63ab1a10c44b40a14c94fd4e693830a91920a63778c91df75b67c3a259000000000000000000000000000000000000000000000000000000000000000107280517ca1e78bf1695ef64be32a191c9be596f1187f3c7977faff7e24056bd00000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb006b9585a5e170e2ee0ba4ea606cf9b6dac9096e94e5b22d48c247b37ce69514008a03d1cbf04c728546df9b241db51cfbde1c179813e31b957b5313b776ee2a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e630f76f97b5ee7be34ec1043da864e3586334f6df8b48eac5477c1a568bc2a236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df400000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082fe435f331308a4900000000000000000000000000000000000000000000000bdab82be1e5639d800000000000000000000000000000000000000000000000029444cf38547e68fe0000000000000000000000000000000000000000000000000000d75a2f25a232000000000000000000000000000000000000000000000008791586d317551b2300000000000000000000000000000000000000000000000191d2857ec676748100000000000000000000000000000000000000000000000f018d9789909bd0db0000000000000000000000000000000000000000000000000002cfca99fd0c9f0000000000000000000000000000000000000000000000043d66f92822507d05000000000000000000000000000000000000000000000004571d2303e8e9969f000000000000000000000000000000000000000000000008b6a52d7b966f48e00000000000000000000000000000000000000000000000000001362a5949866e0000000000000000000000000000000000000000000000065323a25284713ba2000000000000000000000000000000000000000000000001bf48920d910810fc00000000000000000000000000000000000000000000000a5c6afdb772c0f57500000000000000000000000000000000000000000000000000021fb873f04f540000000000000000000000000000009dd48fdcab23a26aa7a4b052eb69ce9a7b00000000000000000000000000000000001c77fa3a02ad09a7cf24867a113f5b00000000000000000000000000000039a316835842f0c8b2f0638ad30af7832f00000000000000000000000000000000001fb07acdd9b4b8f83910efb2e820f500000000000000000000000000000023b5a7379d329a11b3fac8d349325c8a8e00000000000000000000000000000000000e1a7d35b0c9311a04a803e4a3963d000000000000000000000000000000a3cce610462069eb0ffb868b9b77b051820000000000000000000000000000000000133c53b0fcc090147fc32300bd2cf2000000000000000000000000000000257cff25f706677c5fdf7e7bd129382652000000000000000000000000000000000001bbc313d96cc5e96e0f077da2e92800000000000000000000000000000082bbb536634fbe97cd09156f20c7104f57000000000000000000000000000000000009d76d09dacad032309bf48a1917cb0000000000000000000000000000002ec0134723ef5ef9b52e3ef8874be2c1f900000000000000000000000000000000001372b70f434540fae85f5479bef56d00000000000000000000000000000038c1a3d0abe514107a3fc76779ef3dc484000000000000000000000000000000000002ec7bcb5d5b1ae1f04a3033983645000000000000000000000000000000558ac07c2c5062472e0917f86eb469fc05000000000000000000000000000000000021687c48ef2161031addc8f8687b49000000000000000000000000000000ae49be930b168b7fd9938eea2f06ca7737000000000000000000000000000000000000852f77188f03d9f8d5144ba81df6000000000000000000000000000000389ed81026f4a087ab3b9f075401d8c6dd000000000000000000000000000000000009ca569240c24f285c62e81584c09500000000000000000000000000000084b64204b2b55309c9db00a4cb274d7ba1000000000000000000000000000000000026f54dbd35eced8f542be91183c65c000000000000000000000000000000ab8b304bdf723524cf812540110f330982000000000000000000000000000000000002513eadc5586f9409db0b2117209900000000000000000000000000000001c7cb177f4e426571e40eb596ec769bc600000000000000000000000000000000000f252a92f419518324a7e9431ae893000000000000000000000000000000a8060330bdab766572bc2e8bb8d357341e00000000000000000000000000000000002ed3c4461083df062a5d4f9df107f1000000000000000000000000000000b839b3a315247d1ae36c6c57e4759ac0d900000000000000000000000000000000002f78eb3011f73697e5be34f1c19f921ed703b2463f2a77ef1fe79232096b7313942088901da13d8c2f1e73940d91fb118d4ac09af275b1c9305e244f77ecea149fc7bfe99bcf53b7b2d7205bf26e0628e0bf2e8ca0c83dba16dd3442b7ec5870f55feffb0e3140b6fbf1608790d5d3264de73dbf3cdad21832ac08a327b78f99421e0055b1b6ca95cd3813b5e9d4961d1fa27c17d1ab48000c19237c04d8e41b2de42dfecf37d569cb82522655602a1fc1c6a4587b36b4e9e044a94a6555bf48234a3220621e09f796c121491dba632fe54e40a068f38c6188eba2a4cc4ca93882bd403a72c014c4f46f685582da3423ac9a08284604e636aad040f31c9200d3214cf18be0f3d3eecae2f832a5c6f2141ca5b05cb3a30e566140fa90a73f772fbc0946cae3da3a322cdb26457aaaec2607f370a81d39d6d7588b308b06c8689c531f6f4836d54cf2deb7f789f91a50215e5accdbf15b2f466b88a3158b974232e6df84cd2599fd7f920ba87a91f85e0ff040395f537937fbd7424d13d9dba84e1af5d3cf21d486cf2abe9ac71646b32f7ec72a40b79c6a5a0db4cf72399706546c36c3a32f2721f870b84615a17d0700480fb040f7f95a9b236766df76e269935b4fa7b28690c7ffa7d41cdcdc85250da1013b18dfc3803c8c401e6090e8bf3464bdae7e0cd8e7494c0b541238a06400a040319532aaad2c838d68fd6c5d1a8629b2ca8d945722870d5c44ac00fb3b024c0ae940ba87ad76694d4d5d1148fb5951139880580fca36ba2cca4f657620242d9ca34888e439bb3031875969e452300cc5b79bc06d256d27bd639a1a79980f341005b675ccfd8af30b044946fa54e71dde8361909baa28cf3db107eea077191774e2ebab60b25a485ddcbc65fff8b7127e8df3434ca327ddac6c5a29d2ee05da97b5c3cf1ebbae38eef142258ea8794d01c3f94d17eee961154d451f1c270f2439b2ce67890c8e9960c0533e69599e2c93f4d58dfb0da35efe0d9e1ba4cb1559a9233b5f0fdbf0c13cd079484591e371fa55c73b922fc8e2aa45b624a8bd09098c4b762f3bfdad8480bf51b94f5d0086e30c29fa5c78be9777edd6bb5ad01226beb3b974f1888db1930aa521015696153ec084713b6d40e0cc15dd5a4e4f107755e629b6989a89ad2ea842521d90c3e61b5310e294aa5186836d6d7f552e120b0ce95e8c825f905de5bda99cd0f53a9c1991df0ae2342be5694f7372ed720fa4b997b47c844a9d6e4dc5aafb91d040fecf21370b4490e9ffef9777cdbc6c1758bbee3761ab7a724f0eda2c1a90c7d112802257a6cba65fc43efe7a3b4a1010e020770079a3a01a553b85cd677abd3cac1411e55b697c7cc59148a084b9d00fb78d35e36553b508ee63604ba8bda966a4d2c11751f8d73a7b52cc13c17a761b4ec6b93cfb07d4a992784e969826e9c98c6826737da88fae0430c86e1e87060a217acefce28f78d8f26d2fbeeddfaf097cbc7fbf91388881c22feeed61ff0e1f8d569b6c93d6293073ca09d53683b460f91a1d9815212360a7271d3be47f2f05eb65b94f100ebf53c71e31affe1edeb1da02b8d92e527ba0f1be70d10c8dc0005eb1d728b07c90d03da9019d2559979b11a0e8d6819b8917d162fa646b3f96159117217d2fbc65904f4506698bbfd196cfd76d4c1aec2c08e9a7277dc369821c9ab6e3debeeb16b79a90e82c1ca614a9149c11ca2ef9d9765c38155e455aa01a9e04a8632dbf67b115df66b36d5f4d87ae6fd6741d293fcbd53b38a2a2ff22072b9199dda22f334a402919e29bd92fd5afc3327b787546227b43da103eb45f2dee9d4d85a0dcde2cb953691d3801096a61d8b7ee9cbd5334a79e043ef42b4716fc55fdb7142f9afa9e3c8d78c95bb259f7702dc6cc6bf369232ecf0be1da960dab3e12610f154cc5132498be73920018f2673b8be4bb444f24a9186cab20ab12409bac9b6ee97bfaf74407fb095fde37bbe01ab6eba1fa5e960d3bca5a6b420465306a3d9c4e09679c1104938ab257826471dbfa0b13a74baf87ef0e25d8dc2ed4db879783be9b176091b5f5729c99cdd59f8e0f0caf9572d020e51f441a9d0dd471c6415daadeb642425162282835030b02ac18afc574b2ebeb24ca86df071088e235e911e8116c6ff3d6ab70b8b1dce91b3b3391c0af1cf289618e983c5f1579b84d040ce85bfbba955afabfdb0bbffd99f844050f0b74b4cb273324d28f2a0a042e8c44626541a9c5fc6ff180f6e85b9949051f75f92554cea8e4da20b81961bf243cf0c5be999bc98393669a7a5c2617ec4e2109ea1de582ad575aaa481d37586109d01f06ed630337e69facf07665bdc8d2358444ae44a84d4dd8077a2974a78a0b289b986c7fb6dba76835fbdf088037d544510ab140a2ec0389851b00e5ae1f6c8b3a4811237605401c62751ae918be2723c062ed2fb2f5a0c541df17a9f4815ddbf72f40bb652422a2940aa0b3593c9b1c3b9108d3204adc5585e71af1df896d1ddbde91eba2533fdea3337a70cb15995026310c30c668f36fa6252144ab1cf0046a554e00b315efde48630590b81415193f2c7f6a9f2cdaf392450b9380ea79f64997d4c1ee7f081d52cfa9193426463a9a97adb33bbc5e867d4e223197fb306cddb2947ebe122670aed68f80676d763bcd607a4761dc9a08b545264393e98caeed4f48e30093a297644a469c9a8b8a94877fb4c8eb8715834a5a10f9d2a516180ec5ef831039c5ce21fd5535c24f3619dac94bf2333d79aad40f139691ae19a3fc31e9a430caf50417c68b46768644fd9d35b599d964d167333e2703cb53ad24980d5cf566b4610b0b1962cbf08c92f2f7842b8d819eef8ee7ba2e3e3d60a795d42e1eaab82127e854def40d8f4502f718fcaf67622b23e0ec13004b0c7e629fec1c5d9aa943d88db79ed9116e7736064f196068335c1c559c2a0505cc734585fd97764959afbc153f2844d86df2a3da32c5c7cf31cd69c297510f99c1c98293de15a4cb7acad077d2787b11d7fa52da57796aa3aba62170c68101a8151cc166de28d7e2548d4b2b23397d0a96f982151336583a79cd53394982092106fb50cfca4d8dd9248f7db044659f6f113cbd84d5b033d24da19b1c6a910a272371da4956855ee68a0107cbf38147ea8378845ad320719e6f06a65a65bd0d652fac48173de4017ae38e93e6ea160fc36b248736b86a842fe4d95c00d7a81a62b5367ff9995dd4ca7a8ac5b851b762a847e8af3f3a2a1dd20959e821f00e0ed4fc602d6e618db088efcc7223587d41e538467acd69cb098205995ca6a9db2934dda0ae2778704db595c8d81d2a385a958f89f0d80892c57ccb7f2379b50a2a0b72a7b1c55d5a790543c627ea4a08937dbf75158de8a14229c89a5e170a472bd770323eb32579baab712e442c6fe5b749f0a1cc54dde59761c722f10644ef1d74de9ebe4437dbf18157edaeee8fa0abda238cf48e9b6464adf661dd2992821d3b43dab55c21fa368a37f858b935497548502a2017d9d4677c69af2fb12b8901692b608886d600bd7c170f54a28ed182fe2de53279bf66e659c2adf6268ada1d11e2f80499c6c901ccae299102b2508cbaced7a8a8c0d2d7a37441487b2786188a1aac80b5e8963daf8fdf59e45d7368464b4bdf8ace37ec441c91275480571ae722530593bb6198da80351c794a0680d8acd41f4aaa71ef293a2dc811f837099f10840a5c4964d73790885a59e83e8d454533fa158870651c2122a5b80acf1ced9f2905feb5154982a9ab6d3bb3566522bb1149f4799e717a06242bc9d00e118ffb9a526fc265b4358581d449b72a937e3c6341345759979b55d892a468e8199d25b646f03f0c9082b07d586db595d0d94fd654f82d7af36a0a5d61a10d7a2c8972f62d91afc3e9aa4d92ea2144af46d2a7f69b1f7500164e3b6c8f4c80d02ce3a2d4574339219dd4718f535c0457dd2d0308f654a083d6c7abfbbac103332b83044a1bdbae0c46cfcd8588e245ee180f961a9d5b5e6f24579502298222890eb89a932a06d9f49ff93dc84626f8fd209c924034a70e8e3d7670c52850379d2c2c23a4d587b01f3dd0d0d9ad647137a313167a264912ed5c7a02a199d782d40ea7acfde509ba2a1bfa0f82d51a872269a4bb348c2b6e186e975a95a77e483f167164a393d628e7840231b88addceedd7a75e2edfdefadfd3aba9b685bf4492289e5a69f4eaa1fb811547952d1ce8865130f76a5ef4fe22f662199cb104338b2764a583ba72370aa2fce05c880f1e6454f8f934e705a82c6229255c00ad743c3019dbfd704de117a3a920c29ad2acc8702a1720e7f3d071a647292b2aa94e090254ef9379036632186ff8ce0ee2f54a03f71a28013a3f78c3085d2e75d9143f1b9d7f390e6d1cb51f38e4b762ac4fbd121e06a3733cfd1d7225a540568bb7fa301d829e86b40806b386408882102ad9ea74fc0e087b7673435ed29d80ab49f72d04e945d2ba9eaacda2f8c819b65b8c441efc3793e3fb5ce33b60e992e3b07a13f9e9318097e2ea0feb8afe17e028493ca2ab6b2adfb739ede48bb0d16db40d1535ef65460d2f0d9c21ce0ff5fbe5efd57317ebdb53cc5048f4b854cc84b4ab175b2014bdeae3f06b915c007fca2725a898ed1d424770240c0ca4a85878ff8f2cd578e01e3ed260338e69aec1a9815a6953b0167e2506a0e04e2f54de5326ee00a2c84084c56dc32389412b3d2b1d31ecd43eba8de7120a7236aa9d51d098ef2725e2c172077c9770b92d792b3c8ec369ec50d7adb749bd6274e8c280525a322da0bc9a8f41112ea571f46024b91f9e10de08ae048719560f66900b25df170c2b48e1600be108beb0772730026250d9a781088cd60d7665997311b908f24b83172aa906ebfbaf0343af409c3a648fa02d49c39c3790efa112e383fc58926d421b4bd14202e308951d9ec129adc6c25252b0c7eb35e5e2614cb4b42cc55486ae0da15bc44a42b5603bea536903980976d78ec6a4deece1f883df6e11e5154e4b03e9d5a599df3a87112e2461447182358ca210bf9dff678c23e47959939d743a199e6ee47fb6d39ccfb9bcc47db9dad1ba7b8b487c9cdc0d2320f90a70de7916269a1ab64c5f534b44b827087f4cd1a33f72c1bd9a37133e31b97308eeb7850d1f0c57de4e7a17ac9c82ce9b0bc3ba64cba818f21a2649ded1cb0b53388735f92ae49a875962c08ac1250398008ee8ad9b04132f292ceebb6e16421eda7f9d7b0591ce7a61f708684ef2471ed2bf70b93609810e005a874d2fe05833e7c1538e04bbe9c678d2c9993c1cdb22a67887ec754ce7560b51776129f1c4b03b69b39726b007f5e1b3daeb29decc99172a51c5629a97dddc9488f82ead26fce59fdf6c23131a5afa4c553929e0ac4ab6986d574a864ff00876684a5753ea61eb0352e3180e09544dd2c00395cf95309fac58ff99467c6a38b6bfb075fc3d63150a7f0e2ecee683d2204da4919d4f3bc2e4b880b72040d71ac2ab9f4ff8b13cbdee781209879852ea97818396d72497423032fe98db9f80f4fb2540df5c0e0314906d4520546acfe7ebd9de812724d2fe4c89751f36cca1d3e3eb4dde2db6c5ccfcf4a3030da1a25f6aacfa4c080656f571a38ba719da4b1187f35eeb4afc3d573c77782b362f2dd86ccdfdbeec46bd4669062a4c926d721d547aabb0ae937f5c071ef0143e9b5b45f1bd280d0fe81dc113682711519a2df642309f95fc2c177f440e032ae669f647bf998e80d13bb0381181463fcef90e1b7de9d0e8595b0865a7de3a163c8a81b4a838a66a8f770ffbb735e1c6485bf0096795d0ab7cb95e0ce6decd2238bf198fe67a0edce64f3c500b529dc91b42029830f9ec6976ef6284ba450b062d52b46c42feead236f6481506095086d9970e4e59ddb4d4c11456c50c21cc1e3fb5576dff0b8cac3c1b4083db93cce6f8804493477e8d104f798d621ae6ac0e365ed9430a53c30602fab3450889f3cae5fc98b22db706525ed03b931e2f5a0c1328a2f595c6b30fa5442db9dea2b1c4a75393f6eedf994e1f6dc0a3a99dae05d4a3ab6492cbff3cddc3c66d415deafe211cb8b10295b28d4716fd28b4a74708180356accc67b22c8aca76c2f3ac542ec4d98f523042b0a035b7ef4b88b0e209d9caa3946398e94d45b3c0b448bc8d98f6b95afef3fa92cebd617df24bb4be1dd3a659998e320aba92a990ff6191c1bde41d4eb9fd89acf49d4f916e46723c26ee3dd3de1f09bf242ed3214e6ff8357723a7c5ff4517cffb23d62aabe3054d030d58d1c5ab267f098265df13f33f12f9225eefb7a2edb336e880c3f51c0535003335d0e6ef4ce94ed502a8c1fe29a8888c9cd1cca193df5e370a092cb8a17d080be374efcf59774d1609859eb9a842a118684690e94edd4f2479e5fc0e38810b1beb671e9eb213eb22fe58270fd4baa67c2493bc5ffa80b77f9a19d12de04a00de194d54fbd50a952239f0d4705b1ca0279d8d329a8c50d529618d340f63991801a497e50cf66e6ea1fe78d66b35549e6ced288c67a88acf097dc6d2cf7be72e4b3409772e8d1105cb34eb385438dc821c2171c69ff25411757a951cafdb4a2275936c79d562bf90937df3d9ab659908fcb62ef18c18e64be23ca3bf462f3c15b4f2116b9ec7b2ac8b4ede684ffe8932972468ebd3472e6fc7127eee19942113134a84a97434300201ddda036afb82ed141bac550776ec1143b9d3a82b56dc108c8702b6f7f4225cd0af340f49fea35b114ac11401639e5cdb11ffd1ec644e22e7342db2255d10c9d563de596ca60e49f72b6e0aa42c71cce46fbe34ce365613612a6446da13db08d94af65ff4cb5345f1c9e845ae04f14b946d0ef960f91b18a4d2e3bf94bc22fee1320f72883ba737cab7fcdb6315aaadaf82c74fa969740cb0d9401a1473aa71e211f3cd93d19aaf29fd33086383b2ebc430342d630e7c1a293b7a006389d36a944dfa9f2ad9d51ecf10879ef6d589e86e0ecc58e8cb26185d29bbd6434765ad4da8352061b65d18a442ff6b6ae2f17e375c2277c1cde613599bde789ce12e78c970b8767817477041c308b65433a4754ba4f559c73f720612182f5ca918948bff0217776f23775d0e5784748409826fd2ad03d50bbfbb12f67ef472be2da6f7dc096b6f7aaf11682da09ba998f9a095ae5b81a4b45e85169b94d6764c42c7725ed767f23e637afc03864bac437388913338d309ea114926335fd155bfd7d0add6caa514055a024124efdb12d9fd365230b5f3770a3b931c2f03f2be37539cc1a737c61b9ac4f9a53213659356591b8a52b02796a0b9bd1017214c55f63a0ab0a22e86491f7c87bf54304e5dcfa168a6475e4d1caeea4810011d90154aa8e20f560341e7a3561b9eb1c6efc590d277c1fb164dbade150c1dec78d7c1e5bf81c8aae553b6c509f48d364406c2aa40f763f458dc6b73c5172369563c40fe4e2605f75adc7fdabb099bb1083f34aaf63db5abba165921596a1da76e760d347d5ddbbaa3400605199fe9eac0d061be2edfa8677ae16a3b593a26c7449976d28c06b3c6350433116f66c159feb9988584ad6d91f26d7d9d3e111fa527a2b2869b8a83deeca77e267f4bf229968e69b870cace1c09328041a3be1a79b5d9d0b435a68ebe389cc81dd3d151e9d905c85397b9522235206d9b678b1fa95f081e16a9320b73bc994d409eb8336ad55a397899e178705cf7ea951f4e073685c53d42bdb04933f743eb9a895439a589e5c862aa4f59e0a66824df29481adf68e2ff04c5631c183831a51bef34b1d946f976d08ebf31af3839e0e98f002193eeb6bf19d115e463ff6784ca1e616ff13b2870c6a5784d45c104407ff1c921ce23ad8acbbbf491c631ab20f243555f86f6054b9827244b7c3bf2ec0a103013095cdaee0bc3fd674c97b4bc5e4069f807ea0862adec57bcc04e4c1db301310a654f284b87757d8ffe9d307106f76b5ead326b5870fbd76e100610715f77062be54d6dfef417b9e83d21a93dbb5ce6141024b4d4e356a86387be0c9a6d4e8c018af79a945f97bb82f0ed99996390f7382f33dfccf007b8586f0220d430e3c22bc4cb63d0525feb3fd0ae8801860d2c79f2b55d2d07b23ffdf62a636bcc662d2b0dbba89f9408279353e211d90485fd2d357da27709eb14e731907b027579500440d9f2acc490a0b81751ede90fa18ac00fcfd842c8caad468f84ec98b8e2932c66ad7a30547f91b190fe42bb2d8067fca9b0a9c29e6585072654b0388eed852a032a509ceef1ff239dff80abbdf86d23a555632399304c914e094a85034b760ecf9d5ba24c6503811a171bf2359e22693d56db5d5eded4834618565113394a2dcd216e23da1e1962c185c1173d8cb9b6bc37caf93420f215ad2850353fab921b1d2f806b8298c5bf991cc61afe850988233591620650282e6e5bb604c3f1b81b16d0c5ce269d805ce27db8778fde21b16c572ae196b8d397b11777a28dc65a205d2f9f393d9a3515911fb34d26cdb2d9acf8956de70567d20a104cec89548929e08b8c590844ee61c97712d3e380d5873ad8dbea53ee2c5e56a8e7f94a9e7e2c9dd00a45531c280086f211a9c54adbac045f90883e4b20073660f5007df5e21ea57ca7d2eb02971e420274dd8a2bed48a99ecf62e430a21ce0710952e43ac41eb3e6ee9ea35fedca8318a05442b80ca6362cc55325335a6f1ab62bf4c1e88f121fd9c4d7010238ec273e1c87289879377a259678f0fd1d533257f03aee76c122be9bf5704fa10b6b7f5f79d5c45226963c3d9ba9f1f83dc2a63c61cf8a97d508394109dcbc213fc7ce9c01bf0689047197b8684b0b054b364793cadd42cc180d15aa2d7ccf4564292612a513c0b05aa6ea4ba75775b901edc8623fda808b9a0ee64479ebc17fbbb9990e589ac1353fadb4215ee12c14e37d7e987a98cddbe80f36f57980c04ee751bc376caf090c027f8fb2384644fcf0fee1cf98f056186d0d1194c632f643362e09e6ce3c0b73ad2ef7055f81a4b03e116e92631bcebde9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048ad486300ad4153017a4adb90cb15220ecd946d7e1da9d6069505ffd084d412e7fc5479cb6e7eabea08c5f71eaccf5f8df2b5f39cf684ecef627f957b6302e0decbb29c815a274dea884df5dbd4a0a87cc7f34d12ac2740c1aaf52dd064bfc0798673a1e171ef84cb6eb7236aeaefab5f040b24a911f5bacb6a1df820982c81521064666c44b7246102446926e08da55116ee7846984d2598f612b2cf0f7f521ed1e96722ec6dc27c88d10ea29ae3b1f0f8b7bd7e0c309391f7740205314ef030bab4b818e0df7304b924a7db2d79e3967b2ccc3b691d05f76a3a2d68545e52780eceaafe13229e5a4084bcc8bba36161251610432aa8b2954d7a5f50dc37818f94d8f2befa07786e99886666018d914a9e493ad3c83e178aee43cd07a1d2d2e47b6d577d151d677a3985cf45ad96fc5db2b02fa47c69f2826ca2f9d44f8a4065e0415180f9da0104fe2a0f8e5c4d2429560d14bb85eedacb10eea72bb5bad0ec8212e7e3f6869b2c18441fb9c4b70ab7ade85783a27cdac788d0d2a4bcd402b99eaeb4987ef78e51fb6c3dc86cea25c9c34a7292915afbd19fd6ae39ad951185a5ad36b5dab514c723951497a6a6490878eb536c90262214d416c20ab3d4925d87b8ca98691fe9e8fca6e60dcbb427db55a8c6802e6bc04669bcaa0bb112f04c181e5e8cdf2fdb6f2c2254e71fce380875181b982a683c7760e50196473d104971737c1d54b2e331c6446dc14dfdd03c06e5be624c53913349937070e472a0ae646ad72ca603a786964557a337fec578d0142222a3bc965dd982f746f315b2b5b509ce946f6350f41df3d41b26aeeb9d6dc6c30064ff93b1cee7f40cb50e928a84dd3965515581b01cb9bcfb2b62b2270a84c1354be1544392f2d113e29300d7c91b5e8a464a6e274235fad3dd557cd7a6596c24001f7a04c7d54551291f61470908accd20722e707134e72f1d6e2b912763fa4432a5a9968c9f892192a34072c4f9c7b4387c1c3971ad4a80096b8da21e3129f587f4f912aa16ad04d0d50216d205e86461c02fdaa256994e24005b72eaddbcb0cd2ab22b6a50770f911c521b5fb94d33d297af8f45d40d409d5d8e39477940178f043644c0f1e57e2487d0de09dd5149bb751bd28377b2a07cf388fd07b32e59982ab73f0dd36d352afaf086250a0e35085cbaf7f4a363e23e6a67a3f8ba1a01cb0bfa4f0608abbff55b12a71bc782aa763531fa83afe6c8a7462133629ed5974bc47b76f64f86133256621a3b5b96140b2bfef9aa46945021acff9b3e445544e4ec4d366b9492d7fb8d72e6fd16a8ee11b5ce9f1d363cc0f595c8fedabd852232cd917abbab54a0283da23544939e07cce98ef50629116377e4a47ead57d2519d297380f0179e1a25d5116bdd06b365a7e300e6a40835ab689cfd94f000a2a5fb1e5179620e4ba3055a928373275d8455dbab361910898a1d15871bc184f89b64f83cf9fbbca0f6e48411f6d4bcfe84906bab59b2db01e891883b2b582a6bde3b3a97a3e670530bbd3f323094e41be1be64089ddad6a542c035aeeee5d34301887f68f1d9a331dfc2ba32af5cf866de58d476e5ec6a2edc913778f27e8df917e69e5f8be5c79fa7f178d17e13bbe64bd382544b59528906bd65c513afe32ccb6df786c6f29428674ec8e1b693cc0589419a04b9b48c5e9e199a36c29b939b54a70cf89e00698106cbb370a3e56029708eba0cc2f82524bf5ad904043d1c5d3d8d49cbc371986dfdcc3f619769a0ab4966a51e4af1c3ae1ac880280ea95659283a29c82c051c65993733000000000000000000000000000000014a0eb4f0c9c2dfec265e282e97b0b645f00000000000000000000000000000000002ae05f0c559d20f85ae08f24fe9447000000000000000000000000000000c4fe53508a22b2acceb99c2d2437f499af000000000000000000000000000000000021015fbc703cb5ad1ac784c7ff58fd000000000000000000000000000000b2314d155e88ba9fbf93fa84f79786f61b00000000000000000000000000000000001d80cdf9d43c5a779dbf5b98b1df3e0000000000000000000000000000009549e9cf6b35413637baf9562cf9ee67c100000000000000000000000000000000001d74b73c835b408fe0b2bb50cabcfe000000000000000000000000000000c1d4666fe6f13827b36bb73b4e24fbeb2b000000000000000000000000000000000022b4eeebb4e430fd3a1236ab9b8dcf00000000000000000000000000000009e0e9b4906d9badb13fc4940fc443b37700000000000000000000000000000000000e44da549d33c58f0b0720b7f8cbcb000000000000000000000000000000e2a8e6e685a025bece92a677088dc80cca0000000000000000000000000000000000085d61c54ab2936631287530ae7b8a000000000000000000000000000000e66a862c9ea4e07fa6225d030d407b560000000000000000000000000000000000001e2c28abb5800bb72c05f899639b210000000000000000000000000000009c911199fb3e5b1e016cb83ed974b132c5000000000000000000000000000000000000b455ecc1069422b6c799fd1c8eff00000000000000000000000000000093cdb871c75e5801e21b06a9f93f1d0af5000000000000000000000000000000000017d0dc33d727086996b79f29671f09000000000000000000000000000000775e3b3b694087b89c611d87e2569be1fb00000000000000000000000000000000001477336f6724ea73477b339102e608000000000000000000000000000000d3af5b7d8f4a8abfd92f67731610af142600000000000000000000000000000000000e4131a2f1518f44ab6018d7d5e3800000000000000000000000000000006968d376b68d983480e2cd7fd43750b13500000000000000000000000000000000000916665de5ac81ae2fa6e97f50322a00000000000000000000000000000050dcabc2a55861764a0b826075c5414f6400000000000000000000000000000000000df47e0f6074507d882b4932b54e59000000000000000000000000000000a7b4053b6ec800b218698a2c1ee2a6855800000000000000000000000000000000001ebc23de04afb6a8fe18c63f5aaa3f0000000000000000000000000000001be52a4c067798580e65588ad03bbe5a3a000000000000000000000000000000000024ce2082a30448a4aaf9de568edd7c00000000000000000000000000000054a2fb2783b959ee5f9191442fbd68f92600000000000000000000000000000000000bc84cead7c68cbe8d50195f6834c800000000000000000000000000000043df2b4701d6e5c19f22322347b884fd2600000000000000000000000000000000002e5843327b229354780c89df426e8a00000000000000000000000000000048f65cd88967b9db10ad5033f84417066a0000000000000000000000000000000000297e8ce62ec12aca41e67800c67dac000000000000000000000000000000e94d232dfb911f32a914c01f4a32dc546000000000000000000000000000000000001c0f8c2bd192d94c22def6a33c6c060000000000000000000000000000009f8d2c090b76a65fe988104035b7d52e37000000000000000000000000000000000001bf044a4cce5ddadb84088c330f72000000000000000000000000000000e5b0b0d0e87dd1634067177b3c8f9baf8a000000000000000000000000000000000028ef93a94c18a66df1a5bc83ef2f5800000000000000000000000000000037fa497156abcf0c9cfcf52ccaf999949b0000000000000000000000000000000000221bfa37f832e6eeb53ea42118c113000000000000000000000000000000458237a268e42541300f3906d007c77cf1000000000000000000000000000000000018f13a7ddb1d11ff2b0f2927dbd9f600000000000000000000000000000047cbaa029638b8d19278657de7aeee31d9000000000000000000000000000000000029dea2274611ee0ba44e33faa85c6f00000000000000000000000000000032c2d871984aa2a309c105326ee2810379000000000000000000000000000000000004fc4bf60921835aa3a845e75be99c000000000000000000000000000000accac78415cdfdc61da682918fab52902e00000000000000000000000000000000002e0689141c1428aa8c84d056d0ce020000000000000000000000000000004240f83860ee4ef0169502bdec31b47f7700000000000000000000000000000000002785992eee08720ac47eb64cb62feb00000000000000000000000000000076459882466797e79a2984345915f259fa00000000000000000000000000000000001f10fdb6ee3ff40cffd01cca6ff2f4000000000000000000000000000000fcfba12e167991b0240c03f4df386f527a000000000000000000000000000000000025cfa01093eeea5c1365ccbee7ed200000000000000000000000000000001384e52efac5e447f8a5158af5500fa48300000000000000000000000000000000000b1b1853ce5b9fc9032ba3e1604bbc0000000000000000000000000000003043ceb159cb7104741f68fdb2d4f69cc700000000000000000000000000000000002f1f9f51c16bb2d8ecd4725347e1e60000000000000000000000000000009f898153483c2365b0ed44f4cc17b5a4c30000000000000000000000000000000000295e56d8d10424614b48b99d41f4dd00000000000000000000000000000085e81c86912b5af21719e451ff92882e1600000000000000000000000000000000002e37910633e327d78c778d3332eb150000000000000000000000000000001eec48a91ddec22bfe4c9d6f9564b3abeb000000000000000000000000000000000026853c48d7b620cbae63208ed05651000000000000000000000000000000225deeda05e750d5b08e1a1d616689a34a00000000000000000000000000000000001b018d981ca3bbb7f48d9fb5dcddf200000000000000000000000000000039c8a5e05bb645398af1550ddc62aa9046000000000000000000000000000000000023c1261ccfd1bf4f98e460728b55070000000000000000000000000000003d0b45310b664f5306ede875b8a22184ed0000000000000000000000000000000000141f4f3eb58291b3d8d985b4f86494000000000000000000000000000000acbf514e588b88814829baf4fcb3f47deb00000000000000000000000000000000002139741280b1459da1cfb9603b3aea000000000000000000000000000000bae1122d221f54bfe41460394564a71abf0000000000000000000000000000000000137347cce9b526149b67eb1d6e7a3d00000000000000000000000000000026bc4029472a2ca5a306d3e9934152b5ae0000000000000000000000000000000000066b8d160ef3c67562213a8617c884000000000000000000000000000000c1141fa9cf1fba0cc6d2e9ca5898186b19000000000000000000000000000000000028b6c1c744ebdeadb693f7f6522cc4000000000000000000000000000000026f11a4cd8bdd6cf063c32c35b8dbaef200000000000000000000000000000000002d6337ee5f6d3ee0b411397f6e21060000000000000000000000000000005709a1716984b61b5041e9819ba151d569000000000000000000000000000000000025ba1e198dd3ce4d447e430c31842f000000000000000000000000000000ec38afec7dd3bdbee4c6b52b34a0e865d7000000000000000000000000000000000017736f5f020352f8984167c572513c0000000000000000000000000000002eb4e48d259cd2f4fccd233a79509ad8080000000000000000000000000000000000147e14740fb27564f59fe28fcf8d3d0000000000000000000000000000001e67f67a303223b76713394340d356357e00000000000000000000000000000000000d4a5778404928e55c88345ead0781000000000000000000000000000000aad83bcffbf9e2beba3b555593f4ec77e600000000000000000000000000000000000f5839662710833beff2c88d29abd400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000007c2aa31cdddd8d6cc114c9baf92eddddb8dd0856874b3938aeed4b6d891d904026c20a07e0a892e72b4f4e9eb12ecbe64b2cf489dcf6b4d0bbd5e157a2db0892de968e848f534666fd30a126d9453589e39066203ee33cc21790bc606c0f010082e6a4fa4c893366559e8462d4293c7ecb1d6e92cfd86870e6d88d82e1e22c1081700d1ee8d69be28630b477ce36daf7e0b337d689349e800a08f2a31110c710264879c616f471d3017c10b384809787503151985201eab0f9d042d5bd03c7314aa7e9372fd91c15484ceda9667aa3ba732587f01ffa9886f20cb4e68e4cb2f0413ab00b6d171609294f1bc73579b63a0a5eb5e08f2c1027117708dafe89e8122510bf3b00bed0c56a99a72bf271f76f731d92a8f3a27bbffbd46de04e8593e07034b498ba21a80273efd5dc104fff93a497686b93bd3a89d1c27a0a32b1e74064541310fc218532b75f698ced1ed6dc9a0788122f2a4fdf71de98f055b26430f00fbd3975278398eb1048909fdc30c68704e5ba89e4d09b32781206702f548259abb4cc66a3158700d7b4c807c4eed9e25b0fc4a120d0f573c22b4eaff6c692004192251578bc6aa3d24cd408e85fb5224cd874bcf53c664a4423744f7ff711c9f3990fbe43a5ff35059b949c19a4e7abfa26bd7fd4ade9457406f376ab84f1da880b28ba2201fc8c664294dabbeb6793e48e0508569b02a5a8623b31a45932b2d75cecfd44c70ce52944eb1c73eb22fa64d1e02b674c1a02805db6afbce630447559fe3812b91e387e7367e6b59baafc3ab7dd29774d9fbfafc5c3f8e40782448bbc1995d25a012211c3731c70ba77f4deb0fab5fb09826ae66b06f34728a1fb35c9388da72cc724e3d7f04a39ffc4c21cbc3c20e2753b3215523f57ea1742d19ca57b5dd64cb7f9b62524b28a62521d59c84c5e9a6cbdcab853bdb42ea0912eb9a1b717b8217ae4f20cab94bce5e06a0b6311e0d3d73c4efe7b8714825522f8ab298375cd05dd07477aa30a59b424d44707b148a0ee4e8ad39366119fbdc2ab86e8aa871ef064750e0fbcf7e628f8ca9c373a236079acd60e6cb306bc6fd2e6c162609d85070d4636812373ff4642a45190bab2759d95cf82297c7a40e2700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064ab34b32c49a0b7bed5d7035c10db14d8000000000000000000000000000000000020bf79a9b7269b6abfc09eeeaec955000000000000000000000000000000ab1fdc13b60391a57dc68983730446b55d000000000000000000000000000000000003b964ae7a6fee82e168800ea0fe0a000000000000000000000000000000474d6d840c81f9023e97a526bdba7014000000000000000000000000000000000000119d436d478086df28d73a28508a82000000000000000000000000000000561ce83c55e74926f29d0c703796563a6500000000000000000000000000000000002105a214b32e3db7c801af0cc96d5e0000040c","publicInputs":"0x06f32a63ab1a10c44b40a14c94fd4e693830a91920a63778c91df75b67c3a2590000000107280517ca1e78bf1695ef64be32a191c9be596f1187f3c7977faff7e24056bd000000030000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb006b9585a5e170e2ee0ba4ea606cf9b6dac9096e94e5b22d48c247b37ce69514008a03d1cbf04c728546df9b241db51cfbde1c179813e31b957b5313b776ee2a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e630f76f97b5ee7be34ec1043da864e3586334f6df8b48eac5477c1a568bc2a236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df400000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"} \ No newline at end of file diff --git a/yarn-project/foundation/src/serialize/buffer_reader.test.ts b/yarn-project/foundation/src/serialize/buffer_reader.test.ts index bbcb71ee0ba6..d9ea925d2fa3 100644 --- a/yarn-project/foundation/src/serialize/buffer_reader.test.ts +++ b/yarn-project/foundation/src/serialize/buffer_reader.test.ts @@ -3,7 +3,8 @@ import { jest } from '@jest/globals'; import { randomBytes } from '../crypto/index.js'; import { Fq, Fr } from '../fields/fields.js'; import { BufferReader } from './buffer_reader.js'; -import { serializeArrayOfBufferableToVector, serializeToBuffer } from './serialize.js'; +import { bigintToUInt64BE } from './free_funcs.js'; +import { serializeArrayOfBufferableToVector, serializeBigInt, serializeToBuffer } from './serialize.js'; const ARRAY = Array.from(Array(32)).map((_, idx) => (idx % 2 === 0 ? 0 : 1)); const BUFFER = Buffer.from(ARRAY); @@ -42,6 +43,26 @@ describe('buffer reader', () => { }); }); + describe('readUInt64', () => { + it('should read UInt64 from buffer', () => { + // mix in some non-UInt64 values + const content = [1n, 2n ** 64n, 2n ** 64n - 1n, BigInt(Number.MAX_SAFE_INTEGER), 3n]; + const buffer = Buffer.concat([ + bigintToUInt64BE(content[0]), + serializeBigInt(content[1]), + bigintToUInt64BE(content[2]), + serializeBigInt(content[3]), + bigintToUInt64BE(content[4]), + ]); + const myReader = new BufferReader(buffer); + expect(myReader.readUInt64()).toEqual(content[0]); + expect(myReader.readUInt256()).toEqual(content[1]); + expect(myReader.readUInt64()).toEqual(content[2]); + expect(myReader.readUInt256()).toEqual(content[3]); + expect(myReader.readUInt64()).toEqual(content[4]); + }); + }); + describe('readUInt256', () => { it('should read UInt256 from buffer', () => { // mix in some non-UInt256 values diff --git a/yarn-project/foundation/src/serialize/buffer_reader.ts b/yarn-project/foundation/src/serialize/buffer_reader.ts index ca41fd74f7a7..b6966eb63438 100644 --- a/yarn-project/foundation/src/serialize/buffer_reader.ts +++ b/yarn-project/foundation/src/serialize/buffer_reader.ts @@ -70,6 +70,23 @@ export class BufferReader { return result as Tuple; } + /** + * Reads a 256-bit unsigned integer from the buffer at the current index position. + * Updates the index position by 32 bytes after reading the number. + * + * Assumes the number is stored in big-endian format. + * + * @returns The read 256 bit value as a bigint. + */ + public readUInt64(): bigint { + this.#rangeCheck(8); + + const result = this.buffer.readBigUInt64BE(this.index); + + this.index += 8; + return result; + } + /** * Reads a 256-bit unsigned integer from the buffer at the current index position. * Updates the index position by 32 bytes after reading the number. @@ -82,8 +99,8 @@ export class BufferReader { this.#rangeCheck(32); let result = BigInt(0); - for (let i = 0; i < 32; i++) { - result = (result << BigInt(8)) | BigInt(this.buffer[this.index + i]); + for (let i = 0; i < 4; i++) { + result = (result << BigInt(64)) | this.buffer.readBigUInt64BE(this.index + i * 8); } this.index += 32; diff --git a/yarn-project/foundation/src/serialize/free_funcs.ts b/yarn-project/foundation/src/serialize/free_funcs.ts index 6feeb67b587b..ffda9f721198 100644 --- a/yarn-project/foundation/src/serialize/free_funcs.ts +++ b/yarn-project/foundation/src/serialize/free_funcs.ts @@ -56,6 +56,19 @@ export function numToUInt32BE(n: number, bufferSize = 4) { return buf; } +/** + * Convert a bigint to a big-endian unsigned 64-bit integer Buffer. + * + * @param n - The bigint to be converted to a big-endian unsigned 64-bit integer Buffer. + * @param bufferSize - Optional, the size of the output Buffer (default is 8). + * @returns A Buffer containing the big-endian unsigned 64-bit integer representation of the input number. + */ +export function bigintToUInt64BE(n: bigint, bufferSize = 8) { + const buf = Buffer.alloc(bufferSize); + buf.writeBigUInt64BE(n, bufferSize - 8); + return buf; +} + /** * Serialize a number into a big-endian signed 32-bit integer Buffer with the specified buffer size. * This function converts the input number into its binary representation and stores it in a Buffer diff --git a/yarn-project/noir-protocol-circuits-types/src/conversion/server.ts b/yarn-project/noir-protocol-circuits-types/src/conversion/server.ts index 29f283b6ae86..7bb7a56d2f6b 100644 --- a/yarn-project/noir-protocol-circuits-types/src/conversion/server.ts +++ b/yarn-project/noir-protocol-circuits-types/src/conversion/server.ts @@ -385,6 +385,7 @@ export function mapBlockRootOrBlockMergePublicInputsToNoir( start_global_variables: mapGlobalVariablesToNoir(blockRootOrBlockMergePublicInputs.startGlobalVariables), end_global_variables: mapGlobalVariablesToNoir(blockRootOrBlockMergePublicInputs.endGlobalVariables), out_hash: mapFieldToNoir(blockRootOrBlockMergePublicInputs.outHash), + proposed_block_header_hashes: mapTuple(blockRootOrBlockMergePublicInputs.proposedBlockHeaderHashes, mapFieldToNoir), fees: mapTuple(blockRootOrBlockMergePublicInputs.fees, mapFeeRecipientToNoir), vk_tree_root: mapFieldToNoir(blockRootOrBlockMergePublicInputs.vkTreeRoot), protocol_contract_tree_root: mapFieldToNoir(blockRootOrBlockMergePublicInputs.protocolContractTreeRoot), @@ -432,7 +433,10 @@ export function mapRootRollupPublicInputsFromNoir( mapFieldFromNoir(rootRollupPublicInputs.end_timestamp), mapFieldFromNoir(rootRollupPublicInputs.end_block_number), mapFieldFromNoir(rootRollupPublicInputs.out_hash), + mapTupleFromNoir(rootRollupPublicInputs.proposed_block_header_hashes, AZTEC_MAX_EPOCH_DURATION, mapFieldFromNoir), mapTupleFromNoir(rootRollupPublicInputs.fees, AZTEC_MAX_EPOCH_DURATION, mapFeeRecipientFromNoir), + mapFieldFromNoir(rootRollupPublicInputs.chain_id), + mapFieldFromNoir(rootRollupPublicInputs.version), mapFieldFromNoir(rootRollupPublicInputs.vk_tree_root), mapFieldFromNoir(rootRollupPublicInputs.protocol_contract_tree_root), mapFieldFromNoir(rootRollupPublicInputs.prover_id), @@ -595,6 +599,11 @@ export function mapBlockRootOrBlockMergePublicInputsFromNoir( mapGlobalVariablesFromNoir(blockRootOrBlockMergePublicInputs.start_global_variables), mapGlobalVariablesFromNoir(blockRootOrBlockMergePublicInputs.end_global_variables), mapFieldFromNoir(blockRootOrBlockMergePublicInputs.out_hash), + mapTupleFromNoir( + blockRootOrBlockMergePublicInputs.proposed_block_header_hashes, + AZTEC_MAX_EPOCH_DURATION, + mapFieldFromNoir, + ), mapTupleFromNoir(blockRootOrBlockMergePublicInputs.fees, AZTEC_MAX_EPOCH_DURATION, mapFeeRecipientFromNoir), mapFieldFromNoir(blockRootOrBlockMergePublicInputs.vk_tree_root), mapFieldFromNoir(blockRootOrBlockMergePublicInputs.protocol_contract_tree_root), diff --git a/yarn-project/p2p/src/client/p2p_client.ts b/yarn-project/p2p/src/client/p2p_client.ts index 485d2c428f6b..72befefc2ad3 100644 --- a/yarn-project/p2p/src/client/p2p_client.ts +++ b/yarn-project/p2p/src/client/p2p_client.ts @@ -715,7 +715,9 @@ export class P2PClient private async addAttestationsToPool(blocks: PublishedL2Block[]): Promise { const attestations = blocks.flatMap(block => { const payload = ConsensusPayload.fromBlock(block.block); - return block.signatures.filter(sig => !sig.isEmpty).map(signature => new BlockAttestation(payload, signature)); + return block.signatures + .filter(sig => !sig.isEmpty) + .map(signature => new BlockAttestation(block.block.header.globalVariables.blockNumber, payload, signature)); }); await this.attestationPool?.addAttestations(attestations); const slots = blocks.map(b => b.block.header.getSlot()).sort((a, b) => Number(a - b)); diff --git a/yarn-project/p2p/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts b/yarn-project/p2p/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts index a7296eed81bf..0373319a0e11 100644 --- a/yarn-project/p2p/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +++ b/yarn-project/p2p/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts @@ -118,13 +118,13 @@ export function describeAttestationPool(getAttestationPool: () => AttestationPoo await ap.addAttestations(attestations); for (const attestation of attestations) { - const slot = attestation.payload.header.globalVariables.slotNumber; + const slot = attestation.payload.header.slotNumber; const archive = attestation.archive.toString(); const retreivedAttestations = await ap.getAttestationsForSlotAndProposal(slot.toBigInt(), archive); expect(retreivedAttestations.length).toBe(1); expect(retreivedAttestations[0].toBuffer()).toEqual(attestation.toBuffer()); - expect(retreivedAttestations[0].payload.header.globalVariables.slotNumber).toEqual(slot); + expect(retreivedAttestations[0].payload.header.slotNumber).toEqual(slot); } }); @@ -136,13 +136,13 @@ export function describeAttestationPool(getAttestationPool: () => AttestationPoo await ap.addAttestations(attestations); for (const attestation of attestations) { - const slot = attestation.payload.header.globalVariables.slotNumber; + const slot = attestation.payload.header.slotNumber; const proposalId = attestation.archive.toString(); const retreivedAttestations = await ap.getAttestationsForSlotAndProposal(slot.toBigInt(), proposalId); expect(retreivedAttestations.length).toBe(1); expect(retreivedAttestations[0].toBuffer()).toEqual(attestation.toBuffer()); - expect(retreivedAttestations[0].payload.header.globalVariables.slotNumber).toEqual(slot); + expect(retreivedAttestations[0].payload.header.slotNumber).toEqual(slot); } }); diff --git a/yarn-project/p2p/src/mem_pools/attestation_pool/kv_attestation_pool.ts b/yarn-project/p2p/src/mem_pools/attestation_pool/kv_attestation_pool.ts index b9297206f3d4..2bfc4796d3ee 100644 --- a/yarn-project/p2p/src/mem_pools/attestation_pool/kv_attestation_pool.ts +++ b/yarn-project/p2p/src/mem_pools/attestation_pool/kv_attestation_pool.ts @@ -46,7 +46,7 @@ export class KvAttestationPool implements AttestationPool { public async addAttestations(attestations: BlockAttestation[]): Promise { await this.store.transactionAsync(async () => { for (const attestation of attestations) { - const slotNumber = attestation.payload.header.globalVariables.slotNumber; + const slotNumber = attestation.payload.header.slotNumber; const proposalId = attestation.archive; const address = attestation.getSender().toString(); @@ -158,7 +158,7 @@ export class KvAttestationPool implements AttestationPool { public async deleteAttestations(attestations: BlockAttestation[]): Promise { await this.store.transactionAsync(async () => { for (const attestation of attestations) { - const slotNumber = attestation.payload.header.globalVariables.slotNumber; + const slotNumber = attestation.payload.header.slotNumber; const proposalId = attestation.archive; const address = attestation.getSender().toString(); diff --git a/yarn-project/p2p/src/mem_pools/attestation_pool/memory_attestation_pool.ts b/yarn-project/p2p/src/mem_pools/attestation_pool/memory_attestation_pool.ts index 426476cc7587..06eac8dc6aa6 100644 --- a/yarn-project/p2p/src/mem_pools/attestation_pool/memory_attestation_pool.ts +++ b/yarn-project/p2p/src/mem_pools/attestation_pool/memory_attestation_pool.ts @@ -37,7 +37,7 @@ export class InMemoryAttestationPool implements AttestationPool { public addAttestations(attestations: BlockAttestation[]): Promise { for (const attestation of attestations) { // Perf: order and group by slot before insertion - const slotNumber = attestation.payload.header.globalVariables.slotNumber; + const slotNumber = attestation.payload.header.slotNumber; const proposalId = attestation.archive.toString(); const address = attestation.getSender(); @@ -120,7 +120,7 @@ export class InMemoryAttestationPool implements AttestationPool { public deleteAttestations(attestations: BlockAttestation[]): Promise { for (const attestation of attestations) { - const slotNumber = attestation.payload.header.globalVariables.slotNumber; + const slotNumber = attestation.payload.header.slotNumber; const slotAttestationMap = this.attestations.get(slotNumber.toBigInt()); if (slotAttestationMap) { const proposalId = attestation.archive.toString(); diff --git a/yarn-project/p2p/src/mem_pools/attestation_pool/mocks.ts b/yarn-project/p2p/src/mem_pools/attestation_pool/mocks.ts index 333ed833b701..7b044a4cf173 100644 --- a/yarn-project/p2p/src/mem_pools/attestation_pool/mocks.ts +++ b/yarn-project/p2p/src/mem_pools/attestation_pool/mocks.ts @@ -35,10 +35,10 @@ export const mockAttestation = ( ): BlockAttestation => { // Use arbitrary numbers for all other than slot const header = makeHeader(1, 2, slot); - const payload = new ConsensusPayload(header, archive, txs); + const payload = new ConsensusPayload(header.toPropose(), archive, header.state, txs); const hash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.blockAttestation); const signature = signer.sign(hash); - return new BlockAttestation(payload, signature); + return new BlockAttestation(header.globalVariables.blockNumber, payload, signature); }; diff --git a/yarn-project/p2p/src/msg_validators/attestation_validator/attestation_validator.ts b/yarn-project/p2p/src/msg_validators/attestation_validator/attestation_validator.ts index f8b3b3acd597..eb503747be85 100644 --- a/yarn-project/p2p/src/msg_validators/attestation_validator/attestation_validator.ts +++ b/yarn-project/p2p/src/msg_validators/attestation_validator/attestation_validator.ts @@ -11,7 +11,7 @@ export class AttestationValidator implements P2PValidator { async validate(message: BlockAttestation): Promise { const { currentSlot, nextSlot } = await this.epochCache.getProposerInCurrentOrNextSlot(); - const slotNumberBigInt = message.payload.header.globalVariables.slotNumber.toBigInt(); + const slotNumberBigInt = message.payload.header.slotNumber.toBigInt(); if (slotNumberBigInt !== currentSlot && slotNumberBigInt !== nextSlot) { return PeerErrorSeverity.HighToleranceError; } diff --git a/yarn-project/p2p/src/msg_validators/block_proposal_validator/block_proposal_validator.ts b/yarn-project/p2p/src/msg_validators/block_proposal_validator/block_proposal_validator.ts index ffec186c9cdb..933a93273a4f 100644 --- a/yarn-project/p2p/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +++ b/yarn-project/p2p/src/msg_validators/block_proposal_validator/block_proposal_validator.ts @@ -16,7 +16,7 @@ export class BlockProposalValidator implements P2PValidator { await this.epochCache.getProposerInCurrentOrNextSlot(); // Check that the attestation is for the current or next slot - const slotNumberBigInt = block.payload.header.globalVariables.slotNumber.toBigInt(); + const slotNumberBigInt = block.payload.header.slotNumber.toBigInt(); if (slotNumberBigInt !== currentSlot && slotNumberBigInt !== nextSlot) { this.logger.debug( `Penalizing peer for invalid slot number ${slotNumberBigInt}, current slot: ${currentSlot}, next slot: ${nextSlot}`, diff --git a/yarn-project/p2p/src/services/libp2p/libp2p_service.ts b/yarn-project/p2p/src/services/libp2p/libp2p_service.ts index 8e04612598f2..f45c1c33e59f 100644 --- a/yarn-project/p2p/src/services/libp2p/libp2p_service.ts +++ b/yarn-project/p2p/src/services/libp2p/libp2p_service.ts @@ -568,7 +568,7 @@ export class LibP2PService extends const attestation = BlockAttestation.fromBuffer(Buffer.from(msg.data)); const result = await this.validateAttestation(source, attestation); this.logger.trace(`validatePropagatedAttestation: ${result}`, { - [Attributes.SLOT_NUMBER]: attestation.payload.header.globalVariables.slotNumber.toString(), + [Attributes.SLOT_NUMBER]: attestation.payload.header.slotNumber.toString(), [Attributes.P2P_ID]: source.toString(), }); return { result, obj: attestation }; @@ -599,7 +599,7 @@ export class LibP2PService extends const block = BlockProposal.fromBuffer(Buffer.from(msg.data)); const result = await this.validateBlockProposal(source, block); this.logger.trace(`validatePropagatedBlock: ${result}`, { - [Attributes.SLOT_NUMBER]: block.payload.header.globalVariables.slotNumber.toString(), + [Attributes.SLOT_NUMBER]: block.payload.header.slotNumber.toString(), [Attributes.P2P_ID]: source.toString(), }); return { result, obj: block }; @@ -652,8 +652,8 @@ export class LibP2PService extends * @param attestation - The attestation to broadcast. */ @trackSpan('Libp2pService.broadcastAttestation', async attestation => ({ - [Attributes.BLOCK_NUMBER]: attestation.payload.header.globalVariables.blockNumber.toNumber(), - [Attributes.SLOT_NUMBER]: attestation.payload.header.globalVariables.slotNumber.toNumber(), + [Attributes.BLOCK_NUMBER]: attestation.blockNumber.toNumber(), + [Attributes.SLOT_NUMBER]: attestation.payload.header.slotNumber.toNumber(), [Attributes.BLOCK_ARCHIVE]: attestation.archive.toString(), [Attributes.P2P_ID]: await attestation.p2pMessageIdentifier().then(i => i.toString()), })) @@ -881,8 +881,8 @@ export class LibP2PService extends * @returns True if the attestation is valid, false otherwise. */ @trackSpan('Libp2pService.validateAttestation', async (_, attestation) => ({ - [Attributes.BLOCK_NUMBER]: attestation.payload.header.globalVariables.blockNumber.toNumber(), - [Attributes.SLOT_NUMBER]: attestation.payload.header.globalVariables.slotNumber.toNumber(), + [Attributes.BLOCK_NUMBER]: attestation.blockNumber.toNumber(), + [Attributes.SLOT_NUMBER]: attestation.payload.header.slotNumber.toNumber(), [Attributes.BLOCK_ARCHIVE]: attestation.archive.toString(), [Attributes.P2P_ID]: await attestation.p2pMessageIdentifier().then(i => i.toString()), })) @@ -903,7 +903,7 @@ export class LibP2PService extends * @returns True if the block proposal is valid, false otherwise. */ @trackSpan('Libp2pService.validateBlockProposal', (_peerId, block) => ({ - [Attributes.SLOT_NUMBER]: block.payload.header.globalVariables.slotNumber.toString(), + [Attributes.SLOT_NUMBER]: block.payload.header.slotNumber.toString(), })) public async validateBlockProposal(peerId: PeerId, block: BlockProposal): Promise { const severity = await this.blockProposalValidator.validate(block); diff --git a/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts b/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts index e03f6c528e63..4695d91c97e8 100644 --- a/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts +++ b/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts @@ -9,6 +9,7 @@ import { getTestData, isGenerateTestDataEnabled } from '@aztec/foundation/testin import { writeTestData } from '@aztec/foundation/testing/files'; import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree'; import { mockTx } from '@aztec/stdlib/testing'; +import type { BlockHeader } from '@aztec/stdlib/tx'; import { getTelemetryClient } from '@aztec/telemetry-client'; import { buildBlock } from '../block_builder/light.js'; @@ -19,6 +20,7 @@ describe('prover/bb_prover/full-rollup', () => { const FAKE_PROOFS = parseBooleanEnv(process.env.FAKE_PROOFS); let context: TestContext; + let previousBlockHeader: BlockHeader; let prover: BBNativeRollupProver | undefined; let log: Logger; @@ -29,6 +31,7 @@ describe('prover/bb_prover/full-rollup', () => { }; log = createLogger('prover-client:test:bb-prover-full-rollup'); context = await TestContext.new(log, 1, FAKE_PROOFS ? undefined : buildProver); + previousBlockHeader = context.getPreviousBlockHeader(); }); afterEach(async () => { @@ -60,7 +63,7 @@ describe('prover/bb_prover/full-rollup', () => { log.info(`Starting new block #${blockNum}`); - await context.orchestrator.startNewBlock(globals, l1ToL2Messages, context.getPreviousBlockHeader(blockNum)); + await context.orchestrator.startNewBlock(globals, l1ToL2Messages, previousBlockHeader); log.info(`Processing public functions`); const [processed, failed] = await context.processPublicFunctions(txs, nonEmptyTxs); expect(processed.length).toBe(nonEmptyTxs); @@ -72,6 +75,7 @@ describe('prover/bb_prover/full-rollup', () => { log.info(`Updating world state with new block`); const block = await buildBlock(processed, globals, l1ToL2Messages, await context.worldState.fork()); + previousBlockHeader = block.header; await context.worldState.handleL2BlockAndMessages(block, l1ToL2Messages); } diff --git a/yarn-project/prover-node/src/prover-node-publisher.test.ts b/yarn-project/prover-node/src/prover-node-publisher.test.ts index 6d4991127d71..95f4394ef75c 100644 --- a/yarn-project/prover-node/src/prover-node-publisher.test.ts +++ b/yarn-project/prover-node/src/prover-node-publisher.test.ts @@ -136,6 +136,7 @@ describe('prover-node-publisher', () => { rollup.getBlock.mockImplementation((blockNumber: bigint) => Promise.resolve({ archive: blocks[Number(blockNumber) - 1].endArchive.root.toString(), + headerHash: '0x', // unused, slotNumber: 0n, // unused, }), ); diff --git a/yarn-project/sequencer-client/src/global_variable_builder/global_builder.ts b/yarn-project/sequencer-client/src/global_variable_builder/global_builder.ts index 7963a9cec301..668d4383a944 100644 --- a/yarn-project/sequencer-client/src/global_variable_builder/global_builder.ts +++ b/yarn-project/sequencer-client/src/global_variable_builder/global_builder.ts @@ -21,9 +21,12 @@ import { createPublicClient, fallback, http } from 'viem'; export class GlobalVariableBuilder implements GlobalVariableBuilderInterface { private log = createLogger('sequencer:global_variable_builder'); - private rollupContract: RollupContract; - private publicClient: ViemPublicClient; - private ethereumSlotDuration: number; + private readonly rollupContract: RollupContract; + private readonly publicClient: ViemPublicClient; + private readonly ethereumSlotDuration: number; + + private chainId?: Fr; + private version?: Fr; constructor(config: L1ReaderConfig & Pick) { const { l1RpcUrls, l1ChainId: chainId, l1Contracts } = config; @@ -58,6 +61,16 @@ export class GlobalVariableBuilder implements GlobalVariableBuilderInterface { return new GasFees(Fr.ZERO, new Fr(await this.rollupContract.getManaBaseFeeAt(timestamp, true))); } + public async getGlobalConstantVariables(): Promise> { + if (!this.chainId) { + this.chainId = new Fr(this.publicClient.chain.id); + } + if (!this.version) { + this.version = new Fr(await this.rollupContract.getVersion()); + } + return { chainId: this.chainId, version: this.version }; + } + /** * Simple builder of global variables that use the minimum time possible. * @param blockNumber - The block number to build global variables for. @@ -72,8 +85,7 @@ export class GlobalVariableBuilder implements GlobalVariableBuilderInterface { feeRecipient: AztecAddress, slotNumber?: bigint, ): Promise { - const version = new Fr(await this.rollupContract.getVersion()); - const chainId = new Fr(this.publicClient.chain.id); + const { chainId, version } = await this.getGlobalConstantVariables(); if (slotNumber === undefined) { const ts = BigInt((await this.publicClient.getBlock()).timestamp + BigInt(this.ethereumSlotDuration)); diff --git a/yarn-project/sequencer-client/src/publisher/sequencer-publisher.test.ts b/yarn-project/sequencer-client/src/publisher/sequencer-publisher.test.ts index cd6c9c96da8b..87405762212f 100644 --- a/yarn-project/sequencer-client/src/publisher/sequencer-publisher.test.ts +++ b/yarn-project/sequencer-client/src/publisher/sequencer-publisher.test.ts @@ -22,7 +22,7 @@ import { L2Block } from '@aztec/stdlib/block'; import express, { json } from 'express'; import type { Server } from 'http'; import { type MockProxy, mock } from 'jest-mock-extended'; -import { type GetTransactionReceiptReturnType, type TransactionReceipt, encodeFunctionData } from 'viem'; +import { type GetTransactionReceiptReturnType, type TransactionReceipt, encodeFunctionData, toHex } from 'viem'; import type { PublisherConfig, TxSenderConfig } from './config.js'; import { SequencerPublisher, VoteType } from './sequencer-publisher.js'; @@ -144,7 +144,7 @@ describe('SequencerPublisher', () => { l2Block = await L2Block.random(42, undefined, undefined, undefined, undefined, Number(currentL2Slot)); - header = l2Block.header.toBuffer(); + header = l2Block.header.toPropose().toBuffer(); archive = l2Block.archive.root.toBuffer(); blockHash = (await l2Block.header.hash()).toBuffer(); }); @@ -220,9 +220,10 @@ describe('SequencerPublisher', () => { const args = [ { - header: `0x${header.toString('hex')}`, - archive: `0x${archive.toString('hex')}`, - blockHash: `0x${blockHash.toString('hex')}`, + header: toHex(header), + archive: toHex(archive), + stateReference: toHex(l2Block.header.state.toBuffer()), + blockHash: toHex(blockHash), oracleInput: { feeAssetPriceModifier: 0n, }, diff --git a/yarn-project/sequencer-client/src/publisher/sequencer-publisher.ts b/yarn-project/sequencer-client/src/publisher/sequencer-publisher.ts index 04ba3d3cd9d2..c25b5e334766 100644 --- a/yarn-project/sequencer-client/src/publisher/sequencer-publisher.ts +++ b/yarn-project/sequencer-client/src/publisher/sequencer-publisher.ts @@ -18,7 +18,7 @@ import { formatViemError, } from '@aztec/ethereum'; import type { L1TxUtilsWithBlobs } from '@aztec/ethereum/l1-tx-utils-with-blobs'; -import { toHex } from '@aztec/foundation/bigint-buffer'; +import { toHex as toPaddedHex } from '@aztec/foundation/bigint-buffer'; import { EthAddress } from '@aztec/foundation/eth-address'; import type { Signature } from '@aztec/foundation/eth-signature'; import { createLogger } from '@aztec/foundation/log'; @@ -26,11 +26,11 @@ import { Timer } from '@aztec/foundation/timer'; import { ForwarderAbi, RollupAbi } from '@aztec/l1-artifacts'; import { ConsensusPayload, SignatureDomainSeparator, getHashedSignaturePayload } from '@aztec/stdlib/p2p'; import type { L1PublishBlockStats } from '@aztec/stdlib/stats'; -import { type BlockHeader, TxHash } from '@aztec/stdlib/tx'; +import { type ProposedBlockHeader, TxHash } from '@aztec/stdlib/tx'; import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client'; import pick from 'lodash.pick'; -import { type TransactionReceipt, encodeFunctionData } from 'viem'; +import { type TransactionReceipt, encodeFunctionData, toHex } from 'viem'; import type { PublisherConfig, TxSenderConfig } from './config.js'; import { SequencerPublisherMetrics } from './sequencer-publisher-metrics.js'; @@ -41,6 +41,8 @@ type L1ProcessArgs = { header: Buffer; /** A root of the archive tree after the L2 block is applied. */ archive: Buffer; + /** State reference after the L2 block is applied. */ + stateReference: Buffer; /** L2 block blobs containing all tx effects. */ blobs: Blob[]; /** L2 block tx hashes */ @@ -285,7 +287,7 @@ export class SequencerPublisher { * */ public async validateBlockForSubmission( - header: BlockHeader, + header: ProposedBlockHeader, attestationData: { digest: Buffer; signatures: Signature[] } = { digest: Buffer.alloc(32), signatures: [], @@ -297,11 +299,11 @@ export class SequencerPublisher { const flags = { ignoreDA: true, ignoreSignatures: formattedSignatures.length == 0 }; const args = [ - `0x${header.toBuffer().toString('hex')}`, + toHex(header.toBuffer()), formattedSignatures, - `0x${attestationData.digest.toString('hex')}`, + toHex(attestationData.digest), ts, - `0x${header.contentCommitment.blobsHash.toString('hex')}`, + toHex(header.contentCommitment.blobsHash), flags, ] as const; @@ -407,14 +409,16 @@ export class SequencerPublisher { txHashes?: TxHash[], opts: { txTimeoutAt?: Date } = {}, ): Promise { - const consensusPayload = new ConsensusPayload(block.header, block.archive.root, txHashes ?? []); + const proposedBlockHeader = block.header.toPropose(); + const consensusPayload = ConsensusPayload.fromBlock(block); const digest = getHashedSignaturePayload(consensusPayload, SignatureDomainSeparator.blockAttestation); const blobs = await Blob.getBlobs(block.body.toBlobFields()); const proposeTxArgs = { - header: block.header.toBuffer(), + header: proposedBlockHeader.toBuffer(), archive: block.archive.root.toBuffer(), + stateReference: block.header.state.toBuffer(), body: block.body.toBuffer(), blobs, attestations, @@ -425,7 +429,7 @@ export class SequencerPublisher { // This means that we can avoid the simulation issues in later checks. // By simulation issue, I mean the fact that the block.timestamp is equal to the last block, not the next, which // make time consistency checks break. - const ts = await this.validateBlockForSubmission(block.header, { + const ts = await this.validateBlockForSubmission(proposedBlockHeader, { digest: digest.toBuffer(), signatures: attestations ?? [], }); @@ -488,8 +492,9 @@ export class SequencerPublisher { const txHashes = encodedData.txHashes ? encodedData.txHashes.map(txHash => txHash.toString()) : []; const args = [ { - header: `0x${encodedData.header.toString('hex')}`, - archive: `0x${encodedData.archive.toString('hex')}`, + header: toHex(encodedData.header), + archive: toHex(encodedData.archive), + stateReference: toHex(encodedData.stateReference), oracleInput: { // We are currently not modifying these. See #9963 feeAssetPriceModifier: 0n, @@ -531,8 +536,8 @@ export class SequencerPublisher { // @note we override checkBlob to false since blobs are not part simulate() stateDiff: [ { - slot: toHex(RollupContract.checkBlobStorageSlot, true), - value: toHex(0n, true), + slot: toPaddedHex(RollupContract.checkBlobStorageSlot, true), + value: toPaddedHex(0n, true), }, ], }, diff --git a/yarn-project/sequencer-client/src/sequencer/sequencer.test.ts b/yarn-project/sequencer-client/src/sequencer/sequencer.test.ts index b2051dc0622e..ffe1a35bb75b 100644 --- a/yarn-project/sequencer-client/src/sequencer/sequencer.test.ts +++ b/yarn-project/sequencer-client/src/sequencer/sequencer.test.ts @@ -77,21 +77,23 @@ describe('sequencer', () => { let feeRecipient: AztecAddress; const gasFees = GasFees.empty(); - const archive = Fr.random(); - const mockedSig = new Signature(Buffer32.fromField(Fr.random()), Buffer32.fromField(Fr.random()), 27); const committee = [EthAddress.random()]; const getSignatures = () => [mockedSig]; const getAttestations = () => { - const attestation = new BlockAttestation(new ConsensusPayload(block.header, archive, []), mockedSig); + const attestation = new BlockAttestation( + block.header.globalVariables.blockNumber, + ConsensusPayload.fromBlock(block), + mockedSig, + ); (attestation as any).sender = committee[0]; return [attestation]; }; const createBlockProposal = () => { - return new BlockProposal(new ConsensusPayload(block.header, archive, [TxHash.random()]), mockedSig); + return new BlockProposal(block.header.globalVariables.blockNumber, ConsensusPayload.fromBlock(block), mockedSig); }; const processTxs = async (txs: Tx[]) => { diff --git a/yarn-project/sequencer-client/src/sequencer/sequencer.ts b/yarn-project/sequencer-client/src/sequencer/sequencer.ts index 26cd17066b67..25d30f9cfba8 100644 --- a/yarn-project/sequencer-client/src/sequencer/sequencer.ts +++ b/yarn-project/sequencer-client/src/sequencer/sequencer.ts @@ -25,15 +25,8 @@ import { import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging'; import { pickFromSchema } from '@aztec/stdlib/schemas'; import type { L2BlockBuiltStats } from '@aztec/stdlib/stats'; -import { AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees'; -import { - BlockHeader, - ContentCommitment, - type GlobalVariables, - StateReference, - Tx, - type TxHash, -} from '@aztec/stdlib/tx'; +import { MerkleTreeId } from '@aztec/stdlib/trees'; +import { ContentCommitment, GlobalVariables, ProposedBlockHeader, Tx, type TxHash } from '@aztec/stdlib/tx'; import { Attributes, L1Metrics, @@ -120,7 +113,7 @@ export class Sequencer { ); // Register the block builder with the validator client for re-execution - this.validatorClient?.registerBlockBuilder(this.buildBlock.bind(this)); + this.validatorClient?.registerBlockBuilder(this.buildBlockFromProposal.bind(this)); // Register the slasher on the publisher to fetch slashing payloads this.publisher.registerSlashPayloadGetter(this.slasherClient.getSlashPayload.bind(this.slasherClient)); @@ -311,14 +304,13 @@ export class Sequencer { }); // If I created a "partial" header here that should make our job much easier. - const proposalHeader = new BlockHeader( - new AppendOnlyTreeSnapshot(chainTipArchive, 1), - ContentCommitment.empty(), - StateReference.empty(), - newGlobalVariables, - Fr.ZERO, - Fr.ZERO, - ); + const proposalHeader = ProposedBlockHeader.from({ + ...newGlobalVariables, + timestamp: newGlobalVariables.timestamp.toBigInt(), + lastArchiveRoot: chainTipArchive, + contentCommitment: ContentCommitment.empty(), + totalManaUsed: Fr.ZERO, + }); let finishedFlushing = false; const pendingTxCount = await this.p2pClient.getPendingTxCount(); @@ -327,7 +319,7 @@ export class Sequencer { // and also we may need to fetch more if we don't have enough valid txs. const pendingTxs = this.p2pClient.iteratePendingTxs(); - await this.buildBlockAndEnqueuePublish(pendingTxs, proposalHeader).catch(err => { + await this.buildBlockAndEnqueuePublish(pendingTxs, proposalHeader, newGlobalVariables).catch(err => { this.log.error(`Error building/enqueuing block`, err, { blockNumber: newBlockNumber, slot }); }); finishedFlushing = true; @@ -426,11 +418,8 @@ export class Sequencer { /** * Build a block * - * Shared between the sequencer and the validator for re-execution - * * @param pendingTxs - The pending transactions to construct the block from * @param newGlobalVariables - The global variables for the new block - * @param historicalHeader - The historical header of the parent * @param opts - Whether to just validate the block as a validator, as opposed to building it as a proposal */ protected async buildBlock( @@ -571,6 +560,31 @@ export class Sequencer { } } + /** + * Build a block from a proposal. Used by the validator to re-execute transactions. + * + * @param blockNumber - The block number of the proposal. + * @param header - The header of the proposal. + * @param pendingTxs - The pending transactions to construct the block from. + * @param opts - Whether to just validate the block as a validator, as opposed to building it as a proposal. + */ + async buildBlockFromProposal( + blockNumber: Fr, + header: ProposedBlockHeader, + pendingTxs: Iterable | AsyncIterable, + opts: { validateOnly?: boolean } = {}, + ) { + const { chainId, version } = await this.globalsBuilder.getGlobalConstantVariables(); + const globalVariables = GlobalVariables.from({ + ...header, + blockNumber, + timestamp: new Fr(header.timestamp), + chainId, + version, + }); + return await this.buildBlock(pendingTxs, globalVariables, opts); + } + /** * @notice Build and propose a block to the chain * @@ -580,18 +594,18 @@ export class Sequencer { * @param pendingTxs - Iterable of pending transactions to construct the block from * @param proposalHeader - The partial header constructed for the proposal */ - @trackSpan('Sequencer.buildBlockAndEnqueuePublish', (_validTxs, proposalHeader) => ({ - [Attributes.BLOCK_NUMBER]: proposalHeader.globalVariables.blockNumber.toNumber(), + @trackSpan('Sequencer.buildBlockAndEnqueuePublish', (_validTxs, _proposalHeader, newGlobalVariables) => ({ + [Attributes.BLOCK_NUMBER]: newGlobalVariables.blockNumber.toNumber(), })) private async buildBlockAndEnqueuePublish( pendingTxs: Iterable | AsyncIterable, - proposalHeader: BlockHeader, + proposalHeader: ProposedBlockHeader, + newGlobalVariables: GlobalVariables, ): Promise { await this.publisher.validateBlockForSubmission(proposalHeader); - const newGlobalVariables = proposalHeader.globalVariables; const blockNumber = newGlobalVariables.blockNumber.toNumber(); - const slot = newGlobalVariables.slotNumber.toBigInt(); + const slot = proposalHeader.slotNumber.toBigInt(); // this.metrics.recordNewBlock(blockNumber, validTxs.length); const workTimer = new Timer(); @@ -604,7 +618,7 @@ export class Sequencer { // TODO(@PhilWindle) We should probably periodically check for things like another // block being published before ours instead of just waiting on our block - await this.publisher.validateBlockForSubmission(block.header); + await this.publisher.validateBlockForSubmission(block.header.toPropose()); const blockStats: L2BlockBuiltStats = { eventName: 'l2-block-built', @@ -671,7 +685,13 @@ export class Sequencer { this.setState(SequencerState.COLLECTING_ATTESTATIONS, slotNumber); this.log.debug('Creating block proposal for validators'); - const proposal = await this.validatorClient.createBlockProposal(block.header, block.archive.root, txHashes); + const proposal = await this.validatorClient.createBlockProposal( + block.header.globalVariables.blockNumber, + block.header.toPropose(), + block.archive.root, + block.header.state, + txHashes, + ); if (!proposal) { const msg = `Failed to create block proposal`; throw new Error(msg); diff --git a/yarn-project/stdlib/src/block/l2_block.ts b/yarn-project/stdlib/src/block/l2_block.ts index 9cbfa8841461..5b4d1b500bcc 100644 --- a/yarn-project/stdlib/src/block/l2_block.ts +++ b/yarn-project/stdlib/src/block/l2_block.ts @@ -1,4 +1,3 @@ -import { sha256, sha256ToField } from '@aztec/foundation/crypto'; import { Fr } from '@aztec/foundation/fields'; import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize'; import { bufferToHex, hexToBuffer } from '@aztec/foundation/string'; @@ -117,65 +116,6 @@ export class L2Block { return this.header.hash(); } - /** - * Computes the public inputs hash for the L2 block. - * The same output as the hash of RootRollupPublicInputs. - * TODO(Miranda): Check where/if this is used (v diff now with epochs and blobs) - * @returns The public input hash for the L2 block as a field element. - */ - // TODO(#4844) - getPublicInputsHash(): Fr { - const preimage = [ - this.header.globalVariables, - AppendOnlyTreeSnapshot.zero(), // this.startNoteHashTreeSnapshot / commitments, - AppendOnlyTreeSnapshot.zero(), // this.startNullifierTreeSnapshot, - AppendOnlyTreeSnapshot.zero(), // this.startPublicDataTreeSnapshot, - AppendOnlyTreeSnapshot.zero(), // this.startL1ToL2MessageTreeSnapshot, - this.header.lastArchive, - this.header.state.partial.noteHashTree, - this.header.state.partial.nullifierTree, - this.header.state.partial.publicDataTree, - this.header.state.l1ToL2MessageTree, - this.archive, - ]; - - return sha256ToField(preimage); - } - - /** - * Computes the start state hash (should equal contract data before block). - * @returns The start state hash for the L2 block. - */ - // TODO(#4844) - getStartStateHash() { - const inputValue = serializeToBuffer( - new Fr(Number(this.header.globalVariables.blockNumber.toBigInt()) - 1), - AppendOnlyTreeSnapshot.zero(), // this.startNoteHashTreeSnapshot, - AppendOnlyTreeSnapshot.zero(), // this.startNullifierTreeSnapshot, - AppendOnlyTreeSnapshot.zero(), // this.startPublicDataTreeSnapshot, - AppendOnlyTreeSnapshot.zero(), // this.startL1ToL2MessageTreeSnapshot, - this.header.lastArchive, - ); - return sha256(inputValue); - } - - /** - * Computes the end state hash (should equal contract data after block). - * @returns The end state hash for the L2 block. - */ - // TODO(#4844) - getEndStateHash() { - const inputValue = serializeToBuffer( - this.header.globalVariables.blockNumber, - this.header.state.partial.noteHashTree, - this.header.state.partial.nullifierTree, - this.header.state.partial.publicDataTree, - this.header.state.l1ToL2MessageTree, - this.archive, - ); - return sha256(inputValue); - } - /** * Returns stats used for logging. * @returns Stats on tx count, number, and log size and count. diff --git a/yarn-project/stdlib/src/p2p/block_attestation.ts b/yarn-project/stdlib/src/p2p/block_attestation.ts index f1b4ca50ab5e..74072381b589 100644 --- a/yarn-project/stdlib/src/p2p/block_attestation.ts +++ b/yarn-project/stdlib/src/p2p/block_attestation.ts @@ -2,7 +2,7 @@ import { Buffer32 } from '@aztec/foundation/buffer'; import { keccak256, recoverAddress } from '@aztec/foundation/crypto'; import type { EthAddress } from '@aztec/foundation/eth-address'; import { Signature } from '@aztec/foundation/eth-signature'; -import type { Fr } from '@aztec/foundation/fields'; +import { Fr } from '@aztec/foundation/fields'; import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize'; import { z } from 'zod'; @@ -31,6 +31,9 @@ export class BlockAttestation extends Gossipable { private sender: EthAddress | undefined; constructor( + /** The block number of the attestation. */ + public readonly blockNumber: Fr, + /** The payload of the message, and what the signature is over */ public readonly payload: ConsensusPayload, @@ -43,10 +46,11 @@ export class BlockAttestation extends Gossipable { static get schema(): ZodFor { return z .object({ + blockNumber: Fr.schema, payload: ConsensusPayload.schema, signature: Signature.schema, }) - .transform(obj => new BlockAttestation(obj.payload, obj.signature)); + .transform(obj => new BlockAttestation(obj.blockNumber, obj.payload, obj.signature)); } override p2pMessageIdentifier(): Promise { @@ -58,11 +62,7 @@ export class BlockAttestation extends Gossipable { } get slotNumber(): Fr { - return this.payload.header.globalVariables.slotNumber; - } - - get blockNumber(): Fr { - return this.payload.header.globalVariables.blockNumber; + return this.payload.header.slotNumber; } /**Get sender @@ -86,19 +86,23 @@ export class BlockAttestation extends Gossipable { } toBuffer(): Buffer { - return serializeToBuffer([this.payload, this.signature]); + return serializeToBuffer([this.blockNumber, this.payload, this.signature]); } static fromBuffer(buf: Buffer | BufferReader): BlockAttestation { const reader = BufferReader.asReader(buf); - return new BlockAttestation(reader.readObject(ConsensusPayload), reader.readObject(Signature)); + return new BlockAttestation( + reader.readObject(Fr), + reader.readObject(ConsensusPayload), + reader.readObject(Signature), + ); } static empty(): BlockAttestation { - return new BlockAttestation(ConsensusPayload.empty(), Signature.empty()); + return new BlockAttestation(Fr.ZERO, ConsensusPayload.empty(), Signature.empty()); } getSize(): number { - return this.payload.getSize() + this.signature.getSize(); + return this.blockNumber.size + this.payload.getSize() + this.signature.getSize(); } } diff --git a/yarn-project/stdlib/src/p2p/block_proposal.ts b/yarn-project/stdlib/src/p2p/block_proposal.ts index 0bee1a3f40c3..99f227ee1425 100644 --- a/yarn-project/stdlib/src/p2p/block_proposal.ts +++ b/yarn-project/stdlib/src/p2p/block_proposal.ts @@ -2,7 +2,7 @@ import { Buffer32 } from '@aztec/foundation/buffer'; import { keccak256, recoverAddress } from '@aztec/foundation/crypto'; import type { EthAddress } from '@aztec/foundation/eth-address'; import { Signature } from '@aztec/foundation/eth-signature'; -import type { Fr } from '@aztec/foundation/fields'; +import { Fr } from '@aztec/foundation/fields'; import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize'; import { ConsensusPayload } from './consensus_payload.js'; @@ -32,6 +32,9 @@ export class BlockProposal extends Gossipable { private sender: EthAddress | undefined; constructor( + /** The number of the block */ + public readonly blockNumber: Fr, + /** The payload of the message, and what the signature is over */ public readonly payload: ConsensusPayload, @@ -50,21 +53,18 @@ export class BlockProposal extends Gossipable { } get slotNumber(): Fr { - return this.payload.header.globalVariables.slotNumber; - } - - get blockNumber(): Fr { - return this.payload.header.globalVariables.blockNumber; + return this.payload.header.slotNumber; } static async createProposalFromSigner( + blockNumber: Fr, payload: ConsensusPayload, payloadSigner: (payload: Buffer32) => Promise, ) { const hashed = getHashedSignaturePayload(payload, SignatureDomainSeparator.blockProposal); const sig = await payloadSigner(hashed); - return new BlockProposal(payload, sig); + return new BlockProposal(blockNumber, payload, sig); } /**Get Sender @@ -85,15 +85,15 @@ export class BlockProposal extends Gossipable { } toBuffer(): Buffer { - return serializeToBuffer([this.payload, this.signature]); + return serializeToBuffer([this.blockNumber, this.payload, this.signature]); } static fromBuffer(buf: Buffer | BufferReader): BlockProposal { const reader = BufferReader.asReader(buf); - return new BlockProposal(reader.readObject(ConsensusPayload), reader.readObject(Signature)); + return new BlockProposal(reader.readObject(Fr), reader.readObject(ConsensusPayload), reader.readObject(Signature)); } getSize(): number { - return this.payload.getSize() + this.signature.getSize(); + return this.blockNumber.size + this.payload.getSize() + this.signature.getSize(); } } diff --git a/yarn-project/stdlib/src/p2p/consensus_payload.ts b/yarn-project/stdlib/src/p2p/consensus_payload.ts index ea1f11bb57fb..bd590cb45e60 100644 --- a/yarn-project/stdlib/src/p2p/consensus_payload.ts +++ b/yarn-project/stdlib/src/p2p/consensus_payload.ts @@ -4,22 +4,23 @@ import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize'; import { hexToBuffer } from '@aztec/foundation/string'; import type { FieldsOf } from '@aztec/foundation/types'; -import { encodeAbiParameters, parseAbiParameters } from 'viem'; +import { encodeAbiParameters, parseAbiParameters, toHex } from 'viem'; import { z } from 'zod'; import type { L2Block } from '../block/l2_block.js'; -import { BlockHeader } from '../tx/block_header.js'; -import { TxHash } from '../tx/tx_hash.js'; +import { ProposedBlockHeader, StateReference, TxHash } from '../tx/index.js'; import type { Signable, SignatureDomainSeparator } from './signature_utils.js'; export class ConsensusPayload implements Signable { private size: number | undefined; constructor( - /** The block header the attestation is made over */ - public readonly header: BlockHeader, - // TODO(https://github.com/AztecProtocol/aztec-packages/pull/7727#discussion_r1713670830): temporary + /** The proposed block header the attestation is made over */ + public readonly header: ProposedBlockHeader, + /** The archive root after the block is added */ public readonly archive: Fr, + /** The state reference after the block is added */ + public readonly stateReference: StateReference, /** The sequence of transactions in the block */ public readonly txHashes: TxHash[], ) {} @@ -27,30 +28,40 @@ export class ConsensusPayload implements Signable { static get schema() { return z .object({ - header: BlockHeader.schema, + header: ProposedBlockHeader.schema, archive: schemas.Fr, + stateReference: StateReference.schema, txHashes: z.array(TxHash.schema), }) - .transform(obj => new ConsensusPayload(obj.header, obj.archive, obj.txHashes)); + .transform(obj => new ConsensusPayload(obj.header, obj.archive, obj.stateReference, obj.txHashes)); } static getFields(fields: FieldsOf) { - return [fields.header, fields.archive, fields.txHashes] as const; + return [fields.header, fields.archive, fields.stateReference, fields.txHashes] as const; } getPayloadToSign(domainSeparator: SignatureDomainSeparator): Buffer { - const abi = parseAbiParameters('uint8, (bytes32, (uint256), bytes, bytes32[])'); + const abi = parseAbiParameters('uint8, (bytes32, bytes, (uint256), bytes32, bytes32[])'); + const archiveRoot = this.archive.toString(); + const stateReference = toHex(this.stateReference.toBuffer()); + const headerHash = this.header.hash().toString(); const txArray = this.txHashes.map(tx => tx.toString()); const encodedData = encodeAbiParameters(abi, [ domainSeparator, - [this.archive.toString(), [0n] /* @todo See #9963 */, this.header.toString(), txArray], + [archiveRoot, stateReference, [0n] /* @todo See #9963 */, headerHash, txArray], ] as const); return hexToBuffer(encodedData); } toBuffer(): Buffer { - const buffer = serializeToBuffer([this.header, this.archive, this.txHashes.length, this.txHashes]); + const buffer = serializeToBuffer([ + this.header, + this.archive, + this.stateReference, + this.txHashes.length, + this.txHashes, + ]); this.size = buffer.length; return buffer; } @@ -58,26 +69,28 @@ export class ConsensusPayload implements Signable { static fromBuffer(buf: Buffer | BufferReader): ConsensusPayload { const reader = BufferReader.asReader(buf); return new ConsensusPayload( - reader.readObject(BlockHeader), + reader.readObject(ProposedBlockHeader), reader.readObject(Fr), + reader.readObject(StateReference), reader.readArray(reader.readNumber(), TxHash), ); } static fromFields(fields: FieldsOf): ConsensusPayload { - return new ConsensusPayload(fields.header, fields.archive, fields.txHashes); + return new ConsensusPayload(fields.header, fields.archive, fields.stateReference, fields.txHashes); } static fromBlock(block: L2Block): ConsensusPayload { return new ConsensusPayload( - block.header, + block.header.toPropose(), block.archive.root, + block.header.state, block.body.txEffects.map(tx => tx.txHash), ); } static empty(): ConsensusPayload { - return new ConsensusPayload(BlockHeader.empty(), Fr.ZERO, []); + return new ConsensusPayload(ProposedBlockHeader.empty(), Fr.ZERO, StateReference.empty(), []); } /** diff --git a/yarn-project/stdlib/src/rollup/block_root_or_block_merge_public_inputs.ts b/yarn-project/stdlib/src/rollup/block_root_or_block_merge_public_inputs.ts index 48c17e262506..0847f94778db 100644 --- a/yarn-project/stdlib/src/rollup/block_root_or_block_merge_public_inputs.ts +++ b/yarn-project/stdlib/src/rollup/block_root_or_block_merge_public_inputs.ts @@ -36,6 +36,10 @@ export class BlockRootOrBlockMergePublicInputs { * Note: Truncated to 31 bytes to fit in Fr. */ public outHash: Fr, + /** + * The hashes of the proposed block headers of the constituent blocks. + */ + public proposedBlockHeaderHashes: Tuple, /** * The summed `transaction_fee`s and recipients of the constituent blocks. */ @@ -71,6 +75,7 @@ export class BlockRootOrBlockMergePublicInputs { reader.readObject(GlobalVariables), reader.readObject(GlobalVariables), Fr.fromBuffer(reader), + reader.readArray(AZTEC_MAX_EPOCH_DURATION, Fr), reader.readArray(AZTEC_MAX_EPOCH_DURATION, FeeRecipient), Fr.fromBuffer(reader), Fr.fromBuffer(reader), @@ -90,6 +95,7 @@ export class BlockRootOrBlockMergePublicInputs { this.startGlobalVariables, this.endGlobalVariables, this.outHash, + this.proposedBlockHeaderHashes, this.fees, this.vkTreeRoot, this.protocolContractTreeRoot, diff --git a/yarn-project/stdlib/src/rollup/root_rollup.ts b/yarn-project/stdlib/src/rollup/root_rollup.ts index 817cdf7772d4..787762625937 100644 --- a/yarn-project/stdlib/src/rollup/root_rollup.ts +++ b/yarn-project/stdlib/src/rollup/root_rollup.ts @@ -107,7 +107,10 @@ export class RootRollupPublicInputs { public endTimestamp: Fr, public endBlockNumber: Fr, public outHash: Fr, + public proposedBlockHeaderHashes: Tuple, public fees: Tuple, + public chainId: Fr, + public version: Fr, public vkTreeRoot: Fr, public protocolContractTreeRoot: Fr, public proverId: Fr, @@ -121,7 +124,10 @@ export class RootRollupPublicInputs { fields.endTimestamp, fields.endBlockNumber, fields.outHash, + fields.proposedBlockHeaderHashes, fields.fees, + fields.chainId, + fields.version, fields.vkTreeRoot, fields.protocolContractTreeRoot, fields.proverId, @@ -154,10 +160,13 @@ export class RootRollupPublicInputs { Fr.fromBuffer(reader), Fr.fromBuffer(reader), Fr.fromBuffer(reader), + reader.readArray(AZTEC_MAX_EPOCH_DURATION, Fr), reader.readArray(AZTEC_MAX_EPOCH_DURATION, FeeRecipient), Fr.fromBuffer(reader), Fr.fromBuffer(reader), Fr.fromBuffer(reader), + Fr.fromBuffer(reader), + Fr.fromBuffer(reader), reader.readArray(AZTEC_MAX_EPOCH_DURATION, BlockBlobPublicInputs), ); } @@ -188,10 +197,13 @@ export class RootRollupPublicInputs { Fr.random(), Fr.random(), Fr.random(), + makeTuple(AZTEC_MAX_EPOCH_DURATION, Fr.random), makeTuple(AZTEC_MAX_EPOCH_DURATION, FeeRecipient.random), Fr.random(), Fr.random(), Fr.random(), + Fr.random(), + Fr.random(), makeTuple(AZTEC_MAX_EPOCH_DURATION, BlockBlobPublicInputs.empty), ); } diff --git a/yarn-project/stdlib/src/tests/factories.ts b/yarn-project/stdlib/src/tests/factories.ts index 07820a8b8046..3bbdd6a7585f 100644 --- a/yarn-project/stdlib/src/tests/factories.ts +++ b/yarn-project/stdlib/src/tests/factories.ts @@ -716,6 +716,7 @@ export function makeBlockRootOrBlockMergeRollupPublicInputs( globalVariables ?? makeGlobalVariables(seed + 0x400), globalVariables ?? makeGlobalVariables(seed + 0x500), fr(seed + 0x600), + makeTuple(AZTEC_MAX_EPOCH_DURATION, () => fr(seed), 0x650), makeTuple(AZTEC_MAX_EPOCH_DURATION, () => makeFeeRecipient(seed), 0x700), fr(seed + 0x800), fr(seed + 0x801), @@ -884,10 +885,13 @@ export function makeRootRollupPublicInputs(seed = 0): RootRollupPublicInputs { fr(seed + 0x300), fr(seed + 0x400), fr(seed + 0x500), + makeTuple(AZTEC_MAX_EPOCH_DURATION, () => fr(seed), 0x650), makeTuple(AZTEC_MAX_EPOCH_DURATION, () => makeFeeRecipient(seed), 0x600), fr(seed + 0x700), fr(seed + 0x701), fr(seed + 0x702), + fr(seed + 0x703), + fr(seed + 0x704), makeTuple(AZTEC_MAX_EPOCH_DURATION, () => makeBlockBlobPublicInputs(seed), 0x800), ); } diff --git a/yarn-project/stdlib/src/tests/mocks.ts b/yarn-project/stdlib/src/tests/mocks.ts index 9e947cefaa63..84dd062dd9c3 100644 --- a/yarn-project/stdlib/src/tests/mocks.ts +++ b/yarn-project/stdlib/src/tests/mocks.ts @@ -25,7 +25,14 @@ import { BlockProposal } from '../p2p/block_proposal.js'; import { ConsensusPayload } from '../p2p/consensus_payload.js'; import { SignatureDomainSeparator, getHashedSignaturePayloadEthSignedMessage } from '../p2p/signature_utils.js'; import { ClientIvcProof } from '../proofs/client_ivc_proof.js'; -import { BlockHeader, HashedValues, PrivateCallExecutionResult, PrivateExecutionResult, Tx } from '../tx/index.js'; +import { + BlockHeader, + HashedValues, + PrivateCallExecutionResult, + PrivateExecutionResult, + StateReference, + Tx, +} from '../tx/index.js'; import { PublicSimulationOutput } from '../tx/public_simulation_output.js'; import { TxSimulationResult, accumulatePrivateReturnValues } from '../tx/simulated_tx.js'; import { TxEffect } from '../tx/tx_effect.js'; @@ -218,6 +225,7 @@ export interface MakeConsensusPayloadOptions { signer?: Secp256k1Signer; header?: BlockHeader; archive?: Fr; + stateReference?: StateReference; txHashes?: TxHash[]; } @@ -225,32 +233,40 @@ const makeAndSignConsensusPayload = ( domainSeparator: SignatureDomainSeparator, options?: MakeConsensusPayloadOptions, ) => { + const header = options?.header ?? makeHeader(1); const { signer = Secp256k1Signer.random(), - header = makeHeader(1), archive = Fr.random(), + stateReference = header.state, txHashes = [0, 1, 2, 3, 4, 5].map(() => TxHash.random()), } = options ?? {}; const payload = ConsensusPayload.fromFields({ - header, + header: header.toPropose(), archive, + stateReference, txHashes, }); const hash = getHashedSignaturePayloadEthSignedMessage(payload, domainSeparator); const signature = signer.sign(hash); - return { payload, signature }; + return { blockNumber: header.globalVariables.blockNumber, payload, signature }; }; export const makeBlockProposal = (options?: MakeConsensusPayloadOptions): BlockProposal => { - const { payload, signature } = makeAndSignConsensusPayload(SignatureDomainSeparator.blockProposal, options); - return new BlockProposal(payload, signature); + const { blockNumber, payload, signature } = makeAndSignConsensusPayload( + SignatureDomainSeparator.blockProposal, + options, + ); + return new BlockProposal(blockNumber, payload, signature); }; // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8028) export const makeBlockAttestation = (options?: MakeConsensusPayloadOptions): BlockAttestation => { - const { payload, signature } = makeAndSignConsensusPayload(SignatureDomainSeparator.blockAttestation, options); - return new BlockAttestation(payload, signature); + const { blockNumber, payload, signature } = makeAndSignConsensusPayload( + SignatureDomainSeparator.blockAttestation, + options, + ); + return new BlockAttestation(blockNumber, payload, signature); }; diff --git a/yarn-project/stdlib/src/tx/__snapshots__/proposed_block_header.test.ts.snap b/yarn-project/stdlib/src/tx/__snapshots__/proposed_block_header.test.ts.snap new file mode 100644 index 000000000000..a61b752a2ac7 --- /dev/null +++ b/yarn-project/stdlib/src/tx/__snapshots__/proposed_block_header.test.ts.snap @@ -0,0 +1,5 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`ProposedBlockHeader computes empty hash 1`] = `Fr<0x002e384af86a480f952aa16443fd29646a9063865e62d7c403fc7ed697bb7712>`; + +exports[`ProposedBlockHeader computes hash 1`] = `Fr<0x00f99d951c77fcee0f9806913dfbcc004ba7db1181ff74c5727b22b341b016ea>`; diff --git a/yarn-project/stdlib/src/tx/block_header.ts b/yarn-project/stdlib/src/tx/block_header.ts index 85ba6636cc5a..2015ec153459 100644 --- a/yarn-project/stdlib/src/tx/block_header.ts +++ b/yarn-project/stdlib/src/tx/block_header.ts @@ -12,6 +12,7 @@ import { z } from 'zod'; import { AppendOnlyTreeSnapshot } from '../trees/append_only_tree_snapshot.js'; import { ContentCommitment } from './content_commitment.js'; import { GlobalVariables } from './global_variables.js'; +import { ProposedBlockHeader } from './proposed_block_header.js'; import { StateReference } from './state_reference.js'; /** A header of an L2 block. */ @@ -160,6 +161,19 @@ export class BlockHeader { return poseidon2HashWithSeparator(this.toFields(), GeneratorIndex.BLOCK_HASH); } + toPropose(): ProposedBlockHeader { + return new ProposedBlockHeader( + this.lastArchive.root, + this.contentCommitment, + this.globalVariables.slotNumber, + this.globalVariables.timestamp.toBigInt(), + this.globalVariables.coinbase, + this.globalVariables.feeRecipient, + this.globalVariables.gasFees, + this.totalManaUsed, + ); + } + toInspect() { return { lastArchive: this.lastArchive.root.toString(), diff --git a/yarn-project/stdlib/src/tx/index.ts b/yarn-project/stdlib/src/tx/index.ts index 1aacac28472e..7270e103276a 100644 --- a/yarn-project/stdlib/src/tx/index.ts +++ b/yarn-project/stdlib/src/tx/index.ts @@ -11,6 +11,7 @@ export * from './tx_constant_data.js'; export * from './tx_context.js'; export * from './tx_request.js'; export * from './private_execution_result.js'; +export * from './proposed_block_header.js'; export * from './public_call_request_with_calldata.js'; export * from './tx_hash.js'; export * from './tx_receipt.js'; diff --git a/yarn-project/stdlib/src/tx/proposed_block_header.test.ts b/yarn-project/stdlib/src/tx/proposed_block_header.test.ts new file mode 100644 index 000000000000..9fb3efbc4694 --- /dev/null +++ b/yarn-project/stdlib/src/tx/proposed_block_header.test.ts @@ -0,0 +1,41 @@ +import { PROPOSED_BLOCK_HEADER_LENGTH_BYTES } from '@aztec/constants'; +import { setupCustomSnapshotSerializers } from '@aztec/foundation/testing'; +import { updateInlineTestData } from '@aztec/foundation/testing/files'; + +import { makeHeader } from '../tests/factories.js'; +import { ProposedBlockHeader } from './proposed_block_header.js'; + +describe('ProposedBlockHeader', () => { + let header: ProposedBlockHeader; + + beforeAll(() => { + const seed = 9870243; + setupCustomSnapshotSerializers(expect); + header = makeHeader(seed, undefined).toPropose(); + }); + + it('serializes to buffer and deserializes it back', () => { + const buffer = header.toBuffer(); + expect(buffer.length).toBe(PROPOSED_BLOCK_HEADER_LENGTH_BYTES); + const res = ProposedBlockHeader.fromBuffer(buffer); + expect(res).toEqual(header); + }); + + it('computes hash', () => { + const hash = header.hash(); + expect(hash).toMatchSnapshot(); + }); + + it('computes empty hash', () => { + const header = ProposedBlockHeader.empty(); + const hash = header.hash(); + expect(hash).toMatchSnapshot(); + + // Run with AZTEC_GENERATE_TEST_DATA=1 to update noir test data + updateInlineTestData( + 'noir-projects/noir-protocol-circuits/crates/types/src/proposed_block_header.nr', + 'test_data_empty_hash', + hash.toString(), + ); + }); +}); diff --git a/yarn-project/stdlib/src/tx/proposed_block_header.ts b/yarn-project/stdlib/src/tx/proposed_block_header.ts new file mode 100644 index 000000000000..6d7e85ecf9f8 --- /dev/null +++ b/yarn-project/stdlib/src/tx/proposed_block_header.ts @@ -0,0 +1,168 @@ +import { sha256ToField } from '@aztec/foundation/crypto'; +import { EthAddress } from '@aztec/foundation/eth-address'; +import { Fr } from '@aztec/foundation/fields'; +import type { ZodFor } from '@aztec/foundation/schemas'; +import { BufferReader, bigintToUInt64BE, serializeToBuffer } from '@aztec/foundation/serialize'; +import { bufferToHex, hexToBuffer } from '@aztec/foundation/string'; +import type { FieldsOf } from '@aztec/foundation/types'; + +import { inspect } from 'util'; +import { z } from 'zod'; + +import { AztecAddress } from '../aztec-address/index.js'; +import { GasFees } from '../gas/index.js'; +import { schemas } from '../schemas/index.js'; +import type { UInt64 } from '../types/shared.js'; +import { ContentCommitment } from './content_commitment.js'; + +/** The proposed values of an L2 block. */ +export class ProposedBlockHeader { + constructor( + /** Root of the archive tree before this block is added. */ + public lastArchiveRoot: Fr, + /** Content commitment of the L2 block. */ + public contentCommitment: ContentCommitment, + /** Slot number of the L2 block */ + public slotNumber: Fr, + /** Timestamp of the L2 block. */ + public timestamp: UInt64, + /** Recipient of block reward. */ + public coinbase: EthAddress, + /** Address to receive fees. */ + public feeRecipient: AztecAddress, + /** Global gas prices for this block. */ + public gasFees: GasFees, + /** Total mana used in the block, computed by the root rollup circuit */ + public totalManaUsed: Fr, + ) {} + + static get schema(): ZodFor { + return z + .object({ + lastArchiveRoot: schemas.Fr, + contentCommitment: ContentCommitment.schema, + slotNumber: schemas.Fr, + timestamp: schemas.BigInt, + coinbase: schemas.EthAddress, + feeRecipient: schemas.AztecAddress, + gasFees: GasFees.schema, + totalManaUsed: schemas.Fr, + }) + .transform(ProposedBlockHeader.from); + } + + static getFields(fields: FieldsOf) { + return [ + fields.lastArchiveRoot, + fields.contentCommitment, + fields.slotNumber, + fields.timestamp, + fields.coinbase, + fields.feeRecipient, + fields.gasFees, + fields.totalManaUsed, + ] as const; + } + + static from(fields: FieldsOf) { + return new ProposedBlockHeader(...ProposedBlockHeader.getFields(fields)); + } + + static fromBuffer(buffer: Buffer | BufferReader): ProposedBlockHeader { + const reader = BufferReader.asReader(buffer); + + return new ProposedBlockHeader( + reader.readObject(Fr), + reader.readObject(ContentCommitment), + Fr.fromBuffer(reader), + reader.readUInt64(), + reader.readObject(EthAddress), + reader.readObject(AztecAddress), + reader.readObject(GasFees), + reader.readObject(Fr), + ); + } + + toBuffer() { + // Note: The order here must match the order in the HeaderLib solidity library. + return serializeToBuffer([ + this.lastArchiveRoot, + this.contentCommitment, + this.slotNumber, + bigintToUInt64BE(this.timestamp), + this.coinbase, + this.feeRecipient, + this.gasFees, + this.totalManaUsed, + ]); + } + + hash(): Fr { + return sha256ToField([this.toBuffer()]); + } + + static empty(fields: Partial> = {}): ProposedBlockHeader { + return ProposedBlockHeader.from({ + lastArchiveRoot: Fr.ZERO, + contentCommitment: ContentCommitment.empty(), + slotNumber: Fr.ZERO, + timestamp: 0n, + coinbase: EthAddress.ZERO, + feeRecipient: AztecAddress.ZERO, + gasFees: GasFees.empty(), + totalManaUsed: Fr.ZERO, + ...fields, + }); + } + + isEmpty(): boolean { + return ( + this.lastArchiveRoot.isZero() && + this.contentCommitment.isEmpty() && + this.slotNumber.isZero() && + this.timestamp === 0n && + this.coinbase.isZero() && + this.feeRecipient.isZero() && + this.gasFees.isEmpty() && + this.totalManaUsed.isZero() + ); + } + + /** + * Serializes this instance into a string. + * @returns Encoded string. + */ + public toString() { + return bufferToHex(this.toBuffer()); + } + + static fromString(str: string): ProposedBlockHeader { + return ProposedBlockHeader.fromBuffer(hexToBuffer(str)); + } + + toInspect() { + return { + lastArchive: this.lastArchiveRoot.toString(), + contentCommitment: this.contentCommitment.toInspect(), + slotNumber: this.slotNumber.toBigInt(), + timestamp: this.timestamp, + coinbase: this.coinbase.toString(), + feeRecipient: this.feeRecipient.toString(), + gasFees: this.gasFees.toInspect(), + totalManaUsed: this.totalManaUsed.toBigInt(), + }; + } + + [inspect.custom]() { + return `Header { + lastArchiveRoot: ${this.lastArchiveRoot.toString()}, + contentCommitment: ${inspect(this.contentCommitment)}, + slotNumber: ${this.slotNumber.toBigInt()}, + timestamp: ${this.timestamp}, + coinbase: ${this.coinbase.toString()}, + feeRecipient: ${this.feeRecipient.toString()}, + gasFees: ${this.gasFees.toInspect()}, + totalManaUsed: ${this.totalManaUsed.toBigInt()}, +}`; + } +} diff --git a/yarn-project/stdlib/src/types/shared.ts b/yarn-project/stdlib/src/types/shared.ts index ae40dd959530..c29fb64995c7 100644 --- a/yarn-project/stdlib/src/types/shared.ts +++ b/yarn-project/stdlib/src/types/shared.ts @@ -25,6 +25,11 @@ export class Vector { */ export type UInt32 = number; +/** + * A type alias for a 64-bit unsigned integer. + */ +export type UInt64 = bigint; + /** * CircuitType replaces ComposerType for now. When using Plonk, CircuitType is equivalent to the information of the proving system that will be used * to construct a proof. In the future Aztec zk stack, more information must be specified (e.g., the curve over which circuits are constructed; diff --git a/yarn-project/validator-client/src/duties/validation_service.test.ts b/yarn-project/validator-client/src/duties/validation_service.test.ts index 1b19684949d4..fdf10130dbf2 100644 --- a/yarn-project/validator-client/src/duties/validation_service.test.ts +++ b/yarn-project/validator-client/src/duties/validation_service.test.ts @@ -19,9 +19,10 @@ describe('ValidationService', () => { it('creates a proposal', async () => { const { - payload: { header, archive, txHashes }, + blockNumber, + payload: { header, archive, stateReference, txHashes }, } = makeBlockProposal(); - const proposal = await service.createBlockProposal(header, archive, txHashes); + const proposal = await service.createBlockProposal(blockNumber, header, archive, stateReference, txHashes); expect(proposal.getSender()).toEqual(store.getAddress()); }); diff --git a/yarn-project/validator-client/src/duties/validation_service.ts b/yarn-project/validator-client/src/duties/validation_service.ts index 5f61267cd44b..9deb1412fca9 100644 --- a/yarn-project/validator-client/src/duties/validation_service.ts +++ b/yarn-project/validator-client/src/duties/validation_service.ts @@ -2,7 +2,7 @@ import { Buffer32 } from '@aztec/foundation/buffer'; import { keccak256 } from '@aztec/foundation/crypto'; import type { Fr } from '@aztec/foundation/fields'; import { BlockAttestation, BlockProposal, ConsensusPayload, SignatureDomainSeparator } from '@aztec/stdlib/p2p'; -import type { BlockHeader, TxHash } from '@aztec/stdlib/tx'; +import type { ProposedBlockHeader, StateReference, TxHash } from '@aztec/stdlib/tx'; import type { ValidatorKeyStore } from '../key_store/interface.js'; @@ -12,16 +12,27 @@ export class ValidationService { /** * Create a block proposal with the given header, archive, and transactions * + * @param blockNumber - The block number this proposal is for * @param header - The block header * @param archive - The archive of the current block * @param txs - TxHash[] ordered list of transactions * * @returns A block proposal signing the above information (not the current implementation!!!) */ - createBlockProposal(header: BlockHeader, archive: Fr, txs: TxHash[]): Promise { + createBlockProposal( + blockNumber: Fr, + header: ProposedBlockHeader, + archive: Fr, + stateReference: StateReference, + txs: TxHash[], + ): Promise { const payloadSigner = (payload: Buffer32) => this.keyStore.signMessage(payload); - return BlockProposal.createProposalFromSigner(new ConsensusPayload(header, archive, txs), payloadSigner); + return BlockProposal.createProposalFromSigner( + blockNumber, + new ConsensusPayload(header, archive, stateReference, txs), + payloadSigner, + ); } /** @@ -40,6 +51,6 @@ export class ValidationService { keccak256(proposal.payload.getPayloadToSign(SignatureDomainSeparator.blockAttestation)), ); const sig = await this.keyStore.signMessage(buf); - return new BlockAttestation(proposal.payload, sig); + return new BlockAttestation(proposal.blockNumber, proposal.payload, sig); } } diff --git a/yarn-project/validator-client/src/validator.test.ts b/yarn-project/validator-client/src/validator.test.ts index 0e0836cceae5..fb35246fd3ba 100644 --- a/yarn-project/validator-client/src/validator.test.ts +++ b/yarn-project/validator-client/src/validator.test.ts @@ -68,7 +68,13 @@ describe('ValidationService', () => { const archive = Fr.random(); const txs = [1, 2, 3, 4, 5].map(() => TxHash.random()); - const blockProposal = await validatorClient.createBlockProposal(header, archive, txs); + const blockProposal = await validatorClient.createBlockProposal( + header.globalVariables.blockNumber, + header.toPropose(), + archive, + header.state, + txs, + ); expect(blockProposal).toBeDefined(); @@ -186,10 +192,7 @@ describe('ValidationService', () => { makeBlockAttestation({ signer: attestor2, archive, txHashes }), ]; p2pClient.getAttestationsForSlot.mockImplementation((slot, proposalId) => { - if ( - slot === proposal.payload.header.globalVariables.slotNumber.toBigInt() && - proposalId === proposal.archive.toString() - ) { + if (slot === proposal.payload.header.slotNumber.toBigInt() && proposalId === proposal.archive.toString()) { return Promise.resolve(expectedAttestations); } return Promise.resolve([]); diff --git a/yarn-project/validator-client/src/validator.ts b/yarn-project/validator-client/src/validator.ts index da5930cb8087..02b61261b58f 100644 --- a/yarn-project/validator-client/src/validator.ts +++ b/yarn-project/validator-client/src/validator.ts @@ -1,7 +1,7 @@ import type { EpochCache } from '@aztec/epoch-cache'; import { Buffer32 } from '@aztec/foundation/buffer'; import type { EthAddress } from '@aztec/foundation/eth-address'; -import type { Fr } from '@aztec/foundation/fields'; +import { Fr } from '@aztec/foundation/fields'; import { createLogger } from '@aztec/foundation/log'; import { RunningPromise } from '@aztec/foundation/running-promise'; import { sleep } from '@aztec/foundation/sleep'; @@ -10,7 +10,7 @@ import type { P2P } from '@aztec/p2p'; import { BlockProposalValidator } from '@aztec/p2p/msg_validators'; import type { L2Block } from '@aztec/stdlib/block'; import type { BlockAttestation, BlockProposal } from '@aztec/stdlib/p2p'; -import type { BlockHeader, GlobalVariables, Tx, TxHash } from '@aztec/stdlib/tx'; +import type { ProposedBlockHeader, StateReference, Tx, TxHash } from '@aztec/stdlib/tx'; import { type TelemetryClient, WithTracer, getTelemetryClient } from '@aztec/telemetry-client'; import type { ValidatorClientConfig } from './config.js'; @@ -34,8 +34,9 @@ import { ValidatorMetrics } from './metrics.js'; * We reuse the sequencer's block building functionality for re-execution */ type BlockBuilderCallback = ( + blockNumber: Fr, + header: ProposedBlockHeader, txs: Iterable | AsyncIterableIterator, - globalVariables: GlobalVariables, opts?: { validateOnly?: boolean }, ) => Promise<{ block: L2Block; @@ -51,7 +52,13 @@ export interface Validator { registerBlockBuilder(blockBuilder: BlockBuilderCallback): void; // Block validation responsibilities - createBlockProposal(header: BlockHeader, archive: Fr, txs: TxHash[]): Promise; + createBlockProposal( + blockNumber: Fr, + header: ProposedBlockHeader, + archive: Fr, + stateReference: StateReference, + txs: TxHash[], + ): Promise; attestToProposal(proposal: BlockProposal): void; broadcastBlockProposal(proposal: BlockProposal): void; @@ -180,7 +187,7 @@ export class ValidatorClient extends WithTracer implements Validator { const slotNumber = proposal.slotNumber.toNumber(); const proposalInfo = { slotNumber, - blockNumber: proposal.payload.header.globalVariables.blockNumber.toNumber(), + blockNumber: proposal.blockNumber.toNumber(), archive: proposal.payload.archive.toString(), txCount: proposal.payload.txHashes.length, txHashes: proposal.payload.txHashes.map(txHash => txHash.toString()), @@ -259,7 +266,7 @@ export class ValidatorClient extends WithTracer implements Validator { // Use the sequencer's block building logic to re-execute the transactions const stopTimer = this.metrics.reExecutionTimer(); - const { block, numFailedTxs } = await this.blockBuilder(txs, header.globalVariables, { + const { block, numFailedTxs } = await this.blockBuilder(proposal.blockNumber, header, txs, { validateOnly: true, }); stopTimer(); @@ -309,13 +316,25 @@ export class ValidatorClient extends WithTracer implements Validator { } } - async createBlockProposal(header: BlockHeader, archive: Fr, txs: TxHash[]): Promise { - if (this.previousProposal?.slotNumber.equals(header.globalVariables.slotNumber)) { + async createBlockProposal( + blockNumber: Fr, + header: ProposedBlockHeader, + archive: Fr, + stateReference: StateReference, + txs: TxHash[], + ): Promise { + if (this.previousProposal?.slotNumber.equals(header.slotNumber)) { this.log.verbose(`Already made a proposal for the same slot, skipping proposal`); return Promise.resolve(undefined); } - const newProposal = await this.validationService.createBlockProposal(header, archive, txs); + const newProposal = await this.validationService.createBlockProposal( + blockNumber, + header, + archive, + stateReference, + txs, + ); this.previousProposal = newProposal; return newProposal; } @@ -327,7 +346,7 @@ export class ValidatorClient extends WithTracer implements Validator { // TODO(https://github.com/AztecProtocol/aztec-packages/issues/7962) async collectAttestations(proposal: BlockProposal, required: number, deadline: Date): Promise { // Wait and poll the p2pClient's attestation pool for this block until we have enough attestations - const slot = proposal.payload.header.globalVariables.slotNumber.toBigInt(); + const slot = proposal.payload.header.slotNumber.toBigInt(); this.log.debug(`Collecting ${required} attestations for slot ${slot} with deadline ${deadline.toISOString()}`); if (+deadline < this.dateProvider.now()) {