Overview
ETH Balance
0 ETH
ETH Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 6 from a total of 6 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 2358111 | 46 hrs ago | IN | 0 ETH | 0.00000805 | ||||
Mint | 2356890 | 46 hrs ago | IN | 0.0001 ETH | 0.00001942 | ||||
Set Merkle Root | 2356876 | 46 hrs ago | IN | 0 ETH | 0.00000855 | ||||
Set Phase | 2355623 | 47 hrs ago | IN | 0 ETH | 0.00004097 | ||||
Set Merkle Root | 2351298 | 2 days ago | IN | 0 ETH | 0.00000755 | ||||
Set ERC721Addres... | 2350196 | 2 days ago | IN | 0 ETH | 0.00000784 |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
SQUAREidManager
Compiler Version
v0.8.25+commit.b61c2a91
ZkSolc Version
v1.5.11
Optimization Enabled:
Yes with Mode 3
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./libs/ParallelMintERC721AManager.sol"; // @author: miinded.com contract SQUAREidManager is ParallelMintERC721AManager { constructor(Part[] memory _parts) { for(uint256 i = 0; i < _parts.length; i++){ withdrawAdd(_parts[i]); } } }
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.0; import "@miinded/hardhat-tools/contracts/MerkleProof.sol"; import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; import "@miinded/hardhat-tools/contracts/Initialize.sol"; import "./interfaces/IERC721AManager.sol"; import "./interfaces/IERC721AGated.sol"; import "./Withdraw.sol"; // @author: miinded.com contract ParallelMintERC721AManager is IERC721AManager, MerkleProofVerify, Initialize, ReentrancyGuard, Withdraw { error PhaseNotOpen(); error InvalidStructMint(); error InvalidStructPhase(); error SoldOutPhase(); error MaxMintedForWallet(); error InvalidValue(); IERC721AGated public ERC721AAddress; mapping(string => StructPhase) public phases; mapping(string => mapping(address => uint16)) public balances; constructor() Ownable(_msgSender()){} function setERC721Address(address _ERC721AAddress) public onlyOwnerOrAdmins { ERC721AAddress = IERC721AGated(_ERC721AAddress); } function Mint(StructMint[] calldata _mints, address _to) payable public nonReentrant { uint256 count = 0; uint256 value = 0; for (uint256 i = 0; i < _mints.length; i++) { _manageMint(_mints[i]); count += _mints[i].count; value += _mints[i].count * phases[_mints[i].phase].price; emit Minted(_mints[i].phase, _msgSender(), _to, _mints[i].count); } if (msg.value != value) { revert InvalidValue(); } ERC721AAddress.mint(_to, count, true); } function MintReserve(address _to, uint256 _count) public onlyOwnerOrAdmins { ERC721AAddress.mint(_to, _count, true); } function _manageMint(StructMint calldata _mint) private { if (_mint.count <= 0) { revert InvalidStructMint(); } if (!phaseIsOpen(_mint.phase)) { revert PhaseNotOpen(); } // pour gérer les public qui consomme tous les nft disponible jusqu'au soldout if (phases[_mint.phase].supply > 0) { if (phases[_mint.phase].minted + _mint.count > phases[_mint.phase].supply) { revert SoldOutPhase(); } phases[_mint.phase].minted += _mint.count; } if (!phases[_mint.phase].withProof) { if (_mint.proof.length > 0) { revert InvalidStructMint(); } if (balances[_mint.phase][_msgSender()] + _mint.count > phases[_mint.phase].maxPerWallet) { revert MaxMintedForWallet(); } balances[_mint.phase][_msgSender()] += _mint.count; } else { if (_mint.max == 0 || _mint.proof.length == 0) { revert InvalidStructMint(); } if (balances[_mint.phase][_msgSender()] + _mint.count > _mint.max) { revert MaxMintedForWallet(); } balances[_mint.phase][_msgSender()] += _mint.count; merkleCheck(_mint.proof, _merkleLeaf(_msgSender(), _mint.phase, uint256(_mint.max))); } } function totalSupply() external view returns (uint256){ return ERC721AAddress.totalSupply(); } function totalMinted() external view returns (uint256){ return ERC721AAddress.totalMinted(); } function totalBurned() external view returns (uint256){ return ERC721AAddress.totalBurned(); } function balanceOf(address owner) external view returns (uint256 balance){ return ERC721AAddress.balanceOf(owner); } function ownerOf(uint256 tokenId) external view returns (address owner){ return ERC721AAddress.ownerOf(tokenId); } function tokensOfOwner(address owner) external view returns (uint256[] memory){ return ERC721AAddress.tokensOfOwner(owner); } function _merkleLeaf(address _wallet, string calldata _phase, uint256 _max) private pure returns (bytes32){ return keccak256(abi.encodePacked(_wallet, _phase, _max)); } function setPhase(string calldata _name, StructPhase memory _phase) public onlyOwnerOrAdmins { if (!_phase.valid) { revert InvalidStructPhase(); } _phase.minted = 0; if (phases[_name].valid) { _phase.minted = phases[_name].minted; } phases[_name] = _phase; } function phaseIsOpen(string calldata _phase) public view returns (bool){ return phases[_phase].start > 0 && block.timestamp >= phases[_phase].start && block.timestamp <= phases[_phase].end && !phases[_phase].paused; } function phaseMinted(string calldata _phase) public view returns (uint16){ return phases[_phase].minted; } function phaseBalance(string calldata _phase, address _wallet) public view returns (uint16){ return balances[_phase][_wallet]; } function transferFrom(address, address, uint256) public override virtual returns (bool) { return true; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IERC721AManager { struct StructMint { string phase; uint16 count; uint16 max; bytes32[] proof; } struct StructPhase { uint64 start; uint64 end; uint16 maxPerWallet; // uniquement pour les pas withProof uint16 supply; uint16 minted; bool withProof; bool paused; bool valid; uint256 price; } event Minted(string phase, address caller, address to, uint256 count); function transferFrom(address from, address to, uint256 tokenId) external returns(bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@miinded/hardhat-tools/contracts/Admins.sol"; // @author: miinded.com abstract contract Withdraw is Admins { /** @notice Struct containing the association between the wallet and its share @dev The share can be /100 or /1000 or something else like /50 */ struct Part { address wallet; uint256 salePart; } /** @notice Stock the parts of each wallets */ Part[] public parts; /** @dev Calculation of the divider for the calculation of each part */ uint256 public saleDivider; /** @notice Add a new wallet in the withdraw process @dev this method is only internal, it's not possible to add someone after the contract minting */ function withdrawAdd(Part memory _part) internal { parts.push(_part); saleDivider += _part.salePart; } /** @notice Run the transfer of all ETH to the wallets with each % part */ function withdraw() public onlyOwnerOrAdmins { uint256 balance = address(this).balance; require(balance > 0, "Sales Balance = 0"); for (uint8 i = 0; i < parts.length; i++) { if (parts[i].salePart > 0) { _withdraw(parts[i].wallet, (balance * parts[i].salePart) / saleDivider); } } _withdraw(owner(), address(this).balance); } /** @notice Do a transfer ETH to _address */ function _withdraw(address _address, uint256 _amount) private { (bool success, ) = _address.call{value: _amount}(""); require(success, "Transfer failed."); } }
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.0; import "./IERC721ACQueryable.sol"; interface IERC721AGated is IERC721ACQueryable { function mint(address _wallet, uint256 _count, bool _lock) external; function safeMint(address _wallet, uint256 _count, bool _lock) external; function burn(uint256 _tokenId) external; function totalMinted() external view returns(uint256); function totalBurned() external view returns(uint256); function lock(uint256 _tokenId) external; function unlock(uint256 _tokenId) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; import "./Admins.sol"; // @author: miinded.com abstract contract MerkleProofVerify is Admins { using MerkleProof for bytes32[]; /** @dev hash of the root of the merkle */ bytes32 public merkleRoot; /** @dev Used for verify the _proof and the _leaf The _leaf need to be calculated by the contract itself The _proof is calculated by the server, not by the contract */ modifier merkleVerify(bytes32[] memory _proof, bytes32 _leaf){ merkleCheck(_proof, _leaf); _; } /** @notice Verify the proof of the leaf. @dev (see @dev merkleVerify) */ function merkleCheck(bytes32[] memory _proof, bytes32 _leaf) public view { require(_proof.verify(merkleRoot, _leaf), "MerkleProofVerify: Proof not valid"); } /** @dev onlyOwner can change the root of the merkle.this Change root need to be done only if there is no pending tx during the mint. */ function setMerkleRoot(bytes32 _merkleRoot) public onlyOwnerOrAdmins { merkleRoot = _merkleRoot; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; // @author: miinded.com abstract contract Initialize { bool private _initialized = false; modifier isNotInitialized() { require(_initialized == false, "Already Initialized"); _; _initialized = true; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol) pragma solidity ^0.8.20; /** * @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; /** * @dev Unauthorized reentrant call. */ error ReentrancyGuardReentrantCall(); 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 if (_status == ENTERED) { revert ReentrancyGuardReentrantCall(); } // 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; } /** * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a * `nonReentrant` function in the call stack. */ function _reentrancyGuardEntered() internal view returns (bool) { return _status == ENTERED; } }
// SPDX-License-Identifier: MIT // ERC721A Contracts v4.3.0 // Creator: Chiru Labs & miinded.com pragma solidity ^0.8.4; import "erc721a/contracts/IERC721A.sol"; /** * @dev Interface of ERC721AQueryable. */ interface IERC721ACQueryable is IERC721A { /** * Invalid query range (`start` >= `stop`). */ error InvalidQueryRange(); /** * @dev Returns the `TokenOwnership` struct at `tokenId` without reverting. * * If the `tokenId` is out of bounds: * * - `addr = address(0)` * - `startTimestamp = 0` * - `burned = false` * - `extraData = 0` * * If the `tokenId` is burned: * * - `addr = <Address of owner before token was burned>` * - `startTimestamp = <Timestamp when token was burned>` * - `burned = true` * - `extraData = <Extra data when token was burned>` * * Otherwise: * * - `addr = <Address of owner>` * - `startTimestamp = <Timestamp of start of ownership>` * - `burned = false` * - `extraData = <Extra data at start of ownership>` */ function explicitOwnershipOf(uint256 tokenId) external view returns (TokenOwnership memory); /** * @dev Returns an array of `TokenOwnership` structs at `tokenIds` in order. * See {ERC721AQueryable-explicitOwnershipOf} */ function explicitOwnershipsOf(uint256[] memory tokenIds) external view returns (TokenOwnership[] memory); /** * @dev Returns an array of token IDs owned by `owner`, * in the range [`start`, `stop`) * (i.e. `start <= tokenId < stop`). * * This function allows for tokens to be queried if the collection * grows too big for a single call of {ERC721AQueryable-tokensOfOwner}. * * Requirements: * * - `start < stop` */ function tokensOfOwnerIn( address owner, uint256 start, uint256 stop ) external view returns (uint256[] memory); /** * @dev Returns an array of token IDs owned by `owner`. * * This function scans the ownership mapping and is O(`totalSupply`) in complexity. * It is meant to be called off-chain. * * See {ERC721AQueryable-tokensOfOwnerIn} for splitting the scan into * multiple smaller scans if the collection is large enough to cause * an out-of-gas error (10K collections should be fine). */ function tokensOfOwner(address owner) external view returns (uint256[] memory); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@openzeppelin/contracts/access/Ownable.sol"; // @author: miinded.com abstract contract Admins is Ownable{ mapping(address => bool) private admins; /** @dev check if the address is admin or not **/ function isAdmin(address _admin) public view returns(bool) { return admins[_admin]; } /** @dev Set the wallet address who can pass the onlyAdmin modifier **/ function setAdminAddress(address _admin, bool _active) public virtual onlyOwner { admins[_admin] = _active; } /** @notice Check if the sender is owner() or admin **/ modifier onlyOwnerOrAdmins() { require(admins[_msgSender()] == true || owner() == _msgSender(), "Ownable: caller is not the owner"); _; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/MerkleProof.sol) pragma solidity ^0.8.20; /** * @dev These functions deal with verification of Merkle Tree proofs. * * The tree and the proofs can be generated using our * https://github.com/OpenZeppelin/merkle-tree[JavaScript library]. * You will find a quickstart guide in the readme. * * WARNING: You should avoid using leaf values that are 64 bytes long prior to * hashing, or use a hash function other than keccak256 for hashing leaves. * This is because the concatenation of a sorted pair of internal nodes in * the Merkle tree could be reinterpreted as a leaf value. * OpenZeppelin's JavaScript library generates Merkle trees that are safe * against this attack out of the box. */ library MerkleProof { /** *@dev The multiproof provided is not valid. */ error MerkleProofInvalidMultiproof(); /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify(bytes32[] memory proof, bytes32 root, bytes32 leaf) internal pure returns (bool) { return processProof(proof, leaf) == root; } /** * @dev Calldata version of {verify} */ function verifyCalldata(bytes32[] calldata proof, bytes32 root, bytes32 leaf) internal pure returns (bool) { return processProofCalldata(proof, leaf) == root; } /** * @dev Returns the rebuilt hash obtained by traversing a Merkle tree up * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt * hash matches the root of the tree. When processing the proof, the pairs * of leafs & pre-images are assumed to be sorted. */ function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { computedHash = _hashPair(computedHash, proof[i]); } return computedHash; } /** * @dev Calldata version of {processProof} */ function processProofCalldata(bytes32[] calldata proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { computedHash = _hashPair(computedHash, proof[i]); } return computedHash; } /** * @dev Returns true if the `leaves` can be simultaneously proven to be a part of a Merkle tree defined by * `root`, according to `proof` and `proofFlags` as described in {processMultiProof}. * * CAUTION: Not all Merkle trees admit multiproofs. See {processMultiProof} for details. */ function multiProofVerify( bytes32[] memory proof, bool[] memory proofFlags, bytes32 root, bytes32[] memory leaves ) internal pure returns (bool) { return processMultiProof(proof, proofFlags, leaves) == root; } /** * @dev Calldata version of {multiProofVerify} * * CAUTION: Not all Merkle trees admit multiproofs. See {processMultiProof} for details. */ function multiProofVerifyCalldata( bytes32[] calldata proof, bool[] calldata proofFlags, bytes32 root, bytes32[] memory leaves ) internal pure returns (bool) { return processMultiProofCalldata(proof, proofFlags, leaves) == root; } /** * @dev Returns the root of a tree reconstructed from `leaves` and sibling nodes in `proof`. The reconstruction * proceeds by incrementally reconstructing all inner nodes by combining a leaf/inner node with either another * leaf/inner node or a proof sibling node, depending on whether each `proofFlags` item is true or false * respectively. * * CAUTION: Not all Merkle trees admit multiproofs. To use multiproofs, it is sufficient to ensure that: 1) the tree * is complete (but not necessarily perfect), 2) the leaves to be proven are in the opposite order they are in the * tree (i.e., as seen from right to left starting at the deepest layer and continuing at the next layer). */ function processMultiProof( bytes32[] memory proof, bool[] memory proofFlags, bytes32[] memory leaves ) internal pure returns (bytes32 merkleRoot) { // This function rebuilds the root hash by traversing the tree up from the leaves. The root is rebuilt by // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of // the Merkle tree. uint256 leavesLen = leaves.length; uint256 proofLen = proof.length; uint256 totalHashes = proofFlags.length; // Check proof validity. if (leavesLen + proofLen != totalHashes + 1) { revert MerkleProofInvalidMultiproof(); } // The xxxPos values are "pointers" to the next value to consume in each array. All accesses are done using // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's "pop". bytes32[] memory hashes = new bytes32[](totalHashes); uint256 leafPos = 0; uint256 hashPos = 0; uint256 proofPos = 0; // At each step, we compute the next hash using two values: // - a value from the "main queue". If not all leaves have been consumed, we get the next leaf, otherwise we // get the next hash. // - depending on the flag, either another value from the "main queue" (merging branches) or an element from the // `proof` array. for (uint256 i = 0; i < totalHashes; i++) { bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++]; bytes32 b = proofFlags[i] ? (leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++]) : proof[proofPos++]; hashes[i] = _hashPair(a, b); } if (totalHashes > 0) { if (proofPos != proofLen) { revert MerkleProofInvalidMultiproof(); } unchecked { return hashes[totalHashes - 1]; } } else if (leavesLen > 0) { return leaves[0]; } else { return proof[0]; } } /** * @dev Calldata version of {processMultiProof}. * * CAUTION: Not all Merkle trees admit multiproofs. See {processMultiProof} for details. */ function processMultiProofCalldata( bytes32[] calldata proof, bool[] calldata proofFlags, bytes32[] memory leaves ) internal pure returns (bytes32 merkleRoot) { // This function rebuilds the root hash by traversing the tree up from the leaves. The root is rebuilt by // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of // the Merkle tree. uint256 leavesLen = leaves.length; uint256 proofLen = proof.length; uint256 totalHashes = proofFlags.length; // Check proof validity. if (leavesLen + proofLen != totalHashes + 1) { revert MerkleProofInvalidMultiproof(); } // The xxxPos values are "pointers" to the next value to consume in each array. All accesses are done using // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's "pop". bytes32[] memory hashes = new bytes32[](totalHashes); uint256 leafPos = 0; uint256 hashPos = 0; uint256 proofPos = 0; // At each step, we compute the next hash using two values: // - a value from the "main queue". If not all leaves have been consumed, we get the next leaf, otherwise we // get the next hash. // - depending on the flag, either another value from the "main queue" (merging branches) or an element from the // `proof` array. for (uint256 i = 0; i < totalHashes; i++) { bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++]; bytes32 b = proofFlags[i] ? (leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++]) : proof[proofPos++]; hashes[i] = _hashPair(a, b); } if (totalHashes > 0) { if (proofPos != proofLen) { revert MerkleProofInvalidMultiproof(); } unchecked { return hashes[totalHashes - 1]; } } else if (leavesLen > 0) { return leaves[0]; } else { return proof[0]; } } /** * @dev Sorts the pair (a, b) and hashes the result. */ function _hashPair(bytes32 a, bytes32 b) private pure returns (bytes32) { return a < b ? _efficientHash(a, b) : _efficientHash(b, a); } /** * @dev Implementation of keccak256(abi.encode(a, b)) that doesn't allocate or expand memory. */ function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) { /// @solidity memory-safe-assembly assembly { mstore(0x00, a) mstore(0x20, b) value := keccak256(0x00, 0x40) } } }
// SPDX-License-Identifier: MIT // ERC721A Contracts v4.3.0 // Creator: Chiru Labs pragma solidity ^0.8.4; /** * @dev Interface of ERC721A. */ interface IERC721A { /** * The caller must own the token or be an approved operator. */ error ApprovalCallerNotOwnerNorApproved(); /** * The token does not exist. */ error ApprovalQueryForNonexistentToken(); /** * Cannot query the balance for the zero address. */ error BalanceQueryForZeroAddress(); /** * Cannot mint to the zero address. */ error MintToZeroAddress(); /** * The quantity of tokens minted must be more than zero. */ error MintZeroQuantity(); /** * The token does not exist. */ error OwnerQueryForNonexistentToken(); /** * The caller must own the token or be an approved operator. */ error TransferCallerNotOwnerNorApproved(); /** * The token must be owned by `from`. */ error TransferFromIncorrectOwner(); /** * Cannot safely transfer to a contract that does not implement the * ERC721Receiver interface. */ error TransferToNonERC721ReceiverImplementer(); /** * Cannot transfer to the zero address. */ error TransferToZeroAddress(); /** * The token does not exist. */ error URIQueryForNonexistentToken(); /** * The `quantity` minted with ERC2309 exceeds the safety limit. */ error MintERC2309QuantityExceedsLimit(); /** * The `extraData` cannot be set on an unintialized ownership slot. */ error OwnershipNotInitializedForExtraData(); /** * `_sequentialUpTo()` must be greater than `_startTokenId()`. */ error SequentialUpToTooSmall(); /** * The `tokenId` of a sequential mint exceeds `_sequentialUpTo()`. */ error SequentialMintExceedsLimit(); /** * Spot minting requires a `tokenId` greater than `_sequentialUpTo()`. */ error SpotMintTokenIdTooSmall(); /** * Cannot mint over a token that already exists. */ error TokenAlreadyExists(); /** * The feature is not compatible with spot mints. */ error NotCompatibleWithSpotMints(); // ============================================================= // STRUCTS // ============================================================= struct TokenOwnership { // The address of the owner. address addr; // Stores the start time of ownership with minimal overhead for tokenomics. uint64 startTimestamp; // Whether the token has been burned. bool burned; // Arbitrary data similar to `startTimestamp` that can be set via {_extraData}. uint24 extraData; } // ============================================================= // TOKEN COUNTERS // ============================================================= /** * @dev Returns the total number of tokens in existence. * Burned tokens will reduce the count. * To get the total number of tokens minted, please see {_totalMinted}. */ function totalSupply() external view returns (uint256); // ============================================================= // IERC165 // ============================================================= /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified) * to learn more about how these ids are created. * * This function call must use less than 30000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); // ============================================================= // IERC721 // ============================================================= /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables * (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in `owner`'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, * checking first that contract recipients are aware of the ERC721 protocol * to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move * this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external payable; /** * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external payable; /** * @dev Transfers `tokenId` from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} * whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token * by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external payable; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the * zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external payable; /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} * for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll}. */ function isApprovedForAll(address owner, address operator) external view returns (bool); // ============================================================= // IERC721Metadata // ============================================================= /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); // ============================================================= // IERC2309 // ============================================================= /** * @dev Emitted when tokens in `fromTokenId` to `toTokenId` * (inclusive) is transferred from `from` to `to`, as defined in the * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309) standard. * * See {_mintERC2309} for more details. */ event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; import {Context} from "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * The initial owner is set to the address provided by the deployer. This can * later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } }
{ "optimizer": { "enabled": true, "mode": "3" }, "evmVersion": "paris", "outputSelection": { "*": { "*": [ "abi" ] } }, "detectMissingLibraries": false, "forceEVMLA": false, "enableEraVMExtensions": false, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"components":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint256","name":"salePart","type":"uint256"}],"internalType":"struct Withdraw.Part[]","name":"_parts","type":"tuple[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidStructMint","type":"error"},{"inputs":[],"name":"InvalidStructPhase","type":"error"},{"inputs":[],"name":"InvalidValue","type":"error"},{"inputs":[],"name":"MaxMintedForWallet","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"PhaseNotOpen","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"SoldOutPhase","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"phase","type":"string"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"count","type":"uint256"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"ERC721AAddress","outputs":[{"internalType":"contract IERC721AGated","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"phase","type":"string"},{"internalType":"uint16","name":"count","type":"uint16"},{"internalType":"uint16","name":"max","type":"uint16"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"internalType":"struct IERC721AManager.StructMint[]","name":"_mints","type":"tuple[]"},{"internalType":"address","name":"_to","type":"address"}],"name":"Mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"MintReserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"name":"isAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"_proof","type":"bytes32[]"},{"internalType":"bytes32","name":"_leaf","type":"bytes32"}],"name":"merkleCheck","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"parts","outputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint256","name":"salePart","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_phase","type":"string"},{"internalType":"address","name":"_wallet","type":"address"}],"name":"phaseBalance","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_phase","type":"string"}],"name":"phaseIsOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_phase","type":"string"}],"name":"phaseMinted","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"phases","outputs":[{"internalType":"uint64","name":"start","type":"uint64"},{"internalType":"uint64","name":"end","type":"uint64"},{"internalType":"uint16","name":"maxPerWallet","type":"uint16"},{"internalType":"uint16","name":"supply","type":"uint16"},{"internalType":"uint16","name":"minted","type":"uint16"},{"internalType":"bool","name":"withProof","type":"bool"},{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"bool","name":"valid","type":"bool"},{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_admin","type":"address"},{"internalType":"bool","name":"_active","type":"bool"}],"name":"setAdminAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_ERC721AAddress","type":"address"}],"name":"setERC721Address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"components":[{"internalType":"uint64","name":"start","type":"uint64"},{"internalType":"uint64","name":"end","type":"uint64"},{"internalType":"uint16","name":"maxPerWallet","type":"uint16"},{"internalType":"uint16","name":"supply","type":"uint16"},{"internalType":"uint16","name":"minted","type":"uint16"},{"internalType":"bool","name":"withProof","type":"bool"},{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"bool","name":"valid","type":"bool"},{"internalType":"uint256","name":"price","type":"uint256"}],"internalType":"struct IERC721AManager.StructPhase","name":"_phase","type":"tuple"}],"name":"setPhase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
9c4d535b0000000000000000000000000000000000000000000000000000000000000000010004e99dd7928d9464353b1cd26cd01aa7a715cf17c98590dd9bc39710d5c40000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000e42e1fdc5cae025e2f9286d5d07d35ba75bc7b0f0000000000000000000000000000000000000000000000000000000000000064
Deployed Bytecode
0x0002000000000002001300000000000200010000000103550000006003100270000004700030019d0000008004000039000000400040043f000004700330019700000001002001900000001f0000c13d000000040030008c000006890000413d000000000201043b000000e002200270000004800020009c0000008c0000213d000004940020009c000000d10000213d0000049e0020009c000001960000a13d0000049f0020009c000002540000213d000004a20020009c0000031c0000613d000004a30020009c000006890000c13d0000000001000416000000000001004b000006890000c13d0000000201000039000003530000013d0000000002000416000000000002004b000006890000c13d0000001f0230003900000471022001970000008002200039000000400020043f0000001f0530018f000004720630019800000080026000390000002f0000613d000000000701034f000000007807043c0000000004840436000000000024004b0000002b0000c13d000000000005004b0000003c0000613d000000000161034f0000000304500210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000200030008c000006890000413d000000800200043d000004730020009c000006890000213d0000001f01200039000000000031004b000000000400001900000474040080410000047401100197000000000001004b00000000050000190000047405004041000004740010009c000000000504c019000000000005004b000006890000c13d00000080012000390000000004010433000004730040009c000001cf0000213d00000005014002100000003f011000390000047501100197000000400600043d0000000005160019000f00000006001d000000000065004b00000000010000390000000101004039000004730050009c000001cf0000213d0000000100100190000001cf0000c13d0000008001300039000000400050043f0000000f030000290000000003430436000e00000003001d000000a00220003900000006034002100000000003230019000000000013004b000006890000213d000000000004004b0000007f0000613d0000000e040000290000000005210049000004760050009c000006890000213d000000400050008c000006890000413d000000400500043d000004770050009c000001cf0000213d0000004006500039000000400060043f0000000067020434000004780070009c000006890000213d00000000077504360000000006060433000000000067043500000000045404360000004002200039000000000032004b0000006b0000413d0000000006000411000000000006004b000005960000c13d000000400100043d0000047e02000041000000000021043500000004021000390000000000020435000004700010009c000004700100804100000040011002100000047f011001c7000011be00010430000004810020009c000001180000213d0000048b0020009c000001b20000a13d0000048c0020009c0000028e0000213d0000048f0020009c0000034a0000613d000004900020009c000006890000c13d000000440030008c000006890000413d0000000002000416000000000002004b000006890000c13d0000000402100370000000000502043b000004730050009c000006890000213d0000002302500039000000000032004b000006890000813d0000000404500039000000000241034f000000000202043b000004730020009c000006890000213d00000000052500190000002405500039000000000035004b000006890000213d0000002403100370000000000303043b001200000003001d000004780030009c000006890000213d0000002003400039000000000331034f000004e4042001980000001f0520018f0000008001400039000000bc0000613d0000008006000039000000000703034f000000007807043c0000000006860436000000000016004b000000b80000c13d000000000005004b000000c90000613d000000000343034f0000000304500210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f00000000003104350000008001200039000000090300003900000000003104350000002002200039000000800100003911bc11860000040f0000001202000029000006740000013d000004950020009c000001d50000a13d000004960020009c000002ca0000213d000004990020009c0000034f0000613d0000049a0020009c000006890000c13d000000240030008c000006890000413d0000000002000416000000000002004b000006890000c13d0000000401100370000000000101043b000004780010009c000006890000213d0000000702000039000000000202041a000004d803000041000000800030043f000000840010043f00000000010004140000047802200197000004700010009c0000047001008041000000c001100210000004c7011001c711bc11b70000040f00000060031002700000047003300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000000fd0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000000f90000c13d000000000006004b0000010a0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f00000000006504350000000100200190000003eb0000c13d0000001f0530018f0000047206300198000000400200043d0000000004620019000005ff0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000001130000c13d000005ff0000013d000004820020009c000002160000a13d000004830020009c000002f40000213d000004860020009c000003570000613d000004870020009c000006890000c13d000000240030008c000006890000413d0000000002000416000000000002004b000006890000c13d0000000402100370000000000402043b000004730040009c000006890000213d0000002302400039000000000032004b000006890000813d0000000405400039000000000251034f000000000202043b000004730020009c000001cf0000213d0000001f07200039000004e4077001970000003f07700039000004e407700197000004c80070009c000001cf0000213d0000008007700039000000400070043f000000800020043f00000000042400190000002404400039000000000034004b000006890000213d0000002003500039000000000331034f000004e4042001980000001f0520018f000000a0014000390000014a0000613d000000a006000039000000000703034f000000007807043c0000000006860436000000000016004b000001460000c13d000000000005004b000001570000613d000000000343034f0000000304500210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000310435000000a0012000390000000000010435000000400100043d000000800200043d000000000002004b000001650000613d00000000030000190000000004130019000000a005300039000000000505043300000000005404350000002003300039000000000023004b0000015e0000413d000000000312001900000008040000390000000000430435000000200220003911bc11860000040f000000000201041a0000000101100039000000000301041a000000400100043d00000100041000390000000000340435000000400320027000000473033001970000002004100039000000000034043500000080032002700000ffff0330018f0000004004100039000000000034043500000090032002700000ffff0330018f00000060041000390000000000340435000000a0032002700000ffff0330018f00000080041000390000000000340435000004b2002001980000000003000039000000010300c039000000a0041000390000000000340435000004ab002001980000000003000039000000010300c039000000c0041000390000000000340435000004c9002001980000000003000039000000010300c039000000e004100039000000000034043500000473022001970000000000210435000004700010009c00000470010080410000004001100210000004ca011001c7000011bd0001042e000004a40020009c000003bf0000613d000004a50020009c000003f60000613d000004a60020009c000006890000c13d000000240030008c000006890000413d0000000002000416000000000002004b000006890000c13d0000000401100370000000000101043b000004780010009c000006890000213d000000000010043f0000000101000039000000200010043f0000004002000039000000000100001911bc11860000040f000000000101041a000000ff001001900000000001000039000000010100c039000000800010043f000004d601000041000011bd0001042e000004910020009c000004070000613d000004920020009c000004740000613d000004930020009c000006890000c13d000000440030008c000006890000413d0000000002000416000000000002004b000006890000c13d0000000402100370000000000402043b000004730040009c000006890000213d0000002302400039000000000032004b000006890000813d0000000405400039000000000251034f000000000202043b000004730020009c000001cf0000213d0000001f07200039000004e4077001970000003f07700039000004e407700197000004c80070009c0000063a0000a13d000004dd01000041000000000010043f0000004101000039000000040010043f0000047f01000041000011be000104300000049b0020009c000004ca0000613d0000049c0020009c000004e10000613d0000049d0020009c000006890000c13d000000240030008c000006890000413d0000000002000416000000000002004b000006890000c13d0000000702000039000000000202041a000004d903000041000000800030043f0000000401100370000000000101043b000000840010043f00000000010004140000047802200197000004700010009c0000047001008041000000c001100210000004c7011001c711bc11b70000040f00000060031002700000047003300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000001fd0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000001f90000c13d000000000006004b0000020a0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f00000000006504350000000100200190000005e80000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000006890000413d000000800200043d000004da0020009c000003f20000413d000006890000013d000004880020009c000004ff0000613d000004890020009c000005180000613d0000048a0020009c000006890000c13d0000000001000416000000000001004b000006890000c13d0000000701000039000000000101041a000004d202000041000000800020043f00000000030004140000047802100197000004700030009c0000047003008041000000c001300210000004c5011001c711bc11b70000040f00000060031002700000047003300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000002390000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000002350000c13d000000000006004b000002460000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f00000000006504350000000100200190000003eb0000c13d0000001f0530018f0000047206300198000000400200043d0000000004620019000005ff0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000024f0000c13d000005ff0000013d000004a00020009c0000052f0000613d000004a10020009c000006890000c13d0000000001000416000000000001004b000006890000c13d0000000001000411000000000010043f0000000101000039000000200010043f0000000001000414000004700010009c0000047001008041000000c001100210000004b3011001c7000080100200003911bc11b70000040f0000000100200190000006890000613d000000000101043b000000000101041a000000ff00100190000002710000c13d000000000100041a00000478011001970000000002000411000000000021004b0000062a0000c13d000004dc010000410000000000100443000000000100041000000004001004430000000001000414000004700010009c0000047001008041000000c001100210000004c1011001c70000800a0200003911bc11b70000040f000000010020019000000e920000613d000000000101043b001100000001001d000000000001004b0000068b0000c13d000000400100043d0000004402100039000004e2030000410000000000320435000000240210003900000011030000390000000000320435000004b702000041000000000021043500000004021000390000002003000039000006340000013d0000048d0020009c000005380000613d0000048e0020009c000006890000c13d0000000001000416000000000001004b000006890000c13d0000000701000039000000000101041a000004d502000041000000800020043f00000000030004140000047802100197000004700030009c0000047003008041000000c001300210000004c5011001c711bc11b70000040f00000060031002700000047003300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000002af0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000002ab0000c13d000000000006004b000002bc0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f00000000006504350000000100200190000003eb0000c13d0000001f0530018f0000047206300198000000400200043d0000000004620019000005ff0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000002c50000c13d000005ff0000013d000004970020009c000005640000613d000004980020009c000006890000c13d000000240030008c000006890000413d0000000001000416000000000001004b000006890000c13d0000000001000411000000000010043f0000000101000039000000200010043f0000000001000414000004700010009c0000047001008041000000c001100210000004b3011001c7000080100200003911bc11b70000040f0000000100200190000006890000613d000000000101043b000000000101041a000000ff001001900000000101000039000002eb0000c13d000000000100041a00000478011001970000000002000411000000000021004b00000000010000390000000101006039000000010110018f11bc0fe40000040f00000004010000390000000101100367000000000101043b0000000202000039000000000012041b0000000001000019000011bd0001042e000004840020009c0000057c0000613d000004850020009c000006890000c13d000000440030008c000006890000413d0000000402100370000000000202043b000900000002001d000004730020009c000006890000213d00000009020000290000002302200039000000000032004b000006890000813d0000000902000029000800040020003d0000000802100360000000000202043b000004730020009c000006890000213d0000000904000029000f00240040003d00000005042002100000000f04400029000000000034004b000006890000213d0000002403100370000000000303043b000100000003001d000004780030009c000006890000213d0000000404000039000000000304041a000000020030008c000006f60000c13d000004c401000041000000800010043f000004c501000041000011be00010430000000240030008c000006890000413d0000000002000416000000000002004b000006890000c13d0000000401100370000000000101043b000004730010009c000006890000213d0000000401100039000000000203001911bc0f940000040f0000001f0420018f000004e4052001980000000106100367000000400100043d0000000003510019000003340000613d000000000706034f0000000008010019000000007907043c0000000008980436000000000038004b000003300000c13d000000000004004b000003410000613d000000000556034f0000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f0000000000430435000000000321001900000008040000390000000000430435000000200220003911bc11860000040f000000000101041a000000a0011002700000ffff0110018f000005280000013d0000000001000416000000000001004b000006890000c13d000000000100041a000005340000013d0000000001000416000000000001004b000006890000c13d0000000601000039000000000101041a000000800010043f000004d601000041000011bd0001042e000001440030008c000006890000413d0000000002000416000000000002004b000006890000c13d0000000402100370000000000202043b000004730020009c000006890000213d0000002304200039000000000034004b000006890000813d001100040020003d0000001104100360000000000404043b001200000004001d000004730040009c000006890000213d00000012022000290000002402200039000000000032004b000006890000213d000001a002000039000000400020043f0000002402100370000000000202043b000004730020009c000006890000213d000000800020043f0000004402100370000000000202043b000004730020009c000006890000213d000000a00020043f0000006402100370000000000202043b0000ffff0020008c000006890000213d000000c00020043f0000008402100370000000000202043b0000ffff0020008c000006890000213d000000e00020043f000000a402100370000000000202043b0000ffff0020008c000006890000213d000001000020043f000000c402100370000000000202043b000000000002004b0000000003000039000000010300c039000000000032004b000006890000c13d000001200020043f000000e402100370000000000202043b000000000002004b0000000003000039000000010300c039000000000032004b000006890000c13d000001400020043f0000010402100370000000000202043b000000000002004b0000000003000039000000010300c039000000000032004b000006890000c13d000001600020043f0000012401100370000000000101043b000001800010043f0000000001000411000000000010043f0000000101000039000000200010043f0000000001000414000004700010009c0000047001008041000000c001100210000004b3011001c7000080100200003911bc11b70000040f0000000100200190000006890000613d000000000101043b000000000101041a000000ff00100190000003b90000c13d000000000100041a00000478011001970000000002000411000000000021004b0000062a0000c13d000000400100043d000001600200043d000000000002004b00000ee10000c13d000004d10200004100000ea10000013d0000000001000416000000000001004b000006890000c13d0000000701000039000000000101041a000004e302000041000000800020043f00000000030004140000047802100197000004700030009c0000047003008041000000c001300210000004c5011001c711bc11b70000040f00000060031002700000047003300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000003dc0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000003d80000c13d000000000006004b000003e90000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f00000000006504350000000100200190000005f40000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000006890000413d000000800200043d00000000002104350000004001100210000004d3011001c7000011bd0001042e000000640030008c000006890000413d0000000002000416000000000002004b000006890000c13d0000000402100370000000000202043b000004780020009c000006890000213d0000002401100370000000000101043b000004780010009c000006890000213d0000000101000039000000800010043f000004d601000041000011bd0001042e000000240030008c000006890000413d0000000002000416000000000002004b000006890000c13d0000000401100370000000000101043b000004780010009c000006890000213d0000000702000039000000000202041a000004d703000041000000800030043f000000840010043f00000000010004140000047802200197000004700010009c0000047001008041000000c001100210000004c7011001c711bc11b70000040f00000060031002700000001f0430018f000004720530019700000470033001970000000100200190000006120000613d0000008002500039000000000005004b0000042b0000613d0000008006000039000000000701034f000000007807043c0000000006860436000000000026004b000004270000c13d000000000004004b000004380000613d000000000151034f0000000304400210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000001f0130003900000471021001970000008001200039000000400010043f000000200030008c000006890000413d000000800400043d000004730040009c000006890000213d00000080033000390000009f05400039000000000035004b000006890000813d00000080054000390000000005050433000004730050009c000001cf0000213d00000005065002100000003f0760003900000475077001970000000007170019000004730070009c000001cf0000213d000000400070043f0000000000510435000000a0044000390000000006460019000000000036004b000006890000213d000000a002200039000000000005004b0000045d0000613d000000000302001900000000450404340000000003530436000000000064004b000004590000413d000000400300043d00000020040000390000000005430436000000000401043300000000004504350000004001300039000000000004004b0000046b0000613d0000000005000019000000002602043400000000016104360000000105500039000000000045004b000004660000413d0000000001310049000004700010009c00000470010080410000006001100210000004700030009c00000470030080410000004002300210000000000121019f000011bd0001042e000000440030008c000006890000413d0000000002000416000000000002004b000006890000c13d0000000401100370000000000101043b001200000001001d000004780010009c000006890000213d0000000001000411000000000010043f0000000101000039000000200010043f0000000001000414000004700010009c0000047001008041000000c001100210000004b3011001c7000080100200003911bc11b70000040f0000000100200190000006890000613d000000000101043b000000000101041a000000ff00100190000004940000c13d000000000100041a00000478011001970000000002000411000000000021004b0000062a0000c13d0000000701000039000000000101041a000004c00200004100000000002004430000047801100197001100000001001d00000004001004430000000001000414000004700010009c0000047001008041000000c001100210000004c1011001c7000080020200003911bc11b70000040f000000010020019000000e920000613d000000000101043b000000000001004b000006890000613d000000400400043d000004c201000041000000000014043500000004014000390000001202000029000000000021043500000024010000390000000101100367000000000101043b00000044024000390000000103000039000000000032043500000024024000390000000000120435000004700040009c001200000004001d0000047001000041000000000104401900000040011002100000000002000414000004700020009c0000047002008041000000c002200210000000000112019f000004c3011001c7000000110200002911bc11b20000040f0000000100200190000007380000613d0000001201000029000004730010009c000001cf0000213d000000400010043f0000000001000019000011bd0001042e000000440030008c000006890000413d0000000002000416000000000002004b000006890000c13d0000000402100370000000000402043b000004730040009c000006890000213d0000002302400039000000000032004b000006890000813d0000000402400039000000000121034f000000000201043b000000240140003911bc0fae0000040f00000024020000390000000102200367000000000202043b11bc0ff70000040f0000000001000019000011bd0001042e000000440030008c000006890000413d0000000002000416000000000002004b000006890000c13d0000000402100370000000000202043b001200000002001d000004780020009c000006890000213d0000002401100370000000000201043b000000000002004b0000000001000039000000010100c039001100000002001d000000000012004b000006890000c13d11bc11750000040f0000001201000029000000000010043f0000000101000039000000200010043f0000004002000039000000000100001911bc11860000040f000000000301041a000004e5023001970000001103000029000005600000013d000000240030008c000006890000413d0000000002000416000000000002004b000006890000c13d0000000401100370000000000101043b0000000502000039000000000202041a000000000021004b000006890000813d11bc0fd60000040f000000000201041a0000000101100039000000000101041a000000400300043d0000002004300039000000000014043500000478012001970000000000130435000004700030009c00000470030080410000004001300210000004d4011001c7000011bd0001042e000000240030008c000006890000413d0000000002000416000000000002004b000006890000c13d0000000401100370000000000101043b000004730010009c000006890000213d0000000401100039000000000203001911bc0f940000040f11bc10370000040f000000000001004b0000000001000039000000010100c039000000400200043d0000000000120435000004700020009c00000470020080410000004001200210000004d3011001c7000011bd0001042e0000000001000416000000000001004b000006890000c13d0000000701000039000000000101041a0000047801100197000000800010043f000004d601000041000011bd0001042e000000240030008c000006890000413d0000000002000416000000000002004b000006890000c13d0000000401100370000000000101043b001200000001001d000004780010009c000006890000213d0000000001000411000000000010043f0000000101000039000000200010043f0000000001000414000004700010009c0000047001008041000000c001100210000004b3011001c7000080100200003911bc11b70000040f0000000100200190000006890000613d000000000101043b000000000101041a000000ff0010019000000001010000390000055a0000c13d000000000100041a00000478011001970000000002000411000000000021004b00000000010000390000000101006039000000010110018f11bc0fe40000040f0000000701000039000000000201041a00000479022001970000001203000029000000000232019f000000000021041b0000000001000019000011bd0001042e0000000001000416000000000001004b000006890000c13d000000000100041a00000478021001970000000005000411000000000052004b000005910000c13d0000047901100197000000000010041b0000000001000414000004700010009c0000047001008041000000c0011002100000047a011001c70000800d0200003900000003030000390000047b04000041000000000600001911bc11b20000040f0000000100200190000006890000613d0000000001000019000011bd0001042e000000240030008c000006890000413d0000000002000416000000000002004b000006890000c13d0000000401100370000000000601043b000004780060009c000006890000213d000000000100041a00000478021001970000000005000411000000000052004b000005910000c13d000000000006004b0000067b0000c13d0000047e01000041000000800010043f000000840000043f000004c701000041000011be00010430000004c601000041000000800010043f000000840050043f000004c701000041000011be00010430000000000100041a0000047902100197000000000262019f000000000020041b00000000020004140000047805100197000004700020009c0000047002008041000000c0012002100000047a011001c70000800d0200003900000003030000390000047b0400004111bc11b20000040f0000000100200190000006890000613d0000000303000039000000000103041a000004e501100197000000000013041b00000001010000390000000402000039000000000012041b0000000f010000290000000001010433000000000001004b000005e30000613d00000005030000390000000002000019000000000403041a000004730040009c000001cf0000213d001200000002001d00000005012002100000000e011000290000000001010433001000000001001d001100000004001d0000000101400039000000000013041b000000000030043f0000000001000414000004700010009c0000047001008041000000c0011002100000047c011001c7000080100200003911bc11b70000040f0000000100200190000006890000613d00000011020000290000000102200210000000000101043b0000000001210019000000000201041a0000047902200197000000100300002900000000430304340000047803300197000000000232019f000000000021041b00000001021000390000000001040433000000000012041b0000000603000039000000000203041a000000000012001a00000e930000413d0000000001120019000000000013041b000000120200002900000001022000390000000f010000290000000001010433000000000012004b0000000503000039000005b30000413d0000002001000039000001000010044300000120000004430000047d01000041000011bd0001042e0000001f0530018f0000047206300198000000400200043d0000000004620019000005ff0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000005ef0000c13d000005ff0000013d0000001f0530018f0000047206300198000000400200043d0000000004620019000005ff0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000005fb0000c13d000000000005004b0000060c0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000004700020009c00000470020080410000004002200210000000000112019f000011be00010430000000400200043d0000000006520019000000000005004b0000061c0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000068004b000006180000c13d000000000004004b0000060c0000613d000000000151034f0000000304400210000000000506043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001604350000060c0000013d000000400100043d0000004402100039000004db030000410000000000320435000004b702000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000004700010009c00000470010080410000004001100210000004c3011001c7000011be000104300000008007700039000000400070043f000000800020043f00000000042400190000002404400039000000000034004b000006890000213d0000002003500039000000000431034f000004e4052001980000001f0620018f000000a0035000390000064d0000613d000000a007000039000000000804034f000000008908043c0000000007970436000000000037004b000006490000c13d000000000006004b0000065a0000613d000000000454034f0000000305600210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f0000000000430435000000a00220003900000000000204350000002401100370000000000101043b001200000001001d000004780010009c000006890000213d000000400100043d000000800200043d000000000002004b0000066d0000613d00000000030000190000000004130019000000a005300039000000000505043300000000005404350000002003300039000000000023004b000006660000413d000000000312001900000009040000390000000000430435000000200220003911bc11860000040f00000012020000290000047802200197000000000020043f000000200010043f0000004002000039000000000100001911bc11860000040f000000000101041a000003480000013d0000047901100197000000000161019f000000000010041b0000000001000414000004700010009c0000047001008041000000c0011002100000047a011001c70000800d0200003900000003030000390000047b0400004111bc11b20000040f00000001002001900000057a0000c13d0000000001000019000011be000104300000000504000039000000000104041a000000000001004b000006a00000c13d000000000100041a001200000001001d0000000001000410001300000001001d0000800a0100003900000024030000390000000004000415000000130440008a0000000504400210000004dc0200004111bc119b0000040f00000000020100190000001201000029000004780110019711bc11250000040f0000000001000019000011bd0001042e00000000050000190000000002000019000000000021004b00000e990000a13d000000000040043f0000000101200210000004de0210009a000000000302041a000000000003004b000006ee0000613d00000011023000b900000011042000fa000000000034004b00000e930000c13d0000000603000039000000000303041a000000000003004b00000ea70000613d001200000005001d000004df0110009a000000000101041a00000478041001970000000001000414000004700010009c0000047001008041000000c001100210000000000023004b000006be0000a13d0000000002040019000006c20000013d00000000033200d90000047a011001c70000800902000039000000000500001911bc11b20000040f00000060031002700000047003300198000006ea0000613d0000001f0430003900000471044001970000003f04400039000004e005400197000000400400043d0000000005540019000000000045004b00000000060000390000000106004039000004730050009c000001cf0000213d0000000100600190000001cf0000c13d000000400050043f000000000634043600000472053001980000000004560019000006dd0000613d000000000701034f000000007807043c0000000006860436000000000046004b000006d90000c13d0000001f03300190000006ea0000613d000000000151034f0000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000001002001900000000504000039000000120500002900000ead0000613d000000ff0050008c00000e930000613d000000000104041a0000000102500039000000ff0520018f000000000015004b000006a20000413d0000068f0000013d0000000203000039000000000034041b000000000002004b000600000000001d000700000000001d000007540000c13d0000000001000416000000070010006c00000e9f0000c13d0000000701000039000000000101041a000004c00200004100000000002004430000047801100197001200000001001d00000004001004430000000001000414000004700010009c0000047001008041000000c001100210000004c1011001c7000080020200003911bc11b70000040f000000010020019000000e920000613d000000000101043b000000000001004b000006890000613d000000400300043d000000440130003900000001020000390000000000210435000000240130003900000006020000290000000000210435000004c20100004100000000001304350000000101000029000004780110019700000004023000390000000000120435000004700030009c001100000003001d0000047001000041000000000103401900000040011002100000000002000414000004700020009c0000047002008041000000c002200210000000000112019f000004c3011001c7000000120200002911bc11b20000040f000000010020019000000eb40000613d0000001101000029000004730010009c000001cf0000213d0000001101000029000000400010043f00000004010000390000000102000039000000000021041b0000000001000019000011bd0001042e00000060061002700000001f0460018f0000047205600198000000400200043d0000000003520019000007440000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000038004b000007400000c13d0000047006600197000000000004004b000007520000613d000000000151034f0000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000060016002100000060d0000013d0000000902000029000200440020003d000700000000001d000600000000001d0000000002000019000a00000002001d00000005022002100005000f0020002d0000000502100360000000000302043b0000000002000031000000090420006a000000a30440008a00000474054001970000047406300197000000000756013f000000000056004b00000000050000190000047405004041000000000043004b00000000040000190000047404008041000004740070009c000000000504c019000000000005004b000006890000c13d0000000f03300029001200000003001d001000200030003d0000001003100360000000000303043b0000ffff0030008c000006890000213d000000000003004b00000ec40000613d000000120420006a0000001203100360000000000303043b0000001f0440008a00000474054001970000047406300197000000000756013f000000000056004b00000000050000190000047405004041000000000043004b00000000040000190000047404008041000004740070009c000000000504c019000000000005004b000006890000c13d0000001203300029000000000431034f000000000704043b000004730070009c000006890000213d0000000002720049000000200630003900000474032001970000047404600197000000000534013f000000000034004b00000000030000190000047403004041001100000006001d000000000026004b00000000020000190000047402002041000004740050009c000000000302c019000000000003004b000006890000c13d0000001103100360000004e408700198000000400100043d0000000002810019000007a80000613d000000000403034f0000000005010019000000004604043c0000000005650436000000000025004b000007a40000c13d0000001f04700190000c00000004001d0000000306400210000007b60000613d000000000383034f000000000402043300000000046401cf000000000464022f000000000303043b0000010005600089000000000353022f00000000035301cf000000000343019f0000000000320435000400000006001d000e00000008001d000000000271001900000008030000390000000000320435000004700010009c000004700100804100000040011002100000000002000414000004700020009c0000047002008041000000c002200210000000000112019f000004a70070009c000004a70200004100000000020740190000006002200210000b04a8002000a20000000b011001af0000047a011001c70000801002000039000d00000007001d11bc11b70000040f0000000100200190000006890000613d000000000101043b000000000101041a00000473001001980000000e0700002900000ec10000613d000000400100043d000000000271001900000011030000290000000103300367000000000007004b000007e00000613d000000000403034f0000000005010019000000004604043c0000000005650436000000000025004b000007dc0000c13d0000000c0000006b0000000d06000029000007ee0000613d000000000373034f0000000004020433000000040500002900000000045401cf000000000454022f000000000303043b0000010005500089000000000353022f00000000035301cf000000000343019f0000000000320435000000000261001900000008030000390000000000320435000004700010009c000004700100804100000040011002100000000002000414000004700020009c0000047002008041000000c002200210000000000112019f0000000b011001af0000047a011001c7000080100200003911bc11b70000040f0000000100200190000006890000613d000000000101043b000000000101041a000300000001001d000004a90100004100000000001004430000000001000414000004700010009c0000047001008041000000c001100210000004aa011001c70000800b0200003911bc11b70000040f000000010020019000000e920000613d00000003020000290000047302200197000000000101043b000000000021004b0000000e0700002900000ec10000413d000000400100043d000000000271001900000011030000290000000103300367000000000007004b0000081f0000613d000000000403034f0000000005010019000000004604043c0000000005650436000000000025004b0000081b0000c13d0000000c0000006b0000000d060000290000082d0000613d000000000373034f0000000004020433000000040500002900000000045401cf000000000454022f000000000303043b0000010005500089000000000353022f00000000035301cf000000000343019f0000000000320435000000000261001900000008030000390000000000320435000004700010009c000004700100804100000040011002100000000002000414000004700020009c0000047002008041000000c002200210000000000112019f0000000b011001af0000047a011001c7000080100200003911bc11b70000040f0000000100200190000006890000613d000000000101043b000000000101041a000300000001001d000004a90100004100000000001004430000000001000414000004700010009c0000047001008041000000c001100210000004aa011001c70000800b0200003911bc11b70000040f000000010020019000000e920000613d000000000101043b000000030200002900000040022002700000047302200197000000000021004b0000000e0700002900000ec10000213d000000400100043d000000000271001900000011030000290000000103300367000000000007004b0000085f0000613d000000000403034f0000000005010019000000004604043c0000000005650436000000000025004b0000085b0000c13d0000000c0000006b0000000d060000290000086d0000613d000000000373034f0000000004020433000000040500002900000000045401cf000000000454022f000000000303043b0000010005500089000000000353022f00000000035301cf000000000343019f0000000000320435000000000261001900000008030000390000000000320435000004700010009c000004700100804100000040011002100000000002000414000004700020009c0000047002008041000000c002200210000000000112019f0000000b011001af0000047a011001c7000080100200003911bc11b70000040f0000000100200190000006890000613d000000000101043b000000000101041a000004ab0010019800000ec10000c13d00000001020003670000001201200360000000000101043b0000000003000031000000120430006a0000001f0440008a00000474054001970000047406100197000000000756013f000000000056004b00000000050000190000047405004041000000000041004b00000000040000190000047404008041000004740070009c000000000504c019000000000005004b000006890000c13d0000001204100029000000000142034f000000000101043b000004730010009c000006890000213d0000000005130049000000200340003900000474045001970000047406300197000000000746013f000000000046004b00000000040000190000047404004041000000000053004b00000000050000190000047405002041000004740070009c000000000405c019000000000004004b000006890000c13d000000000432034f000004e405100198000000400200043d0000000003520019000008b40000613d000000000604034f0000000007020019000000006806043c0000000007870436000000000037004b000008b00000c13d0000001f06100190000008c10000613d000000000454034f0000000305600210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f0000000000430435000000000312001900000008040000390000000000430435000004700020009c00000470020080410000004002200210000004a70010009c000004a7010080410000006001100210000000000121019f0000000002000414000004700020009c0000047002008041000000c002200210000000000121019f000004ac0110009a000080100200003911bc11b70000040f0000000100200190000006890000613d000000000101043b000000000101041a000004ad00100198000009f70000613d00000001020003670000001201200360000000000101043b0000000003000031000000120430006a0000001f0440008a00000474054001970000047406100197000000000756013f000000000056004b00000000050000190000047405004041000000000041004b00000000040000190000047404008041000004740070009c000000000504c019000000000005004b000006890000c13d0000001204100029000000000142034f000000000101043b000004730010009c000006890000213d0000000005130049000000200340003900000474045001970000047406300197000000000746013f000000000046004b00000000040000190000047404004041000000000053004b00000000050000190000047405002041000004740070009c000000000405c019000000000004004b000006890000c13d000000000432034f000004e405100198000000400200043d00000000035200190000090b0000613d000000000604034f0000000007020019000000006806043c0000000007870436000000000037004b000009070000c13d0000001f06100190000009180000613d000000000454034f0000000305600210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f0000000000430435000000000312001900000008040000390000000000430435000004700020009c00000470020080410000004002200210000004a70010009c000004a7010080410000006001100210000000000121019f0000000002000414000004700020009c0000047002008041000000c002200210000000000121019f000004ac0110009a000080100200003911bc11b70000040f0000000100200190000006890000613d00000001020003670000001003200360000000000303043b0000ffff0030008c000006890000213d000000000101043b000000000101041a000000a0011002700000ffff0110018f00000000093100190000ffff0090008c00000e930000213d0000001201200360000000000101043b0000000003000031000000120430006a0000001f0440008a00000474054001970000047406100197000000000756013f000000000056004b00000000050000190000047405004041000000000041004b00000000040000190000047404008041000004740070009c000000000504c019000000000005004b000006890000c13d0000001204100029000000000142034f000000000101043b000004730010009c000006890000213d0000000005130049000000200340003900000474045001970000047406300197000000000746013f000000000046004b00000000040000190000047404004041000000000053004b00000000050000190000047405002041000004740070009c000000000405c019000000000004004b000006890000c13d000000000432034f000004e405100198000000400200043d0000000003520019000009690000613d000000000604034f0000000007020019000000006806043c0000000007870436000000000037004b000009650000c13d001100000009001d0000001f06100190000009770000613d000000000454034f0000000305600210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f0000000000430435000000000312001900000008040000390000000000430435000004700020009c00000470020080410000004002200210000004a70010009c000004a7010080410000006001100210000000000121019f0000000002000414000004700020009c0000047002008041000000c002200210000000000121019f000004ac0110009a000080100200003911bc11b70000040f00000001002001900000001102000029000006890000613d000000000101043b000000000101041a00000090011002700000ffff0110018f000000000012004b00000eca0000213d00000001020003670000001001200360000000000901043b0000ffff0090008c000006890000213d0000001201200360000000000101043b0000000003000031000000120430006a0000001f0440008a00000474054001970000047406100197000000000756013f000000000056004b00000000050000190000047405004041000000000041004b00000000040000190000047404008041000004740070009c000000000504c019000000000005004b000006890000c13d0000001204100029000000000142034f000000000101043b000004730010009c000006890000213d0000000005130049000000200340003900000474045001970000047406300197000000000746013f000000000046004b00000000040000190000047404004041000000000053004b00000000050000190000047405002041000004740070009c000000000405c019000000000004004b000006890000c13d000000000432034f000004e405100198000000400200043d0000000003520019000009c80000613d000000000604034f0000000007020019000000006806043c0000000007870436000000000037004b000009c40000c13d001100000009001d0000001f06100190000009d60000613d000000000454034f0000000305600210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f0000000000430435000000000312001900000008040000390000000000430435000004700020009c00000470020080410000004002200210000004a70010009c000004a7010080410000006001100210000000000121019f0000000002000414000004700020009c0000047002008041000000c002200210000000000121019f000004ac0110009a000080100200003911bc11b70000040f00000001002001900000001104000029000006890000613d000000000101043b000000000201041a000000a0032002700000ffff0330018f00000000034300190000ffff0030008c00000e930000213d000004ae02200197000000a003300210000004af03300197000000000223019f000000000021041b00000001020003670000001201200360000000000101043b0000000003000031000000120430006a0000001f0440008a00000474054001970000047406100197000000000756013f000000000056004b00000000050000190000047405004041000000000041004b00000000040000190000047404008041000004740070009c000000000504c019000000000005004b000006890000c13d0000001204100029000000000142034f000000000101043b000004730010009c000006890000213d0000000005130049000000200340003900000474045001970000047406300197000000000746013f000000000046004b00000000040000190000047404004041000000000053004b00000000050000190000047405002041000004740070009c000000000405c019000000000004004b000006890000c13d000000000432034f000004e405100198000000400200043d000000000352001900000a290000613d000000000604034f0000000007020019000000006806043c0000000007870436000000000037004b00000a250000c13d0000001f0610019000000a360000613d000000000454034f0000000305600210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f0000000000430435000000000312001900000008040000390000000000430435000004700020009c00000470020080410000004002200210000004a70010009c000004a7010080410000006001100210000000000121019f0000000002000414000004700020009c0000047002008041000000c002200210000000000121019f000004ac0110009a000080100200003911bc11b70000040f0000000100200190000006890000613d0000000102000367000000000101043b000000000101041a000004b20010019800000c310000613d0000001201000029001100400010003d0000001101200360000000000101043b0000ffff0010008c000006890000213d000000000001004b00000ec40000613d00000011010000290000002001100039000000000112034f000000000501043b0000000001000031000000120310006a0000001f0330008a00000474043001970000047406500197000000000746013f000000000046004b00000000060000190000047406004041000000000035004b00000000080000190000047408008041000004740070009c000000000608c019000000000006004b000006890000c13d0000001206500029000000000562034f000000000505043b000004730050009c000006890000213d000000050750021000000000077100490000002006600039000000000076004b0000000008000019000004740800204100000474077001970000047406600197000000000976013f000000000076004b00000000060000190000047406004041000004740090009c000000000608c019000000000006004b000006890000c13d000000000005004b00000ec40000613d0000001205200360000000000505043b0000047406500197000000000746013f000000000046004b00000000040000190000047404004041000000000035004b00000000030000190000047403008041000004740070009c000000000403c019000000000004004b000006890000c13d0000001204500029000000000342034f000000000303043b000004730030009c000006890000213d0000000005310049000000200140003900000474045001970000047406100197000000000746013f000000000046004b00000000040000190000047404004041000000000051004b00000000050000190000047405002041000004740070009c000000000405c019000000000004004b000006890000c13d000000000412034f000004e405300198000000400100043d000000000251001900000aaf0000613d000000000604034f0000000007010019000000006806043c0000000007870436000000000027004b00000aab0000c13d0000001f0630019000000abc0000613d000000000454034f0000000305600210000000000602043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f0000000000420435000000000231001900000009040000390000000000420435000004700010009c00000470010080410000004001100210000004a70030009c000004a7030080410000006002300210000000000112019f0000000002000414000004700020009c0000047002008041000000c002200210000000000121019f000004ac0110009a000080100200003911bc11b70000040f0000000100200190000006890000613d000000000101043b0000000002000411000000000020043f000000200010043f0000000001000414000004700010009c0000047001008041000000c001100210000004b3011001c7000080100200003911bc11b70000040f0000000100200190000006890000613d00000001020003670000001003200360000000000303043b000e00000003001d0000ffff0030008c000006890000213d000000000101043b000000000101041a0000ffff0110018f0000000e011000290000ffff0010008c00000e930000213d00000010030000290000002003300039000000000332034f000000000303043b0000ffff0030008c000006890000213d000000000031004b00000ec70000213d0000001201200360000000000101043b0000000003000031000000120430006a0000001f0440008a00000474054001970000047406100197000000000756013f000000000056004b00000000050000190000047405004041000000000041004b00000000040000190000047404008041000004740070009c000000000504c019000000000005004b000006890000c13d0000001204100029000000000142034f000000000101043b000004730010009c000006890000213d0000000005130049000000200340003900000474045001970000047406300197000000000746013f000000000046004b00000000040000190000047404004041000000000053004b00000000050000190000047405002041000004740070009c000000000405c019000000000004004b000006890000c13d000000000432034f000004e405100198000000400200043d000000000352001900000b220000613d000000000604034f0000000007020019000000006806043c0000000007870436000000000037004b00000b1e0000c13d0000001f0610019000000b2f0000613d000000000454034f0000000305600210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f0000000000430435000000000312001900000009040000390000000000430435000004700020009c00000470020080410000004002200210000004a70010009c000004a7010080410000006001100210000000000121019f0000000002000414000004700020009c0000047002008041000000c002200210000000000121019f000004ac0110009a000080100200003911bc11b70000040f0000000100200190000006890000613d000000000101043b0000000002000411000000000020043f000000200010043f0000000001000414000004700010009c0000047001008041000000c001100210000004b3011001c7000080100200003911bc11b70000040f0000000100200190000006890000613d000000000101043b000000000201041a0000ffff0320018f0000000e033000290000ffff0030008c00000e930000213d000004b402200197000000000223019f000000000021041b000000120400002900000060024000390000000101000367000000000221034f000000000502043b000000000300003100000000024300490000001f0220008a00000474042001970000047406500197000000000746013f000000000046004b00000000060000190000047406004041000000000025004b00000000080000190000047408008041000004740070009c000000000608c019000000000006004b000006890000c13d0000001205500029000000000651034f000000000c06043b0000047300c0009c000006890000213d000000050dc002100000000006d30049000000200b50003900000474056001970000047407b00197000000000857013f000000000057004b0000000005000019000004740500404100000000006b004b00000000060000190000047406002041000004740080009c000000000506c019000000000005004b000006890000c13d0000001205100360000000000505043b0000047406500197000000000746013f000000000046004b00000000040000190000047404004041000000000025004b00000000020000190000047402008041000004740070009c000000000402c019000000000004004b000006890000c13d0000001204500029000000000241034f000000000202043b000004730020009c000006890000213d0000000005230049000000200340003900000474045001970000047406300197000000000746013f000000000046004b00000000040000190000047404004041000000000053004b00000000050000190000047405002041000004740070009c000000000405c019000000000004004b000006890000c13d0000001104100360000000000404043b0000ffff0040008c000006890000213d000000000631034f00000000010004110000006005100210000000400100043d00000020031000390000000000530435000004e4072001980000003408100039000000000578001900000bb80000613d000000000906034f000000009a09043c0000000008a80436000000000058004b00000bb40000c13d0000001f0820019000000bc50000613d000000000676034f0000000307800210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f000000000065043500000034052000390000000006150019000000000046043500000000005104350000007302200039000004e4022001970000000002210019000000000012004b00000000040000390000000104004039000004730020009c000001cf0000213d0000000100400190000001cf0000c13d000000400020043f000004700030009c000004700300804100000040023002100000000001010433000004700010009c00000470010080410000006001100210000000000121019f0000000002000414000004700020009c0000047002008041000000c002200210000000000112019f0000047a011001c7000080100200003900120000000b001d000e0000000c001d000d0000000d001d11bc11b70000040f0000000d050000290000000e0400002900000012060000290000000100200190000006890000613d000000000101043b0000003f025000390000047502200197000000400300043d0000000002230019001100000003001d000000000032004b00000000030000390000000103004039000004730020009c000001cf0000213d0000000100300190000001cf0000c13d000000400020043f00000011020000290000000002420436001000000002001d0000000002650019000000000020007c000006890000213d000000000062004b00000c0c0000a13d000000010360036700000011040000290000002004400039000000003503043c00000000005404350000002006600039000000000026004b00000c040000413d000000110200002900000000040204330000000202000039000000000202041a000e00000002001d000000000004004b00000c2e0000613d0000000003000019001200000003001d000000050230021000000010022000290000000002020433000000000021004b00000c1c0000813d000000000010043f000000200020043f000000000100041400000c1f0000013d000000000020043f000000200010043f0000000001000414000004700010009c0000047001008041000000c001100210000004b3011001c7000080100200003911bc11b70000040f0000000100200190000006890000613d000000000101043b0000001203000029000000010330003900000011020000290000000002020433000000000023004b00000c120000413d0000000e0010006c00000d8a0000613d00000ecd0000013d00000012030000290000006001300039000000000112034f000000000501043b000000000100003100000000033100490000001f0330008a00000474043001970000047406500197000000000746013f000000000046004b00000000060000190000047406004041000000000035004b00000000080000190000047408008041000004740070009c000000000608c019000000000006004b000006890000c13d0000001206500029000000000562034f000000000505043b000004730050009c000006890000213d000000050750021000000000077100490000002006600039000000000076004b0000000008000019000004740800204100000474077001970000047406600197000000000976013f000000000076004b00000000060000190000047406004041000004740090009c000000000608c019000000000006004b000006890000c13d000000000005004b00000ec40000c13d0000001205200360000000000505043b0000047406500197000000000746013f000000000046004b00000000040000190000047404004041000000000035004b00000000030000190000047403008041000004740070009c000000000403c019000000000004004b000006890000c13d0000001204500029000000000342034f000000000303043b000004730030009c000006890000213d0000000005310049000000200140003900000474045001970000047406100197000000000746013f000000000046004b00000000040000190000047404004041000000000051004b00000000050000190000047405002041000004740070009c000000000405c019000000000004004b000006890000c13d000000000412034f000004e405300198000000400100043d000000000251001900000c890000613d000000000604034f0000000007010019000000006806043c0000000007870436000000000027004b00000c850000c13d0000001f0630019000000c960000613d000000000454034f0000000305600210000000000602043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f0000000000420435000000000231001900000009040000390000000000420435000004700010009c00000470010080410000004001100210000004a70030009c000004a7030080410000006002300210000000000112019f0000000002000414000004700020009c0000047002008041000000c002200210000000000121019f000004ac0110009a000080100200003911bc11b70000040f0000000100200190000006890000613d000000000101043b0000000002000411000000000020043f000000200010043f0000000001000414000004700010009c0000047001008041000000c001100210000004b3011001c7000080100200003911bc11b70000040f0000000100200190000006890000613d00000001020003670000001003200360000000000303043b0000ffff0030008c000006890000213d000000000101043b000000000101041a0000ffff0110018f00000000093100190000ffff0090008c00000e930000213d0000001201200360000000000101043b0000000003000031000000120430006a0000001f0440008a00000474054001970000047406100197000000000756013f000000000056004b00000000050000190000047405004041000000000041004b00000000040000190000047404008041000004740070009c000000000504c019000000000005004b000006890000c13d0000001204100029000000000142034f000000000101043b000004730010009c000006890000213d0000000005130049000000200340003900000474045001970000047406300197000000000746013f000000000046004b00000000040000190000047404004041000000000053004b00000000050000190000047405002041000004740070009c000000000405c019000000000004004b000006890000c13d000000000432034f000004e405100198000000400200043d000000000352001900000cf30000613d000000000604034f0000000007020019000000006806043c0000000007870436000000000037004b00000cef0000c13d001100000009001d0000001f0610019000000d010000613d000000000454034f0000000305600210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f0000000000430435000000000312001900000008040000390000000000430435000004700020009c00000470020080410000004002200210000004a70010009c000004a7010080410000006001100210000000000121019f0000000002000414000004700020009c0000047002008041000000c002200210000000000121019f000004ac0110009a000080100200003911bc11b70000040f00000001002001900000001102000029000006890000613d000000000101043b000000000101041a00000080011002700000ffff0110018f000000000012004b00000ec70000213d00000001020003670000001001200360000000000101043b001100000001001d0000ffff0010008c000006890000213d0000001201200360000000000101043b0000000003000031000000120430006a0000001f0440008a00000474054001970000047406100197000000000756013f000000000056004b00000000050000190000047405004041000000000041004b00000000040000190000047404008041000004740070009c000000000504c019000000000005004b000006890000c13d0000001204100029000000000142034f000000000101043b000004730010009c000006890000213d0000000005130049000000200340003900000474045001970000047406300197000000000746013f000000000046004b00000000040000190000047404004041000000000053004b00000000050000190000047405002041000004740070009c000000000405c019000000000004004b000006890000c13d000000000432034f000004e405100198000000400200043d000000000352001900000d530000613d000000000604034f0000000007020019000000006806043c0000000007870436000000000037004b00000d4f0000c13d0000001f0610019000000d600000613d000000000454034f0000000305600210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f0000000000430435000000000312001900000009040000390000000000430435000004700020009c00000470020080410000004002200210000004a70010009c000004a7010080410000006001100210000000000121019f0000000002000414000004700020009c0000047002008041000000c002200210000000000121019f000004ac0110009a000080100200003911bc11b70000040f0000000100200190000006890000613d000000000101043b0000000002000411000000000020043f000000200010043f0000000001000414000004700010009c0000047001008041000000c001100210000004b3011001c7000080100200003911bc11b70000040f0000000100200190000006890000613d000000000101043b000000000201041a0000ffff0320018f00000011033000290000ffff0030008c00000e930000213d000004b402200197000000000223019f000000000021041b00000001010003670000000802100360000000000202043b0000000a0020006b00000e990000813d0000000502100360000000000202043b0000000003000031000000090430006a000000a30440008a00000474054001970000047406200197000000000756013f000000000056004b00000000050000190000047405004041000000000042004b00000000040000190000047404008041000004740070009c000000000504c019000000000005004b000006890000c13d0000000204200029000000000441034f000000000904043b0000ffff0090008c000006890000213d000000060090002a00000e930000413d0000000f02200029000000000421034f000000000404043b00000000052300490000001f0550008a00000474065001970000047407400197000000000867013f000000000067004b00000000060000190000047406004041000000000054004b00000000050000190000047405008041000004740080009c000000000605c019000000000006004b000006890000c13d0000000004240019000000000241034f000000000202043b000004730020009c000006890000213d0000000005230049000000200340003900000474045001970000047406300197000000000746013f000000000046004b00000000040000190000047404004041000000000053004b00000000050000190000047405002041000004740070009c000000000405c019000000000004004b000006890000c13d000000000431034f000004e405200198000000400100043d000000000351001900000dd90000613d000000000604034f0000000007010019000000006806043c0000000007870436000000000037004b00000dd50000c13d001200000009001d0000001f0620019000000de70000613d000000000454034f0000000305600210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f0000000000430435000000000321001900000008040000390000000000430435000004700010009c00000470010080410000004001100210000004a70020009c000004a7020080410000006002200210000000000112019f0000000002000414000004700020009c0000047002008041000000c002200210000000000121019f000004ac0110009a000080100200003911bc11b70000040f00000001002001900000001202000029000006890000613d000000000101043b0000000101100039000000000101041a000000000c2100a9000000000002004b00000e050000613d00000000022c00d9000000000012004b00000e930000c13d0000000700c0002a00000e930000413d00000001020003670000000801200360000000000101043b0000000a0010006b00000e990000813d0000000501200360000000000301043b0000000004000031000000090140006a000000a30110008a00000474051001970000047406300197000000000756013f000000000056004b00000000050000190000047405004041000000000013004b00000000010000190000047401008041000004740070009c000000000501c019000000000005004b000006890000c13d0000000f01300029000000000512034f000000000505043b00000000061400490000001f0660008a00000474076001970000047408500197000000000978013f000000000078004b00000000070000190000047407004041000000000065004b00000000060000190000047406008041000004740090009c000000000706c019000000000007004b000006890000c13d0000000005150019000000000152034f000000000101043b000004730010009c000006890000213d0000000006140049000000200450003900000474056001970000047407400197000000000857013f000000000057004b00000000050000190000047405004041000000000064004b00000000060000190000047406002041000004740080009c000000000506c019000000000005004b000006890000c13d0000000203300029000000000332034f000000000303043b0000ffff0030008c000006890000213d000000000742034f000000400200043d0000008004000039000000000442043600000080052000390000000000150435000004e408100198000000a005200039000000000685001900000e590000613d000000000907034f000000000a050019000000009b09043c000000000aba043600000000006a004b00000e550000c13d00110000000c001d0000001f0910019000000e670000613d000000000787034f0000000308900210000000000906043300000000098901cf000000000989022f000000000707043b0000010008800089000000000787022f00000000078701cf000000000797019f00000000007604350000000005150019000000000005043500000060052000390000000000350435000000400320003900000001050000290000000000530435000000000300041100000000003404350000001f01100039000004e401100197000004b90010009c000004b9010080410000006001100210000004700020009c00000470020080410000004002200210000000000121019f0000000002000414000004700020009c0000047002008041000000c002200210000000000121019f000004ba0110009a0000800d020000390000000103000039000004bb0400004111bc11b20000040f000000010020019000000012020000290000001103000029000006890000613d000600060020002d000700070030002d00000001010003670000000802100360000000000202043b0000000a030000290000000103300039000000000023004b0000000002030019000007590000413d000006fc0000013d000000000001042f000004dd01000041000000000010043f0000001101000039000000040010043f0000047f01000041000011be00010430000004dd01000041000000000010043f0000003201000039000000040010043f0000047f01000041000011be00010430000000400100043d000004bf020000410000000000210435000004700010009c00000470010080410000004001100210000004b1011001c7000011be00010430000004dd01000041000000000010043f0000001201000039000000040010043f0000047f01000041000011be00010430000000400100043d0000004402100039000004e103000041000000000032043500000024021000390000001003000039000002880000013d00000060061002700000001f0460018f0000047205600198000000400200043d0000000003520019000007440000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000038004b00000ebc0000c13d000007440000013d000000400100043d000004bd0200004100000ea10000013d000000400100043d000004be0200004100000ea10000013d000000400100043d000004bc0200004100000ea10000013d000000400100043d000004b00200004100000ea10000013d000000400100043d0000006402100039000004b50300004100000000003204350000004402100039000004b6030000410000000000320435000000240210003900000022030000390000000000320435000004b7020000410000000000210435000000040210003900000020030000390000000000320435000004700010009c00000470010080410000004001100210000004b8011001c7000011be000104300000001203000029000004e4023001980010001f00300193000f00000002001d0000000002210019000001000000043f00000011030000290000002003300039001100000003001d000000010330036700000ef20000613d000000000403034f0000000005010019000000004604043c0000000005650436000000000025004b00000eee0000c13d000000100000006b00000f000000613d0000000f0330036000000010040000290000000304400210000000000502043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f00000000003204350000001203000029000000000231001900000008040000390000000000420435000004700010009c000004700100804100000040011002100000000002000414000004700020009c0000047002008041000000c002200210000000000112019f0000002002300039000004700020009c000e00000002001d0000047002008041000d0060002002180000000d011001af0000047a011001c7000080100200003911bc11b70000040f0000000100200190000006890000613d000000000101043b000000000101041a000004c90010019800000f4b0000613d000000400100043d0000000f02100029000000110300002900000001033003670000000f0000006b00000f270000613d000000000403034f0000000005010019000000004604043c0000000005650436000000000025004b00000f230000c13d000000100000006b00000f350000613d0000000f0330036000000010040000290000000304400210000000000502043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000320435000000120210002900000008030000390000000000320435000004700010009c000004700100804100000040011002100000000002000414000004700020009c0000047002008041000000c002200210000000000112019f0000000d011001af0000047a011001c7000080100200003911bc11b70000040f0000000100200190000006890000613d000000000101043b000000000101041a000000a0011002700000ffff0110018f000001000010043f000000400100043d0000000f02100029000000110300002900000001033003670000000f0000006b00000f570000613d000000000403034f0000000005010019000000004604043c0000000005650436000000000025004b00000f530000c13d000000100000006b00000f650000613d0000000f0330036000000010040000290000000304400210000000000502043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f00000000003204350000001202100029000000080300003900000000003204350000000e0200002911bc11860000040f000000800200043d0000047302200197000000000301041a000004cb03300197000000000223019f000000a00300043d0000004003300210000004cc03300197000000000232019f000000c00300043d0000008003300210000004cd03300197000000000232019f000000e00300043d0000009003300210000004ad03300197000000000232019f000001000300043d000000a003300210000004af03300197000000000232019f000001200300043d000000000003004b000004ce030000410000000003006019000000000232019f000001400300043d000000000003004b000004cf030000410000000003006019000000000232019f000001600300043d000000000003004b000004d0030000410000000003006019000000000232019f000000000021041b0000000101100039000001800200043d000000000021041b0000000001000019000011bd0001042e0000001f03100039000000000023004b0000000004000019000004740400404100000474052001970000047403300197000000000653013f000000000053004b00000000030000190000047403002041000004740060009c000000000304c019000000000003004b00000fac0000613d0000000103100367000000000303043b000004730030009c00000fac0000213d00000020011000390000000004310019000000000024004b00000fac0000213d0000000002030019000000000001042d0000000001000019000011be00010430000004e60020009c00000fce0000813d00000005052002100000003f045000390000047506400197000000400400043d0000000006640019000000000046004b00000000070000390000000107004039000004730060009c00000fce0000213d000000010070019000000fce0000c13d000000400060043f00000000002404350000000002150019000000000032004b00000fd40000213d000000000012004b00000fcc0000a13d00000001030003670000000005040019000000000613034f000000000606043b000000200550003900000000006504350000002001100039000000000021004b00000fc50000413d0000000001040019000000000001042d000004dd01000041000000000010043f0000004101000039000000040010043f0000047f01000041000011be000104300000000001000019000011be000104300000000502000039000000000302041a000000000013004b00000fde0000a13d000000000020043f0000000101100210000004df0110009a000000000001042d000004dd01000041000000000010043f0000003201000039000000040010043f0000047f01000041000011be00010430000000000001004b00000fe70000613d000000000001042d000000400100043d0000004402100039000004db030000410000000000320435000004b702000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000004700010009c00000470010080410000004001100210000004c3011001c7000011be00010430000400000000000200000000030100190000000201000039000000000101041a000100000001001d000200000003001d0000000031030434000300000003001d000000000001004b0000101e0000613d0000000003000019000400000003001d000000050130021000000003011000290000000001010433000000000012004b0000100c0000813d000000000020043f000000200010043f00000000010004140000100f0000013d000000000010043f000000200020043f0000000001000414000004700010009c0000047001008041000000c001100210000004b3011001c7000080100200003911bc11b70000040f0000000100200190000010210000613d0000000403000029000000000201043b000000010330003900000002010000290000000001010433000000000013004b000010020000413d000000010020006c000010230000c13d000000000001042d0000000001000019000011be00010430000000400100043d0000006402100039000004b50300004100000000003204350000004402100039000004b6030000410000000000320435000000240210003900000022030000390000000000320435000004b7020000410000000000210435000000040210003900000020030000390000000000320435000004700010009c00000470010080410000004001100210000004b8011001c7000011be000104300006000000000002000004e404200198000500000002001d0000001f0720018f000300000001001d0000000103100367000000400100043d000600000004001d0000000002410019000010470000613d000000000403034f0000000005010019000000004604043c0000000005650436000000000025004b000010430000c13d000000000007004b000010540000613d00000006033003600000000304700210000000000502043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000320435000400000007001d0000000503000029000000000231001900000008040000390000000000420435000004700010009c000004700100804100000040011002100000000002000414000004700020009c0000047002008041000000c002200210000000000112019f0000002002300039000004700020009c0000047002008041000200600020021800000002011001af0000047a011001c7000080100200003911bc11b70000040f0000000100200190000011220000613d000000000101043b000000000101041a0000047300100198000011200000613d000000400100043d000000060210002900000003030000290000000103300367000000060000006b0000107b0000613d000000000403034f0000000005010019000000004604043c0000000005650436000000000025004b000010770000c13d0000000405000029000000000005004b000010890000613d00000006033003600000000304500210000000000502043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000320435000000050210002900000008030000390000000000320435000004700010009c000004700100804100000040011002100000000002000414000004700020009c0000047002008041000000c002200210000000000112019f00000002011001af0000047a011001c7000080100200003911bc11b70000040f0000000100200190000011220000613d000000000101043b000000000101041a000100000001001d000004a90100004100000000001004430000000001000414000004700010009c0000047001008041000000c001100210000004aa011001c70000800b0200003911bc11b70000040f0000000100200190000011240000613d00000001020000290000047302200197000000000101043b000000000021004b000000000100001900000004070000290000111e0000413d000000400100043d000000060210002900000003030000290000000103300367000000060000006b000010bb0000613d000000000403034f0000000005010019000000004604043c0000000005650436000000000025004b000010b70000c13d000000000007004b000010c80000613d00000006033003600000000304700210000000000502043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000320435000000050210002900000008030000390000000000320435000004700010009c000004700100804100000040011002100000000002000414000004700020009c0000047002008041000000c002200210000000000112019f00000002011001af0000047a011001c7000080100200003911bc11b70000040f0000000100200190000011220000613d000000000101043b000000000101041a000100000001001d000004a90100004100000000001004430000000001000414000004700010009c0000047001008041000000c001100210000004aa011001c70000800b0200003911bc11b70000040f0000000100200190000011240000613d000000000101043b000000010200002900000040022002700000047302200197000000000021004b000000000100001900000004070000290000111e0000213d000000400100043d000000060210002900000003030000290000000103300367000000060000006b000010fb0000613d000000000403034f0000000005010019000000004604043c0000000005650436000000000025004b000010f70000c13d000000000007004b000011080000613d00000006033003600000000304700210000000000502043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000320435000000050210002900000008030000390000000000320435000004700010009c000004700100804100000040011002100000000002000414000004700020009c0000047002008041000000c002200210000000000112019f00000002011001af0000047a011001c7000080100200003911bc11b70000040f0000000100200190000011220000613d000000000101043b000000000101041a000004ab0010019800000000010000390000000101006039000000010110018f000000000001042d000000010100018f000000000001042d0000000001000019000011be00010430000000000001042f00000000040100190000000001000414000004700010009c0000047001008041000000c001100210000000000002004b000011310000613d00000000030200190000047a011001c700008009020000390000000005000019000011320000013d000000000204001911bc11b20000040f000000600310027000000470033001980000115b0000613d0000001f0430003900000471044001970000003f04400039000004e004400197000000400500043d0000000004450019000000000054004b00000000060000390000000106004039000004730040009c0000116f0000213d00000001006001900000116f0000c13d000000400040043f0000001f0430018f0000000006350436000004720530019800000000035600190000114e0000613d000000000701034f000000007807043c0000000006860436000000000036004b0000114a0000c13d000000000004004b0000115b0000613d000000000151034f0000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000001002001900000115e0000613d000000000001042d000000400100043d0000004402100039000004e1030000410000000000320435000000240210003900000010030000390000000000320435000004b7020000410000000000210435000000040210003900000020030000390000000000320435000004700010009c00000470010080410000004001100210000004c3011001c7000011be00010430000004dd01000041000000000010043f0000004101000039000000040010043f0000047f01000041000011be00010430000000000100041a00000478021001970000000001000411000000000012004b0000117b0000c13d000000000001042d000000400200043d000004c603000041000000000032043500000004032000390000000000130435000004700020009c000004700200804100000040012002100000047f011001c7000011be00010430000000000001042f000004700010009c00000470010080410000004001100210000004700020009c00000470020080410000006002200210000000000112019f0000000002000414000004700020009c0000047002008041000000c002200210000000000112019f0000047a011001c7000080100200003911bc11b70000040f0000000100200190000011990000613d000000000101043b000000000001042d0000000001000019000011be0001043000000000050100190000000000200443000000040030008c000011a20000a13d000000050140027000000000010100310000000400100443000004700030009c000004700300804100000060013002100000000002000414000004700020009c0000047002008041000000c002200210000000000112019f000004e7011001c7000000000205001911bc11b70000040f0000000100200190000011b10000613d000000000101043b000000000001042d000000000001042f000011b5002104210000000102000039000000000001042d0000000002000019000000000001042d000011ba002104230000000102000039000000000001042d0000000002000019000000000001042d000011bc00000432000011bd0001042e000011be00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000000000000000000000000000ffffffffffffffff80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffbf000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0020000000000000000000000000000000000002000000000000000000000000000000002000000000000000000000000000000400000010000000000000000001e4fbdf7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000000000008462151b00000000000000000000000000000000000000000000000000000000c9eb466100000000000000000000000000000000000000000000000000000000e2bb973e00000000000000000000000000000000000000000000000000000000f2fde38a00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000fe266f0200000000000000000000000000000000000000000000000000000000e2bb973f00000000000000000000000000000000000000000000000000000000e35326f000000000000000000000000000000000000000000000000000000000c9eb466200000000000000000000000000000000000000000000000000000000d2802a6700000000000000000000000000000000000000000000000000000000d89135cd000000000000000000000000000000000000000000000000000000008da5cb5a000000000000000000000000000000000000000000000000000000009a03d9a2000000000000000000000000000000000000000000000000000000009a03d9a300000000000000000000000000000000000000000000000000000000a2309ff8000000000000000000000000000000000000000000000000000000008da5cb5b000000000000000000000000000000000000000000000000000000008e76e5ed000000000000000000000000000000000000000000000000000000008462151c0000000000000000000000000000000000000000000000000000000085cb9637000000000000000000000000000000000000000000000000000000008892ebce0000000000000000000000000000000000000000000000000000000040d2123b000000000000000000000000000000000000000000000000000000006667df6b00000000000000000000000000000000000000000000000000000000715018a500000000000000000000000000000000000000000000000000000000715018a6000000000000000000000000000000000000000000000000000000007cb64759000000000000000000000000000000000000000000000000000000006667df6c0000000000000000000000000000000000000000000000000000000070a082310000000000000000000000000000000000000000000000000000000040d2123c000000000000000000000000000000000000000000000000000000005bc63820000000000000000000000000000000000000000000000000000000006352211e0000000000000000000000000000000000000000000000000000000027fcd4ac0000000000000000000000000000000000000000000000000000000034a5f9ab0000000000000000000000000000000000000000000000000000000034a5f9ac000000000000000000000000000000000000000000000000000000003ccfd60b0000000000000000000000000000000000000000000000000000000027fcd4ad000000000000000000000000000000000000000000000000000000002eb4a7ab0000000000000000000000000000000000000000000000000000000018160ddd0000000000000000000000000000000000000000000000000000000023b872dd0000000000000000000000000000000000000000000000000000000024d7806c00000000000000000000000000000000000000000000000000000000ffffffdfffffffffffffffffffffffffffffffffffffffe0000000000000000000000000796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d9553913202000002000000000000000000000000000000040000000000000000000000000000000000000000ff0000000000000000000000000000000000000000000000fdffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000000ffff000000000000000000000000000000000000ffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff00000000000000000000ffff00000000000000000000000000000000000000000f3b48b3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000ff000000000000000000000000000000000000000000000200000000000000000000000000000000000040000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000069640000000000000000000000000000000000000000000000000000000000004d65726b6c6550726f6f665665726966793a2050726f6f66206e6f742076616c08c379a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff5ffdffffffffffffffffffffffffffffffffffff6000000000000000000000000008b645280b9128a068eb53f28b30da38fe64a224a1ee166e2135f32f725224eeab2d5bf200000000000000000000000000000000000000000000000000000000d28fdfc100000000000000000000000000000000000000000000000000000000c3383afd00000000000000000000000000000000000000000000000000000000aa7feadc000000000000000000000000000000000000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000d1a1beb40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000003ee5aeb5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000800000000000000000118cdaa7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f00000000000000ff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000ffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff00000000000000000000000000000000000000000000ffff00000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000d896818400000000000000000000000000000000000000000000000000000000d89135cd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000a2309ff80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000008000000000000000008462151c0000000000000000000000000000000000000000000000000000000070a08231000000000000000000000000000000000000000000000000000000006352211e0000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000004f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65729cc7f708afc65944829bd487b90b72536b1951864fbfc14e125fc972a6507f394e487b7100000000000000000000000000000000000000000000000000000000fc949c7b4a13586e39d89eead2f38644f9fb3efb5a0490b14f8fc0ceab44c24ffc949c7b4a13586e39d89eead2f38644f9fb3efb5a0490b14f8fc0ceab44c25000000000000000000000000000000000000000000000000000000003ffffffe05472616e73666572206661696c65642e0000000000000000000000000000000053616c65732042616c616e6365203d203000000000000000000000000000000018160ddd00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000100000000000000000200000200000000000000000000000000000000000000000000000000000000e4f22955c8892de564c789cae6a7e219851c2f95e498e54656219f34933eb552
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000e42e1fdc5cae025e2f9286d5d07d35ba75bc7b0f0000000000000000000000000000000000000000000000000000000000000064
-----Decoded View---------------
Arg [0] : _parts (tuple[]): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [2] : 000000000000000000000000e42e1fdc5cae025e2f9286d5d07d35ba75bc7b0f
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000064
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.