More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,602 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim Batch Rewa... | 20660071 | 73 days ago | IN | 0 ETH | 0.00005032 | ||||
Claim Batch Rewa... | 20583527 | 84 days ago | IN | 0 ETH | 0.00010305 | ||||
Claim Batch Rewa... | 20557243 | 87 days ago | IN | 0 ETH | 0.00023278 | ||||
Claim Batch Rewa... | 20452939 | 102 days ago | IN | 0 ETH | 0.00008901 | ||||
Claim Batch Rewa... | 19984107 | 167 days ago | IN | 0 ETH | 0.00117712 | ||||
Claim Batch Rewa... | 19952983 | 172 days ago | IN | 0 ETH | 0.00032823 | ||||
Claim Batch Rewa... | 19949748 | 172 days ago | IN | 0 ETH | 0.00052077 | ||||
Claim Batch Rewa... | 19640095 | 216 days ago | IN | 0 ETH | 0.00231478 | ||||
Claim Batch Rewa... | 19498562 | 235 days ago | IN | 0 ETH | 0.00374129 | ||||
Batch Unstake NF... | 19253870 | 270 days ago | IN | 0 ETH | 0.01244134 | ||||
Claim Batch Rewa... | 19138504 | 286 days ago | IN | 0 ETH | 0.00115475 | ||||
Claim Batch Rewa... | 19138468 | 286 days ago | IN | 0 ETH | 0.00125302 | ||||
Claim Batch Rewa... | 19135237 | 286 days ago | IN | 0 ETH | 0.00266215 | ||||
Claim Batch Rewa... | 19129479 | 287 days ago | IN | 0 ETH | 0.00253783 | ||||
Claim Batch Rewa... | 19007912 | 304 days ago | IN | 0 ETH | 0.00390151 | ||||
Claim Batch Rewa... | 18666222 | 352 days ago | IN | 0 ETH | 0.00278242 | ||||
Batch Unstake NF... | 18557067 | 367 days ago | IN | 0 ETH | 0.06744287 | ||||
Claim Batch Rewa... | 18528799 | 371 days ago | IN | 0 ETH | 0.00315504 | ||||
Claim Batch Rewa... | 18394098 | 390 days ago | IN | 0 ETH | 0.0008821 | ||||
Claim Batch Rewa... | 18252677 | 410 days ago | IN | 0 ETH | 0.00141936 | ||||
Claim Batch Rewa... | 17895649 | 460 days ago | IN | 0 ETH | 0.00105527 | ||||
Batch Unstake NF... | 17809197 | 472 days ago | IN | 0 ETH | 0.01666331 | ||||
Batch Unstake NF... | 17805847 | 473 days ago | IN | 0 ETH | 0.02157009 | ||||
Claim Batch Rewa... | 17805846 | 473 days ago | IN | 0 ETH | 0.00100448 | ||||
Batch Unstake NF... | 17675491 | 491 days ago | IN | 0 ETH | 0.02070052 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
BearStaking
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-01-14 */ /** *Submitted for verification at Etherscan.io on 2022-01-12 */ /** *Submitted for verification at Etherscan.io on 2022-01-12 */ /** *Submitted for verification at Etherscan.io on 2022-01-12 */ /** *Submitted for verification at Etherscan.io on 2022-01-12 */ /** *Submitted for verification at Etherscan.io on 2022-01-11 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.7; // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) /** * @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); } // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol) /** * @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`, 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 ) external; /** * @dev Transfers `tokenId` token 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; /** * @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 Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @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 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); /** * @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; } // OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol) /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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 `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, uint256 amount ) external returns (bool); /** * @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); } // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) /** * @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; } } // OpenZeppelin Contracts v4.4.1 (access/Ownable.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. * * 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 Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing 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); } } // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol) /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // OpenZeppelin Contracts v4.4.1 (utils/math/SafeMath.sol) // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } contract BearStaking is Ownable, IERC721Receiver{ using SafeMath for uint256; bytes4 private constant _ERC721_RECEIVED = 0x150b7a02; //StakedBear Struct struct StakedBear{ address owner; uint256 lastClaimed; bool isStaked; bool isEmergencyOut; uint256 emergencyOutTime; } //event event RewardClaimed(uint256 tokenID, address owner); event Staked(address staker, uint256 tokenID, uint256 stakedTime); event UnStaked(uint256 tokenID, uint256 unstakedTime); // token_id => StakedBear mapping(uint256 => StakedBear) public stakedBear; uint256[] public bears; //NFT address address public bearNFT = 0x838E240c0FcBd12fBfFdB327d35A32DD2E73C7ea; //ERC20 address address public honey = 0x4F0c5042A11830fEaBA227840402e2409b0FC9dC; //reward discription uint256 public rate = 10 * 10**18; //reward interval uint256 public rewardPeroid = 1 days; // reward = delta * rate / peroid function calculateReward(uint256 _lastClaimed, uint256 _rewardEndTime) view internal returns(uint256){ return _rewardEndTime.sub(_lastClaimed).mul(rate).div(rewardPeroid); } function batchStakeNFT(uint256[] memory _tokenIds) external { for(uint256 i=0;i<_tokenIds.length;i++){ stakeNFT(_tokenIds[i]); } } function stakeNFT(uint256 _tokenId) public { require(!stakedBear[_tokenId].isStaked, "Staking: NFT already on staked!"); require(IERC721(bearNFT).ownerOf(_tokenId)==msg.sender, "Staking: Not the NFT owner!"); require( address(this) == IERC721(bearNFT).getApproved(_tokenId) || IERC721(bearNFT).isApprovedForAll(msg.sender, address(this)), "Staking: NFT not approved for the staking address OR Staking not set as operator!" ); IERC721(bearNFT).safeTransferFrom(msg.sender, address(this), _tokenId, " "); _stakeNFT(_tokenId); } function batchUnstakeNFT(uint256[] memory _tokenIds) external { for(uint256 i=0;i<_tokenIds.length;i++){ unstakeNFT(_tokenIds[i]); } } function unstakeNFT(uint256 _tokenId) public { require(stakedBear[_tokenId].isStaked, "Staking: NFT not on staked!"); IERC721(bearNFT).safeTransferFrom(address(this), msg.sender, _tokenId, " "); claimReward(_tokenId); _unstakeNFT(_tokenId); } function batchUnstakeWithoutRewardNFT(uint256[] memory _tokenIds) external{ for(uint256 i=0;i<_tokenIds.length; i++){ unstakeWithoutRewardNFT(_tokenIds[i]); } } function unstakeWithoutRewardNFT(uint256 _tokenId) public { stakedBear[_tokenId].emergencyOutTime = block.timestamp; stakedBear[_tokenId].isEmergencyOut = true; require(stakedBear[_tokenId].isStaked, "Staking: NFT not on staked!"); IERC721(bearNFT).safeTransferFrom(address(this), msg.sender, _tokenId, " "); _unstakeNFT(_tokenId); } function _stakeNFT(uint256 _tokenId) internal{ StakedBear storage bear = stakedBear[_tokenId]; require(!bear.isStaked, "Staking: NFT already in staking!"); bear.isStaked = true; bear.owner = msg.sender; bear.lastClaimed = block.timestamp; bear.isEmergencyOut = false; //add bear bears.push(_tokenId); emit Staked(msg.sender, _tokenId, block.timestamp); } function _unstakeNFT(uint256 _tokenId) internal { StakedBear storage bear = stakedBear[_tokenId]; require(bear.isStaked, "Staking: NFT not staked!"); require(bear.owner == msg.sender, "Staking: Not the owner of NFT!"); bear.isStaked = false; emit UnStaked(_tokenId, block.timestamp); //remove from bears. for(uint256 i=0; i<bears.length; i++){ if(bears[i] == _tokenId){ bears[i] = bears[bears.length-1]; bears.pop(); return; } } } function claimReward(uint256 _tokenId) public { StakedBear storage bear = stakedBear[_tokenId]; require(bear.owner != address(0), "Staking: Bear not in staking!"); require(bear.owner == msg.sender, "Staking: Not the owner of NFT!"); uint256 reward = 0; if(bear.isEmergencyOut){ require(bear.emergencyOutTime > bear.lastClaimed, "Staking: Already Claimed Reward!"); reward = calculateReward(bear.lastClaimed, bear.emergencyOutTime); }else{ require(bear.isStaked, "Staking: Not in staking!"); reward = calculateReward(bear.lastClaimed, block.timestamp); } bear.lastClaimed = block.timestamp; //transfer honey IERC20(honey).transfer(msg.sender, reward); emit RewardClaimed(_tokenId, msg.sender); } function claimBatchReward(uint256[] memory _tokenIds) external{ for(uint i=0; i<_tokenIds.length; i++){ claimReward(_tokenIds[i]); } } function getStakedBear(address wallet) public view returns(uint256[] memory){ uint256[] memory stakedBears = new uint256[](bears.length); uint256 count=0; for(uint256 i=0; i<bears.length; i++){ StakedBear memory _bear = stakedBear[bears[i]]; if(_bear.owner==wallet && _bear.isStaked){ stakedBears[count] = bears[i]; count++; } } uint256[] memory userStakedBears = new uint256[](count); for(uint256 i=0; i<count; i++){ userStakedBears[i] = stakedBears[i]; } return userStakedBears; } function getClaimableToken(address wallet) external view returns(uint256){ uint256[] memory stakedBears = getStakedBear(wallet); uint256 reward = 0; for(uint256 i=0; i<stakedBears.length; i++){ if(stakedBear[stakedBears[i]].isEmergencyOut) reward += calculateReward(stakedBear[stakedBears[i]].lastClaimed, stakedBear[stakedBears[i]].emergencyOutTime); else reward += calculateReward(stakedBear[stakedBears[i]].lastClaimed, block.timestamp); } return reward; } function getTotalStakedBears() external view returns(uint256){ return bears.length; } //----------- Rescue Ether and tokens ------------// function withdraw() external payable onlyOwner { (bool os, ) = payable(owner()).call{value: address(this).balance}(""); require(os); } function withdrawToken(uint256 amount) external onlyOwner{ IERC20(honey).transfer(msg.sender, amount); } //------ Callbacks -------------------// /* Handle the ERC721 recieve. */ function onERC721Received( address, address, uint256, bytes calldata data ) public override returns(bytes4) { return _ERC721_RECEIVED; } //ERC721 support function supportsInterface(bytes4 interfaceID) external returns (bool){ return interfaceID == _ERC721_RECEIVED ; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":"uint256","name":"tokenID","type":"uint256"},{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"RewardClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"stakedTime","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unstakedTime","type":"uint256"}],"name":"UnStaked","type":"event"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"batchStakeNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"batchUnstakeNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"batchUnstakeWithoutRewardNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bearNFT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"bears","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"claimBatchReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getClaimableToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getStakedBear","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalStakedBears","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"honey","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardPeroid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"stakeNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakedBear","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"lastClaimed","type":"uint256"},{"internalType":"bool","name":"isStaked","type":"bool"},{"internalType":"bool","name":"isEmergencyOut","type":"bool"},{"internalType":"uint256","name":"emergencyOutTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","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":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"unstakeNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"unstakeWithoutRewardNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600380546001600160a01b031990811673838e240c0fcbd12fbffdb327d35a32dd2e73c7ea1790915560048054909116734f0c5042a11830feaba227840402e2409b0fc9dc179055678ac7230489e800006005556201518060065534801561006b57600080fd5b506100753361007a565b6100ca565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611a2b806100d96000396000f3fe60806040526004361061014b5760003560e01c8063715018a6116100b6578063b42315631161006f578063b4231563146103d2578063bacccabe146103f2578063bc1a73d614610412578063c1dfa0bb146104a6578063e68299f9146104c6578063f2fde38b146104dc57600080fd5b8063715018a61461031257806374e747601461032757806380c48c0b14610354578063862bc2c5146103745780638da5cb5b14610394578063ae169a50146103b257600080fd5b80633ccfd60b116101085780633ccfd60b1461026a57806350baa622146102725780635eeec224146102925780636954f3e5146102b25780636e75f5c7146102d25780636eb604e0146102f257600080fd5b806301ffc9a7146101505780630c313ef714610196578063150b7a02146101b557806321205fed146101fa5780632c4e722e1461021c57806336b2c4b214610232575b600080fd5b34801561015c57600080fd5b5061018161016b366004611804565b6001600160e01b031916630a85bd0160e11b1490565b60405190151581526020015b60405180910390f35b3480156101a257600080fd5b506002545b60405190815260200161018d565b3480156101c157600080fd5b506101e16101d036600461167e565b630a85bd0160e11b95945050505050565b6040516001600160e01b0319909116815260200161018d565b34801561020657600080fd5b5061021a61021536600461171d565b6104fc565b005b34801561022857600080fd5b506101a760055481565b34801561023e57600080fd5b50600454610252906001600160a01b031681565b6040516001600160a01b03909116815260200161018d565b61021a610540565b34801561027e57600080fd5b5061021a61028d36600461182e565b6105d6565b34801561029e57600080fd5b5061021a6102ad36600461182e565b610685565b3480156102be57600080fd5b5061021a6102cd36600461171d565b610769565b3480156102de57600080fd5b5061021a6102ed36600461171d565b6107a9565b3480156102fe57600080fd5b5061021a61030d36600461182e565b6107e9565b34801561031e57600080fd5b5061021a610b2f565b34801561033357600080fd5b50610347610342366004611644565b610b65565b60405161018d9190611884565b34801561036057600080fd5b506101a761036f366004611644565b610d60565b34801561038057600080fd5b5061021a61038f36600461171d565b610e96565b3480156103a057600080fd5b506000546001600160a01b0316610252565b3480156103be57600080fd5b5061021a6103cd36600461182e565b610ed6565b3480156103de57600080fd5b506101a76103ed36600461182e565b611147565b3480156103fe57600080fd5b50600354610252906001600160a01b031681565b34801561041e57600080fd5b5061046e61042d36600461182e565b600160208190526000918252604090912080549181015460028201546003909201546001600160a01b0390931692909160ff80821692610100909204169085565b604080516001600160a01b0390961686526020860194909452911515928401929092529015156060830152608082015260a00161018d565b3480156104b257600080fd5b5061021a6104c136600461182e565b611168565b3480156104d257600080fd5b506101a760065481565b3480156104e857600080fd5b5061021a6104f7366004611644565b611241565b60005b815181101561053c5761052a82828151811061051d5761051d6119b4565b6020026020010151610ed6565b806105348161196d565b9150506104ff565b5050565b6000546001600160a01b031633146105735760405162461bcd60e51b815260040161056a906118c8565b60405180910390fd5b600080546040516001600160a01b039091169047908381818185875af1925050503d80600081146105c0576040519150601f19603f3d011682016040523d82523d6000602084013e6105c5565b606091505b50509050806105d357600080fd5b50565b6000546001600160a01b031633146106005760405162461bcd60e51b815260040161056a906118c8565b6004805460405163a9059cbb60e01b81523392810192909252602482018390526001600160a01b03169063a9059cbb90604401602060405180830381600087803b15801561064d57600080fd5b505af1158015610661573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053c91906117e2565b6000818152600160205260409020426003820155600201805461ff001981166101001790915560ff166106fa5760405162461bcd60e51b815260206004820152601b60248201527f5374616b696e673a204e4654206e6f74206f6e207374616b6564210000000000604482015260640161056a565b600354604051635c46a7ef60e11b81526001600160a01b039091169063b88d4fde9061072e90309033908690600401611847565b600060405180830381600087803b15801561074857600080fd5b505af115801561075c573d6000803e3d6000fd5b505050506105d3816112d9565b60005b815181101561053c5761079782828151811061078a5761078a6119b4565b60200260200101516107e9565b806107a18161196d565b91505061076c565b60005b815181101561053c576107d78282815181106107ca576107ca6119b4565b6020026020010151610685565b806107e18161196d565b9150506107ac565b60008181526001602052604090206002015460ff161561084b5760405162461bcd60e51b815260206004820152601f60248201527f5374616b696e673a204e465420616c7265616479206f6e207374616b65642100604482015260640161056a565b6003546040516331a9108f60e11b81526004810183905233916001600160a01b031690636352211e9060240160206040518083038186803b15801561088f57600080fd5b505afa1580156108a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c79190611661565b6001600160a01b03161461091d5760405162461bcd60e51b815260206004820152601b60248201527f5374616b696e673a204e6f7420746865204e4654206f776e6572210000000000604482015260640161056a565b60035460405163020604bf60e21b8152600481018390526001600160a01b039091169063081812fc9060240160206040518083038186803b15801561096157600080fd5b505afa158015610975573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109999190611661565b6001600160a01b0316306001600160a01b03161480610a34575060035460405163e985e9c560e01b81523360048201523060248201526001600160a01b039091169063e985e9c59060440160206040518083038186803b1580156109fc57600080fd5b505afa158015610a10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3491906117e2565b610ac05760405162461bcd60e51b815260206004820152605160248201527f5374616b696e673a204e4654206e6f7420617070726f76656420666f7220746860448201527f65207374616b696e672061646472657373204f52205374616b696e67206e6f7460648201527020736574206173206f70657261746f722160781b608482015260a40161056a565b600354604051635c46a7ef60e11b81526001600160a01b039091169063b88d4fde90610af490339030908690600401611847565b600060405180830381600087803b158015610b0e57600080fd5b505af1158015610b22573d6000803e3d6000fd5b505050506105d381611497565b6000546001600160a01b03163314610b595760405162461bcd60e51b815260040161056a906118c8565b610b63600061159c565b565b60025460609060009067ffffffffffffffff811115610b8657610b866119ca565b604051908082528060200260200182016040528015610baf578160200160208202803683370190505b5090506000805b600254811015610cbb5760006001600060028481548110610bd957610bd96119b4565b600091825260208083209091015483528281019390935260409182019020815160a08101835281546001600160a01b03908116808352600184015495830195909552600283015460ff808216151595840195909552610100900490931615156060820152600390910154608082015292508716148015610c5a575080604001515b15610ca85760028281548110610c7257610c726119b4565b9060005260206000200154848481518110610c8f57610c8f6119b4565b602090810291909101015282610ca48161196d565b9350505b5080610cb38161196d565b915050610bb6565b5060008167ffffffffffffffff811115610cd757610cd76119ca565b604051908082528060200260200182016040528015610d00578160200160208202803683370190505b50905060005b82811015610d5757838181518110610d2057610d206119b4565b6020026020010151828281518110610d3a57610d3a6119b4565b602090810291909101015280610d4f8161196d565b915050610d06565b50949350505050565b600080610d6c83610b65565b90506000805b8251811015610e8e5760016000848381518110610d9157610d916119b4565b6020026020010151815260200190815260200160002060020160019054906101000a900460ff1615610e3657610e2560016000858481518110610dd657610dd66119b4565b602002602001015181526020019081526020016000206001015460016000868581518110610e0657610e066119b4565b60200260200101518152602001908152602001600020600301546115ec565b610e2f90836118fd565b9150610e7c565b610e6f60016000858481518110610e4f57610e4f6119b4565b6020026020010151815260200190815260200160002060010154426115ec565b610e7990836118fd565b91505b80610e868161196d565b915050610d72565b509392505050565b60005b815181101561053c57610ec4828281518110610eb757610eb76119b4565b6020026020010151611168565b80610ece8161196d565b915050610e99565b600081815260016020526040902080546001600160a01b0316610f3b5760405162461bcd60e51b815260206004820152601d60248201527f5374616b696e673a2042656172206e6f7420696e207374616b696e6721000000604482015260640161056a565b80546001600160a01b03163314610f945760405162461bcd60e51b815260206004820152601e60248201527f5374616b696e673a204e6f7420746865206f776e6572206f66204e4654210000604482015260640161056a565b6002810154600090610100900460ff16156110195781600101548260030154116110005760405162461bcd60e51b815260206004820181905260248201527f5374616b696e673a20416c726561647920436c61696d65642052657761726421604482015260640161056a565b611012826001015483600301546115ec565b905061107e565b600282015460ff1661106d5760405162461bcd60e51b815260206004820152601860248201527f5374616b696e673a204e6f7420696e207374616b696e67210000000000000000604482015260640161056a565b61107b8260010154426115ec565b90505b4260018301556004805460405163a9059cbb60e01b81523392810192909252602482018390526001600160a01b03169063a9059cbb90604401602060405180830381600087803b1580156110d157600080fd5b505af11580156110e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110991906117e2565b50604080518481523360208201527f5dd59f4285b36241394b73f8f7ae03d0290b030a86803cf2562ecf33eeb617bd910160405180910390a1505050565b6002818154811061115757600080fd5b600091825260209091200154905081565b60008181526001602052604090206002015460ff166111c95760405162461bcd60e51b815260206004820152601b60248201527f5374616b696e673a204e4654206e6f74206f6e207374616b6564210000000000604482015260640161056a565b600354604051635c46a7ef60e11b81526001600160a01b039091169063b88d4fde906111fd90309033908690600401611847565b600060405180830381600087803b15801561121757600080fd5b505af115801561122b573d6000803e3d6000fd5b5050505061123881610ed6565b6105d3816112d9565b6000546001600160a01b0316331461126b5760405162461bcd60e51b815260040161056a906118c8565b6001600160a01b0381166112d05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161056a565b6105d38161159c565b6000818152600160205260409020600281015460ff1661133b5760405162461bcd60e51b815260206004820152601860248201527f5374616b696e673a204e4654206e6f74207374616b6564210000000000000000604482015260640161056a565b80546001600160a01b031633146113945760405162461bcd60e51b815260206004820152601e60248201527f5374616b696e673a204e6f7420746865206f776e6572206f66204e4654210000604482015260640161056a565b60028101805460ff19169055604080518381524260208201527f69f6d6e6926b6914c628cca5ab19879a4099facaba2b44626e07d8e38ebd189b910160405180910390a160005b6002548110156114925782600282815481106113f9576113f96119b4565b90600052602060002001541415611480576002805461141a90600190611956565b8154811061142a5761142a6119b4565b906000526020600020015460028281548110611448576114486119b4565b60009182526020909120015560028054806114655761146561199e565b60019003818190600052602060002001600090559055505050565b8061148a8161196d565b9150506113db565b505050565b6000818152600160205260409020600281015460ff16156114fa5760405162461bcd60e51b815260206004820181905260248201527f5374616b696e673a204e465420616c726561647920696e207374616b696e6721604482015260640161056a565b6002818101805483546001600160a01b03191633908117855542600180870182905561ffff199093168317909355835491820184556000939093527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0184905560408051928352602083018590528201527f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee909060600160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061161960065461161360055461160d878761162090919063ffffffff16565b9061162c565b90611638565b9392505050565b60006116198284611956565b60006116198284611937565b60006116198284611915565b60006020828403121561165657600080fd5b8135611619816119e0565b60006020828403121561167357600080fd5b8151611619816119e0565b60008060008060006080868803121561169657600080fd5b85356116a1816119e0565b945060208601356116b1816119e0565b935060408601359250606086013567ffffffffffffffff808211156116d557600080fd5b818801915088601f8301126116e957600080fd5b8135818111156116f857600080fd5b89602082850101111561170a57600080fd5b9699959850939650602001949392505050565b6000602080838503121561173057600080fd5b823567ffffffffffffffff8082111561174857600080fd5b818501915085601f83011261175c57600080fd5b81358181111561176e5761176e6119ca565b8060051b604051601f19603f83011681018181108582111715611793576117936119ca565b604052828152858101935084860182860187018a10156117b257600080fd5b600095505b838610156117d55780358552600195909501949386019386016117b7565b5098975050505050505050565b6000602082840312156117f457600080fd5b8151801515811461161957600080fd5b60006020828403121561181657600080fd5b81356001600160e01b03198116811461161957600080fd5b60006020828403121561184057600080fd5b5035919050565b6001600160a01b0393841681529190921660208201526040810191909152608060608201819052600190820152600160fd1b60a082015260c00190565b6020808252825182820181905260009190848201906040850190845b818110156118bc578351835292840192918401916001016118a0565b50909695505050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561191057611910611988565b500190565b60008261193257634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561195157611951611988565b500290565b60008282101561196857611968611988565b500390565b600060001982141561198157611981611988565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146105d357600080fdfea26469706673582212208a165fe01bd6826f39b5ab71aa2e9e0b5816b068ac496d23a73f0461062a7d4c64736f6c63430008070033
Deployed Bytecode
0x60806040526004361061014b5760003560e01c8063715018a6116100b6578063b42315631161006f578063b4231563146103d2578063bacccabe146103f2578063bc1a73d614610412578063c1dfa0bb146104a6578063e68299f9146104c6578063f2fde38b146104dc57600080fd5b8063715018a61461031257806374e747601461032757806380c48c0b14610354578063862bc2c5146103745780638da5cb5b14610394578063ae169a50146103b257600080fd5b80633ccfd60b116101085780633ccfd60b1461026a57806350baa622146102725780635eeec224146102925780636954f3e5146102b25780636e75f5c7146102d25780636eb604e0146102f257600080fd5b806301ffc9a7146101505780630c313ef714610196578063150b7a02146101b557806321205fed146101fa5780632c4e722e1461021c57806336b2c4b214610232575b600080fd5b34801561015c57600080fd5b5061018161016b366004611804565b6001600160e01b031916630a85bd0160e11b1490565b60405190151581526020015b60405180910390f35b3480156101a257600080fd5b506002545b60405190815260200161018d565b3480156101c157600080fd5b506101e16101d036600461167e565b630a85bd0160e11b95945050505050565b6040516001600160e01b0319909116815260200161018d565b34801561020657600080fd5b5061021a61021536600461171d565b6104fc565b005b34801561022857600080fd5b506101a760055481565b34801561023e57600080fd5b50600454610252906001600160a01b031681565b6040516001600160a01b03909116815260200161018d565b61021a610540565b34801561027e57600080fd5b5061021a61028d36600461182e565b6105d6565b34801561029e57600080fd5b5061021a6102ad36600461182e565b610685565b3480156102be57600080fd5b5061021a6102cd36600461171d565b610769565b3480156102de57600080fd5b5061021a6102ed36600461171d565b6107a9565b3480156102fe57600080fd5b5061021a61030d36600461182e565b6107e9565b34801561031e57600080fd5b5061021a610b2f565b34801561033357600080fd5b50610347610342366004611644565b610b65565b60405161018d9190611884565b34801561036057600080fd5b506101a761036f366004611644565b610d60565b34801561038057600080fd5b5061021a61038f36600461171d565b610e96565b3480156103a057600080fd5b506000546001600160a01b0316610252565b3480156103be57600080fd5b5061021a6103cd36600461182e565b610ed6565b3480156103de57600080fd5b506101a76103ed36600461182e565b611147565b3480156103fe57600080fd5b50600354610252906001600160a01b031681565b34801561041e57600080fd5b5061046e61042d36600461182e565b600160208190526000918252604090912080549181015460028201546003909201546001600160a01b0390931692909160ff80821692610100909204169085565b604080516001600160a01b0390961686526020860194909452911515928401929092529015156060830152608082015260a00161018d565b3480156104b257600080fd5b5061021a6104c136600461182e565b611168565b3480156104d257600080fd5b506101a760065481565b3480156104e857600080fd5b5061021a6104f7366004611644565b611241565b60005b815181101561053c5761052a82828151811061051d5761051d6119b4565b6020026020010151610ed6565b806105348161196d565b9150506104ff565b5050565b6000546001600160a01b031633146105735760405162461bcd60e51b815260040161056a906118c8565b60405180910390fd5b600080546040516001600160a01b039091169047908381818185875af1925050503d80600081146105c0576040519150601f19603f3d011682016040523d82523d6000602084013e6105c5565b606091505b50509050806105d357600080fd5b50565b6000546001600160a01b031633146106005760405162461bcd60e51b815260040161056a906118c8565b6004805460405163a9059cbb60e01b81523392810192909252602482018390526001600160a01b03169063a9059cbb90604401602060405180830381600087803b15801561064d57600080fd5b505af1158015610661573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053c91906117e2565b6000818152600160205260409020426003820155600201805461ff001981166101001790915560ff166106fa5760405162461bcd60e51b815260206004820152601b60248201527f5374616b696e673a204e4654206e6f74206f6e207374616b6564210000000000604482015260640161056a565b600354604051635c46a7ef60e11b81526001600160a01b039091169063b88d4fde9061072e90309033908690600401611847565b600060405180830381600087803b15801561074857600080fd5b505af115801561075c573d6000803e3d6000fd5b505050506105d3816112d9565b60005b815181101561053c5761079782828151811061078a5761078a6119b4565b60200260200101516107e9565b806107a18161196d565b91505061076c565b60005b815181101561053c576107d78282815181106107ca576107ca6119b4565b6020026020010151610685565b806107e18161196d565b9150506107ac565b60008181526001602052604090206002015460ff161561084b5760405162461bcd60e51b815260206004820152601f60248201527f5374616b696e673a204e465420616c7265616479206f6e207374616b65642100604482015260640161056a565b6003546040516331a9108f60e11b81526004810183905233916001600160a01b031690636352211e9060240160206040518083038186803b15801561088f57600080fd5b505afa1580156108a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c79190611661565b6001600160a01b03161461091d5760405162461bcd60e51b815260206004820152601b60248201527f5374616b696e673a204e6f7420746865204e4654206f776e6572210000000000604482015260640161056a565b60035460405163020604bf60e21b8152600481018390526001600160a01b039091169063081812fc9060240160206040518083038186803b15801561096157600080fd5b505afa158015610975573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109999190611661565b6001600160a01b0316306001600160a01b03161480610a34575060035460405163e985e9c560e01b81523360048201523060248201526001600160a01b039091169063e985e9c59060440160206040518083038186803b1580156109fc57600080fd5b505afa158015610a10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3491906117e2565b610ac05760405162461bcd60e51b815260206004820152605160248201527f5374616b696e673a204e4654206e6f7420617070726f76656420666f7220746860448201527f65207374616b696e672061646472657373204f52205374616b696e67206e6f7460648201527020736574206173206f70657261746f722160781b608482015260a40161056a565b600354604051635c46a7ef60e11b81526001600160a01b039091169063b88d4fde90610af490339030908690600401611847565b600060405180830381600087803b158015610b0e57600080fd5b505af1158015610b22573d6000803e3d6000fd5b505050506105d381611497565b6000546001600160a01b03163314610b595760405162461bcd60e51b815260040161056a906118c8565b610b63600061159c565b565b60025460609060009067ffffffffffffffff811115610b8657610b866119ca565b604051908082528060200260200182016040528015610baf578160200160208202803683370190505b5090506000805b600254811015610cbb5760006001600060028481548110610bd957610bd96119b4565b600091825260208083209091015483528281019390935260409182019020815160a08101835281546001600160a01b03908116808352600184015495830195909552600283015460ff808216151595840195909552610100900490931615156060820152600390910154608082015292508716148015610c5a575080604001515b15610ca85760028281548110610c7257610c726119b4565b9060005260206000200154848481518110610c8f57610c8f6119b4565b602090810291909101015282610ca48161196d565b9350505b5080610cb38161196d565b915050610bb6565b5060008167ffffffffffffffff811115610cd757610cd76119ca565b604051908082528060200260200182016040528015610d00578160200160208202803683370190505b50905060005b82811015610d5757838181518110610d2057610d206119b4565b6020026020010151828281518110610d3a57610d3a6119b4565b602090810291909101015280610d4f8161196d565b915050610d06565b50949350505050565b600080610d6c83610b65565b90506000805b8251811015610e8e5760016000848381518110610d9157610d916119b4565b6020026020010151815260200190815260200160002060020160019054906101000a900460ff1615610e3657610e2560016000858481518110610dd657610dd66119b4565b602002602001015181526020019081526020016000206001015460016000868581518110610e0657610e066119b4565b60200260200101518152602001908152602001600020600301546115ec565b610e2f90836118fd565b9150610e7c565b610e6f60016000858481518110610e4f57610e4f6119b4565b6020026020010151815260200190815260200160002060010154426115ec565b610e7990836118fd565b91505b80610e868161196d565b915050610d72565b509392505050565b60005b815181101561053c57610ec4828281518110610eb757610eb76119b4565b6020026020010151611168565b80610ece8161196d565b915050610e99565b600081815260016020526040902080546001600160a01b0316610f3b5760405162461bcd60e51b815260206004820152601d60248201527f5374616b696e673a2042656172206e6f7420696e207374616b696e6721000000604482015260640161056a565b80546001600160a01b03163314610f945760405162461bcd60e51b815260206004820152601e60248201527f5374616b696e673a204e6f7420746865206f776e6572206f66204e4654210000604482015260640161056a565b6002810154600090610100900460ff16156110195781600101548260030154116110005760405162461bcd60e51b815260206004820181905260248201527f5374616b696e673a20416c726561647920436c61696d65642052657761726421604482015260640161056a565b611012826001015483600301546115ec565b905061107e565b600282015460ff1661106d5760405162461bcd60e51b815260206004820152601860248201527f5374616b696e673a204e6f7420696e207374616b696e67210000000000000000604482015260640161056a565b61107b8260010154426115ec565b90505b4260018301556004805460405163a9059cbb60e01b81523392810192909252602482018390526001600160a01b03169063a9059cbb90604401602060405180830381600087803b1580156110d157600080fd5b505af11580156110e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110991906117e2565b50604080518481523360208201527f5dd59f4285b36241394b73f8f7ae03d0290b030a86803cf2562ecf33eeb617bd910160405180910390a1505050565b6002818154811061115757600080fd5b600091825260209091200154905081565b60008181526001602052604090206002015460ff166111c95760405162461bcd60e51b815260206004820152601b60248201527f5374616b696e673a204e4654206e6f74206f6e207374616b6564210000000000604482015260640161056a565b600354604051635c46a7ef60e11b81526001600160a01b039091169063b88d4fde906111fd90309033908690600401611847565b600060405180830381600087803b15801561121757600080fd5b505af115801561122b573d6000803e3d6000fd5b5050505061123881610ed6565b6105d3816112d9565b6000546001600160a01b0316331461126b5760405162461bcd60e51b815260040161056a906118c8565b6001600160a01b0381166112d05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161056a565b6105d38161159c565b6000818152600160205260409020600281015460ff1661133b5760405162461bcd60e51b815260206004820152601860248201527f5374616b696e673a204e4654206e6f74207374616b6564210000000000000000604482015260640161056a565b80546001600160a01b031633146113945760405162461bcd60e51b815260206004820152601e60248201527f5374616b696e673a204e6f7420746865206f776e6572206f66204e4654210000604482015260640161056a565b60028101805460ff19169055604080518381524260208201527f69f6d6e6926b6914c628cca5ab19879a4099facaba2b44626e07d8e38ebd189b910160405180910390a160005b6002548110156114925782600282815481106113f9576113f96119b4565b90600052602060002001541415611480576002805461141a90600190611956565b8154811061142a5761142a6119b4565b906000526020600020015460028281548110611448576114486119b4565b60009182526020909120015560028054806114655761146561199e565b60019003818190600052602060002001600090559055505050565b8061148a8161196d565b9150506113db565b505050565b6000818152600160205260409020600281015460ff16156114fa5760405162461bcd60e51b815260206004820181905260248201527f5374616b696e673a204e465420616c726561647920696e207374616b696e6721604482015260640161056a565b6002818101805483546001600160a01b03191633908117855542600180870182905561ffff199093168317909355835491820184556000939093527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0184905560408051928352602083018590528201527f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee909060600160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061161960065461161360055461160d878761162090919063ffffffff16565b9061162c565b90611638565b9392505050565b60006116198284611956565b60006116198284611937565b60006116198284611915565b60006020828403121561165657600080fd5b8135611619816119e0565b60006020828403121561167357600080fd5b8151611619816119e0565b60008060008060006080868803121561169657600080fd5b85356116a1816119e0565b945060208601356116b1816119e0565b935060408601359250606086013567ffffffffffffffff808211156116d557600080fd5b818801915088601f8301126116e957600080fd5b8135818111156116f857600080fd5b89602082850101111561170a57600080fd5b9699959850939650602001949392505050565b6000602080838503121561173057600080fd5b823567ffffffffffffffff8082111561174857600080fd5b818501915085601f83011261175c57600080fd5b81358181111561176e5761176e6119ca565b8060051b604051601f19603f83011681018181108582111715611793576117936119ca565b604052828152858101935084860182860187018a10156117b257600080fd5b600095505b838610156117d55780358552600195909501949386019386016117b7565b5098975050505050505050565b6000602082840312156117f457600080fd5b8151801515811461161957600080fd5b60006020828403121561181657600080fd5b81356001600160e01b03198116811461161957600080fd5b60006020828403121561184057600080fd5b5035919050565b6001600160a01b0393841681529190921660208201526040810191909152608060608201819052600190820152600160fd1b60a082015260c00190565b6020808252825182820181905260009190848201906040850190845b818110156118bc578351835292840192918401916001016118a0565b50909695505050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561191057611910611988565b500190565b60008261193257634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561195157611951611988565b500290565b60008282101561196857611968611988565b500390565b600060001982141561198157611981611988565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146105d357600080fdfea26469706673582212208a165fe01bd6826f39b5ab71aa2e9e0b5816b068ac496d23a73f0461062a7d4c64736f6c63430008070033
Deployed Bytecode Sourcemap
19944:6851:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26670:122;;;;;;;;;;-1:-1:-1;26670:122:0;;;;;:::i;:::-;-1:-1:-1;;;;;;26754:31:0;-1:-1:-1;;;26754:31:0;;26670:122;;;;6625:14:1;;6618:22;6600:41;;6588:2;6573:18;26670:122:0;;;;;;;;25918:95;;;;;;;;;;-1:-1:-1;25995:5:0;:12;25918:95;;;11480:25:1;;;11468:2;11453:18;25918:95:0;11334:177:1;26436:205:0;;;;;;;;;;-1:-1:-1;26436:205:0;;;;;:::i;:::-;-1:-1:-1;;;26436:205:0;;;;;;;;;;;-1:-1:-1;;;;;;6814:33:1;;;6796:52;;6784:2;6769:18;26436:205:0;6652:202:1;24595:154:0;;;;;;;;;;-1:-1:-1;24595:154:0;;;;;:::i;:::-;;:::i;:::-;;20779:33;;;;;;;;;;;;;;;;20682:65;;;;;;;;;;-1:-1:-1;20682:65:0;;;;-1:-1:-1;;;;;20682:65:0;;;;;;-1:-1:-1;;;;;3726:32:1;;;3708:51;;3696:2;3681:18;20682:65:0;3562:203:1;26077:147:0;;;:::i;26230:112::-;;;;;;;;;;-1:-1:-1;26230:112:0;;;;;:::i;:::-;;:::i;22484:361::-;;;;;;;;;;-1:-1:-1;22484:361:0;;;;;:::i;:::-;;:::i;21106:158::-;;;;;;;;;;-1:-1:-1;21106:158:0;;;;;:::i;:::-;;:::i;22292:188::-;;;;;;;;;;-1:-1:-1;22292:188:0;;;;;:::i;:::-;;:::i;21270:577::-;;;;;;;;;;-1:-1:-1;21270:577:0;;;;;:::i;:::-;;:::i;11256:103::-;;;;;;;;;;;;;:::i;24755:606::-;;;;;;;;;;-1:-1:-1;24755:606:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;25367:545::-;;;;;;;;;;-1:-1:-1;25367:545:0;;;;;:::i;:::-;;:::i;21853:162::-;;;;;;;;;;-1:-1:-1;21853:162:0;;;;;:::i;:::-;;:::i;10605:87::-;;;;;;;;;;-1:-1:-1;10651:7:0;10678:6;-1:-1:-1;;;;;10678:6:0;10605:87;;23797:792;;;;;;;;;;-1:-1:-1;23797:792:0;;;;;:::i;:::-;;:::i;20545:22::-;;;;;;;;;;-1:-1:-1;20545:22:0;;;;;:::i;:::-;;:::i;20591:67::-;;;;;;;;;;-1:-1:-1;20591:67:0;;;;-1:-1:-1;;;;;20591:67:0;;;20492:48;;;;;;;;;;-1:-1:-1;20492:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20492:48:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5224:32:1;;;5206:51;;5288:2;5273:18;;5266:34;;;;5343:14;;5336:22;5316:18;;;5309:50;;;;5402:14;;5395:22;5390:2;5375:18;;5368:50;5449:3;5434:19;;5427:35;5193:3;5178:19;20492:48:0;4959:509:1;22021:265:0;;;;;;;;;;-1:-1:-1;22021:265:0;;;;;:::i;:::-;;:::i;20838:36::-;;;;;;;;;;;;;;;;11514:201;;;;;;;;;;-1:-1:-1;11514:201:0;;;;;:::i;:::-;;:::i;24595:154::-;24668:6;24664:80;24680:9;:16;24678:1;:18;24664:80;;;24711:25;24723:9;24733:1;24723:12;;;;;;;;:::i;:::-;;;;;;;24711:11;:25::i;:::-;24698:3;;;;:::i;:::-;;;;24664:80;;;;24595:154;:::o;26077:147::-;10651:7;10678:6;-1:-1:-1;;;;;10678:6:0;9494:10;10825:23;10817:68;;;;-1:-1:-1;;;10817:68:0;;;;;;;:::i;:::-;;;;;;;;;26132:7:::1;10678:6:::0;;26145:55:::1;::::0;-1:-1:-1;;;;;10678:6:0;;;;26174:21:::1;::::0;26132:7;26145:55;26132:7;26145:55;26174:21;10678:6;26145:55:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26131:69;;;26215:2;26207:11;;;::::0;::::1;;26124:100;26077:147::o:0;26230:112::-;10651:7;10678:6;-1:-1:-1;;;;;10678:6:0;9494:10;10825:23;10817:68;;;;-1:-1:-1;;;10817:68:0;;;;;;;:::i;:::-;26301:5:::1;::::0;;26294:42:::1;::::0;-1:-1:-1;;;26294:42:0;;26317:10:::1;26294:42:::0;;::::1;4854:51:1::0;;;;4921:18;;;4914:34;;;-1:-1:-1;;;;;26301:5:0::1;::::0;26294:22:::1;::::0;4827:18:1;;26294:42:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;22484:361::-:0;22549:20;;;;:10;:20;;;;;22589:15;22549:37;;;:55;22611:35;;:42;;-1:-1:-1;;22611:42:0;;;;;;;;22668:29;22660:69;;;;-1:-1:-1;;;22660:69:0;;8311:2:1;22660:69:0;;;8293:21:1;8350:2;8330:18;;;8323:30;8389:29;8369:18;;;8362:57;8436:18;;22660:69:0;8109:351:1;22660:69:0;22744:7;;22736:75;;-1:-1:-1;;;22736:75:0;;-1:-1:-1;;;;;22744:7:0;;;;22736:33;;:75;;22778:4;;22785:10;;22797:8;;22736:75;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22818:21;22830:8;22818:11;:21::i;21106:158::-;21179:9;21175:84;21193:9;:16;21191:1;:18;21175:84;;;21227:22;21236:9;21246:1;21236:12;;;;;;;;:::i;:::-;;;;;;;21227:8;:22::i;:::-;21210:3;;;;:::i;:::-;;;;21175:84;;22292:188;22379:9;22375:100;22393:9;:16;22391:1;:18;22375:100;;;22428:37;22452:9;22462:1;22452:12;;;;;;;;:::i;:::-;;;;;;;22428:23;:37::i;:::-;22411:3;;;;:::i;:::-;;;;22375:100;;21270:577;21329:20;;;;:10;:20;;;;;:29;;;;;21328:30;21320:74;;;;-1:-1:-1;;;21320:74:0;;8667:2:1;21320:74:0;;;8649:21:1;8706:2;8686:18;;;8679:30;8745:33;8725:18;;;8718:61;8796:18;;21320:74:0;8465:355:1;21320:74:0;21417:7;;21409:34;;-1:-1:-1;;;21409:34:0;;;;;11480:25:1;;;21445:10:0;;-1:-1:-1;;;;;21417:7:0;;21409:24;;11453:18:1;;21409:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21409:46:0;;21401:86;;;;-1:-1:-1;;;21401:86:0;;10461:2:1;21401:86:0;;;10443:21:1;10500:2;10480:18;;;10473:30;10539:29;10519:18;;;10512:57;10586:18;;21401:86:0;10259:351:1;21401:86:0;21537:7;;21529:38;;-1:-1:-1;;;21529:38:0;;;;;11480:25:1;;;-1:-1:-1;;;;;21537:7:0;;;;21529:28;;11453:18:1;;21529:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21512:55:0;21520:4;-1:-1:-1;;;;;21512:55:0;;:119;;;-1:-1:-1;21579:7:0;;21571:60;;-1:-1:-1;;;21571:60:0;;21605:10;21571:60;;;3982:34:1;21625:4:0;4032:18:1;;;4025:43;-1:-1:-1;;;;;21579:7:0;;;;21571:33;;3917:18:1;;21571:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21494:239;;;;-1:-1:-1;;;21494:239:0;;7821:2:1;21494:239:0;;;7803:21:1;7860:2;7840:18;;;7833:30;7899:34;7879:18;;;7872:62;7970:34;7950:18;;;7943:62;-1:-1:-1;;;8021:19:1;;;8014:48;8079:19;;21494:239:0;7619:485:1;21494:239:0;21748:7;;21740:75;;-1:-1:-1;;;21740:75:0;;-1:-1:-1;;;;;21748:7:0;;;;21740:33;;:75;;21774:10;;21794:4;;21801:8;;21740:75;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21822:19;21832:8;21822:9;:19::i;11256:103::-;10651:7;10678:6;-1:-1:-1;;;;;10678:6:0;9494:10;10825:23;10817:68;;;;-1:-1:-1;;;10817:68:0;;;;;;;:::i;:::-;11321:30:::1;11348:1;11321:18;:30::i;:::-;11256:103::o:0;24755:606::-;24886:5;:12;24815:16;;24841:28;;24872:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24872:27:0;;24841:58;;24908:13;24936:9;24932:233;24951:5;:12;24949:14;;24932:233;;;24980:23;25006:10;:20;25017:5;25023:1;25017:8;;;;;;;;:::i;:::-;;;;;;;;;;;;;25006:20;;;;;;;;;;;;;;;24980:46;;;;;;;;;-1:-1:-1;;;;;24980:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25040:19:0;;;:37;;;;;25063:5;:14;;;25040:37;25037:119;;;25114:5;25120:1;25114:8;;;;;;;;:::i;:::-;;;;;;;;;25093:11;25105:5;25093:18;;;;;;;;:::i;:::-;;;;;;;;;;:29;25137:7;;;;:::i;:::-;;;;25037:119;-1:-1:-1;24965:3:0;;;;:::i;:::-;;;;24932:233;;;;25173:32;25222:5;25208:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25208:20:0;;25173:55;;25241:9;25237:88;25256:5;25254:1;:7;25237:88;;;25301:11;25313:1;25301:14;;;;;;;;:::i;:::-;;;;;;;25280:15;25296:1;25280:18;;;;;;;;:::i;:::-;;;;;;;;;;:35;25263:3;;;;:::i;:::-;;;;25237:88;;;-1:-1:-1;25340:15:0;24755:606;-1:-1:-1;;;;24755:606:0:o;25367:545::-;25432:7;25449:28;25480:21;25494:6;25480:13;:21::i;:::-;25449:52;;25510:14;25541:9;25537:348;25556:11;:18;25554:1;:20;25537:348;;;25596:10;:26;25607:11;25619:1;25607:14;;;;;;;;:::i;:::-;;;;;;;25596:26;;;;;;;;;;;:41;;;;;;;;;;;;25593:282;;;25662:100;25678:10;:26;25689:11;25701:1;25689:14;;;;;;;;:::i;:::-;;;;;;;25678:26;;;;;;;;;;;:38;;;25718:10;:26;25729:11;25741:1;25729:14;;;;;;;;:::i;:::-;;;;;;;25718:26;;;;;;;;;;;:43;;;25662:15;:100::i;:::-;25652:110;;;;:::i;:::-;;;25593:282;;;25803:72;25819:10;:26;25830:11;25842:1;25830:14;;;;;;;;:::i;:::-;;;;;;;25819:26;;;;;;;;;;;:38;;;25859:15;25803;:72::i;:::-;25793:82;;;;:::i;:::-;;;25593:282;25576:3;;;;:::i;:::-;;;;25537:348;;;-1:-1:-1;25900:6:0;25367:545;-1:-1:-1;;;25367:545:0:o;21853:162::-;21928:9;21924:86;21942:9;:16;21940:1;:18;21924:86;;;21976:24;21987:9;21997:1;21987:12;;;;;;;;:::i;:::-;;;;;;;21976:10;:24::i;:::-;21959:3;;;;:::i;:::-;;;;21924:86;;23797:792;23850:23;23876:20;;;:10;:20;;;;;23911:10;;-1:-1:-1;;;;;23911:10:0;23903:66;;;;-1:-1:-1;;;23903:66:0;;10817:2:1;23903:66:0;;;10799:21:1;10856:2;10836:18;;;10829:30;10895:31;10875:18;;;10868:59;10944:18;;23903:66:0;10615:353:1;23903:66:0;23985:10;;-1:-1:-1;;;;;23985:10:0;23999;23985:24;23977:67;;;;-1:-1:-1;;;23977:67:0;;9388:2:1;23977:67:0;;;9370:21:1;9427:2;9407:18;;;9400:30;9466:32;9446:18;;;9439:60;9516:18;;23977:67:0;9186:354:1;23977:67:0;24080:19;;;;24052:14;;24080:19;;;;;24077:348;;;24143:4;:16;;;24119:4;:21;;;:40;24111:85;;;;-1:-1:-1;;;24111:85:0;;10100:2:1;24111:85:0;;;10082:21:1;;;10119:18;;;10112:30;10178:34;10158:18;;;10151:62;10230:18;;24111:85:0;9898:356:1;24111:85:0;24216:56;24232:4;:16;;;24250:4;:21;;;24216:15;:56::i;:::-;24207:65;;24077:348;;;24305:13;;;;;;24297:50;;;;-1:-1:-1;;;24297:50:0;;7061:2:1;24297:50:0;;;7043:21:1;7100:2;7080:18;;;7073:30;7139:26;7119:18;;;7112:54;7183:18;;24297:50:0;6859:348:1;24297:50:0;24367;24383:4;:16;;;24401:15;24367;:50::i;:::-;24358:59;;24077:348;24450:15;24431:16;;;:34;24501:5;;;24494:42;;-1:-1:-1;;;24494:42:0;;24517:10;24494:42;;;4854:51:1;;;;4921:18;;;4914:34;;;-1:-1:-1;;;;;24501:5:0;;24494:22;;4827:18:1;;24494:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;24548:35:0;;;11690:25:1;;;24572:10:0;11746:2:1;11731:18;;11724:60;24548:35:0;;11663:18:1;24548:35:0;;;;;;;23843:746;;23797:792;:::o;20545:22::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20545:22:0;:::o;22021:265::-;22081:20;;;;:10;:20;;;;;:29;;;;;22073:69;;;;-1:-1:-1;;;22073:69:0;;8311:2:1;22073:69:0;;;8293:21:1;8350:2;8330:18;;;8323:30;8389:29;8369:18;;;8362:57;8436:18;;22073:69:0;8109:351:1;22073:69:0;22157:7;;22149:75;;-1:-1:-1;;;22149:75:0;;-1:-1:-1;;;;;22157:7:0;;;;22149:33;;:75;;22191:4;;22198:10;;22210:8;;22149:75;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22231:21;22243:8;22231:11;:21::i;:::-;22259;22271:8;22259:11;:21::i;11514:201::-;10651:7;10678:6;-1:-1:-1;;;;;10678:6:0;9494:10;10825:23;10817:68;;;;-1:-1:-1;;;10817:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11603:22:0;::::1;11595:73;;;::::0;-1:-1:-1;;;11595:73:0;;7414:2:1;11595:73:0::1;::::0;::::1;7396:21:1::0;7453:2;7433:18;;;7426:30;7492:34;7472:18;;;7465:62;-1:-1:-1;;;7543:18:1;;;7536:36;7589:19;;11595:73:0::1;7212:402:1::0;11595:73:0::1;11679:28;11698:8;11679:18;:28::i;23259:532::-:0;23314:23;23340:20;;;:10;:20;;;;;23375:13;;;;;;23367:50;;;;-1:-1:-1;;;23367:50:0;;9747:2:1;23367:50:0;;;9729:21:1;9786:2;9766:18;;;9759:30;9825:26;9805:18;;;9798:54;9869:18;;23367:50:0;9545:348:1;23367:50:0;23432:10;;-1:-1:-1;;;;;23432:10:0;23446;23432:24;23424:67;;;;-1:-1:-1;;;23424:67:0;;9388:2:1;23424:67:0;;;9370:21:1;9427:2;9407:18;;;9400:30;9466:32;9446:18;;;9439:60;9516:18;;23424:67:0;9186:354:1;23424:67:0;23498:13;;;:21;;-1:-1:-1;;23498:21:0;;;23533:35;;;11969:25:1;;;23552:15:0;12025:2:1;12010:18;;12003:34;23533:35:0;;11942:18:1;23533:35:0;;;;;;;23605:9;23601:185;23620:5;:12;23618:14;;23601:185;;;23664:8;23652:5;23658:1;23652:8;;;;;;;;:::i;:::-;;;;;;;;;:20;23649:130;;;23699:5;23705:12;;:14;;23718:1;;23705:14;:::i;:::-;23699:21;;;;;;;;:::i;:::-;;;;;;;;;23688:5;23694:1;23688:8;;;;;;;;:::i;:::-;;;;;;;;;;:32;23735:5;:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;23761:7;;23259:532;:::o;23649:130::-;23634:3;;;;:::i;:::-;;;;23601:185;;;;23307:484;23259:532;:::o;22851:402::-;22903:23;22929:20;;;:10;:20;;;;;22965:13;;;;;;22964:14;22956:59;;;;-1:-1:-1;;;22956:59:0;;11175:2:1;22956:59:0;;;11157:21:1;;;11194:18;;;11187:30;11253:34;11233:18;;;11226:62;11305:18;;22956:59:0;10973:356:1;22956:59:0;23022:13;;;;:20;;23049:23;;-1:-1:-1;;;;;;23049:23:0;23062:10;23049:23;;;;;23098:15;-1:-1:-1;23079:16:0;;;:34;;;-1:-1:-1;;23120:27:0;;;;;;;;23170:20;;;;;;;-1:-1:-1;23170:20:0;;;;;;;;;23202:45;;;5675:51:1;;;5757:2;5742:18;;5735:34;;;5785:18;;5778:34;23202:45:0;;5663:2:1;5648:18;23202:45:0;;;;;;;22896:357;22851:402;:::o;11875:191::-;11949:16;11968:6;;-1:-1:-1;;;;;11985:17:0;;;-1:-1:-1;;;;;;11985:17:0;;;;;;12018:40;;11968:6;;;;;;;12018:40;;11949:16;12018:40;11938:128;11875:191;:::o;20918:182::-;21011:7;21033:60;21080:12;;21033:42;21070:4;;21033:32;21052:12;21033:14;:18;;:32;;;;:::i;:::-;:36;;:42::i;:::-;:46;;:60::i;:::-;21026:67;20918:182;-1:-1:-1;;;20918:182:0:o;16160:98::-;16218:7;16245:5;16249:1;16245;:5;:::i;16517:98::-;16575:7;16602:5;16606:1;16602;:5;:::i;16916:98::-;16974:7;17001:5;17005:1;17001;:5;:::i;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;522:936::-;619:6;627;635;643;651;704:3;692:9;683:7;679:23;675:33;672:53;;;721:1;718;711:12;672:53;760:9;747:23;779:31;804:5;779:31;:::i;:::-;829:5;-1:-1:-1;886:2:1;871:18;;858:32;899:33;858:32;899:33;:::i;:::-;951:7;-1:-1:-1;1005:2:1;990:18;;977:32;;-1:-1:-1;1060:2:1;1045:18;;1032:32;1083:18;1113:14;;;1110:34;;;1140:1;1137;1130:12;1110:34;1178:6;1167:9;1163:22;1153:32;;1223:7;1216:4;1212:2;1208:13;1204:27;1194:55;;1245:1;1242;1235:12;1194:55;1285:2;1272:16;1311:2;1303:6;1300:14;1297:34;;;1327:1;1324;1317:12;1297:34;1372:7;1367:2;1358:6;1354:2;1350:15;1346:24;1343:37;1340:57;;;1393:1;1390;1383:12;1340:57;522:936;;;;-1:-1:-1;522:936:1;;-1:-1:-1;1424:2:1;1416:11;;1446:6;522:936;-1:-1:-1;;;522:936:1:o;1463:1126::-;1547:6;1578:2;1621;1609:9;1600:7;1596:23;1592:32;1589:52;;;1637:1;1634;1627:12;1589:52;1677:9;1664:23;1706:18;1747:2;1739:6;1736:14;1733:34;;;1763:1;1760;1753:12;1733:34;1801:6;1790:9;1786:22;1776:32;;1846:7;1839:4;1835:2;1831:13;1827:27;1817:55;;1868:1;1865;1858:12;1817:55;1904:2;1891:16;1926:2;1922;1919:10;1916:36;;;1932:18;;:::i;:::-;1978:2;1975:1;1971:10;2010:2;2004:9;2073:2;2069:7;2064:2;2060;2056:11;2052:25;2044:6;2040:38;2128:6;2116:10;2113:22;2108:2;2096:10;2093:18;2090:46;2087:72;;;2139:18;;:::i;:::-;2175:2;2168:22;2225:18;;;2259:15;;;;-1:-1:-1;2294:11:1;;;2324;;;2320:20;;2317:33;-1:-1:-1;2314:53:1;;;2363:1;2360;2353:12;2314:53;2385:1;2376:10;;2395:163;2409:2;2406:1;2403:9;2395:163;;;2466:17;;2454:30;;2427:1;2420:9;;;;;2504:12;;;;2536;;2395:163;;;-1:-1:-1;2577:6:1;1463:1126;-1:-1:-1;;;;;;;;1463:1126:1:o;2594:277::-;2661:6;2714:2;2702:9;2693:7;2689:23;2685:32;2682:52;;;2730:1;2727;2720:12;2682:52;2762:9;2756:16;2815:5;2808:13;2801:21;2794:5;2791:32;2781:60;;2837:1;2834;2827:12;2876:286;2934:6;2987:2;2975:9;2966:7;2962:23;2958:32;2955:52;;;3003:1;3000;2993:12;2955:52;3029:23;;-1:-1:-1;;;;;;3081:32:1;;3071:43;;3061:71;;3128:1;3125;3118:12;3167:180;3226:6;3279:2;3267:9;3258:7;3254:23;3250:32;3247:52;;;3295:1;3292;3285:12;3247:52;-1:-1:-1;3318:23:1;;3167:180;-1:-1:-1;3167:180:1:o;4079:596::-;-1:-1:-1;;;;;4402:15:1;;;4384:34;;4454:15;;;;4449:2;4434:18;;4427:43;4501:2;4486:18;;4479:34;;;;4549:3;4544:2;4529:18;;4522:31;;;4373:1;4569:19;;;4562:30;-1:-1:-1;;;4364:3:1;4608:19;;4601:32;4665:3;4650:19;;4079:596::o;5823:632::-;5994:2;6046:21;;;6116:13;;6019:18;;;6138:22;;;5965:4;;5994:2;6217:15;;;;6191:2;6176:18;;;5965:4;6260:169;6274:6;6271:1;6268:13;6260:169;;;6335:13;;6323:26;;6404:15;;;;6369:12;;;;6296:1;6289:9;6260:169;;;-1:-1:-1;6446:3:1;;5823:632;-1:-1:-1;;;;;;5823:632:1:o;8825:356::-;9027:2;9009:21;;;9046:18;;;9039:30;9105:34;9100:2;9085:18;;9078:62;9172:2;9157:18;;8825:356::o;12048:128::-;12088:3;12119:1;12115:6;12112:1;12109:13;12106:39;;;12125:18;;:::i;:::-;-1:-1:-1;12161:9:1;;12048:128::o;12181:217::-;12221:1;12247;12237:132;;12291:10;12286:3;12282:20;12279:1;12272:31;12326:4;12323:1;12316:15;12354:4;12351:1;12344:15;12237:132;-1:-1:-1;12383:9:1;;12181:217::o;12403:168::-;12443:7;12509:1;12505;12501:6;12497:14;12494:1;12491:21;12486:1;12479:9;12472:17;12468:45;12465:71;;;12516:18;;:::i;:::-;-1:-1:-1;12556:9:1;;12403:168::o;12576:125::-;12616:4;12644:1;12641;12638:8;12635:34;;;12649:18;;:::i;:::-;-1:-1:-1;12686:9:1;;12576:125::o;12706:135::-;12745:3;-1:-1:-1;;12766:17:1;;12763:43;;;12786:18;;:::i;:::-;-1:-1:-1;12833:1:1;12822:13;;12706:135::o;12846:127::-;12907:10;12902:3;12898:20;12895:1;12888:31;12938:4;12935:1;12928:15;12962:4;12959:1;12952:15;12978:127;13039:10;13034:3;13030:20;13027:1;13020:31;13070:4;13067:1;13060:15;13094:4;13091:1;13084:15;13110:127;13171:10;13166:3;13162:20;13159:1;13152:31;13202:4;13199:1;13192:15;13226:4;13223:1;13216:15;13242:127;13303:10;13298:3;13294:20;13291:1;13284:31;13334:4;13331:1;13324:15;13358:4;13355:1;13348:15;13374:131;-1:-1:-1;;;;;13449:31:1;;13439:42;;13429:70;;13495:1;13492;13485:12
Swarm Source
ipfs://8a165fe01bd6826f39b5ab71aa2e9e0b5816b068ac496d23a73f0461062a7d4c
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.