Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
Multichain Info
No addresses found
Loading...
Loading
Contract Name:
FlowerNFTStaking
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2025-02-02 */ // SPDX-License-Identifier: MIT // File: @openzeppelin/[email protected]/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/[email protected]/token/ERC721/IERC721.sol // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @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`. * * 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 approved 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; /** * @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 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) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must * understand this adds an external call which potentially creates a reentrancy vulnerability. * * 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; /** * @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; /** * @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); } // File: @openzeppelin/[email protected]/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 amount) external returns (bool); } // File: @openzeppelin/[email protected]/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @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; } } // File: @openzeppelin/[email protected]/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @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. * * By default, the owner account will be the one that deploys the contract. 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; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @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 { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @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 { require(newOwner != address(0), "Ownable: new owner is the zero address"); _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); } } // File: @openzeppelin/[email protected]/security/ReentrancyGuard.sol // OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } /** * @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; } } // File: @openzeppelin/[email protected]/security/Pausable.sol // OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { require(!paused(), "Pausable: paused"); } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { require(paused(), "Pausable: not paused"); } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } // File: growopstaking.sol pragma solidity ^0.8.0; interface IFlowerNFT { function levels(uint256 tokenId) external view returns (uint256); } contract FlowerNFTStaking is Ownable, ReentrancyGuard, Pausable { IERC721 public flowerNFT; IERC20 public flowerToken; IERC721 public stonerToken; uint256 public rewardRate; uint256 public stonerBonusMultiplier = 10; uint256 public flowerNFTBonusMultiplier = 5; uint256 public tapBonusAmount; uint256 public tapCooldown; struct Stake { uint256 tokenId; uint256 stakedAt; uint256 lastTapped; } mapping(address => Stake[]) public stakes; mapping(uint256 => address) public stakedTokenOwners; mapping(address => uint256[]) public stonerStakes; // Tracks exact StonerNFT token IDs staked event Staked(address indexed user, uint256[] flowerTokenIds, uint256[] stonerTokenIds); event Unstaked(address indexed user, uint256[] flowerTokenIds, uint256[] stonerTokenIds); event RewardClaimed(address indexed user, uint256 amount); event TapBonusClaimed(address indexed user, uint256 amount); constructor(address _flowerNFT, address _flowerToken, address _stonerToken) { flowerNFT = IERC721(_flowerNFT); flowerToken = IERC20(_flowerToken); stonerToken = IERC721(_stonerToken); rewardRate = 1 ether; tapBonusAmount = 0.1 ether; tapCooldown = 1 hours; } /** STAKING MULTIPLE NFTs **/ function stakeMultiple(uint256[] memory flowerTokenIds, uint256[] memory stonerTokenIds) external nonReentrant whenNotPaused { require(flowerTokenIds.length > 0 || stonerTokenIds.length > 0, "No NFTs provided"); for (uint256 i = 0; i < flowerTokenIds.length; i++) { uint256 tokenId = flowerTokenIds[i]; require(flowerNFT.ownerOf(tokenId) == msg.sender, "You do not own this FlowerNFT"); require(stakedTokenOwners[tokenId] == address(0), "This NFT is already staked"); stakes[msg.sender].push(Stake({tokenId: tokenId, stakedAt: block.timestamp, lastTapped: 0})); stakedTokenOwners[tokenId] = msg.sender; flowerNFT.safeTransferFrom(msg.sender, address(this), tokenId); } for (uint256 i = 0; i < stonerTokenIds.length; i++) { uint256 stonerId = stonerTokenIds[i]; require(stonerToken.ownerOf(stonerId) == msg.sender, "You do not own this StonerNFT"); stonerToken.safeTransferFrom(msg.sender, address(this), stonerId); stonerStakes[msg.sender].push(stonerId); // Store exact staked StonerNFT token ID } emit Staked(msg.sender, flowerTokenIds, stonerTokenIds); } /** UNSTAKING MULTIPLE NFTs **/ function unstakeMultiple(uint256[] memory flowerTokenIds, uint256[] memory stonerTokenIds) external nonReentrant whenNotPaused { require(flowerTokenIds.length > 0 || stonerTokenIds.length > 0, "No NFTs provided"); uint256 totalReward = 0; for (uint256 i = 0; i < flowerTokenIds.length; i++) { uint256 tokenId = flowerTokenIds[i]; require(stakedTokenOwners[tokenId] == msg.sender, "You do not own this staked NFT"); totalReward += calculateReward(msg.sender, tokenId); _removeStake(msg.sender, tokenId); flowerNFT.safeTransferFrom(address(this), msg.sender, tokenId); } require(stonerStakes[msg.sender].length >= stonerTokenIds.length, "Not enough staked StonerNFTs"); for (uint256 i = 0; i < stonerTokenIds.length; i++) { uint256 stonerId = stonerTokenIds[i]; require(_removeStonerStake(msg.sender, stonerId), "StonerNFT not staked by user"); stonerToken.safeTransferFrom(address(this), msg.sender, stonerId); } if (totalReward > 0) { flowerToken.transfer(msg.sender, totalReward); emit RewardClaimed(msg.sender, totalReward); } emit Unstaked(msg.sender, flowerTokenIds, stonerTokenIds); } /** REWARD CALCULATION **/ function calculateReward(address user, uint256 tokenId) public view returns (uint256) { for (uint256 i = 0; i < stakes[user].length; i++) { if (stakes[user][i].tokenId == tokenId) { uint256 timeStaked = block.timestamp - stakes[user][i].stakedAt; uint256 baseReward = (timeStaked * getFlowerNFTLevel(tokenId) * rewardRate) / 1 days; return baseReward; } } return 0; } function _removeStake(address user, uint256 tokenId) internal { for (uint256 i = 0; i < stakes[user].length; i++) { if (stakes[user][i].tokenId == tokenId) { stakes[user][i] = stakes[user][stakes[user].length - 1]; stakes[user].pop(); delete stakedTokenOwners[tokenId]; break; } } } function _removeStonerStake(address user, uint256 tokenId) internal returns (bool) { uint256[] storage stakedNFTs = stonerStakes[user]; for (uint256 i = 0; i < stakedNFTs.length; i++) { if (stakedNFTs[i] == tokenId) { stakedNFTs[i] = stakedNFTs[stakedNFTs.length - 1]; // Swap with last element stakedNFTs.pop(); // Remove last element return true; } } return false; // Return false if StonerNFT was not found } function getFlowerNFTLevel(uint256 tokenId) internal view returns (uint256) { require(address(flowerNFT) != address(0), "FlowerNFT contract not set"); return IFlowerNFT(address(flowerNFT)).levels(tokenId); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_flowerNFT","type":"address"},{"internalType":"address","name":"_flowerToken","type":"address"},{"internalType":"address","name":"_stonerToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"flowerTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"stonerTokenIds","type":"uint256[]"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TapBonusClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"flowerTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"stonerTokenIds","type":"uint256[]"}],"name":"Unstaked","type":"event"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"calculateReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flowerNFT","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flowerNFTBonusMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flowerToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"flowerTokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"stonerTokenIds","type":"uint256[]"}],"name":"stakeMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakedTokenOwners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakes","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"stakedAt","type":"uint256"},{"internalType":"uint256","name":"lastTapped","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stonerBonusMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"stonerStakes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stonerToken","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tapBonusAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tapCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"flowerTokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"stonerTokenIds","type":"uint256[]"}],"name":"unstakeMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600a60065560056007553480156200001b57600080fd5b5060405162002a7a38038062002a7a8339818101604052810190620000419190620002ac565b62000061620000556200017660201b60201c565b6200017e60201b60201c565b600180819055506000600260006101000a81548160ff02191690831515021790555082600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550670de0b6b3a764000060058190555067016345785d8a0000600881905550610e1060098190555050505062000308565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002748262000247565b9050919050565b620002868162000267565b81146200029257600080fd5b50565b600081519050620002a6816200027b565b92915050565b600080600060608486031215620002c857620002c762000242565b5b6000620002d88682870162000295565b9350506020620002eb8682870162000295565b9250506040620002fe8682870162000295565b9150509250925092565b61276280620003186000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a25780638b3d81b3116100715780638b3d81b3146102c35780638da5cb5b146102f357806396e840a9146103115780639f60421f1461032f578063f2fde38b1461034b57610116565b8063715018a61461025f578063721a1f45146102695780637b0a47ee14610287578063851fbb54146102a557610116565b80633cfd1568116100e95780633cfd1568146101a357806341cd5f73146101d3578063584b62a1146101f15780635c975abb14610223578063602095ce1461024157610116565b80631852e8d91461011b5780632c583bf31461014b5780633b18dc71146101675780633b3f944c14610185575b600080fd5b610135600480360381019061013091906119f2565b610367565b6040516101429190611a41565b60405180910390f35b61016560048036038101906101609190611bb5565b6104f1565b005b61016f610b5f565b60405161017c9190611a41565b60405180910390f35b61018d610b65565b60405161019a9190611a41565b60405180910390f35b6101bd60048036038101906101b891906119f2565b610b6b565b6040516101ca9190611a41565b60405180910390f35b6101db610b9c565b6040516101e89190611a41565b60405180910390f35b61020b600480360381019061020691906119f2565b610ba2565b60405161021a93929190611c2d565b60405180910390f35b61022b610be9565b6040516102389190611c7f565b60405180910390f35b610249610c00565b6040516102569190611cf9565b60405180910390f35b610267610c26565b005b610271610c3a565b60405161027e9190611d35565b60405180910390f35b61028f610c60565b60405161029c9190611a41565b60405180910390f35b6102ad610c66565b6040516102ba9190611d35565b60405180910390f35b6102dd60048036038101906102d89190611d50565b610c8c565b6040516102ea9190611d8c565b60405180910390f35b6102fb610cbf565b6040516103089190611d8c565b60405180910390f35b610319610ce8565b6040516103269190611a41565b60405180910390f35b61034960048036038101906103449190611bb5565b610cee565b005b61036560048036038101906103609190611da7565b6111d8565b005b600080600090505b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156104e55782600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061040b5761040a611dd4565b5b906000526020600020906003020160000154036104d2576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061047557610474611dd4565b5b906000526020600020906003020160010154426104929190611e32565b90506000620151806005546104a68761125b565b846104b19190611e66565b6104bb9190611e66565b6104c59190611ed7565b90508093505050506104eb565b80806104dd90611f08565b91505061036f565b50600090505b92915050565b6104f9611390565b6105016113df565b600082511180610512575060008151115b610551576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054890611fad565b60405180910390fd5b60005b82518110156108c257600083828151811061057257610571611dd4565b5b602002602001015190503373ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016105ee9190611a41565b602060405180830381865afa15801561060b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062f9190611fe2565b73ffffffffffffffffffffffffffffffffffffffff1614610685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067c9061205b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600b600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071e906120c7565b60405180910390fd5b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806060016040528083815260200142815260200160008152509080600181540180825580915050600190039060005260206000209060030201600090919091909150600082015181600001556020820151816001015560408201518160020155505033600b600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3330846040518463ffffffff1660e01b815260040161087c939291906120e7565b600060405180830381600087803b15801561089657600080fd5b505af11580156108aa573d6000803e3d6000fd5b505050505080806108ba90611f08565b915050610554565b5060005b8151811015610b025760008282815181106108e4576108e3611dd4565b5b602002602001015190503373ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016109609190611a41565b602060405180830381865afa15801561097d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a19190611fe2565b73ffffffffffffffffffffffffffffffffffffffff16146109f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ee9061216a565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3330846040518463ffffffff1660e01b8152600401610a56939291906120e7565b600060405180830381600087803b158015610a7057600080fd5b505af1158015610a84573d6000803e3d6000fd5b50505050600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819080600181540180825580915050600190039060005260206000200160009091909190915055508080610afa90611f08565b9150506108c6565b503373ffffffffffffffffffffffffffffffffffffffff167f859a4049709b7ed7c28d73c9122229b70aa55880d8744d1931e98e093a1b5b918383604051610b4b929190612248565b60405180910390a2610b5b611429565b5050565b60085481565b60075481565b600c6020528160005260406000208181548110610b8757600080fd5b90600052602060002001600091509150505481565b60095481565b600a6020528160005260406000208181548110610bbe57600080fd5b9060005260206000209060030201600091509150508060000154908060010154908060020154905083565b6000600260009054906101000a900460ff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c2e611432565b610c3860006114b0565b565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065481565b610cf6611390565b610cfe6113df565b600082511180610d0f575060008151115b610d4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4590611fad565b60405180910390fd5b6000805b8351811015610ee1576000848281518110610d7057610d6f611dd4565b5b602002602001015190503373ffffffffffffffffffffffffffffffffffffffff16600b600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e12906122cb565b60405180910390fd5b610e253382610367565b83610e3091906122eb565b9250610e3c3382611574565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3033846040518463ffffffff1660e01b8152600401610e9b939291906120e7565b600060405180830381600087803b158015610eb557600080fd5b505af1158015610ec9573d6000803e3d6000fd5b50505050508080610ed990611f08565b915050610d52565b508151600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490501015610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f9061236b565b60405180910390fd5b60005b8251811015611081576000838281518110610f8957610f88611dd4565b5b60200260200101519050610f9d338261182a565b610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd3906123d7565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3033846040518463ffffffff1660e01b815260040161103b939291906120e7565b600060405180830381600087803b15801561105557600080fd5b505af1158015611069573d6000803e3d6000fd5b5050505050808061107990611f08565b915050610f6b565b50600081111561117b57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016110e89291906123f7565b6020604051808303816000875af1158015611107573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112b919061244c565b503373ffffffffffffffffffffffffffffffffffffffff167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f7241826040516111729190611a41565b60405180910390a25b3373ffffffffffffffffffffffffffffffffffffffff167fef3bc8b2408263209f01abd2cf8120586077da5e4cf45d8a7dd83d2a0545f10384846040516111c3929190612248565b60405180910390a2506111d4611429565b5050565b6111e0611432565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361124f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611246906124eb565b60405180910390fd5b611258816114b0565b50565b60008073ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e490612557565b60405180910390fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2596a67836040518263ffffffff1660e01b81526004016113489190611a41565b602060405180830381865afa158015611365573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611389919061258c565b9050919050565b6002600154036113d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cc90612605565b60405180910390fd5b6002600181905550565b6113e7610be9565b15611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141e90612671565b60405180910390fd5b565b60018081905550565b61143a611942565b73ffffffffffffffffffffffffffffffffffffffff16611458610cbf565b73ffffffffffffffffffffffffffffffffffffffff16146114ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a5906126dd565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60005b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156118255781600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061161357611612611dd4565b5b9060005260206000209060030201600001540361181257600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506116b89190611e32565b815481106116c9576116c8611dd4565b5b9060005260206000209060030201600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061172857611727611dd4565b5b9060005260206000209060030201600082015481600001556001820154816001015560028201548160020155905050600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806117a6576117a56126fd565b5b60019003818190600052602060002090600302016000808201600090556001820160009055600282016000905550509055600b600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055611825565b808061181d90611f08565b915050611577565b505050565b600080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060005b8180549050811015611935578382828154811061189157611890611dd4565b5b9060005260206000200154036119225781600183805490506118b39190611e32565b815481106118c4576118c3611dd4565b5b90600052602060002001548282815481106118e2576118e1611dd4565b5b906000526020600020018190555081805480611901576119006126fd565b5b6001900381819060005260206000200160009055905560019250505061193c565b808061192d90611f08565b915050611871565b5060009150505b92915050565b600033905090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006119898261195e565b9050919050565b6119998161197e565b81146119a457600080fd5b50565b6000813590506119b681611990565b92915050565b6000819050919050565b6119cf816119bc565b81146119da57600080fd5b50565b6000813590506119ec816119c6565b92915050565b60008060408385031215611a0957611a08611954565b5b6000611a17858286016119a7565b9250506020611a28858286016119dd565b9150509250929050565b611a3b816119bc565b82525050565b6000602082019050611a566000830184611a32565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611aaa82611a61565b810181811067ffffffffffffffff82111715611ac957611ac8611a72565b5b80604052505050565b6000611adc61194a565b9050611ae88282611aa1565b919050565b600067ffffffffffffffff821115611b0857611b07611a72565b5b602082029050602081019050919050565b600080fd5b6000611b31611b2c84611aed565b611ad2565b90508083825260208201905060208402830185811115611b5457611b53611b19565b5b835b81811015611b7d5780611b6988826119dd565b845260208401935050602081019050611b56565b5050509392505050565b600082601f830112611b9c57611b9b611a5c565b5b8135611bac848260208601611b1e565b91505092915050565b60008060408385031215611bcc57611bcb611954565b5b600083013567ffffffffffffffff811115611bea57611be9611959565b5b611bf685828601611b87565b925050602083013567ffffffffffffffff811115611c1757611c16611959565b5b611c2385828601611b87565b9150509250929050565b6000606082019050611c426000830186611a32565b611c4f6020830185611a32565b611c5c6040830184611a32565b949350505050565b60008115159050919050565b611c7981611c64565b82525050565b6000602082019050611c946000830184611c70565b92915050565b6000819050919050565b6000611cbf611cba611cb58461195e565b611c9a565b61195e565b9050919050565b6000611cd182611ca4565b9050919050565b6000611ce382611cc6565b9050919050565b611cf381611cd8565b82525050565b6000602082019050611d0e6000830184611cea565b92915050565b6000611d1f82611cc6565b9050919050565b611d2f81611d14565b82525050565b6000602082019050611d4a6000830184611d26565b92915050565b600060208284031215611d6657611d65611954565b5b6000611d74848285016119dd565b91505092915050565b611d868161197e565b82525050565b6000602082019050611da16000830184611d7d565b92915050565b600060208284031215611dbd57611dbc611954565b5b6000611dcb848285016119a7565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611e3d826119bc565b9150611e48836119bc565b9250828203905081811115611e6057611e5f611e03565b5b92915050565b6000611e71826119bc565b9150611e7c836119bc565b9250828202611e8a816119bc565b91508282048414831517611ea157611ea0611e03565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611ee2826119bc565b9150611eed836119bc565b925082611efd57611efc611ea8565b5b828204905092915050565b6000611f13826119bc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611f4557611f44611e03565b5b600182019050919050565b600082825260208201905092915050565b7f4e6f204e4654732070726f766964656400000000000000000000000000000000600082015250565b6000611f97601083611f50565b9150611fa282611f61565b602082019050919050565b60006020820190508181036000830152611fc681611f8a565b9050919050565b600081519050611fdc81611990565b92915050565b600060208284031215611ff857611ff7611954565b5b600061200684828501611fcd565b91505092915050565b7f596f7520646f206e6f74206f776e207468697320466c6f7765724e4654000000600082015250565b6000612045601d83611f50565b91506120508261200f565b602082019050919050565b6000602082019050818103600083015261207481612038565b9050919050565b7f54686973204e465420697320616c7265616479207374616b6564000000000000600082015250565b60006120b1601a83611f50565b91506120bc8261207b565b602082019050919050565b600060208201905081810360008301526120e0816120a4565b9050919050565b60006060820190506120fc6000830186611d7d565b6121096020830185611d7d565b6121166040830184611a32565b949350505050565b7f596f7520646f206e6f74206f776e20746869732053746f6e65724e4654000000600082015250565b6000612154601d83611f50565b915061215f8261211e565b602082019050919050565b6000602082019050818103600083015261218381612147565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6121bf816119bc565b82525050565b60006121d183836121b6565b60208301905092915050565b6000602082019050919050565b60006121f58261218a565b6121ff8185612195565b935061220a836121a6565b8060005b8381101561223b57815161222288826121c5565b975061222d836121dd565b92505060018101905061220e565b5085935050505092915050565b6000604082019050818103600083015261226281856121ea565b9050818103602083015261227681846121ea565b90509392505050565b7f596f7520646f206e6f74206f776e2074686973207374616b6564204e46540000600082015250565b60006122b5601e83611f50565b91506122c08261227f565b602082019050919050565b600060208201905081810360008301526122e4816122a8565b9050919050565b60006122f6826119bc565b9150612301836119bc565b925082820190508082111561231957612318611e03565b5b92915050565b7f4e6f7420656e6f756768207374616b65642053746f6e65724e46547300000000600082015250565b6000612355601c83611f50565b91506123608261231f565b602082019050919050565b6000602082019050818103600083015261238481612348565b9050919050565b7f53746f6e65724e4654206e6f74207374616b6564206279207573657200000000600082015250565b60006123c1601c83611f50565b91506123cc8261238b565b602082019050919050565b600060208201905081810360008301526123f0816123b4565b9050919050565b600060408201905061240c6000830185611d7d565b6124196020830184611a32565b9392505050565b61242981611c64565b811461243457600080fd5b50565b60008151905061244681612420565b92915050565b60006020828403121561246257612461611954565b5b600061247084828501612437565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006124d5602683611f50565b91506124e082612479565b604082019050919050565b60006020820190508181036000830152612504816124c8565b9050919050565b7f466c6f7765724e465420636f6e7472616374206e6f7420736574000000000000600082015250565b6000612541601a83611f50565b915061254c8261250b565b602082019050919050565b6000602082019050818103600083015261257081612534565b9050919050565b600081519050612586816119c6565b92915050565b6000602082840312156125a2576125a1611954565b5b60006125b084828501612577565b91505092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006125ef601f83611f50565b91506125fa826125b9565b602082019050919050565b6000602082019050818103600083015261261e816125e2565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b600061265b601083611f50565b915061266682612625565b602082019050919050565b6000602082019050818103600083015261268a8161264e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006126c7602083611f50565b91506126d282612691565b602082019050919050565b600060208201905081810360008301526126f6816126ba565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220f4a499bf545a2f6375b57891c0b5755bd980b8e5ae1825ead3028898a278953164736f6c634300081300330000000000000000000000003be8d7a305856dcc5f6a41ade1b2f63ce4cdc86d000000000000000000000000a58cd405fb0f4ad5c917393518aafd71a72644890000000000000000000000009b567e03d891f537b2b7874aa4a3308cfe2f4fbb
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a25780638b3d81b3116100715780638b3d81b3146102c35780638da5cb5b146102f357806396e840a9146103115780639f60421f1461032f578063f2fde38b1461034b57610116565b8063715018a61461025f578063721a1f45146102695780637b0a47ee14610287578063851fbb54146102a557610116565b80633cfd1568116100e95780633cfd1568146101a357806341cd5f73146101d3578063584b62a1146101f15780635c975abb14610223578063602095ce1461024157610116565b80631852e8d91461011b5780632c583bf31461014b5780633b18dc71146101675780633b3f944c14610185575b600080fd5b610135600480360381019061013091906119f2565b610367565b6040516101429190611a41565b60405180910390f35b61016560048036038101906101609190611bb5565b6104f1565b005b61016f610b5f565b60405161017c9190611a41565b60405180910390f35b61018d610b65565b60405161019a9190611a41565b60405180910390f35b6101bd60048036038101906101b891906119f2565b610b6b565b6040516101ca9190611a41565b60405180910390f35b6101db610b9c565b6040516101e89190611a41565b60405180910390f35b61020b600480360381019061020691906119f2565b610ba2565b60405161021a93929190611c2d565b60405180910390f35b61022b610be9565b6040516102389190611c7f565b60405180910390f35b610249610c00565b6040516102569190611cf9565b60405180910390f35b610267610c26565b005b610271610c3a565b60405161027e9190611d35565b60405180910390f35b61028f610c60565b60405161029c9190611a41565b60405180910390f35b6102ad610c66565b6040516102ba9190611d35565b60405180910390f35b6102dd60048036038101906102d89190611d50565b610c8c565b6040516102ea9190611d8c565b60405180910390f35b6102fb610cbf565b6040516103089190611d8c565b60405180910390f35b610319610ce8565b6040516103269190611a41565b60405180910390f35b61034960048036038101906103449190611bb5565b610cee565b005b61036560048036038101906103609190611da7565b6111d8565b005b600080600090505b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156104e55782600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061040b5761040a611dd4565b5b906000526020600020906003020160000154036104d2576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061047557610474611dd4565b5b906000526020600020906003020160010154426104929190611e32565b90506000620151806005546104a68761125b565b846104b19190611e66565b6104bb9190611e66565b6104c59190611ed7565b90508093505050506104eb565b80806104dd90611f08565b91505061036f565b50600090505b92915050565b6104f9611390565b6105016113df565b600082511180610512575060008151115b610551576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054890611fad565b60405180910390fd5b60005b82518110156108c257600083828151811061057257610571611dd4565b5b602002602001015190503373ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016105ee9190611a41565b602060405180830381865afa15801561060b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062f9190611fe2565b73ffffffffffffffffffffffffffffffffffffffff1614610685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067c9061205b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600b600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071e906120c7565b60405180910390fd5b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806060016040528083815260200142815260200160008152509080600181540180825580915050600190039060005260206000209060030201600090919091909150600082015181600001556020820151816001015560408201518160020155505033600b600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3330846040518463ffffffff1660e01b815260040161087c939291906120e7565b600060405180830381600087803b15801561089657600080fd5b505af11580156108aa573d6000803e3d6000fd5b505050505080806108ba90611f08565b915050610554565b5060005b8151811015610b025760008282815181106108e4576108e3611dd4565b5b602002602001015190503373ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016109609190611a41565b602060405180830381865afa15801561097d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a19190611fe2565b73ffffffffffffffffffffffffffffffffffffffff16146109f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ee9061216a565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3330846040518463ffffffff1660e01b8152600401610a56939291906120e7565b600060405180830381600087803b158015610a7057600080fd5b505af1158015610a84573d6000803e3d6000fd5b50505050600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819080600181540180825580915050600190039060005260206000200160009091909190915055508080610afa90611f08565b9150506108c6565b503373ffffffffffffffffffffffffffffffffffffffff167f859a4049709b7ed7c28d73c9122229b70aa55880d8744d1931e98e093a1b5b918383604051610b4b929190612248565b60405180910390a2610b5b611429565b5050565b60085481565b60075481565b600c6020528160005260406000208181548110610b8757600080fd5b90600052602060002001600091509150505481565b60095481565b600a6020528160005260406000208181548110610bbe57600080fd5b9060005260206000209060030201600091509150508060000154908060010154908060020154905083565b6000600260009054906101000a900460ff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c2e611432565b610c3860006114b0565b565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065481565b610cf6611390565b610cfe6113df565b600082511180610d0f575060008151115b610d4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4590611fad565b60405180910390fd5b6000805b8351811015610ee1576000848281518110610d7057610d6f611dd4565b5b602002602001015190503373ffffffffffffffffffffffffffffffffffffffff16600b600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e12906122cb565b60405180910390fd5b610e253382610367565b83610e3091906122eb565b9250610e3c3382611574565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3033846040518463ffffffff1660e01b8152600401610e9b939291906120e7565b600060405180830381600087803b158015610eb557600080fd5b505af1158015610ec9573d6000803e3d6000fd5b50505050508080610ed990611f08565b915050610d52565b508151600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490501015610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f9061236b565b60405180910390fd5b60005b8251811015611081576000838281518110610f8957610f88611dd4565b5b60200260200101519050610f9d338261182a565b610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd3906123d7565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3033846040518463ffffffff1660e01b815260040161103b939291906120e7565b600060405180830381600087803b15801561105557600080fd5b505af1158015611069573d6000803e3d6000fd5b5050505050808061107990611f08565b915050610f6b565b50600081111561117b57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016110e89291906123f7565b6020604051808303816000875af1158015611107573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112b919061244c565b503373ffffffffffffffffffffffffffffffffffffffff167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f7241826040516111729190611a41565b60405180910390a25b3373ffffffffffffffffffffffffffffffffffffffff167fef3bc8b2408263209f01abd2cf8120586077da5e4cf45d8a7dd83d2a0545f10384846040516111c3929190612248565b60405180910390a2506111d4611429565b5050565b6111e0611432565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361124f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611246906124eb565b60405180910390fd5b611258816114b0565b50565b60008073ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e490612557565b60405180910390fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2596a67836040518263ffffffff1660e01b81526004016113489190611a41565b602060405180830381865afa158015611365573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611389919061258c565b9050919050565b6002600154036113d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cc90612605565b60405180910390fd5b6002600181905550565b6113e7610be9565b15611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141e90612671565b60405180910390fd5b565b60018081905550565b61143a611942565b73ffffffffffffffffffffffffffffffffffffffff16611458610cbf565b73ffffffffffffffffffffffffffffffffffffffff16146114ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a5906126dd565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60005b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156118255781600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061161357611612611dd4565b5b9060005260206000209060030201600001540361181257600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506116b89190611e32565b815481106116c9576116c8611dd4565b5b9060005260206000209060030201600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061172857611727611dd4565b5b9060005260206000209060030201600082015481600001556001820154816001015560028201548160020155905050600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806117a6576117a56126fd565b5b60019003818190600052602060002090600302016000808201600090556001820160009055600282016000905550509055600b600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055611825565b808061181d90611f08565b915050611577565b505050565b600080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060005b8180549050811015611935578382828154811061189157611890611dd4565b5b9060005260206000200154036119225781600183805490506118b39190611e32565b815481106118c4576118c3611dd4565b5b90600052602060002001548282815481106118e2576118e1611dd4565b5b906000526020600020018190555081805480611901576119006126fd565b5b6001900381819060005260206000200160009055905560019250505061193c565b808061192d90611f08565b915050611871565b5060009150505b92915050565b600033905090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006119898261195e565b9050919050565b6119998161197e565b81146119a457600080fd5b50565b6000813590506119b681611990565b92915050565b6000819050919050565b6119cf816119bc565b81146119da57600080fd5b50565b6000813590506119ec816119c6565b92915050565b60008060408385031215611a0957611a08611954565b5b6000611a17858286016119a7565b9250506020611a28858286016119dd565b9150509250929050565b611a3b816119bc565b82525050565b6000602082019050611a566000830184611a32565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611aaa82611a61565b810181811067ffffffffffffffff82111715611ac957611ac8611a72565b5b80604052505050565b6000611adc61194a565b9050611ae88282611aa1565b919050565b600067ffffffffffffffff821115611b0857611b07611a72565b5b602082029050602081019050919050565b600080fd5b6000611b31611b2c84611aed565b611ad2565b90508083825260208201905060208402830185811115611b5457611b53611b19565b5b835b81811015611b7d5780611b6988826119dd565b845260208401935050602081019050611b56565b5050509392505050565b600082601f830112611b9c57611b9b611a5c565b5b8135611bac848260208601611b1e565b91505092915050565b60008060408385031215611bcc57611bcb611954565b5b600083013567ffffffffffffffff811115611bea57611be9611959565b5b611bf685828601611b87565b925050602083013567ffffffffffffffff811115611c1757611c16611959565b5b611c2385828601611b87565b9150509250929050565b6000606082019050611c426000830186611a32565b611c4f6020830185611a32565b611c5c6040830184611a32565b949350505050565b60008115159050919050565b611c7981611c64565b82525050565b6000602082019050611c946000830184611c70565b92915050565b6000819050919050565b6000611cbf611cba611cb58461195e565b611c9a565b61195e565b9050919050565b6000611cd182611ca4565b9050919050565b6000611ce382611cc6565b9050919050565b611cf381611cd8565b82525050565b6000602082019050611d0e6000830184611cea565b92915050565b6000611d1f82611cc6565b9050919050565b611d2f81611d14565b82525050565b6000602082019050611d4a6000830184611d26565b92915050565b600060208284031215611d6657611d65611954565b5b6000611d74848285016119dd565b91505092915050565b611d868161197e565b82525050565b6000602082019050611da16000830184611d7d565b92915050565b600060208284031215611dbd57611dbc611954565b5b6000611dcb848285016119a7565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611e3d826119bc565b9150611e48836119bc565b9250828203905081811115611e6057611e5f611e03565b5b92915050565b6000611e71826119bc565b9150611e7c836119bc565b9250828202611e8a816119bc565b91508282048414831517611ea157611ea0611e03565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611ee2826119bc565b9150611eed836119bc565b925082611efd57611efc611ea8565b5b828204905092915050565b6000611f13826119bc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611f4557611f44611e03565b5b600182019050919050565b600082825260208201905092915050565b7f4e6f204e4654732070726f766964656400000000000000000000000000000000600082015250565b6000611f97601083611f50565b9150611fa282611f61565b602082019050919050565b60006020820190508181036000830152611fc681611f8a565b9050919050565b600081519050611fdc81611990565b92915050565b600060208284031215611ff857611ff7611954565b5b600061200684828501611fcd565b91505092915050565b7f596f7520646f206e6f74206f776e207468697320466c6f7765724e4654000000600082015250565b6000612045601d83611f50565b91506120508261200f565b602082019050919050565b6000602082019050818103600083015261207481612038565b9050919050565b7f54686973204e465420697320616c7265616479207374616b6564000000000000600082015250565b60006120b1601a83611f50565b91506120bc8261207b565b602082019050919050565b600060208201905081810360008301526120e0816120a4565b9050919050565b60006060820190506120fc6000830186611d7d565b6121096020830185611d7d565b6121166040830184611a32565b949350505050565b7f596f7520646f206e6f74206f776e20746869732053746f6e65724e4654000000600082015250565b6000612154601d83611f50565b915061215f8261211e565b602082019050919050565b6000602082019050818103600083015261218381612147565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6121bf816119bc565b82525050565b60006121d183836121b6565b60208301905092915050565b6000602082019050919050565b60006121f58261218a565b6121ff8185612195565b935061220a836121a6565b8060005b8381101561223b57815161222288826121c5565b975061222d836121dd565b92505060018101905061220e565b5085935050505092915050565b6000604082019050818103600083015261226281856121ea565b9050818103602083015261227681846121ea565b90509392505050565b7f596f7520646f206e6f74206f776e2074686973207374616b6564204e46540000600082015250565b60006122b5601e83611f50565b91506122c08261227f565b602082019050919050565b600060208201905081810360008301526122e4816122a8565b9050919050565b60006122f6826119bc565b9150612301836119bc565b925082820190508082111561231957612318611e03565b5b92915050565b7f4e6f7420656e6f756768207374616b65642053746f6e65724e46547300000000600082015250565b6000612355601c83611f50565b91506123608261231f565b602082019050919050565b6000602082019050818103600083015261238481612348565b9050919050565b7f53746f6e65724e4654206e6f74207374616b6564206279207573657200000000600082015250565b60006123c1601c83611f50565b91506123cc8261238b565b602082019050919050565b600060208201905081810360008301526123f0816123b4565b9050919050565b600060408201905061240c6000830185611d7d565b6124196020830184611a32565b9392505050565b61242981611c64565b811461243457600080fd5b50565b60008151905061244681612420565b92915050565b60006020828403121561246257612461611954565b5b600061247084828501612437565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006124d5602683611f50565b91506124e082612479565b604082019050919050565b60006020820190508181036000830152612504816124c8565b9050919050565b7f466c6f7765724e465420636f6e7472616374206e6f7420736574000000000000600082015250565b6000612541601a83611f50565b915061254c8261250b565b602082019050919050565b6000602082019050818103600083015261257081612534565b9050919050565b600081519050612586816119c6565b92915050565b6000602082840312156125a2576125a1611954565b5b60006125b084828501612577565b91505092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006125ef601f83611f50565b91506125fa826125b9565b602082019050919050565b6000602082019050818103600083015261261e816125e2565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b600061265b601083611f50565b915061266682612625565b602082019050919050565b6000602082019050818103600083015261268a8161264e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006126c7602083611f50565b91506126d282612691565b602082019050919050565b600060208201905081810360008301526126f6816126ba565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220f4a499bf545a2f6375b57891c0b5755bd980b8e5ae1825ead3028898a278953164736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003be8d7a305856dcc5f6a41ade1b2f63ce4cdc86d000000000000000000000000a58cd405fb0f4ad5c917393518aafd71a72644890000000000000000000000009b567e03d891f537b2b7874aa4a3308cfe2f4fbb
-----Decoded View---------------
Arg [0] : _flowerNFT (address): 0x3be8d7A305856Dcc5f6a41aDE1B2F63CE4CDc86D
Arg [1] : _flowerToken (address): 0xa58cD405FB0F4aD5C917393518aAFd71A7264489
Arg [2] : _stonerToken (address): 0x9b567e03d891F537b2B7874aA4A3308Cfe2F4FBb
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000003be8d7a305856dcc5f6a41ade1b2f63ce4cdc86d
Arg [1] : 000000000000000000000000a58cd405fb0f4ad5c917393518aafd71a7264489
Arg [2] : 0000000000000000000000009b567e03d891f537b2b7874aa4a3308cfe2f4fbb
Deployed Bytecode Sourcemap
18481:5697:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22515:476;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19850:1256;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18780:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18730:43;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19069:49;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18816:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18962:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;17330:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18583:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11588:103;;;:::i;:::-;;18552:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18650:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18615:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19010:52;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10947:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18682:41;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21151:1324;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11846:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22515:476;22592:7;22617:9;22629:1;22617:13;;22612:353;22636:6;:12;22643:4;22636:12;;;;;;;;;;;;;;;:19;;;;22632:1;:23;22612:353;;;22708:7;22681:6;:12;22688:4;22681:12;;;;;;;;;;;;;;;22694:1;22681:15;;;;;;;;:::i;:::-;;;;;;;;;;;;:23;;;:34;22677:277;;22736:18;22775:6;:12;22782:4;22775:12;;;;;;;;;;;;;;;22788:1;22775:15;;;;;;;;:::i;:::-;;;;;;;;;;;;:24;;;22757:15;:42;;;;:::i;:::-;22736:63;;22818:18;22896:6;22882:10;;22853:26;22871:7;22853:17;:26::i;:::-;22840:10;:39;;;;:::i;:::-;:52;;;;:::i;:::-;22839:63;;;;:::i;:::-;22818:84;;22928:10;22921:17;;;;;;;22677:277;22657:3;;;;;:::i;:::-;;;;22612:353;;;;22982:1;22975:8;;22515:476;;;;;:::o;19850:1256::-;14756:21;:19;:21::i;:::-;16935:19:::1;:17;:19::i;:::-;20018:1:::2;19994:14;:21;:25;:54;;;;20047:1;20023:14;:21;:25;19994:54;19986:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;20087:9;20082:545;20106:14;:21;20102:1;:25;20082:545;;;20149:15;20167:14;20182:1;20167:17;;;;;;;;:::i;:::-;;;;;;;;20149:35;;20237:10;20207:40;;:9;;;;;;;;;;;:17;;;20225:7;20207:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;;20199:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;20342:1;20304:40;;:17;:26;20322:7;20304:26;;;;;;;;;;;;;;;;;;;;;:40;;;20296:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;20392:6;:18;20399:10;20392:18;;;;;;;;;;;;;;;20416:67;;;;;;;;20432:7;20416:67;;;;20451:15;20416:67;;;;20480:1;20416:67;;::::0;20392:92:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20528:10;20499:17;:26;20517:7;20499:26;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20553:9;;;;;;;;;;;:26;;;20580:10;20600:4;20607:7;20553:62;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;20134:493;20129:3;;;;;:::i;:::-;;;;20082:545;;;;20644:9;20639:392;20663:14;:21;20659:1;:25;20639:392;;;20706:16;20725:14;20740:1;20725:17;;;;;;;;:::i;:::-;;;;;;;;20706:36;;20798:10;20765:43;;:11;;;;;;;;;;;:19;;;20785:8;20765:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;;;20757:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;20859:11;;;;;;;;;;;:28;;;20888:10;20908:4;20915:8;20859:65;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;20939:12;:24;20952:10;20939:24;;;;;;;;;;;;;;;20969:8;20939:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20691:340;20686:3;;;;;:::i;:::-;;;;20639:392;;;;21055:10;21048:50;;;21067:14;21083;21048:50;;;;;;;:::i;:::-;;;;;;;;14800:20:::0;:18;:20::i;:::-;19850:1256;;:::o;18780:29::-;;;;:::o;18730:43::-;;;;:::o;19069:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18816:26::-;;;;:::o;18962:41::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17330:86::-;17377:4;17401:7;;;;;;;;;;;17394:14;;17330:86;:::o;18583:25::-;;;;;;;;;;;;;:::o;11588:103::-;10833:13;:11;:13::i;:::-;11653:30:::1;11680:1;11653:18;:30::i;:::-;11588:103::o:0;18552:24::-;;;;;;;;;;;;;:::o;18650:25::-;;;;:::o;18615:26::-;;;;;;;;;;;;;:::o;19010:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;10947:87::-;10993:7;11020:6;;;;;;;;;;;11013:13;;10947:87;:::o;18682:41::-;;;;:::o;21151:1324::-;14756:21;:19;:21::i;:::-;16935:19:::1;:17;:19::i;:::-;21321:1:::2;21297:14;:21;:25;:54;;;;21350:1;21326:14;:21;:25;21297:54;21289:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;21383:19;21424:9:::0;21419:405:::2;21443:14;:21;21439:1;:25;21419:405;;;21486:15;21504:14;21519:1;21504:17;;;;;;;;:::i;:::-;;;;;;;;21486:35;;21574:10;21544:40;;:17;:26;21562:7;21544:26;;;;;;;;;;;;;;;;;;;;;:40;;;21536:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;21651:36;21667:10;21679:7;21651:15;:36::i;:::-;21636:51;;;;;:::i;:::-;;;21702:33;21715:10;21727:7;21702:12;:33::i;:::-;21750:9;;;;;;;;;;;:26;;;21785:4;21792:10;21804:7;21750:62;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;21471:353;21466:3;;;;;:::i;:::-;;;;21419:405;;;;21879:14;:21;21844:12;:24;21857:10;21844:24;;;;;;;;;;;;;;;:31;;;;:56;;21836:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;21949:9;21944:293;21968:14;:21;21964:1;:25;21944:293;;;22011:16;22030:14;22045:1;22030:17;;;;;;;;:::i;:::-;;;;;;;;22011:36;;22070:40;22089:10;22101:8;22070:18;:40::i;:::-;22062:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;22160:11;;;;;;;;;;;:28;;;22197:4;22204:10;22216:8;22160:65;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;21996:241;21991:3;;;;;:::i;:::-;;;;21944:293;;;;22267:1;22253:11;:15;22249:151;;;22285:11;;;;;;;;;;;:20;;;22306:10;22318:11;22285:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22364:10;22350:38;;;22376:11;22350:38;;;;;;:::i;:::-;;;;;;;;22249:151;22424:10;22415:52;;;22436:14;22452;22415:52;;;;;;;:::i;:::-;;;;;;;;21278:1197;14800:20:::0;:18;:20::i;:::-;21151:1324;;:::o;11846:201::-;10833:13;:11;:13::i;:::-;11955:1:::1;11935:22;;:8;:22;;::::0;11927:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12011:28;12030:8;12011:18;:28::i;:::-;11846:201:::0;:::o;23945:230::-;24012:7;24070:1;24040:32;;24048:9;;;;;;;;;;;24040:32;;;24032:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;24140:9;;;;;;;;;;;24121:37;;;24159:7;24121:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24114:53;;23945:230;;;:::o;14836:293::-;14238:1;14970:7;;:19;14962:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;14238:1;15103:7;:18;;;;14836:293::o;17489:108::-;17560:8;:6;:8::i;:::-;17559:9;17551:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17489:108::o;15137:213::-;14194:1;15320:7;:22;;;;15137:213::o;11112:132::-;11187:12;:10;:12::i;:::-;11176:23;;:7;:5;:7::i;:::-;:23;;;11168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11112:132::o;12207:191::-;12281:16;12300:6;;;;;;;;;;;12281:25;;12326:8;12317:6;;:17;;;;;;;;;;;;;;;;;;12381:8;12350:40;;12371:8;12350:40;;;;;;;;;;;;12270:128;12207:191;:::o;22999:399::-;23077:9;23072:319;23096:6;:12;23103:4;23096:12;;;;;;;;;;;;;;;:19;;;;23092:1;:23;23072:319;;;23168:7;23141:6;:12;23148:4;23141:12;;;;;;;;;;;;;;;23154:1;23141:15;;;;;;;;:::i;:::-;;;;;;;;;;;;:23;;;:34;23137:243;;23214:6;:12;23221:4;23214:12;;;;;;;;;;;;;;;23249:1;23227:6;:12;23234:4;23227:12;;;;;;;;;;;;;;;:19;;;;:23;;;;:::i;:::-;23214:37;;;;;;;;:::i;:::-;;;;;;;;;;;;23196:6;:12;23203:4;23196:12;;;;;;;;;;;;;;;23209:1;23196:15;;;;;;;;:::i;:::-;;;;;;;;;;;;:55;;;;;;;;;;;;;;;;;;;;;;;;;;;23270:6;:12;23277:4;23270:12;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23314:17;:26;23332:7;23314:26;;;;;;;;;;;;23307:33;;;;;;;;;;;23359:5;;23137:243;23117:3;;;;;:::i;:::-;;;;23072:319;;;;22999:399;;:::o;23406:531::-;23483:4;23500:28;23531:12;:18;23544:4;23531:18;;;;;;;;;;;;;;;23500:49;;23567:9;23562:302;23586:10;:17;;;;23582:1;:21;23562:302;;;23646:7;23629:10;23640:1;23629:13;;;;;;;;:::i;:::-;;;;;;;;;;:24;23625:228;;23690:10;23721:1;23701:10;:17;;;;:21;;;;:::i;:::-;23690:33;;;;;;;;:::i;:::-;;;;;;;;;;23674:10;23685:1;23674:13;;;;;;;;:::i;:::-;;;;;;;;;:49;;;;23768:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23833:4;23826:11;;;;;;23625:228;23605:3;;;;;:::i;:::-;;;;23562:302;;;;23881:5;23874:12;;;23406:531;;;;;:::o;9492:98::-;9545:7;9572:10;9565:17;;9492:98;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:474::-;1265:6;1273;1322:2;1310:9;1301:7;1297:23;1293:32;1290:119;;;1328:79;;:::i;:::-;1290:119;1448:1;1473:53;1518:7;1509:6;1498:9;1494:22;1473:53;:::i;:::-;1463:63;;1419:117;1575:2;1601:53;1646:7;1637:6;1626:9;1622:22;1601:53;:::i;:::-;1591:63;;1546:118;1197:474;;;;;:::o;1677:118::-;1764:24;1782:5;1764:24;:::i;:::-;1759:3;1752:37;1677:118;;:::o;1801:222::-;1894:4;1932:2;1921:9;1917:18;1909:26;;1945:71;2013:1;2002:9;1998:17;1989:6;1945:71;:::i;:::-;1801:222;;;;:::o;2029:117::-;2138:1;2135;2128:12;2152:102;2193:6;2244:2;2240:7;2235:2;2228:5;2224:14;2220:28;2210:38;;2152:102;;;:::o;2260:180::-;2308:77;2305:1;2298:88;2405:4;2402:1;2395:15;2429:4;2426:1;2419:15;2446:281;2529:27;2551:4;2529:27;:::i;:::-;2521:6;2517:40;2659:6;2647:10;2644:22;2623:18;2611:10;2608:34;2605:62;2602:88;;;2670:18;;:::i;:::-;2602:88;2710:10;2706:2;2699:22;2489:238;2446:281;;:::o;2733:129::-;2767:6;2794:20;;:::i;:::-;2784:30;;2823:33;2851:4;2843:6;2823:33;:::i;:::-;2733:129;;;:::o;2868:311::-;2945:4;3035:18;3027:6;3024:30;3021:56;;;3057:18;;:::i;:::-;3021:56;3107:4;3099:6;3095:17;3087:25;;3167:4;3161;3157:15;3149:23;;2868:311;;;:::o;3185:117::-;3294:1;3291;3284:12;3325:710;3421:5;3446:81;3462:64;3519:6;3462:64;:::i;:::-;3446:81;:::i;:::-;3437:90;;3547:5;3576:6;3569:5;3562:21;3610:4;3603:5;3599:16;3592:23;;3663:4;3655:6;3651:17;3643:6;3639:30;3692:3;3684:6;3681:15;3678:122;;;3711:79;;:::i;:::-;3678:122;3826:6;3809:220;3843:6;3838:3;3835:15;3809:220;;;3918:3;3947:37;3980:3;3968:10;3947:37;:::i;:::-;3942:3;3935:50;4014:4;4009:3;4005:14;3998:21;;3885:144;3869:4;3864:3;3860:14;3853:21;;3809:220;;;3813:21;3427:608;;3325:710;;;;;:::o;4058:370::-;4129:5;4178:3;4171:4;4163:6;4159:17;4155:27;4145:122;;4186:79;;:::i;:::-;4145:122;4303:6;4290:20;4328:94;4418:3;4410:6;4403:4;4395:6;4391:17;4328:94;:::i;:::-;4319:103;;4135:293;4058:370;;;;:::o;4434:894::-;4552:6;4560;4609:2;4597:9;4588:7;4584:23;4580:32;4577:119;;;4615:79;;:::i;:::-;4577:119;4763:1;4752:9;4748:17;4735:31;4793:18;4785:6;4782:30;4779:117;;;4815:79;;:::i;:::-;4779:117;4920:78;4990:7;4981:6;4970:9;4966:22;4920:78;:::i;:::-;4910:88;;4706:302;5075:2;5064:9;5060:18;5047:32;5106:18;5098:6;5095:30;5092:117;;;5128:79;;:::i;:::-;5092:117;5233:78;5303:7;5294:6;5283:9;5279:22;5233:78;:::i;:::-;5223:88;;5018:303;4434:894;;;;;:::o;5334:442::-;5483:4;5521:2;5510:9;5506:18;5498:26;;5534:71;5602:1;5591:9;5587:17;5578:6;5534:71;:::i;:::-;5615:72;5683:2;5672:9;5668:18;5659:6;5615:72;:::i;:::-;5697;5765:2;5754:9;5750:18;5741:6;5697:72;:::i;:::-;5334:442;;;;;;:::o;5782:90::-;5816:7;5859:5;5852:13;5845:21;5834:32;;5782:90;;;:::o;5878:109::-;5959:21;5974:5;5959:21;:::i;:::-;5954:3;5947:34;5878:109;;:::o;5993:210::-;6080:4;6118:2;6107:9;6103:18;6095:26;;6131:65;6193:1;6182:9;6178:17;6169:6;6131:65;:::i;:::-;5993:210;;;;:::o;6209:60::-;6237:3;6258:5;6251:12;;6209:60;;;:::o;6275:142::-;6325:9;6358:53;6376:34;6385:24;6403:5;6385:24;:::i;:::-;6376:34;:::i;:::-;6358:53;:::i;:::-;6345:66;;6275:142;;;:::o;6423:126::-;6473:9;6506:37;6537:5;6506:37;:::i;:::-;6493:50;;6423:126;;;:::o;6555:140::-;6619:9;6652:37;6683:5;6652:37;:::i;:::-;6639:50;;6555:140;;;:::o;6701:159::-;6802:51;6847:5;6802:51;:::i;:::-;6797:3;6790:64;6701:159;;:::o;6866:250::-;6973:4;7011:2;7000:9;6996:18;6988:26;;7024:85;7106:1;7095:9;7091:17;7082:6;7024:85;:::i;:::-;6866:250;;;;:::o;7122:141::-;7187:9;7220:37;7251:5;7220:37;:::i;:::-;7207:50;;7122:141;;;:::o;7269:161::-;7371:52;7417:5;7371:52;:::i;:::-;7366:3;7359:65;7269:161;;:::o;7436:252::-;7544:4;7582:2;7571:9;7567:18;7559:26;;7595:86;7678:1;7667:9;7663:17;7654:6;7595:86;:::i;:::-;7436:252;;;;:::o;7694:329::-;7753:6;7802:2;7790:9;7781:7;7777:23;7773:32;7770:119;;;7808:79;;:::i;:::-;7770:119;7928:1;7953:53;7998:7;7989:6;7978:9;7974:22;7953:53;:::i;:::-;7943:63;;7899:117;7694:329;;;;:::o;8029:118::-;8116:24;8134:5;8116:24;:::i;:::-;8111:3;8104:37;8029:118;;:::o;8153:222::-;8246:4;8284:2;8273:9;8269:18;8261:26;;8297:71;8365:1;8354:9;8350:17;8341:6;8297:71;:::i;:::-;8153:222;;;;:::o;8381:329::-;8440:6;8489:2;8477:9;8468:7;8464:23;8460:32;8457:119;;;8495:79;;:::i;:::-;8457:119;8615:1;8640:53;8685:7;8676:6;8665:9;8661:22;8640:53;:::i;:::-;8630:63;;8586:117;8381:329;;;;:::o;8716:180::-;8764:77;8761:1;8754:88;8861:4;8858:1;8851:15;8885:4;8882:1;8875:15;8902:180;8950:77;8947:1;8940:88;9047:4;9044:1;9037:15;9071:4;9068:1;9061:15;9088:194;9128:4;9148:20;9166:1;9148:20;:::i;:::-;9143:25;;9182:20;9200:1;9182:20;:::i;:::-;9177:25;;9226:1;9223;9219:9;9211:17;;9250:1;9244:4;9241:11;9238:37;;;9255:18;;:::i;:::-;9238:37;9088:194;;;;:::o;9288:410::-;9328:7;9351:20;9369:1;9351:20;:::i;:::-;9346:25;;9385:20;9403:1;9385:20;:::i;:::-;9380:25;;9440:1;9437;9433:9;9462:30;9480:11;9462:30;:::i;:::-;9451:41;;9641:1;9632:7;9628:15;9625:1;9622:22;9602:1;9595:9;9575:83;9552:139;;9671:18;;:::i;:::-;9552:139;9336:362;9288:410;;;;:::o;9704:180::-;9752:77;9749:1;9742:88;9849:4;9846:1;9839:15;9873:4;9870:1;9863:15;9890:185;9930:1;9947:20;9965:1;9947:20;:::i;:::-;9942:25;;9981:20;9999:1;9981:20;:::i;:::-;9976:25;;10020:1;10010:35;;10025:18;;:::i;:::-;10010:35;10067:1;10064;10060:9;10055:14;;9890:185;;;;:::o;10081:233::-;10120:3;10143:24;10161:5;10143:24;:::i;:::-;10134:33;;10189:66;10182:5;10179:77;10176:103;;10259:18;;:::i;:::-;10176:103;10306:1;10299:5;10295:13;10288:20;;10081:233;;;:::o;10320:169::-;10404:11;10438:6;10433:3;10426:19;10478:4;10473:3;10469:14;10454:29;;10320:169;;;;:::o;10495:166::-;10635:18;10631:1;10623:6;10619:14;10612:42;10495:166;:::o;10667:366::-;10809:3;10830:67;10894:2;10889:3;10830:67;:::i;:::-;10823:74;;10906:93;10995:3;10906:93;:::i;:::-;11024:2;11019:3;11015:12;11008:19;;10667:366;;;:::o;11039:419::-;11205:4;11243:2;11232:9;11228:18;11220:26;;11292:9;11286:4;11282:20;11278:1;11267:9;11263:17;11256:47;11320:131;11446:4;11320:131;:::i;:::-;11312:139;;11039:419;;;:::o;11464:143::-;11521:5;11552:6;11546:13;11537:22;;11568:33;11595:5;11568:33;:::i;:::-;11464:143;;;;:::o;11613:351::-;11683:6;11732:2;11720:9;11711:7;11707:23;11703:32;11700:119;;;11738:79;;:::i;:::-;11700:119;11858:1;11883:64;11939:7;11930:6;11919:9;11915:22;11883:64;:::i;:::-;11873:74;;11829:128;11613:351;;;;:::o;11970:179::-;12110:31;12106:1;12098:6;12094:14;12087:55;11970:179;:::o;12155:366::-;12297:3;12318:67;12382:2;12377:3;12318:67;:::i;:::-;12311:74;;12394:93;12483:3;12394:93;:::i;:::-;12512:2;12507:3;12503:12;12496:19;;12155:366;;;:::o;12527:419::-;12693:4;12731:2;12720:9;12716:18;12708:26;;12780:9;12774:4;12770:20;12766:1;12755:9;12751:17;12744:47;12808:131;12934:4;12808:131;:::i;:::-;12800:139;;12527:419;;;:::o;12952:176::-;13092:28;13088:1;13080:6;13076:14;13069:52;12952:176;:::o;13134:366::-;13276:3;13297:67;13361:2;13356:3;13297:67;:::i;:::-;13290:74;;13373:93;13462:3;13373:93;:::i;:::-;13491:2;13486:3;13482:12;13475:19;;13134:366;;;:::o;13506:419::-;13672:4;13710:2;13699:9;13695:18;13687:26;;13759:9;13753:4;13749:20;13745:1;13734:9;13730:17;13723:47;13787:131;13913:4;13787:131;:::i;:::-;13779:139;;13506:419;;;:::o;13931:442::-;14080:4;14118:2;14107:9;14103:18;14095:26;;14131:71;14199:1;14188:9;14184:17;14175:6;14131:71;:::i;:::-;14212:72;14280:2;14269:9;14265:18;14256:6;14212:72;:::i;:::-;14294;14362:2;14351:9;14347:18;14338:6;14294:72;:::i;:::-;13931:442;;;;;;:::o;14379:179::-;14519:31;14515:1;14507:6;14503:14;14496:55;14379:179;:::o;14564:366::-;14706:3;14727:67;14791:2;14786:3;14727:67;:::i;:::-;14720:74;;14803:93;14892:3;14803:93;:::i;:::-;14921:2;14916:3;14912:12;14905:19;;14564:366;;;:::o;14936:419::-;15102:4;15140:2;15129:9;15125:18;15117:26;;15189:9;15183:4;15179:20;15175:1;15164:9;15160:17;15153:47;15217:131;15343:4;15217:131;:::i;:::-;15209:139;;14936:419;;;:::o;15361:114::-;15428:6;15462:5;15456:12;15446:22;;15361:114;;;:::o;15481:184::-;15580:11;15614:6;15609:3;15602:19;15654:4;15649:3;15645:14;15630:29;;15481:184;;;;:::o;15671:132::-;15738:4;15761:3;15753:11;;15791:4;15786:3;15782:14;15774:22;;15671:132;;;:::o;15809:108::-;15886:24;15904:5;15886:24;:::i;:::-;15881:3;15874:37;15809:108;;:::o;15923:179::-;15992:10;16013:46;16055:3;16047:6;16013:46;:::i;:::-;16091:4;16086:3;16082:14;16068:28;;15923:179;;;;:::o;16108:113::-;16178:4;16210;16205:3;16201:14;16193:22;;16108:113;;;:::o;16257:732::-;16376:3;16405:54;16453:5;16405:54;:::i;:::-;16475:86;16554:6;16549:3;16475:86;:::i;:::-;16468:93;;16585:56;16635:5;16585:56;:::i;:::-;16664:7;16695:1;16680:284;16705:6;16702:1;16699:13;16680:284;;;16781:6;16775:13;16808:63;16867:3;16852:13;16808:63;:::i;:::-;16801:70;;16894:60;16947:6;16894:60;:::i;:::-;16884:70;;16740:224;16727:1;16724;16720:9;16715:14;;16680:284;;;16684:14;16980:3;16973:10;;16381:608;;;16257:732;;;;:::o;16995:634::-;17216:4;17254:2;17243:9;17239:18;17231:26;;17303:9;17297:4;17293:20;17289:1;17278:9;17274:17;17267:47;17331:108;17434:4;17425:6;17331:108;:::i;:::-;17323:116;;17486:9;17480:4;17476:20;17471:2;17460:9;17456:18;17449:48;17514:108;17617:4;17608:6;17514:108;:::i;:::-;17506:116;;16995:634;;;;;:::o;17635:180::-;17775:32;17771:1;17763:6;17759:14;17752:56;17635:180;:::o;17821:366::-;17963:3;17984:67;18048:2;18043:3;17984:67;:::i;:::-;17977:74;;18060:93;18149:3;18060:93;:::i;:::-;18178:2;18173:3;18169:12;18162:19;;17821:366;;;:::o;18193:419::-;18359:4;18397:2;18386:9;18382:18;18374:26;;18446:9;18440:4;18436:20;18432:1;18421:9;18417:17;18410:47;18474:131;18600:4;18474:131;:::i;:::-;18466:139;;18193:419;;;:::o;18618:191::-;18658:3;18677:20;18695:1;18677:20;:::i;:::-;18672:25;;18711:20;18729:1;18711:20;:::i;:::-;18706:25;;18754:1;18751;18747:9;18740:16;;18775:3;18772:1;18769:10;18766:36;;;18782:18;;:::i;:::-;18766:36;18618:191;;;;:::o;18815:178::-;18955:30;18951:1;18943:6;18939:14;18932:54;18815:178;:::o;18999:366::-;19141:3;19162:67;19226:2;19221:3;19162:67;:::i;:::-;19155:74;;19238:93;19327:3;19238:93;:::i;:::-;19356:2;19351:3;19347:12;19340:19;;18999:366;;;:::o;19371:419::-;19537:4;19575:2;19564:9;19560:18;19552:26;;19624:9;19618:4;19614:20;19610:1;19599:9;19595:17;19588:47;19652:131;19778:4;19652:131;:::i;:::-;19644:139;;19371:419;;;:::o;19796:178::-;19936:30;19932:1;19924:6;19920:14;19913:54;19796:178;:::o;19980:366::-;20122:3;20143:67;20207:2;20202:3;20143:67;:::i;:::-;20136:74;;20219:93;20308:3;20219:93;:::i;:::-;20337:2;20332:3;20328:12;20321:19;;19980:366;;;:::o;20352:419::-;20518:4;20556:2;20545:9;20541:18;20533:26;;20605:9;20599:4;20595:20;20591:1;20580:9;20576:17;20569:47;20633:131;20759:4;20633:131;:::i;:::-;20625:139;;20352:419;;;:::o;20777:332::-;20898:4;20936:2;20925:9;20921:18;20913:26;;20949:71;21017:1;21006:9;21002:17;20993:6;20949:71;:::i;:::-;21030:72;21098:2;21087:9;21083:18;21074:6;21030:72;:::i;:::-;20777:332;;;;;:::o;21115:116::-;21185:21;21200:5;21185:21;:::i;:::-;21178:5;21175:32;21165:60;;21221:1;21218;21211:12;21165:60;21115:116;:::o;21237:137::-;21291:5;21322:6;21316:13;21307:22;;21338:30;21362:5;21338:30;:::i;:::-;21237:137;;;;:::o;21380:345::-;21447:6;21496:2;21484:9;21475:7;21471:23;21467:32;21464:119;;;21502:79;;:::i;:::-;21464:119;21622:1;21647:61;21700:7;21691:6;21680:9;21676:22;21647:61;:::i;:::-;21637:71;;21593:125;21380:345;;;;:::o;21731:225::-;21871:34;21867:1;21859:6;21855:14;21848:58;21940:8;21935:2;21927:6;21923:15;21916:33;21731:225;:::o;21962:366::-;22104:3;22125:67;22189:2;22184:3;22125:67;:::i;:::-;22118:74;;22201:93;22290:3;22201:93;:::i;:::-;22319:2;22314:3;22310:12;22303:19;;21962:366;;;:::o;22334:419::-;22500:4;22538:2;22527:9;22523:18;22515:26;;22587:9;22581:4;22577:20;22573:1;22562:9;22558:17;22551:47;22615:131;22741:4;22615:131;:::i;:::-;22607:139;;22334:419;;;:::o;22759:176::-;22899:28;22895:1;22887:6;22883:14;22876:52;22759:176;:::o;22941:366::-;23083:3;23104:67;23168:2;23163:3;23104:67;:::i;:::-;23097:74;;23180:93;23269:3;23180:93;:::i;:::-;23298:2;23293:3;23289:12;23282:19;;22941:366;;;:::o;23313:419::-;23479:4;23517:2;23506:9;23502:18;23494:26;;23566:9;23560:4;23556:20;23552:1;23541:9;23537:17;23530:47;23594:131;23720:4;23594:131;:::i;:::-;23586:139;;23313:419;;;:::o;23738:143::-;23795:5;23826:6;23820:13;23811:22;;23842:33;23869:5;23842:33;:::i;:::-;23738:143;;;;:::o;23887:351::-;23957:6;24006:2;23994:9;23985:7;23981:23;23977:32;23974:119;;;24012:79;;:::i;:::-;23974:119;24132:1;24157:64;24213:7;24204:6;24193:9;24189:22;24157:64;:::i;:::-;24147:74;;24103:128;23887:351;;;;:::o;24244:181::-;24384:33;24380:1;24372:6;24368:14;24361:57;24244:181;:::o;24431:366::-;24573:3;24594:67;24658:2;24653:3;24594:67;:::i;:::-;24587:74;;24670:93;24759:3;24670:93;:::i;:::-;24788:2;24783:3;24779:12;24772:19;;24431:366;;;:::o;24803:419::-;24969:4;25007:2;24996:9;24992:18;24984:26;;25056:9;25050:4;25046:20;25042:1;25031:9;25027:17;25020:47;25084:131;25210:4;25084:131;:::i;:::-;25076:139;;24803:419;;;:::o;25228:166::-;25368:18;25364:1;25356:6;25352:14;25345:42;25228:166;:::o;25400:366::-;25542:3;25563:67;25627:2;25622:3;25563:67;:::i;:::-;25556:74;;25639:93;25728:3;25639:93;:::i;:::-;25757:2;25752:3;25748:12;25741:19;;25400:366;;;:::o;25772:419::-;25938:4;25976:2;25965:9;25961:18;25953:26;;26025:9;26019:4;26015:20;26011:1;26000:9;25996:17;25989:47;26053:131;26179:4;26053:131;:::i;:::-;26045:139;;25772:419;;;:::o;26197:182::-;26337:34;26333:1;26325:6;26321:14;26314:58;26197:182;:::o;26385:366::-;26527:3;26548:67;26612:2;26607:3;26548:67;:::i;:::-;26541:74;;26624:93;26713:3;26624:93;:::i;:::-;26742:2;26737:3;26733:12;26726:19;;26385:366;;;:::o;26757:419::-;26923:4;26961:2;26950:9;26946:18;26938:26;;27010:9;27004:4;27000:20;26996:1;26985:9;26981:17;26974:47;27038:131;27164:4;27038:131;:::i;:::-;27030:139;;26757:419;;;:::o;27182:180::-;27230:77;27227:1;27220:88;27327:4;27324:1;27317:15;27351:4;27348:1;27341:15
Swarm Source
ipfs://f4a499bf545a2f6375b57891c0b5755bd980b8e5ae1825ead3028898a2789531
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.