Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,082 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 21495788 | 22 hrs ago | IN | 0 ETH | 0.00097213 | ||||
Withdraw | 21495781 | 22 hrs ago | IN | 0 ETH | 0.00103 | ||||
Withdraw | 21495777 | 22 hrs ago | IN | 0 ETH | 0.00092896 | ||||
Withdraw | 21495775 | 22 hrs ago | IN | 0 ETH | 0.00128602 | ||||
Withdraw | 21243320 | 36 days ago | IN | 0 ETH | 0.00157176 | ||||
Claim Reward | 21243216 | 36 days ago | IN | 0 ETH | 0.00106917 | ||||
Withdraw | 21242682 | 36 days ago | IN | 0 ETH | 0.00114529 | ||||
Claim Reward | 21242677 | 36 days ago | IN | 0 ETH | 0.00193524 | ||||
Withdraw | 21242666 | 36 days ago | IN | 0 ETH | 0.00117443 | ||||
Claim Reward | 21242663 | 36 days ago | IN | 0 ETH | 0.00176798 | ||||
Stake | 21241674 | 36 days ago | IN | 0 ETH | 0.00078177 | ||||
Claim Reward | 21241665 | 36 days ago | IN | 0 ETH | 0.00092044 | ||||
Stake | 21241659 | 36 days ago | IN | 0 ETH | 0.00076808 | ||||
Withdraw | 21237426 | 37 days ago | IN | 0 ETH | 0.0021946 | ||||
Stake | 21237300 | 37 days ago | IN | 0 ETH | 0.00231355 | ||||
Claim Reward | 21233527 | 37 days ago | IN | 0 ETH | 0.00155669 | ||||
Claim Reward | 21230104 | 38 days ago | IN | 0 ETH | 0.00198038 | ||||
Claim Reward | 21198816 | 42 days ago | IN | 0 ETH | 0.00189998 | ||||
Withdraw | 21169554 | 46 days ago | IN | 0 ETH | 0.00270332 | ||||
Stake | 21112637 | 54 days ago | IN | 0 ETH | 0.00036237 | ||||
Claim Reward | 21072292 | 60 days ago | IN | 0 ETH | 0.00178568 | ||||
Withdraw | 21007945 | 69 days ago | IN | 0 ETH | 0.00171771 | ||||
Stake | 21007731 | 69 days ago | IN | 0 ETH | 0.00120322 | ||||
Withdraw | 21001776 | 69 days ago | IN | 0 ETH | 0.00074156 | ||||
Withdraw | 21001771 | 69 days ago | IN | 0 ETH | 0.00081051 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
SpectraStaking
Compiler Version
v0.8.22+commit.4fc1097e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-05-22 */ // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } } // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * The initial owner is set to the address provided by the deployer. This can * later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC-20 standard as defined in the ERC. */ 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 value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of 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 value) 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 a `value` amount of tokens 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 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` 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 value) external returns (bool); } // File: contracts/staking-spec.sol pragma solidity ^0.8.20; error Staking__TransferFailed(); error Withdraw__TransferFailed(); error Staking__NeedsMoreThanZero(); contract SpectraStaking is Ownable { IERC20 public _stakingToken; IERC20 public _rewardToken; uint256 public TOKENS_PER_DAY = 86400; uint256 public REWARD_RATE; uint256 public _rewardPerTokenStored; uint256 public staked_totalSupply; uint256 public staked_lastUpdateTime; mapping(address => uint256) public staked_balances; mapping(address => uint256) public _userRewardPerToken; mapping(address => uint256) public _userRewards; mapping(address => uint256) public _userClaimedRewards; mapping(address => bool) public _usersStaked; uint256 public totalUsersStaked; bool public stakingEnabled = false; modifier updateReward(address account) { _rewardPerTokenStored = rewardPerToken(); staked_lastUpdateTime = block.timestamp; _userRewards[account] = earned(account); _userRewardPerToken[account] = _rewardPerTokenStored; _; } modifier moreThanZero(uint256 amount) { if (amount == 0) { revert Staking__NeedsMoreThanZero(); } _; } constructor( address stakingToken, address rewardToken, address initialOwner ) Ownable(initialOwner) { _stakingToken = IERC20(stakingToken); _rewardToken = IERC20(rewardToken); REWARD_RATE = (TOKENS_PER_DAY * 10**18) / 86400; } function earned(address account) public view returns (uint256) { uint256 currentBalance = staked_balances[account]; uint256 amountPaid = _userRewardPerToken[account]; uint256 currentRewardPerToken = rewardPerToken(); uint256 pastRewards = _userRewards[account]; uint256 _earned = ((currentBalance * (currentRewardPerToken - amountPaid)) / 1e18) + pastRewards; return _earned; } function rewardPerToken() public view returns (uint256) { if (staked_totalSupply == 0) { return _rewardPerTokenStored; } else { return _rewardPerTokenStored + (((block.timestamp - staked_lastUpdateTime) * REWARD_RATE * 1e18) / staked_totalSupply); } } function stake(uint256 amount) external updateReward(msg.sender) moreThanZero(amount) { require(stakingEnabled,"Staking is not enabled yet!"); if (!_usersStaked[msg.sender]) { _usersStaked[msg.sender] = true; totalUsersStaked++; } staked_balances[msg.sender] += amount; staked_totalSupply += amount; //emit event bool success = _stakingToken.transferFrom( msg.sender, address(this), amount ); if (!success) { revert Staking__TransferFailed(); } } function withdraw(uint256 amount) external updateReward(msg.sender) moreThanZero(amount) { require(amount <= staked_balances[msg.sender], "Insufficient balance"); staked_balances[msg.sender] -= amount; staked_totalSupply -= amount; // emit event bool success = _stakingToken.transfer(msg.sender, amount); if (!success) { revert Withdraw__TransferFailed(); } } function claimReward() external updateReward(msg.sender) { uint256 reward = earned(msg.sender) - _userClaimedRewards[msg.sender]; bool success = _rewardToken.transfer(msg.sender, reward); _userClaimedRewards[msg.sender] += reward; if (!success) { revert Staking__TransferFailed(); } } function getStaked(address account) public view returns (uint256) { return staked_balances[account]; } function recoverTokens(address receiver, uint256 amount) external onlyOwner { uint256 rewardBalance = _rewardToken.balanceOf(address(this)); require(amount <= rewardBalance, "Insufficient balance"); bool success = _rewardToken.transfer(receiver, amount); require(success, "Transfer failed"); } function updateRewardRates(uint256 tokensPerDay) external onlyOwner { TOKENS_PER_DAY = tokensPerDay; REWARD_RATE = (TOKENS_PER_DAY * 10**18) / 86400; } function enableStaking(bool _enabled) external onlyOwner { stakingEnabled = _enabled; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"stakingToken","type":"address"},{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"Staking__NeedsMoreThanZero","type":"error"},{"inputs":[],"name":"Staking__TransferFailed","type":"error"},{"inputs":[],"name":"Withdraw__TransferFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"REWARD_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKENS_PER_DAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rewardPerTokenStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rewardToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stakingToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_userClaimedRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_userRewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_userRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_usersStaked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"enableStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"recoverTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"staked_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"staked_lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"staked_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalUsersStaked","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":"tokensPerDay","type":"uint256"}],"name":"updateRewardRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052620151806003555f600e5f6101000a81548160ff02191690831515021790555034801562000030575f80fd5b5060405162001e3738038062001e378339818101604052810190620000569190620002b9565b805f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000ca575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000c1919062000323565b60405180910390fd5b620000db816200019360201b60201c565b508260015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062015180670de0b6b3a764000060035462000178919062000374565b620001849190620003eb565b60048190555050505062000422565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620002838262000258565b9050919050565b620002958162000277565b8114620002a0575f80fd5b50565b5f81519050620002b3816200028a565b92915050565b5f805f60608486031215620002d357620002d262000254565b5b5f620002e286828701620002a3565b9350506020620002f586828701620002a3565b92505060406200030886828701620002a3565b9150509250925092565b6200031d8162000277565b82525050565b5f602082019050620003385f83018462000312565b92915050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000380826200033e565b91506200038d836200033e565b92508282026200039d816200033e565b91508282048414831517620003b757620003b662000347565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620003f7826200033e565b915062000404836200033e565b925082620004175762000416620003be565b5b828204905092915050565b611a0780620004305f395ff3fe608060405234801561000f575f80fd5b506004361061018b575f3560e01c8063811195da116100dc578063b59c6e0e11610095578063cd3daf9d1161006f578063cd3daf9d1461044b578063d479314714610469578063f2fde38b14610499578063f96c2d89146104b55761018b565b8063b59c6e0e14610407578063b88a802f14610425578063bb4cf5211461042f5761018b565b8063811195da146103335780638da5cb5b1461036357806395a2b68b14610381578063963f61b5146103b15780639cefc1da146103cf578063a694fc3a146103eb5761018b565b8063299f8122116101495780635997bb37116101235780635997bb37146102cf5780636678fee3146102ed57806368cc5dae1461030b578063715018a6146103295761018b565b8063299f8122146102655780632e1a7d4d14610283578063399080ec1461029f5761018b565b80628cc2621461018f578063069c9fae146101bf578063121544b9146101db57806312c78ce5146101f95780631cfff51b146102295780632421a9f214610247575b5f80fd5b6101a960048036038101906101a49190611424565b6104e5565b6040516101b69190611467565b60405180910390f35b6101d960048036038101906101d491906114aa565b6105f9565b005b6101e36107c5565b6040516101f09190611467565b60405180910390f35b610213600480360381019061020e9190611424565b6107cb565b6040516102209190611467565b60405180910390f35b6102316107e0565b60405161023e9190611502565b60405180910390f35b61024f6107f2565b60405161025c9190611576565b60405180910390f35b61026d610817565b60405161027a9190611467565b60405180910390f35b61029d6004803603810190610298919061158f565b61081d565b005b6102b960048036038101906102b49190611424565b610ac2565b6040516102c69190611467565b60405180910390f35b6102d7610b08565b6040516102e49190611467565b60405180910390f35b6102f5610b0e565b6040516103029190611467565b60405180910390f35b610313610b14565b6040516103209190611467565b60405180910390f35b610331610b1a565b005b61034d60048036038101906103489190611424565b610b2d565b60405161035a9190611502565b60405180910390f35b61036b610b4a565b60405161037891906115c9565b60405180910390f35b61039b60048036038101906103969190611424565b610b71565b6040516103a89190611467565b60405180910390f35b6103b9610b86565b6040516103c69190611467565b60405180910390f35b6103e960048036038101906103e4919061160c565b610b8c565b005b6104056004803603810190610400919061158f565b610bb0565b005b61040f610ee0565b60405161041c9190611576565b60405180910390f35b61042d610f05565b005b6104496004803603810190610444919061158f565b61112b565b005b610453611167565b6040516104609190611467565b60405180910390f35b610483600480360381019061047e9190611424565b6111c9565b6040516104909190611467565b60405180910390f35b6104b360048036038101906104ae9190611424565b6111de565b005b6104cf60048036038101906104ca9190611424565b611262565b6040516104dc9190611467565b60405180910390f35b5f8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f610571611167565b90505f600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f81670de0b6b3a764000085856105cb9190611664565b876105d69190611697565b6105e09190611705565b6105ea9190611735565b90508095505050505050919050565b610601611277565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161065c91906115c9565b602060405180830381865afa158015610677573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069b919061177c565b9050808211156106e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d790611801565b60405180910390fd5b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b815260040161073d92919061181f565b6020604051808303815f875af1158015610759573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077d919061185a565b9050806107bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b6906118cf565b60405180910390fd5b50505050565b60055481565b600b602052805f5260405f205f915090505481565b600e5f9054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b33610826611167565b6005819055504260078190555061083c816104e5565b600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060055460095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f81036108fb576040517f9b677fa000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205483111561097b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097290611801565b60405180910390fd5b8260085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109c79190611664565b925050819055508260065f8282546109df9190611664565b925050819055505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff1660e01b8152600401610a4392919061181f565b6020604051808303815f875af1158015610a5f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a83919061185a565b905080610abc576040517f8ecca7d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60045481565b60035481565b600d5481565b610b22611277565b610b2b5f6112fe565b565b600c602052805f5260405f205f915054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6009602052805f5260405f205f915090505481565b60075481565b610b94611277565b80600e5f6101000a81548160ff02191690831515021790555050565b33610bb9611167565b60058190555042600781905550610bcf816104e5565b600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060055460095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f8103610c8e576040517f9b677fa000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600e5f9054906101000a900460ff16610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390611937565b60405180910390fd5b600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610d97576001600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600d5f815480929190610d9190611955565b91905055505b8260085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610de39190611735565b925050819055508260065f828254610dfb9190611735565b925050819055505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b8152600401610e619392919061199c565b6020604051808303815f875af1158015610e7d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea1919061185a565b905080610eda576040517feb4c684700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b33610f0e611167565b60058190555042600781905550610f24816104e5565b600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060055460095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ff1336104e5565b610ffb9190611664565b90505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161105a92919061181f565b6020604051808303815f875af1158015611076573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109a919061185a565b905081600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546110e89190611735565b9250508190555080611126576040517feb4c684700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b611133611277565b8060038190555062015180670de0b6b3a76400006003546111549190611697565b61115e9190611705565b60048190555050565b5f806006540361117b5760055490506111c6565b600654670de0b6b3a7640000600454600754426111989190611664565b6111a29190611697565b6111ac9190611697565b6111b69190611705565b6005546111c39190611735565b90505b90565b6008602052805f5260405f205f915090505481565b6111e6611277565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611256575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161124d91906115c9565b60405180910390fd5b61125f816112fe565b50565b600a602052805f5260405f205f915090505481565b61127f6113bf565b73ffffffffffffffffffffffffffffffffffffffff1661129d610b4a565b73ffffffffffffffffffffffffffffffffffffffff16146112fc576112c06113bf565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016112f391906115c9565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6113f3826113ca565b9050919050565b611403816113e9565b811461140d575f80fd5b50565b5f8135905061141e816113fa565b92915050565b5f60208284031215611439576114386113c6565b5b5f61144684828501611410565b91505092915050565b5f819050919050565b6114618161144f565b82525050565b5f60208201905061147a5f830184611458565b92915050565b6114898161144f565b8114611493575f80fd5b50565b5f813590506114a481611480565b92915050565b5f80604083850312156114c0576114bf6113c6565b5b5f6114cd85828601611410565b92505060206114de85828601611496565b9150509250929050565b5f8115159050919050565b6114fc816114e8565b82525050565b5f6020820190506115155f8301846114f3565b92915050565b5f819050919050565b5f61153e611539611534846113ca565b61151b565b6113ca565b9050919050565b5f61154f82611524565b9050919050565b5f61156082611545565b9050919050565b61157081611556565b82525050565b5f6020820190506115895f830184611567565b92915050565b5f602082840312156115a4576115a36113c6565b5b5f6115b184828501611496565b91505092915050565b6115c3816113e9565b82525050565b5f6020820190506115dc5f8301846115ba565b92915050565b6115eb816114e8565b81146115f5575f80fd5b50565b5f81359050611606816115e2565b92915050565b5f60208284031215611621576116206113c6565b5b5f61162e848285016115f8565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61166e8261144f565b91506116798361144f565b925082820390508181111561169157611690611637565b5b92915050565b5f6116a18261144f565b91506116ac8361144f565b92508282026116ba8161144f565b915082820484148315176116d1576116d0611637565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61170f8261144f565b915061171a8361144f565b92508261172a576117296116d8565b5b828204905092915050565b5f61173f8261144f565b915061174a8361144f565b925082820190508082111561176257611761611637565b5b92915050565b5f8151905061177681611480565b92915050565b5f60208284031215611791576117906113c6565b5b5f61179e84828501611768565b91505092915050565b5f82825260208201905092915050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f6117eb6014836117a7565b91506117f6826117b7565b602082019050919050565b5f6020820190508181035f830152611818816117df565b9050919050565b5f6040820190506118325f8301856115ba565b61183f6020830184611458565b9392505050565b5f81519050611854816115e2565b92915050565b5f6020828403121561186f5761186e6113c6565b5b5f61187c84828501611846565b91505092915050565b7f5472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f6118b9600f836117a7565b91506118c482611885565b602082019050919050565b5f6020820190508181035f8301526118e6816118ad565b9050919050565b7f5374616b696e67206973206e6f7420656e61626c6564207965742100000000005f82015250565b5f611921601b836117a7565b915061192c826118ed565b602082019050919050565b5f6020820190508181035f83015261194e81611915565b9050919050565b5f61195f8261144f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361199157611990611637565b5b600182019050919050565b5f6060820190506119af5f8301866115ba565b6119bc60208301856115ba565b6119c96040830184611458565b94935050505056fea264697066735822122040fcef854766b5dc739be635c060b7bb3cda1ced08d8fce1977fb22b74a76c2a64736f6c6343000816003300000000000000000000000002020595e6a34a03a8e9c1f5624b1b771381008300000000000000000000000002020595e6a34a03a8e9c1f5624b1b77138100830000000000000000000000000e58af7e2a5a9471f10f73be146e768b9e2d50da
Deployed Bytecode
0x608060405234801561000f575f80fd5b506004361061018b575f3560e01c8063811195da116100dc578063b59c6e0e11610095578063cd3daf9d1161006f578063cd3daf9d1461044b578063d479314714610469578063f2fde38b14610499578063f96c2d89146104b55761018b565b8063b59c6e0e14610407578063b88a802f14610425578063bb4cf5211461042f5761018b565b8063811195da146103335780638da5cb5b1461036357806395a2b68b14610381578063963f61b5146103b15780639cefc1da146103cf578063a694fc3a146103eb5761018b565b8063299f8122116101495780635997bb37116101235780635997bb37146102cf5780636678fee3146102ed57806368cc5dae1461030b578063715018a6146103295761018b565b8063299f8122146102655780632e1a7d4d14610283578063399080ec1461029f5761018b565b80628cc2621461018f578063069c9fae146101bf578063121544b9146101db57806312c78ce5146101f95780631cfff51b146102295780632421a9f214610247575b5f80fd5b6101a960048036038101906101a49190611424565b6104e5565b6040516101b69190611467565b60405180910390f35b6101d960048036038101906101d491906114aa565b6105f9565b005b6101e36107c5565b6040516101f09190611467565b60405180910390f35b610213600480360381019061020e9190611424565b6107cb565b6040516102209190611467565b60405180910390f35b6102316107e0565b60405161023e9190611502565b60405180910390f35b61024f6107f2565b60405161025c9190611576565b60405180910390f35b61026d610817565b60405161027a9190611467565b60405180910390f35b61029d6004803603810190610298919061158f565b61081d565b005b6102b960048036038101906102b49190611424565b610ac2565b6040516102c69190611467565b60405180910390f35b6102d7610b08565b6040516102e49190611467565b60405180910390f35b6102f5610b0e565b6040516103029190611467565b60405180910390f35b610313610b14565b6040516103209190611467565b60405180910390f35b610331610b1a565b005b61034d60048036038101906103489190611424565b610b2d565b60405161035a9190611502565b60405180910390f35b61036b610b4a565b60405161037891906115c9565b60405180910390f35b61039b60048036038101906103969190611424565b610b71565b6040516103a89190611467565b60405180910390f35b6103b9610b86565b6040516103c69190611467565b60405180910390f35b6103e960048036038101906103e4919061160c565b610b8c565b005b6104056004803603810190610400919061158f565b610bb0565b005b61040f610ee0565b60405161041c9190611576565b60405180910390f35b61042d610f05565b005b6104496004803603810190610444919061158f565b61112b565b005b610453611167565b6040516104609190611467565b60405180910390f35b610483600480360381019061047e9190611424565b6111c9565b6040516104909190611467565b60405180910390f35b6104b360048036038101906104ae9190611424565b6111de565b005b6104cf60048036038101906104ca9190611424565b611262565b6040516104dc9190611467565b60405180910390f35b5f8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f610571611167565b90505f600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f81670de0b6b3a764000085856105cb9190611664565b876105d69190611697565b6105e09190611705565b6105ea9190611735565b90508095505050505050919050565b610601611277565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161065c91906115c9565b602060405180830381865afa158015610677573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069b919061177c565b9050808211156106e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d790611801565b60405180910390fd5b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b815260040161073d92919061181f565b6020604051808303815f875af1158015610759573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077d919061185a565b9050806107bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b6906118cf565b60405180910390fd5b50505050565b60055481565b600b602052805f5260405f205f915090505481565b600e5f9054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b33610826611167565b6005819055504260078190555061083c816104e5565b600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060055460095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f81036108fb576040517f9b677fa000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205483111561097b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097290611801565b60405180910390fd5b8260085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109c79190611664565b925050819055508260065f8282546109df9190611664565b925050819055505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff1660e01b8152600401610a4392919061181f565b6020604051808303815f875af1158015610a5f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a83919061185a565b905080610abc576040517f8ecca7d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60045481565b60035481565b600d5481565b610b22611277565b610b2b5f6112fe565b565b600c602052805f5260405f205f915054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6009602052805f5260405f205f915090505481565b60075481565b610b94611277565b80600e5f6101000a81548160ff02191690831515021790555050565b33610bb9611167565b60058190555042600781905550610bcf816104e5565b600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060055460095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f8103610c8e576040517f9b677fa000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600e5f9054906101000a900460ff16610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390611937565b60405180910390fd5b600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610d97576001600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600d5f815480929190610d9190611955565b91905055505b8260085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610de39190611735565b925050819055508260065f828254610dfb9190611735565b925050819055505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b8152600401610e619392919061199c565b6020604051808303815f875af1158015610e7d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea1919061185a565b905080610eda576040517feb4c684700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b33610f0e611167565b60058190555042600781905550610f24816104e5565b600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060055460095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ff1336104e5565b610ffb9190611664565b90505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161105a92919061181f565b6020604051808303815f875af1158015611076573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109a919061185a565b905081600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546110e89190611735565b9250508190555080611126576040517feb4c684700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b611133611277565b8060038190555062015180670de0b6b3a76400006003546111549190611697565b61115e9190611705565b60048190555050565b5f806006540361117b5760055490506111c6565b600654670de0b6b3a7640000600454600754426111989190611664565b6111a29190611697565b6111ac9190611697565b6111b69190611705565b6005546111c39190611735565b90505b90565b6008602052805f5260405f205f915090505481565b6111e6611277565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611256575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161124d91906115c9565b60405180910390fd5b61125f816112fe565b50565b600a602052805f5260405f205f915090505481565b61127f6113bf565b73ffffffffffffffffffffffffffffffffffffffff1661129d610b4a565b73ffffffffffffffffffffffffffffffffffffffff16146112fc576112c06113bf565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016112f391906115c9565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6113f3826113ca565b9050919050565b611403816113e9565b811461140d575f80fd5b50565b5f8135905061141e816113fa565b92915050565b5f60208284031215611439576114386113c6565b5b5f61144684828501611410565b91505092915050565b5f819050919050565b6114618161144f565b82525050565b5f60208201905061147a5f830184611458565b92915050565b6114898161144f565b8114611493575f80fd5b50565b5f813590506114a481611480565b92915050565b5f80604083850312156114c0576114bf6113c6565b5b5f6114cd85828601611410565b92505060206114de85828601611496565b9150509250929050565b5f8115159050919050565b6114fc816114e8565b82525050565b5f6020820190506115155f8301846114f3565b92915050565b5f819050919050565b5f61153e611539611534846113ca565b61151b565b6113ca565b9050919050565b5f61154f82611524565b9050919050565b5f61156082611545565b9050919050565b61157081611556565b82525050565b5f6020820190506115895f830184611567565b92915050565b5f602082840312156115a4576115a36113c6565b5b5f6115b184828501611496565b91505092915050565b6115c3816113e9565b82525050565b5f6020820190506115dc5f8301846115ba565b92915050565b6115eb816114e8565b81146115f5575f80fd5b50565b5f81359050611606816115e2565b92915050565b5f60208284031215611621576116206113c6565b5b5f61162e848285016115f8565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61166e8261144f565b91506116798361144f565b925082820390508181111561169157611690611637565b5b92915050565b5f6116a18261144f565b91506116ac8361144f565b92508282026116ba8161144f565b915082820484148315176116d1576116d0611637565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61170f8261144f565b915061171a8361144f565b92508261172a576117296116d8565b5b828204905092915050565b5f61173f8261144f565b915061174a8361144f565b925082820190508082111561176257611761611637565b5b92915050565b5f8151905061177681611480565b92915050565b5f60208284031215611791576117906113c6565b5b5f61179e84828501611768565b91505092915050565b5f82825260208201905092915050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f6117eb6014836117a7565b91506117f6826117b7565b602082019050919050565b5f6020820190508181035f830152611818816117df565b9050919050565b5f6040820190506118325f8301856115ba565b61183f6020830184611458565b9392505050565b5f81519050611854816115e2565b92915050565b5f6020828403121561186f5761186e6113c6565b5b5f61187c84828501611846565b91505092915050565b7f5472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f6118b9600f836117a7565b91506118c482611885565b602082019050919050565b5f6020820190508181035f8301526118e6816118ad565b9050919050565b7f5374616b696e67206973206e6f7420656e61626c6564207965742100000000005f82015250565b5f611921601b836117a7565b915061192c826118ed565b602082019050919050565b5f6020820190508181035f83015261194e81611915565b9050919050565b5f61195f8261144f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361199157611990611637565b5b600182019050919050565b5f6060820190506119af5f8301866115ba565b6119bc60208301856115ba565b6119c96040830184611458565b94935050505056fea264697066735822122040fcef854766b5dc739be635c060b7bb3cda1ced08d8fce1977fb22b74a76c2a64736f6c63430008160033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000002020595e6a34a03a8e9c1f5624b1b771381008300000000000000000000000002020595e6a34a03a8e9c1f5624b1b77138100830000000000000000000000000e58af7e2a5a9471f10f73be146e768b9e2d50da
-----Decoded View---------------
Arg [0] : stakingToken (address): 0x02020595E6a34a03a8E9c1f5624b1b7713810083
Arg [1] : rewardToken (address): 0x02020595E6a34a03a8E9c1f5624b1b7713810083
Arg [2] : initialOwner (address): 0x0e58aF7E2a5a9471F10f73be146E768b9E2d50dA
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000002020595e6a34a03a8e9c1f5624b1b7713810083
Arg [1] : 00000000000000000000000002020595e6a34a03a8e9c1f5624b1b7713810083
Arg [2] : 0000000000000000000000000e58af7e2a5a9471f10f73be146e768b9e2d50da
Deployed Bytecode Sourcemap
7459:4570:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8891:455;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11369:359;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7649:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7951:54;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8107:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7501:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7694:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10408:474;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11245:116;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7614:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7570:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8067:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3498:103;;;:::i;:::-;;8016:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2823:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7836:54;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7734:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11919:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9747:653;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7535:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10890:347;;;:::i;:::-;;11736:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9354:385;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7779:50;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3756:220;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7897:47;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8891:455;8945:7;8965:22;8990:15;:24;9006:7;8990:24;;;;;;;;;;;;;;;;8965:49;;9025:18;9046:19;:28;9066:7;9046:28;;;;;;;;;;;;;;;;9025:49;;9085:29;9117:16;:14;:16::i;:::-;9085:48;;9146:19;9168:12;:21;9181:7;9168:21;;;;;;;;;;;;;;;;9146:43;;9202:15;9300:11;9292:4;9277:10;9253:21;:34;;;;:::i;:::-;9222:14;:66;;;;:::i;:::-;9221:75;;;;:::i;:::-;9220:91;;;;:::i;:::-;9202:109;;9331:7;9324:14;;;;;;;8891:455;;;:::o;11369:359::-;2709:13;:11;:13::i;:::-;11479:21:::1;11503:12;;;;;;;;;;;:22;;;11534:4;11503:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11479:61;;11569:13;11559:6;:23;;11551:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;11620:12;11635;;;;;;;;;;;:21;;;11657:8;11667:6;11635:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11620:54;;11693:7;11685:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;11468:260;;11369:359:::0;;:::o;7649:36::-;;;;:::o;7951:54::-;;;;;;;;;;;;;;;;;:::o;8107:34::-;;;;;;;;;;;;;:::o;7501:27::-;;;;;;;;;;;;;:::o;7694:33::-;;;;:::o;10408:474::-;10482:10;8228:16;:14;:16::i;:::-;8204:21;:40;;;;8279:15;8255:21;:39;;;;8329:15;8336:7;8329:6;:15::i;:::-;8305:12;:21;8318:7;8305:21;;;;;;;;;;;;;;;:39;;;;8386:21;;8355:19;:28;8375:7;8355:28;;;;;;;;;;;;;;;:52;;;;10516:6:::1;8500:1;8490:6;:11:::0;8486:79:::1;;8525:28;;;;;;;;;;;;;;8486:79;10558:15:::2;:27;10574:10;10558:27;;;;;;;;;;;;;;;;10548:6;:37;;10540:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;10654:6;10623:15;:27;10639:10;10623:27;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;10693:6;10671:18;;:28;;;;;;;:::i;:::-;;;;;;;;10733:12;10748:13;;;;;;;;;;;:22;;;10771:10;10783:6;10748:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10733:57;;10806:7;10801:74;;10837:26;;;;;;;;;;;;;;10801:74;10529:353;8420:1:::1;10408:474:::0;;:::o;11245:116::-;11302:7;11329:15;:24;11345:7;11329:24;;;;;;;;;;;;;;;;11322:31;;11245:116;;;:::o;7614:26::-;;;;:::o;7570:37::-;;;;:::o;8067:31::-;;;;:::o;3498:103::-;2709:13;:11;:13::i;:::-;3563:30:::1;3590:1;3563:18;:30::i;:::-;3498:103::o:0;8016:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;2823:87::-;2869:7;2896:6;;;;;;;;;;;2889:13;;2823:87;:::o;7836:54::-;;;;;;;;;;;;;;;;;:::o;7734:36::-;;;;:::o;11919:101::-;2709:13;:11;:13::i;:::-;12004:8:::1;11987:14;;:25;;;;;;;;;;;;;;;;;;11919:101:::0;:::o;9747:653::-;9818:10;8228:16;:14;:16::i;:::-;8204:21;:40;;;;8279:15;8255:21;:39;;;;8329:15;8336:7;8329:6;:15::i;:::-;8305:12;:21;8318:7;8305:21;;;;;;;;;;;;;;;:39;;;;8386:21;;8355:19;:28;8375:7;8355:28;;;;;;;;;;;;;;;:52;;;;9852:6:::1;8500:1;8490:6;:11:::0;8486:79:::1;;8525:28;;;;;;;;;;;;;;8486:79;9884:14:::2;;;;;;;;;;;9876:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;9945:12;:24;9958:10;9945:24;;;;;;;;;;;;;;;;;;;;;;;;;9940:122;;10013:4;9986:12;:24;9999:10;9986:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;10032:16;;:18;;;;;;;;;:::i;:::-;;;;;;9940:122;10105:6;10074:15;:27;10090:10;10074:27;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;10144:6;10122:18;;:28;;;;;;;:::i;:::-;;;;;;;;10183:12;10198:13;;;;;;;;;;;:26;;;10239:10;10272:4;10292:6;10198:111;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10183:126;;10325:7;10320:73;;10356:25;;;;;;;;;;;;;;10320:73;9865:535;8420:1:::1;9747:653:::0;;:::o;7535:26::-;;;;;;;;;;;;;:::o;10890:347::-;10935:10;8228:16;:14;:16::i;:::-;8204:21;:40;;;;8279:15;8255:21;:39;;;;8329:15;8336:7;8329:6;:15::i;:::-;8305:12;:21;8318:7;8305:21;;;;;;;;;;;;;;;:39;;;;8386:21;;8355:19;:28;8375:7;8355:28;;;;;;;;;;;;;;;:52;;;;10958:14:::1;10996:19;:31;11016:10;10996:31;;;;;;;;;;;;;;;;10975:18;10982:10;10975:6;:18::i;:::-;:52;;;;:::i;:::-;10958:69;;11038:12;11053;;;;;;;;;;;:21;;;11075:10;11087:6;11053:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11038:56;;11140:6;11105:19;:31;11125:10;11105:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;11162:7;11157:73;;11193:25;;;;;;;;;;;;;;11157:73;10947:290;;10890:347:::0;:::o;11736:175::-;2709:13;:11;:13::i;:::-;11832:12:::1;11815:14;:29;;;;11897:5;11887:6;11870:14;;:23;;;;:::i;:::-;11869:33;;;;:::i;:::-;11855:11;:47;;;;11736:175:::0;:::o;9354:385::-;9401:7;9447:1;9425:18;;:23;9421:311;;9472:21;;9465:28;;;;9421:311;9701:18;;9693:4;9658:11;;9612:21;;9594:15;:39;;;;:::i;:::-;9593:76;;;;:::i;:::-;:104;;;;:::i;:::-;9592:127;;;;:::i;:::-;9550:21;;:170;;;;:::i;:::-;9526:194;;9354:385;;:::o;7779:50::-;;;;;;;;;;;;;;;;;:::o;3756:220::-;2709:13;:11;:13::i;:::-;3861:1:::1;3841:22;;:8;:22;;::::0;3837:93:::1;;3915:1;3887:31;;;;;;;;;;;:::i;:::-;;;;;;;;3837:93;3940:28;3959:8;3940:18;:28::i;:::-;3756:220:::0;:::o;7897:47::-;;;;;;;;;;;;;;;;;:::o;2988:166::-;3059:12;:10;:12::i;:::-;3048:23;;:7;:5;:7::i;:::-;:23;;;3044:103;;3122:12;:10;:12::i;:::-;3095:40;;;;;;;;;;;:::i;:::-;;;;;;;;3044:103;2988:166::o;4136:191::-;4210:16;4229:6;;;;;;;;;;;4210:25;;4255:8;4246:6;;:17;;;;;;;;;;;;;;;;;;4310:8;4279:40;;4300:8;4279:40;;;;;;;;;;;;4199:128;4136:191;:::o;779:98::-;832:7;859:10;852:17;;779:98;:::o;88:117:1:-;197:1;194;187: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:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:77::-;1213:7;1242:5;1231:16;;1176:77;;;:::o;1259:118::-;1346:24;1364:5;1346:24;:::i;:::-;1341:3;1334:37;1259:118;;:::o;1383:222::-;1476:4;1514:2;1503:9;1499:18;1491:26;;1527:71;1595:1;1584:9;1580:17;1571:6;1527:71;:::i;:::-;1383:222;;;;:::o;1611:122::-;1684:24;1702:5;1684:24;:::i;:::-;1677:5;1674:35;1664:63;;1723:1;1720;1713:12;1664:63;1611:122;:::o;1739:139::-;1785:5;1823:6;1810:20;1801:29;;1839:33;1866:5;1839:33;:::i;:::-;1739:139;;;;:::o;1884:474::-;1952:6;1960;2009:2;1997:9;1988:7;1984:23;1980:32;1977:119;;;2015:79;;:::i;:::-;1977:119;2135:1;2160:53;2205:7;2196:6;2185:9;2181:22;2160:53;:::i;:::-;2150:63;;2106:117;2262:2;2288:53;2333:7;2324:6;2313:9;2309:22;2288:53;:::i;:::-;2278:63;;2233:118;1884:474;;;;;:::o;2364:90::-;2398:7;2441:5;2434:13;2427:21;2416:32;;2364:90;;;:::o;2460:109::-;2541:21;2556:5;2541:21;:::i;:::-;2536:3;2529:34;2460:109;;:::o;2575:210::-;2662:4;2700:2;2689:9;2685:18;2677:26;;2713:65;2775:1;2764:9;2760:17;2751:6;2713:65;:::i;:::-;2575:210;;;;:::o;2791:60::-;2819:3;2840:5;2833:12;;2791:60;;;:::o;2857:142::-;2907:9;2940:53;2958:34;2967:24;2985:5;2967:24;:::i;:::-;2958:34;:::i;:::-;2940:53;:::i;:::-;2927:66;;2857:142;;;:::o;3005:126::-;3055:9;3088:37;3119:5;3088:37;:::i;:::-;3075:50;;3005:126;;;:::o;3137:140::-;3201:9;3234:37;3265:5;3234:37;:::i;:::-;3221:50;;3137:140;;;:::o;3283:159::-;3384:51;3429:5;3384:51;:::i;:::-;3379:3;3372:64;3283:159;;:::o;3448:250::-;3555:4;3593:2;3582:9;3578:18;3570:26;;3606:85;3688:1;3677:9;3673:17;3664:6;3606:85;:::i;:::-;3448:250;;;;:::o;3704:329::-;3763:6;3812:2;3800:9;3791:7;3787:23;3783:32;3780:119;;;3818:79;;:::i;:::-;3780:119;3938:1;3963:53;4008:7;3999:6;3988:9;3984:22;3963:53;:::i;:::-;3953:63;;3909:117;3704:329;;;;:::o;4039:118::-;4126:24;4144:5;4126:24;:::i;:::-;4121:3;4114:37;4039:118;;:::o;4163:222::-;4256:4;4294:2;4283:9;4279:18;4271:26;;4307:71;4375:1;4364:9;4360:17;4351:6;4307:71;:::i;:::-;4163:222;;;;:::o;4391:116::-;4461:21;4476:5;4461:21;:::i;:::-;4454:5;4451:32;4441:60;;4497:1;4494;4487:12;4441:60;4391:116;:::o;4513:133::-;4556:5;4594:6;4581:20;4572:29;;4610:30;4634:5;4610:30;:::i;:::-;4513:133;;;;:::o;4652:323::-;4708:6;4757:2;4745:9;4736:7;4732:23;4728:32;4725:119;;;4763:79;;:::i;:::-;4725:119;4883:1;4908:50;4950:7;4941:6;4930:9;4926:22;4908:50;:::i;:::-;4898:60;;4854:114;4652:323;;;;:::o;4981:180::-;5029:77;5026:1;5019:88;5126:4;5123:1;5116:15;5150:4;5147:1;5140:15;5167:194;5207:4;5227:20;5245:1;5227:20;:::i;:::-;5222:25;;5261:20;5279:1;5261:20;:::i;:::-;5256:25;;5305:1;5302;5298:9;5290:17;;5329:1;5323:4;5320:11;5317:37;;;5334:18;;:::i;:::-;5317:37;5167:194;;;;:::o;5367:410::-;5407:7;5430:20;5448:1;5430:20;:::i;:::-;5425:25;;5464:20;5482:1;5464:20;:::i;:::-;5459:25;;5519:1;5516;5512:9;5541:30;5559:11;5541:30;:::i;:::-;5530:41;;5720:1;5711:7;5707:15;5704:1;5701:22;5681:1;5674:9;5654:83;5631:139;;5750:18;;:::i;:::-;5631:139;5415:362;5367:410;;;;:::o;5783:180::-;5831:77;5828:1;5821:88;5928:4;5925:1;5918:15;5952:4;5949:1;5942:15;5969:185;6009:1;6026:20;6044:1;6026:20;:::i;:::-;6021:25;;6060:20;6078:1;6060:20;:::i;:::-;6055:25;;6099:1;6089:35;;6104:18;;:::i;:::-;6089:35;6146:1;6143;6139:9;6134:14;;5969:185;;;;:::o;6160:191::-;6200:3;6219:20;6237:1;6219:20;:::i;:::-;6214:25;;6253:20;6271:1;6253:20;:::i;:::-;6248:25;;6296:1;6293;6289:9;6282:16;;6317:3;6314:1;6311:10;6308:36;;;6324:18;;:::i;:::-;6308:36;6160:191;;;;:::o;6357:143::-;6414:5;6445:6;6439:13;6430:22;;6461:33;6488:5;6461:33;:::i;:::-;6357:143;;;;:::o;6506:351::-;6576:6;6625:2;6613:9;6604:7;6600:23;6596:32;6593:119;;;6631:79;;:::i;:::-;6593:119;6751:1;6776:64;6832:7;6823:6;6812:9;6808:22;6776:64;:::i;:::-;6766:74;;6722:128;6506:351;;;;:::o;6863:169::-;6947:11;6981:6;6976:3;6969:19;7021:4;7016:3;7012:14;6997:29;;6863:169;;;;:::o;7038:170::-;7178:22;7174:1;7166:6;7162:14;7155:46;7038:170;:::o;7214:366::-;7356:3;7377:67;7441:2;7436:3;7377:67;:::i;:::-;7370:74;;7453:93;7542:3;7453:93;:::i;:::-;7571:2;7566:3;7562:12;7555:19;;7214:366;;;:::o;7586:419::-;7752:4;7790:2;7779:9;7775:18;7767:26;;7839:9;7833:4;7829:20;7825:1;7814:9;7810:17;7803:47;7867:131;7993:4;7867:131;:::i;:::-;7859:139;;7586:419;;;:::o;8011:332::-;8132:4;8170:2;8159:9;8155:18;8147:26;;8183:71;8251:1;8240:9;8236:17;8227:6;8183:71;:::i;:::-;8264:72;8332:2;8321:9;8317:18;8308:6;8264:72;:::i;:::-;8011:332;;;;;:::o;8349:137::-;8403:5;8434:6;8428:13;8419:22;;8450:30;8474:5;8450:30;:::i;:::-;8349:137;;;;:::o;8492:345::-;8559:6;8608:2;8596:9;8587:7;8583:23;8579:32;8576:119;;;8614:79;;:::i;:::-;8576:119;8734:1;8759:61;8812:7;8803:6;8792:9;8788:22;8759:61;:::i;:::-;8749:71;;8705:125;8492:345;;;;:::o;8843:165::-;8983:17;8979:1;8971:6;8967:14;8960:41;8843:165;:::o;9014:366::-;9156:3;9177:67;9241:2;9236:3;9177:67;:::i;:::-;9170:74;;9253:93;9342:3;9253:93;:::i;:::-;9371:2;9366:3;9362:12;9355:19;;9014:366;;;:::o;9386:419::-;9552:4;9590:2;9579:9;9575:18;9567:26;;9639:9;9633:4;9629:20;9625:1;9614:9;9610:17;9603:47;9667:131;9793:4;9667:131;:::i;:::-;9659:139;;9386:419;;;:::o;9811:177::-;9951:29;9947:1;9939:6;9935:14;9928:53;9811:177;:::o;9994:366::-;10136:3;10157:67;10221:2;10216:3;10157:67;:::i;:::-;10150:74;;10233:93;10322:3;10233:93;:::i;:::-;10351:2;10346:3;10342:12;10335:19;;9994:366;;;:::o;10366:419::-;10532:4;10570:2;10559:9;10555:18;10547:26;;10619:9;10613:4;10609:20;10605:1;10594:9;10590:17;10583:47;10647:131;10773:4;10647:131;:::i;:::-;10639:139;;10366:419;;;:::o;10791:233::-;10830:3;10853:24;10871:5;10853:24;:::i;:::-;10844:33;;10899:66;10892:5;10889:77;10886:103;;10969:18;;:::i;:::-;10886:103;11016:1;11009:5;11005:13;10998:20;;10791:233;;;:::o;11030:442::-;11179:4;11217:2;11206:9;11202:18;11194:26;;11230:71;11298:1;11287:9;11283:17;11274:6;11230:71;:::i;:::-;11311:72;11379:2;11368:9;11364:18;11355:6;11311:72;:::i;:::-;11393;11461:2;11450:9;11446:18;11437:6;11393:72;:::i;:::-;11030:442;;;;;;:::o
Swarm Source
ipfs://40fcef854766b5dc739be635c060b7bb3cda1ced08d8fce1977fb22b74a76c2a
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.000309 | 598.2958 | $0.1848 |
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.