Contract Overview
Balance:
16 FTM
My Name Tag:
Not Available
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
Contract Source Code Verified (Exact Match)
Contract Name:
CipherCore_ETH_1
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; import "./MerkleTreeWithHistory.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; interface IVerifier { function verifyProof( uint[2] memory a, uint[2][2] memory b, uint[2] memory c, uint[2] memory input ) external pure returns (bool r); } contract CipherCore_ETH_1 is MerkleTreeWithHistory, ReentrancyGuard { mapping(bytes32 => bool) public nullifiers; mapping(bytes32 => bool) public commitments; IVerifier public immutable verifier; uint public denomination = 1 ether; uint public platFormFee = 0.005 ether; // 0.5% address payable public platFormAddress; event Deposit( bytes32 indexed commitment, uint32 leafIndex, uint256 timestamp ); event Withdrawal(address to, bytes32 _nullifier, address relayer, uint256 fee); event Check(bytes32 _root); constructor( uint32 _levels, IHasher _hasher, IVerifier _verifier ) MerkleTreeWithHistory(_levels, _hasher) { verifier = _verifier; } function deposit(uint256 _commitment) external payable nonReentrant { require(!commitments[bytes32(_commitment)], "commitment already submitted"); require(denomination == msg.value, "invalid deposit amount"); commitments[bytes32(_commitment)] = true; uint32 insertedIndex = _insert(bytes32(_commitment)); emit Deposit(bytes32(_commitment), insertedIndex, block.timestamp); } function withdraw(uint256 _nullifier, uint256 _root, uint[2] memory _proof_a, uint[2][2] memory _proof_b, uint[2] memory _proof_c, uint256 _relayerFee, address payable _relayer, address payable _recipient) external nonReentrant { _nullify(bytes32(_nullifier),bytes32(_root),_proof_a,_proof_b,_proof_c); require(_relayerFee <= denomination / 2, "Fee too high"); (bool success, ) = _recipient.call{ value: denomination - _relayerFee - platFormFee }(""); require(success, "payment to recipient failed"); if (_relayerFee > 0) { (success, ) = _relayer.call{ value: _relayerFee }(""); require(success, "payment to relayer failed"); } if (platFormFee > 0) { (success, ) = platFormAddress.call{ value: platFormFee }(""); require(success, "payment to feeAddress failed"); } emit Check(bytes32(_root)); emit Withdrawal(_recipient, bytes32(_nullifier), _relayer, _relayerFee); } function _nullify( bytes32 _nullifier, bytes32 _root, uint[2] memory _proof_a, uint[2][2] memory _proof_b, uint[2] memory _proof_c ) internal { require(!nullifiers[_nullifier], "nullifier already submitted"); require(isKnownRoot(_root), "cant't find your merkle root"); require( verifier.verifyProof( _proof_a, _proof_b, _proof_c, [uint256(_nullifier), uint256(_root)] ), "Invalid proof" ); nullifiers[_nullifier] = true; } function isSpent(bytes32 _nullifierHash) public view returns (bool) { return nullifiers[_nullifierHash]; } function setPlatformParamas(address payable _platformAddress, uint _platformFee) external { require(_platformFee <= denomination / 2 , "fee too high"); if (platFormAddress != address(0)) { require(msg.sender == platFormAddress, "Unauthorized!"); } platFormAddress = _platformAddress; platFormFee = _platformFee; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; interface IHasher { function MiMCSponge( uint256 in_xL, uint256 in_xR, uint256 k ) external pure returns (uint256 xL, uint256 xR); } contract MerkleTreeWithHistory { uint256 public constant FIELD_SIZE = 21888242871839275222246405745257275088548364400416034343698204186575808495617; uint256 public constant ZERO_VALUE = 21663839004416932945382355908790599225266501822907911457504978515578255421292; IHasher public immutable hasher; uint32 public levels; // the following variables are made public for easier testing and debugging and // are not supposed to be accessed in regular code // filledSubtrees and roots could be bytes32[size], but using mappings makes it cheaper because // it removes index range check on every interaction mapping(uint256 => bytes32) public filledSubtrees; mapping(uint256 => bytes32) public roots; uint32 public constant ROOT_HISTORY_SIZE = 30; uint32 public currentRootIndex = 0; uint32 public nextIndex = 0; constructor(uint32 _levels, IHasher _hasher) { require(_levels > 0, "_levels should be greater than zero"); require(_levels < 32, "_levels should be less than 32"); levels = _levels; hasher = _hasher; for (uint32 i = 0; i < _levels; i++) { filledSubtrees[i] = zeros(i); } roots[0] = zeros(_levels - 1); } /** @dev Hash 2 tree leaves, returns MiMC(_left, _right) */ function hashLeftRight( uint256 _left, uint256 _right ) public view returns (bytes32) { require( _left < FIELD_SIZE, "_left should be inside the field" ); require( _right < FIELD_SIZE, "_right should be inside the field" ); uint256 R = _left; uint256 C = 0; (R, C) = hasher.MiMCSponge(R, C, 0); R = addmod(R, _right, FIELD_SIZE); (R, C) = hasher.MiMCSponge(R, C, 0); return bytes32(R); } function _insert(bytes32 _leaf) internal returns (uint32 index) { uint32 _nextIndex = nextIndex; require( _nextIndex != uint32(2) ** levels, "Merkle tree is full. No more leaves can be added" ); uint32 currentIndex = _nextIndex; bytes32 currentLevelHash = _leaf; bytes32 left; bytes32 right; for (uint32 i = 0; i < levels; i++) { if (currentIndex % 2 == 0) { left = currentLevelHash; right = zeros(i); filledSubtrees[i] = currentLevelHash; } else { left = filledSubtrees[i]; right = currentLevelHash; } currentLevelHash = hashLeftRight(uint256(left), uint256(right)); currentIndex /= 2; } uint32 newRootIndex = (currentRootIndex + 1) % ROOT_HISTORY_SIZE; currentRootIndex = newRootIndex; roots[newRootIndex] = currentLevelHash; nextIndex = _nextIndex + 1; return _nextIndex; } /** @dev Whether the root is present in the root history */ function isKnownRoot(bytes32 _root) public view returns (bool) { if (_root == 0) { return false; } uint32 _currentRootIndex = currentRootIndex; uint32 i = _currentRootIndex; do { if (_root == roots[i]) { return true; } if (i == 0) { i = ROOT_HISTORY_SIZE; } i--; } while (i != _currentRootIndex); return false; } /** @dev Returns the last root */ function getLastRoot() public view returns (bytes32) { return roots[currentRootIndex]; } /// @dev provides Zero (Empty) elements for a MiMC MerkleTree. Up to 32 levels function zeros(uint256 i) public pure returns (bytes32) { if (i == 0) return bytes32( 0x2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c ); else if (i == 1) return bytes32( 0x256a6135777eee2fd26f54b8b7037a25439d5235caee224154186d2b8a52e31d ); else if (i == 2) return bytes32( 0x1151949895e82ab19924de92c40a3d6f7bcb60d92b00504b8199613683f0c200 ); else if (i == 3) return bytes32( 0x20121ee811489ff8d61f09fb89e313f14959a0f28bb428a20dba6b0b068b3bdb ); else if (i == 4) return bytes32( 0x0a89ca6ffa14cc462cfedb842c30ed221a50a3d6bf022a6a57dc82ab24c157c9 ); else if (i == 5) return bytes32( 0x24ca05c2b5cd42e890d6be94c68d0689f4f21c9cec9c0f13fe41d566dfb54959 ); else if (i == 6) return bytes32( 0x1ccb97c932565a92c60156bdba2d08f3bf1377464e025cee765679e604a7315c ); else if (i == 7) return bytes32( 0x19156fbd7d1a8bf5cba8909367de1b624534ebab4f0f79e003bccdd1b182bdb4 ); else if (i == 8) return bytes32( 0x261af8c1f0912e465744641409f622d466c3920ac6e5ff37e36604cb11dfff80 ); else if (i == 9) return bytes32( 0x0058459724ff6ca5a1652fcbc3e82b93895cf08e975b19beab3f54c217d1c007 ); else if (i == 10) return bytes32( 0x1f04ef20dee48d39984d8eabe768a70eafa6310ad20849d4573c3c40c2ad1e30 ); else if (i == 11) return bytes32( 0x1bea3dec5dab51567ce7e200a30f7ba6d4276aeaa53e2686f962a46c66d511e5 ); else if (i == 12) return bytes32( 0x0ee0f941e2da4b9e31c3ca97a40d8fa9ce68d97c084177071b3cb46cd3372f0f ); else if (i == 13) return bytes32( 0x1ca9503e8935884501bbaf20be14eb4c46b89772c97b96e3b2ebf3a36a948bbd ); else if (i == 14) return bytes32( 0x133a80e30697cd55d8f7d4b0965b7be24057ba5dc3da898ee2187232446cb108 ); else if (i == 15) return bytes32( 0x13e6d8fc88839ed76e182c2a779af5b2c0da9dd18c90427a644f7e148a6253b6 ); else if (i == 16) return bytes32( 0x1eb16b057a477f4bc8f572ea6bee39561098f78f15bfb3699dcbb7bd8db61854 ); else if (i == 17) return bytes32( 0x0da2cb16a1ceaabf1c16b838f7a9e3f2a3a3088d9e0a6debaa748114620696ea ); else if (i == 18) return bytes32( 0x24a3b3d822420b14b5d8cb6c28a574f01e98ea9e940551d2ebd75cee12649f9d ); else if (i == 19) return bytes32( 0x198622acbd783d1b0d9064105b1fc8e4d8889de95c4c519b3f635809fe6afc05 ); else if (i == 20) return bytes32( 0x29d7ed391256ccc3ea596c86e933b89ff339d25ea8ddced975ae2fe30b5296d4 ); else if (i == 21) return bytes32( 0x19be59f2f0413ce78c0c3703a3a5451b1d7f39629fa33abd11548a76065b2967 ); else if (i == 22) return bytes32( 0x1ff3f61797e538b70e619310d33f2a063e7eb59104e112e95738da1254dc3453 ); else if (i == 23) return bytes32( 0x10c16ae9959cf8358980d9dd9616e48228737310a10e2b6b731c1a548f036c48 ); else if (i == 24) return bytes32( 0x0ba433a63174a90ac20992e75e3095496812b652685b5e1a2eae0b1bf4e8fcd1 ); else if (i == 25) return bytes32( 0x019ddb9df2bc98d987d0dfeca9d2b643deafab8f7036562e627c3667266a044c ); else if (i == 26) return bytes32( 0x2d3c88b23175c5a5565db928414c66d1912b11acf974b2e644caaac04739ce99 ); else if (i == 27) return bytes32( 0x2eab55f6ae4e66e32c5189eed5c470840863445760f5ed7e7b69b2a62600f354 ); else if (i == 28) return bytes32( 0x002df37a2642621802383cf952bf4dd1f32e05433beeb1fd41031fb7eace979d ); else if (i == 29) return bytes32( 0x104aeb41435db66c3e62feccc1d6f5d98d0a0ed75d1374db457cf462e3a1f427 ); else if (i == 30) return bytes32( 0x1f3c6fd858e9a7d4b0d1f38e256a09d81d5a5e3c963987e2d4b814cfab7c6ebb ); else if (i == 31) return bytes32( 0x2c7a07d20dff79d01fecedc1134284a8d08436606c93693b67e333f671bf69cc ); else revert("Index out of bounds"); } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint32","name":"_levels","type":"uint32"},{"internalType":"contract IHasher","name":"_hasher","type":"address"},{"internalType":"contract IVerifier","name":"_verifier","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_root","type":"bytes32"}],"name":"Check","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"commitment","type":"bytes32"},{"indexed":false,"internalType":"uint32","name":"leafIndex","type":"uint32"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"bytes32","name":"_nullifier","type":"bytes32"},{"indexed":false,"internalType":"address","name":"relayer","type":"address"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"Withdrawal","type":"event"},{"inputs":[],"name":"FIELD_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ROOT_HISTORY_SIZE","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ZERO_VALUE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"commitments","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentRootIndex","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"denomination","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_commitment","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"filledSubtrees","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_left","type":"uint256"},{"internalType":"uint256","name":"_right","type":"uint256"}],"name":"hashLeftRight","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasher","outputs":[{"internalType":"contract IHasher","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_root","type":"bytes32"}],"name":"isKnownRoot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_nullifierHash","type":"bytes32"}],"name":"isSpent","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"levels","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextIndex","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"nullifiers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"platFormAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"platFormFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"roots","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_platformAddress","type":"address"},{"internalType":"uint256","name":"_platformFee","type":"uint256"}],"name":"setPlatformParamas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"verifier","outputs":[{"internalType":"contract IVerifier","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nullifier","type":"uint256"},{"internalType":"uint256","name":"_root","type":"uint256"},{"internalType":"uint256[2]","name":"_proof_a","type":"uint256[2]"},{"internalType":"uint256[2][2]","name":"_proof_b","type":"uint256[2][2]"},{"internalType":"uint256[2]","name":"_proof_c","type":"uint256[2]"},{"internalType":"uint256","name":"_relayerFee","type":"uint256"},{"internalType":"address payable","name":"_relayer","type":"address"},{"internalType":"address payable","name":"_recipient","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"}],"name":"zeros","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"}]
Contract Creation Code
60c06040526000600360006101000a81548163ffffffff021916908363ffffffff1602179055506000600360046101000a81548163ffffffff021916908363ffffffff160217905550670de0b6b3a76400006007556611c37937e080006008553480156200006c57600080fd5b5060405162003cad38038062003cad833981810160405281019062000092919062000a4b565b828260008263ffffffff1611620000e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000d79062000b2e565b60405180910390fd5b60208263ffffffff16106200012c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001239062000ba0565b60405180910390fd5b816000806101000a81548163ffffffff021916908363ffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060005b8263ffffffff168163ffffffff161015620001e257620001af8163ffffffff166200026660201b60201c565b600160008363ffffffff168152602001908152602001600020819055508080620001d99062000bf1565b91505062000183565b5062000208600183620001f6919062000c22565b63ffffffff166200026660201b60201c565b6002600080815260200190815260200160002081905550505060016004819055508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505050505062000cd3565b60008082036200029c577f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c60001b905062000942565b60018203620002d1577f256a6135777eee2fd26f54b8b7037a25439d5235caee224154186d2b8a52e31d60001b905062000942565b6002820362000306577f1151949895e82ab19924de92c40a3d6f7bcb60d92b00504b8199613683f0c20060001b905062000942565b600382036200033b577f20121ee811489ff8d61f09fb89e313f14959a0f28bb428a20dba6b0b068b3bdb60001b905062000942565b6004820362000370577f0a89ca6ffa14cc462cfedb842c30ed221a50a3d6bf022a6a57dc82ab24c157c960001b905062000942565b60058203620003a5577f24ca05c2b5cd42e890d6be94c68d0689f4f21c9cec9c0f13fe41d566dfb5495960001b905062000942565b60068203620003da577f1ccb97c932565a92c60156bdba2d08f3bf1377464e025cee765679e604a7315c60001b905062000942565b600782036200040f577f19156fbd7d1a8bf5cba8909367de1b624534ebab4f0f79e003bccdd1b182bdb460001b905062000942565b6008820362000444577f261af8c1f0912e465744641409f622d466c3920ac6e5ff37e36604cb11dfff8060001b905062000942565b6009820362000478577e58459724ff6ca5a1652fcbc3e82b93895cf08e975b19beab3f54c217d1c00760001b905062000942565b600a8203620004ad577f1f04ef20dee48d39984d8eabe768a70eafa6310ad20849d4573c3c40c2ad1e3060001b905062000942565b600b8203620004e2577f1bea3dec5dab51567ce7e200a30f7ba6d4276aeaa53e2686f962a46c66d511e560001b905062000942565b600c820362000517577f0ee0f941e2da4b9e31c3ca97a40d8fa9ce68d97c084177071b3cb46cd3372f0f60001b905062000942565b600d82036200054c577f1ca9503e8935884501bbaf20be14eb4c46b89772c97b96e3b2ebf3a36a948bbd60001b905062000942565b600e820362000581577f133a80e30697cd55d8f7d4b0965b7be24057ba5dc3da898ee2187232446cb10860001b905062000942565b600f8203620005b6577f13e6d8fc88839ed76e182c2a779af5b2c0da9dd18c90427a644f7e148a6253b660001b905062000942565b60108203620005eb577f1eb16b057a477f4bc8f572ea6bee39561098f78f15bfb3699dcbb7bd8db6185460001b905062000942565b6011820362000620577f0da2cb16a1ceaabf1c16b838f7a9e3f2a3a3088d9e0a6debaa748114620696ea60001b905062000942565b6012820362000655577f24a3b3d822420b14b5d8cb6c28a574f01e98ea9e940551d2ebd75cee12649f9d60001b905062000942565b601382036200068a577f198622acbd783d1b0d9064105b1fc8e4d8889de95c4c519b3f635809fe6afc0560001b905062000942565b60148203620006bf577f29d7ed391256ccc3ea596c86e933b89ff339d25ea8ddced975ae2fe30b5296d460001b905062000942565b60158203620006f4577f19be59f2f0413ce78c0c3703a3a5451b1d7f39629fa33abd11548a76065b296760001b905062000942565b6016820362000729577f1ff3f61797e538b70e619310d33f2a063e7eb59104e112e95738da1254dc345360001b905062000942565b601782036200075e577f10c16ae9959cf8358980d9dd9616e48228737310a10e2b6b731c1a548f036c4860001b905062000942565b6018820362000793577f0ba433a63174a90ac20992e75e3095496812b652685b5e1a2eae0b1bf4e8fcd160001b905062000942565b60198203620007c8577f019ddb9df2bc98d987d0dfeca9d2b643deafab8f7036562e627c3667266a044c60001b905062000942565b601a8203620007fd577f2d3c88b23175c5a5565db928414c66d1912b11acf974b2e644caaac04739ce9960001b905062000942565b601b820362000832577f2eab55f6ae4e66e32c5189eed5c470840863445760f5ed7e7b69b2a62600f35460001b905062000942565b601c820362000866577e2df37a2642621802383cf952bf4dd1f32e05433beeb1fd41031fb7eace979d60001b905062000942565b601d82036200089b577f104aeb41435db66c3e62feccc1d6f5d98d0a0ed75d1374db457cf462e3a1f42760001b905062000942565b601e8203620008d0577f1f3c6fd858e9a7d4b0d1f38e256a09d81d5a5e3c963987e2d4b814cfab7c6ebb60001b905062000942565b601f820362000905577f2c7a07d20dff79d01fecedc1134284a8d08436606c93693b67e333f671bf69cc60001b905062000942565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009399062000cb1565b60405180910390fd5b919050565b600080fd5b600063ffffffff82169050919050565b62000967816200094c565b81146200097357600080fd5b50565b60008151905062000987816200095c565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009ba826200098d565b9050919050565b6000620009ce82620009ad565b9050919050565b620009e081620009c1565b8114620009ec57600080fd5b50565b60008151905062000a0081620009d5565b92915050565b600062000a1382620009ad565b9050919050565b62000a258162000a06565b811462000a3157600080fd5b50565b60008151905062000a458162000a1a565b92915050565b60008060006060848603121562000a675762000a6662000947565b5b600062000a778682870162000976565b935050602062000a8a86828701620009ef565b925050604062000a9d8682870162000a34565b9150509250925092565b600082825260208201905092915050565b7f5f6c6576656c732073686f756c642062652067726561746572207468616e207a60008201527f65726f0000000000000000000000000000000000000000000000000000000000602082015250565b600062000b1660238362000aa7565b915062000b238262000ab8565b604082019050919050565b6000602082019050818103600083015262000b498162000b07565b9050919050565b7f5f6c6576656c732073686f756c64206265206c657373207468616e2033320000600082015250565b600062000b88601e8362000aa7565b915062000b958262000b50565b602082019050919050565b6000602082019050818103600083015262000bbb8162000b79565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000bfe826200094c565b915063ffffffff820362000c175762000c1662000bc2565b5b600182019050919050565b600062000c2f826200094c565b915062000c3c836200094c565b9250828203905063ffffffff81111562000c5b5762000c5a62000bc2565b5b92915050565b7f496e646578206f7574206f6620626f756e647300000000000000000000000000600082015250565b600062000c9960138362000aa7565b915062000ca68262000c61565b602082019050919050565b6000602082019050818103600083015262000ccc8162000c8a565b9050919050565b60805160a051612f9f62000d0e600039600081816105c10152611811015260008181610bbf01528181610c9901526116c70152612f9f6000f3fe6080604052600436106101405760003560e01c806390eeb02b116100b6578063e82955881161006f578063e829558814610479578063ec2a5740146104b6578063ec732959146104e1578063ed33639f1461050c578063f178e47c14610537578063fc7e9c6f1461057457610140565b806390eeb02b14610362578063b6b55f251461038d578063ba70f757146103a9578063c2b40ae4146103d4578063cd87a3b414610411578063e5285dcc1461043c57610140565b80634ecf518b116101085780634ecf518b1461022a5780635bb93995146102555780636d9833e314610292578063839df945146102cf57806388a7c05e1461030c5780638bca6d161461033757610140565b80632997e86b146101455780632b7ac3f31461018257806331cb9a3b146101ad578063414a37ba146101d6578063487636c014610201575b600080fd5b34801561015157600080fd5b5061016c60048036038101906101679190611b8f565b61059f565b6040516101799190611bd7565b60405180910390f35b34801561018e57600080fd5b506101976105bf565b6040516101a49190611c71565b60405180910390f35b3480156101b957600080fd5b506101d460048036038101906101cf9190611d00565b6105e3565b005b3480156101e257600080fd5b506101eb610767565b6040516101f89190611d4f565b60405180910390f35b34801561020d57600080fd5b5061022860048036038101906102239190611f62565b61078b565b005b34801561023657600080fd5b5061023f610adc565b60405161024c919061203b565b60405180910390f35b34801561026157600080fd5b5061027c60048036038101906102779190612056565b610af0565b60405161028991906120a5565b60405180910390f35b34801561029e57600080fd5b506102b960048036038101906102b49190611b8f565b610d4b565b6040516102c69190611bd7565b60405180910390f35b3480156102db57600080fd5b506102f660048036038101906102f19190611b8f565b610de8565b6040516103039190611bd7565b60405180910390f35b34801561031857600080fd5b50610321610e08565b60405161032e91906120cf565b60405180910390f35b34801561034357600080fd5b5061034c610e2e565b6040516103599190611d4f565b60405180910390f35b34801561036e57600080fd5b50610377610e34565b604051610384919061203b565b60405180910390f35b6103a760048036038101906103a291906120ea565b610e4a565b005b3480156103b557600080fd5b506103be610f82565b6040516103cb91906120a5565b60405180910390f35b3480156103e057600080fd5b506103fb60048036038101906103f691906120ea565b610fb5565b60405161040891906120a5565b60405180910390f35b34801561041d57600080fd5b50610426610fcd565b604051610433919061203b565b60405180910390f35b34801561044857600080fd5b50610463600480360381019061045e9190611b8f565b610fd2565b6040516104709190611bd7565b60405180910390f35b34801561048557600080fd5b506104a0600480360381019061049b91906120ea565b610ffc565b6040516104ad91906120a5565b60405180910390f35b3480156104c257600080fd5b506104cb61169b565b6040516104d89190611d4f565b60405180910390f35b3480156104ed57600080fd5b506104f66116a1565b6040516105039190611d4f565b60405180910390f35b34801561051857600080fd5b506105216116c5565b60405161052e9190612138565b60405180910390f35b34801561054357600080fd5b5061055e600480360381019061055991906120ea565b6116e9565b60405161056b91906120a5565b60405180910390f35b34801561058057600080fd5b50610589611701565b604051610596919061203b565b60405180910390f35b60056020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60026007546105f291906121b1565b811115610634576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062b9061223f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461071b57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461071a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610711906122ab565b60405180910390fd5b5b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806008819055505050565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181565b610793611717565b6107a68860001b8860001b888888611766565b60026007546107b591906121b1565b8311156107f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ee90612317565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16600854856007546108219190612337565b61082b9190612337565b6040516108379061239c565b60006040518083038185875af1925050503d8060008114610874576040519150601f19603f3d011682016040523d82523d6000602084013e610879565b606091505b50509050806108bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b4906123fd565b60405180910390fd5b6000841115610973578273ffffffffffffffffffffffffffffffffffffffff16846040516108ea9061239c565b60006040518083038185875af1925050503d8060008114610927576040519150601f19603f3d011682016040523d82523d6000602084013e61092c565b606091505b50508091505080610972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096990612469565b60405180910390fd5b5b60006008541115610a4f57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166008546040516109c69061239c565b60006040518083038185875af1925050503d8060008114610a03576040519150601f19603f3d011682016040523d82523d6000602084013e610a08565b606091505b50508091505080610a4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a45906124d5565b60405180910390fd5b5b7f412a7038da14fcc38021fb24ee4f1db984419a88f7278fa6da8a65437aa6c1ac8860001b604051610a8191906120a5565b60405180910390a17fe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c34931828a60001b8587604051610ac19493929190612516565b60405180910390a150610ad261193b565b5050505050505050565b60008054906101000a900463ffffffff1681565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018310610b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4b906125a7565b60405180910390fd5b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018210610bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bad90612639565b60405180910390fd5b600083905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633f1a1187838360006040518463ffffffff1660e01b8152600401610c1b93929190612694565b6040805180830381865afa158015610c37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5b91906126e0565b80925081935050507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000180610c9257610c91612153565b5b84830891507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633f1a1187838360006040518463ffffffff1660e01b8152600401610cf593929190612694565b6040805180830381865afa158015610d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3591906126e0565b80925081935050508160001b9250505092915050565b60008060001b8203610d605760009050610de3565b6000600360009054906101000a900463ffffffff16905060008190505b600260008263ffffffff168152602001908152602001600020548403610da857600192505050610de3565b60008163ffffffff1603610dbb57601e90505b8080610dc690612720565b9150508163ffffffff168163ffffffff1603610d7d576000925050505b919050565b60066020528060005260406000206000915054906101000a900460ff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b600360009054906101000a900463ffffffff1681565b610e52611717565b600660008260001b815260200190815260200160002060009054906101000a900460ff1615610eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ead90612795565b60405180910390fd5b3460075414610efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef190612801565b60405180910390fd5b6001600660008360001b815260200190815260200160002060006101000a81548160ff0219169083151502179055506000610f378260001b611945565b90508160001b7fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff1968242604051610f6e929190612821565b60405180910390a250610f7f61193b565b50565b600060026000600360009054906101000a900463ffffffff1663ffffffff16815260200190815260200160002054905090565b60026020528060005260406000206000915090505481565b601e81565b60006005600083815260200190815260200160002060009054906101000a900460ff169050919050565b6000808203611030577f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c60001b9050611696565b60018203611063577f256a6135777eee2fd26f54b8b7037a25439d5235caee224154186d2b8a52e31d60001b9050611696565b60028203611096577f1151949895e82ab19924de92c40a3d6f7bcb60d92b00504b8199613683f0c20060001b9050611696565b600382036110c9577f20121ee811489ff8d61f09fb89e313f14959a0f28bb428a20dba6b0b068b3bdb60001b9050611696565b600482036110fc577f0a89ca6ffa14cc462cfedb842c30ed221a50a3d6bf022a6a57dc82ab24c157c960001b9050611696565b6005820361112f577f24ca05c2b5cd42e890d6be94c68d0689f4f21c9cec9c0f13fe41d566dfb5495960001b9050611696565b60068203611162577f1ccb97c932565a92c60156bdba2d08f3bf1377464e025cee765679e604a7315c60001b9050611696565b60078203611195577f19156fbd7d1a8bf5cba8909367de1b624534ebab4f0f79e003bccdd1b182bdb460001b9050611696565b600882036111c8577f261af8c1f0912e465744641409f622d466c3920ac6e5ff37e36604cb11dfff8060001b9050611696565b600982036111fa577e58459724ff6ca5a1652fcbc3e82b93895cf08e975b19beab3f54c217d1c00760001b9050611696565b600a820361122d577f1f04ef20dee48d39984d8eabe768a70eafa6310ad20849d4573c3c40c2ad1e3060001b9050611696565b600b8203611260577f1bea3dec5dab51567ce7e200a30f7ba6d4276aeaa53e2686f962a46c66d511e560001b9050611696565b600c8203611293577f0ee0f941e2da4b9e31c3ca97a40d8fa9ce68d97c084177071b3cb46cd3372f0f60001b9050611696565b600d82036112c6577f1ca9503e8935884501bbaf20be14eb4c46b89772c97b96e3b2ebf3a36a948bbd60001b9050611696565b600e82036112f9577f133a80e30697cd55d8f7d4b0965b7be24057ba5dc3da898ee2187232446cb10860001b9050611696565b600f820361132c577f13e6d8fc88839ed76e182c2a779af5b2c0da9dd18c90427a644f7e148a6253b660001b9050611696565b6010820361135f577f1eb16b057a477f4bc8f572ea6bee39561098f78f15bfb3699dcbb7bd8db6185460001b9050611696565b60118203611392577f0da2cb16a1ceaabf1c16b838f7a9e3f2a3a3088d9e0a6debaa748114620696ea60001b9050611696565b601282036113c5577f24a3b3d822420b14b5d8cb6c28a574f01e98ea9e940551d2ebd75cee12649f9d60001b9050611696565b601382036113f8577f198622acbd783d1b0d9064105b1fc8e4d8889de95c4c519b3f635809fe6afc0560001b9050611696565b6014820361142b577f29d7ed391256ccc3ea596c86e933b89ff339d25ea8ddced975ae2fe30b5296d460001b9050611696565b6015820361145e577f19be59f2f0413ce78c0c3703a3a5451b1d7f39629fa33abd11548a76065b296760001b9050611696565b60168203611491577f1ff3f61797e538b70e619310d33f2a063e7eb59104e112e95738da1254dc345360001b9050611696565b601782036114c4577f10c16ae9959cf8358980d9dd9616e48228737310a10e2b6b731c1a548f036c4860001b9050611696565b601882036114f7577f0ba433a63174a90ac20992e75e3095496812b652685b5e1a2eae0b1bf4e8fcd160001b9050611696565b6019820361152a577f019ddb9df2bc98d987d0dfeca9d2b643deafab8f7036562e627c3667266a044c60001b9050611696565b601a820361155d577f2d3c88b23175c5a5565db928414c66d1912b11acf974b2e644caaac04739ce9960001b9050611696565b601b8203611590577f2eab55f6ae4e66e32c5189eed5c470840863445760f5ed7e7b69b2a62600f35460001b9050611696565b601c82036115c2577e2df37a2642621802383cf952bf4dd1f32e05433beeb1fd41031fb7eace979d60001b9050611696565b601d82036115f5577f104aeb41435db66c3e62feccc1d6f5d98d0a0ed75d1374db457cf462e3a1f42760001b9050611696565b601e8203611628577f1f3c6fd858e9a7d4b0d1f38e256a09d81d5a5e3c963987e2d4b814cfab7c6ebb60001b9050611696565b601f820361165b577f2c7a07d20dff79d01fecedc1134284a8d08436606c93693b67e333f671bf69cc60001b9050611696565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d90612896565b60405180910390fd5b919050565b60085481565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b7f000000000000000000000000000000000000000000000000000000000000000081565b60016020528060005260406000206000915090505481565b600360049054906101000a900463ffffffff1681565b60026004540361175c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175390612902565b60405180910390fd5b6002600481905550565b6005600086815260200190815260200160002060009054906101000a900460ff16156117c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117be9061296e565b60405180910390fd5b6117d084610d4b565b61180f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611806906129da565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f5c9d69e84848460405180604001604052808b60001c81526020018a60001c8152506040518563ffffffff1660e01b81526004016118889493929190612ba3565b602060405180830381865afa1580156118a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c99190612c16565b611908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ff90612c8f565b60405180910390fd5b60016005600087815260200190815260200160002060006101000a81548160ff0219169083151502179055505050505050565b6001600481905550565b600080600360049054906101000a900463ffffffff16905060008054906101000a900463ffffffff16600261197a9190612de2565b63ffffffff168163ffffffff16036119c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119be90612e83565b60405180910390fd5b6000819050600084905060008060005b60008054906101000a900463ffffffff1663ffffffff168163ffffffff161015611aa0576000600286611a0a9190612ea3565b63ffffffff1603611a4c57839250611a278163ffffffff16610ffc565b915083600160008363ffffffff16815260200190815260200160002081905550611a6c565b600160008263ffffffff1681526020019081526020016000205492508391505b611a7c8360001c8360001c610af0565b9350600285611a8b9190612ed4565b94508080611a9890612f05565b9150506119d7565b506000601e6001600360009054906101000a900463ffffffff16611ac49190612f31565b611ace9190612ea3565b905080600360006101000a81548163ffffffff021916908363ffffffff16021790555083600260008363ffffffff16815260200190815260200160002081905550600186611b1c9190612f31565b600360046101000a81548163ffffffff021916908363ffffffff160217905550859650505050505050919050565b6000604051905090565b600080fd5b6000819050919050565b611b6c81611b59565b8114611b7757600080fd5b50565b600081359050611b8981611b63565b92915050565b600060208284031215611ba557611ba4611b54565b5b6000611bb384828501611b7a565b91505092915050565b60008115159050919050565b611bd181611bbc565b82525050565b6000602082019050611bec6000830184611bc8565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611c37611c32611c2d84611bf2565b611c12565b611bf2565b9050919050565b6000611c4982611c1c565b9050919050565b6000611c5b82611c3e565b9050919050565b611c6b81611c50565b82525050565b6000602082019050611c866000830184611c62565b92915050565b6000611c9782611bf2565b9050919050565b611ca781611c8c565b8114611cb257600080fd5b50565b600081359050611cc481611c9e565b92915050565b6000819050919050565b611cdd81611cca565b8114611ce857600080fd5b50565b600081359050611cfa81611cd4565b92915050565b60008060408385031215611d1757611d16611b54565b5b6000611d2585828601611cb5565b9250506020611d3685828601611ceb565b9150509250929050565b611d4981611cca565b82525050565b6000602082019050611d646000830184611d40565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611db882611d6f565b810181811067ffffffffffffffff82111715611dd757611dd6611d80565b5b80604052505050565b6000611dea611b4a565b9050611df68282611daf565b919050565b600067ffffffffffffffff821115611e1657611e15611d80565b5b602082029050919050565b600080fd5b6000611e39611e3484611dfb565b611de0565b90508060208402830185811115611e5357611e52611e21565b5b835b81811015611e7c5780611e688882611ceb565b845260208401935050602081019050611e55565b5050509392505050565b600082601f830112611e9b57611e9a611d6a565b5b6002611ea8848285611e26565b91505092915050565b600067ffffffffffffffff821115611ecc57611ecb611d80565b5b602082029050919050565b6000611eea611ee584611eb1565b611de0565b90508060408402830185811115611f0457611f03611e21565b5b835b81811015611f2d5780611f198882611e86565b845260208401935050604081019050611f06565b5050509392505050565b600082601f830112611f4c57611f4b611d6a565b5b6002611f59848285611ed7565b91505092915050565b6000806000806000806000806101a0898b031215611f8357611f82611b54565b5b6000611f918b828c01611ceb565b9850506020611fa28b828c01611ceb565b9750506040611fb38b828c01611e86565b9650506080611fc48b828c01611f37565b955050610100611fd68b828c01611e86565b945050610140611fe88b828c01611ceb565b935050610160611ffa8b828c01611cb5565b92505061018061200c8b828c01611cb5565b9150509295985092959890939650565b600063ffffffff82169050919050565b6120358161201c565b82525050565b6000602082019050612050600083018461202c565b92915050565b6000806040838503121561206d5761206c611b54565b5b600061207b85828601611ceb565b925050602061208c85828601611ceb565b9150509250929050565b61209f81611b59565b82525050565b60006020820190506120ba6000830184612096565b92915050565b6120c981611c8c565b82525050565b60006020820190506120e460008301846120c0565b92915050565b600060208284031215612100576120ff611b54565b5b600061210e84828501611ceb565b91505092915050565b600061212282611c3e565b9050919050565b61213281612117565b82525050565b600060208201905061214d6000830184612129565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006121bc82611cca565b91506121c783611cca565b9250826121d7576121d6612153565b5b828204905092915050565b600082825260208201905092915050565b7f66656520746f6f20686967680000000000000000000000000000000000000000600082015250565b6000612229600c836121e2565b9150612234826121f3565b602082019050919050565b600060208201905081810360008301526122588161221c565b9050919050565b7f556e617574686f72697a65642100000000000000000000000000000000000000600082015250565b6000612295600d836121e2565b91506122a08261225f565b602082019050919050565b600060208201905081810360008301526122c481612288565b9050919050565b7f46656520746f6f20686967680000000000000000000000000000000000000000600082015250565b6000612301600c836121e2565b915061230c826122cb565b602082019050919050565b60006020820190508181036000830152612330816122f4565b9050919050565b600061234282611cca565b915061234d83611cca565b925082820390508181111561236557612364612182565b5b92915050565b600081905092915050565b50565b600061238660008361236b565b915061239182612376565b600082019050919050565b60006123a782612379565b9150819050919050565b7f7061796d656e7420746f20726563697069656e74206661696c65640000000000600082015250565b60006123e7601b836121e2565b91506123f2826123b1565b602082019050919050565b60006020820190508181036000830152612416816123da565b9050919050565b7f7061796d656e7420746f2072656c61796572206661696c656400000000000000600082015250565b60006124536019836121e2565b915061245e8261241d565b602082019050919050565b6000602082019050818103600083015261248281612446565b9050919050565b7f7061796d656e7420746f2066656541646472657373206661696c656400000000600082015250565b60006124bf601c836121e2565b91506124ca82612489565b602082019050919050565b600060208201905081810360008301526124ee816124b2565b9050919050565b600061250082611c3e565b9050919050565b612510816124f5565b82525050565b600060808201905061252b6000830187612507565b6125386020830186612096565b6125456040830185612507565b6125526060830184611d40565b95945050505050565b7f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64600082015250565b60006125916020836121e2565b915061259c8261255b565b602082019050919050565b600060208201905081810360008301526125c081612584565b9050919050565b7f5f72696768742073686f756c6420626520696e7369646520746865206669656c60008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006126236021836121e2565b915061262e826125c7565b604082019050919050565b6000602082019050818103600083015261265281612616565b9050919050565b6000819050919050565b600061267e61267961267484612659565b611c12565b611cca565b9050919050565b61268e81612663565b82525050565b60006060820190506126a96000830186611d40565b6126b66020830185611d40565b6126c36040830184612685565b949350505050565b6000815190506126da81611cd4565b92915050565b600080604083850312156126f7576126f6611b54565b5b6000612705858286016126cb565b9250506020612716858286016126cb565b9150509250929050565b600061272b8261201c565b91506000820361273e5761273d612182565b5b600182039050919050565b7f636f6d6d69746d656e7420616c7265616479207375626d697474656400000000600082015250565b600061277f601c836121e2565b915061278a82612749565b602082019050919050565b600060208201905081810360008301526127ae81612772565b9050919050565b7f696e76616c6964206465706f73697420616d6f756e7400000000000000000000600082015250565b60006127eb6016836121e2565b91506127f6826127b5565b602082019050919050565b6000602082019050818103600083015261281a816127de565b9050919050565b6000604082019050612836600083018561202c565b6128436020830184611d40565b9392505050565b7f496e646578206f7574206f6620626f756e647300000000000000000000000000600082015250565b60006128806013836121e2565b915061288b8261284a565b602082019050919050565b600060208201905081810360008301526128af81612873565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006128ec601f836121e2565b91506128f7826128b6565b602082019050919050565b6000602082019050818103600083015261291b816128df565b9050919050565b7f6e756c6c696669657220616c7265616479207375626d69747465640000000000600082015250565b6000612958601b836121e2565b915061296382612922565b602082019050919050565b600060208201905081810360008301526129878161294b565b9050919050565b7f63616e7427742066696e6420796f7572206d65726b6c6520726f6f7400000000600082015250565b60006129c4601c836121e2565b91506129cf8261298e565b602082019050919050565b600060208201905081810360008301526129f3816129b7565b9050919050565b600060029050919050565b600081905092915050565b6000819050919050565b612a2381611cca565b82525050565b6000612a358383612a1a565b60208301905092915050565b6000602082019050919050565b612a57816129fa565b612a618184612a05565b9250612a6c82612a10565b8060005b83811015612a9d578151612a848782612a29565b9650612a8f83612a41565b925050600181019050612a70565b505050505050565b600060029050919050565b600081905092915050565b6000819050919050565b600081905092915050565b612ad9816129fa565b612ae38184612ac5565b9250612aee82612a10565b8060005b83811015612b1f578151612b068782612a29565b9650612b1183612a41565b925050600181019050612af2565b505050505050565b6000612b338383612ad0565b60408301905092915050565b6000602082019050919050565b612b5581612aa5565b612b5f8184612ab0565b9250612b6a82612abb565b8060005b83811015612b9b578151612b828782612b27565b9650612b8d83612b3f565b925050600181019050612b6e565b505050505050565b600061014082019050612bb96000830187612a4e565b612bc66040830186612b4c565b612bd360c0830185612a4e565b612be1610100830184612a4e565b95945050505050565b612bf381611bbc565b8114612bfe57600080fd5b50565b600081519050612c1081612bea565b92915050565b600060208284031215612c2c57612c2b611b54565b5b6000612c3a84828501612c01565b91505092915050565b7f496e76616c69642070726f6f6600000000000000000000000000000000000000600082015250565b6000612c79600d836121e2565b9150612c8482612c43565b602082019050919050565b60006020820190508181036000830152612ca881612c6c565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115612d0657808604811115612ce257612ce1612182565b5b6001851615612cf15780820291505b8081029050612cff85612caf565b9450612cc6565b94509492505050565b600082612d1f5760019050612ddb565b81612d2d5760009050612ddb565b8160018114612d435760028114612d4d57612d7c565b6001915050612ddb565b60ff841115612d5f57612d5e612182565b5b8360020a915084821115612d7657612d75612182565b5b50612ddb565b5060208310610133831016604e8410600b8410161715612db15782820a905083811115612dac57612dab612182565b5b612ddb565b612dbe8484846001612cbc565b92509050818404811115612dd557612dd4612182565b5b81810290505b9392505050565b6000612ded8261201c565b9150612df88361201c565b9250612e0963ffffffff8484612d0f565b905092915050565b7f4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656160008201527f7665732063616e20626520616464656400000000000000000000000000000000602082015250565b6000612e6d6030836121e2565b9150612e7882612e11565b604082019050919050565b60006020820190508181036000830152612e9c81612e60565b9050919050565b6000612eae8261201c565b9150612eb98361201c565b925082612ec957612ec8612153565b5b828206905092915050565b6000612edf8261201c565b9150612eea8361201c565b925082612efa57612ef9612153565b5b828204905092915050565b6000612f108261201c565b915063ffffffff8203612f2657612f25612182565b5b600182019050919050565b6000612f3c8261201c565b9150612f478361201c565b9250828201905063ffffffff811115612f6357612f62612182565b5b9291505056fea26469706673582212206b9f083e751c3a7aa885da66a89e0ea6374753adf09f27b7bdc8c46b438f653c64736f6c634300081100330000000000000000000000000000000000000000000000000000000000000014000000000000000000000000eb13b29323c4391068315dbf64f2a37eaf5c6a7b00000000000000000000000057cead722401e048a37fa1ad5b5944ceb4c1174c
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000014000000000000000000000000eb13b29323c4391068315dbf64f2a37eaf5c6a7b00000000000000000000000057cead722401e048a37fa1ad5b5944ceb4c1174c
-----Decoded View---------------
Arg [0] : _levels (uint32): 20
Arg [1] : _hasher (address): 0xeb13b29323c4391068315dbf64f2a37eaf5c6a7b
Arg [2] : _verifier (address): 0x57cead722401e048a37fa1ad5b5944ceb4c1174c
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [1] : 000000000000000000000000eb13b29323c4391068315dbf64f2a37eaf5c6a7b
Arg [2] : 00000000000000000000000057cead722401e048a37fa1ad5b5944ceb4c1174c
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Validator ID :
0 FTM
Amount Staked
0
Amount Delegated
0
Staking Total
0
Staking Start Epoch
0
Staking Start Time
0
Proof of Importance
0
Origination Score
0
Validation Score
0
Active
0
Online
0
Downtime
0 s
Address | Amount | claimed Rewards | Created On Epoch | Created On |
---|