More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 406 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Update Reward Am... | 16140092 | 797 days ago | IN | 0 ETH | 0.00041621 | ||||
Exit | 16019137 | 814 days ago | IN | 0 ETH | 0.00093525 | ||||
Exit | 15416900 | 901 days ago | IN | 0 ETH | 0.00118459 | ||||
Get Reward | 15416897 | 901 days ago | IN | 0 ETH | 0.00085267 | ||||
Get Reward | 15366698 | 909 days ago | IN | 0 ETH | 0.00069793 | ||||
Withdraw And Get... | 14492398 | 1049 days ago | IN | 0 ETH | 0.00303269 | ||||
Withdraw And Get... | 14474096 | 1052 days ago | IN | 0 ETH | 0.00283894 | ||||
Withdraw And Get... | 14413291 | 1062 days ago | IN | 0 ETH | 0.00313506 | ||||
Withdraw And Get... | 14403838 | 1063 days ago | IN | 0 ETH | 0.00146359 | ||||
Stake | 14385731 | 1066 days ago | IN | 0 ETH | 0.00205394 | ||||
Stake | 14385249 | 1066 days ago | IN | 0 ETH | 0.00229732 | ||||
Withdraw And Get... | 14385238 | 1066 days ago | IN | 0 ETH | 0.00187137 | ||||
Stake | 14375305 | 1068 days ago | IN | 0 ETH | 0.00224688 | ||||
Stake | 14375102 | 1068 days ago | IN | 0 ETH | 0.0018041 | ||||
Withdraw And Get... | 14354924 | 1071 days ago | IN | 0 ETH | 0.00159057 | ||||
Get Reward | 14348164 | 1072 days ago | IN | 0 ETH | 0.00228743 | ||||
Withdraw And Get... | 14315108 | 1077 days ago | IN | 0 ETH | 0.00494228 | ||||
Stake | 14302956 | 1079 days ago | IN | 0 ETH | 0.00485024 | ||||
Stake | 14212462 | 1093 days ago | IN | 0 ETH | 0.00774246 | ||||
Withdraw And Get... | 14177927 | 1098 days ago | IN | 0 ETH | 0.00353965 | ||||
Withdraw And Get... | 14100054 | 1110 days ago | IN | 0 ETH | 0.00424758 | ||||
Get Reward | 14029248 | 1121 days ago | IN | 0 ETH | 0.00357672 | ||||
Get Reward | 14029248 | 1121 days ago | IN | 0 ETH | 0.00460272 | ||||
Stake | 13855947 | 1148 days ago | IN | 0 ETH | 0.00559244 | ||||
Withdraw And Get... | 13453622 | 1211 days ago | IN | 0 ETH | 0.00340338 |
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers. Name tag integration is not available in advanced view.
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
||||
---|---|---|---|---|---|---|---|
16019137 | 814 days ago | 0 ETH | |||||
16019137 | 814 days ago | 0 ETH | |||||
15416900 | 901 days ago | 0 ETH | |||||
15416900 | 901 days ago | 0 ETH | |||||
15416897 | 901 days ago | 0 ETH | |||||
15366698 | 909 days ago | 0 ETH | |||||
14492398 | 1049 days ago | 0 ETH | |||||
14492398 | 1049 days ago | 0 ETH | |||||
14474096 | 1052 days ago | 0 ETH | |||||
14474096 | 1052 days ago | 0 ETH | |||||
14413291 | 1062 days ago | 0 ETH | |||||
14413291 | 1062 days ago | 0 ETH | |||||
14403838 | 1063 days ago | 0 ETH | |||||
14403838 | 1063 days ago | 0 ETH | |||||
14385731 | 1066 days ago | 0 ETH | |||||
14385249 | 1066 days ago | 0 ETH | |||||
14385238 | 1066 days ago | 0 ETH | |||||
14385238 | 1066 days ago | 0 ETH | |||||
14375305 | 1068 days ago | 0 ETH | |||||
14375102 | 1068 days ago | 0 ETH | |||||
14354924 | 1071 days ago | 0 ETH | |||||
14354924 | 1071 days ago | 0 ETH | |||||
14348164 | 1072 days ago | 0 ETH | |||||
14315108 | 1077 days ago | 0 ETH | |||||
14315108 | 1077 days ago | 0 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
StakingRewardsSameTokenFixedAPY
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-02-27 */ pragma solidity =0.8.0; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, "SafeMath: division by zero"); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0, "SafeMath: modulo by zero"); return a % b; } } library Math { function max(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } function average(uint256 a, uint256 b) internal pure returns (uint256) { return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2); } } library Address { function isContract(address account) internal view returns (bool) { // This method relies in extcodesize, which returns 0 for contracts in construction, // since the code is only stored at the end of the constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } } library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IERC20 token, address spender, uint256 value) internal { require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function callOptionalReturn(IERC20 token, bytes memory data) private { require(address(token).isContract(), "SafeERC20: call to non-contract"); (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } contract ReentrancyGuard { /// @dev counter to allow mutex lock with only one SSTORE operation uint256 private _guardCounter; constructor () { // The counter starts at one to prevent changing it from zero to a non-zero // value, which is a more expensive operation. _guardCounter = 1; } modifier nonReentrant() { _guardCounter += 1; uint256 localCounter = _guardCounter; _; require(localCounter == _guardCounter, "ReentrancyGuard: reentrant call"); } } interface IStakingRewards { function earned(address account) external view returns (uint256); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function stake(uint256 amount) external; function stakeFor(uint256 amount, address user) external; function getReward() external; function withdraw(uint256 amount) external; function withdrawAndGetReward(uint256 amount) external; function exit() external; } contract Ownable { address public owner; address public newOwner; event OwnershipTransferred(address indexed from, address indexed to); constructor() { owner = msg.sender; emit OwnershipTransferred(address(0), owner); } modifier onlyOwner { require(msg.sender == owner, "Ownable: Caller is not the owner"); _; } function transferOwnership(address transferOwner) public onlyOwner { require(transferOwner != newOwner); newOwner = transferOwner; } function acceptOwnership() virtual public { require(msg.sender == newOwner); emit OwnershipTransferred(owner, newOwner); owner = newOwner; newOwner = address(0); } } interface IERC20Permit { function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; } contract StakingRewardsSameTokenFixedAPY is IStakingRewards, ReentrancyGuard, Ownable { using SafeMath for uint256; using SafeERC20 for IERC20; IERC20 public token; uint256 public rewardRate; uint256 public constant rewardDuration = 365 days; mapping(address => uint256) public weightedStakeDate; uint256 private _totalSupply; mapping(address => uint256) private _balances; event RewardUpdated(uint256 reward); event Staked(address indexed user, uint256 amount); event Withdrawn(address indexed user, uint256 amount); event RewardPaid(address indexed user, uint256 reward); event Rescue(address to, uint amount); event RescueToken(address to, address token, uint amount); constructor( address _token, uint _rewardRate ) { token = IERC20(_token); rewardRate = _rewardRate; } function totalSupply() external view override returns (uint256) { return _totalSupply; } function balanceOf(address account) external view override returns (uint256) { return _balances[account]; } function earned(address account) public view override returns (uint256) { return (_balances[account].mul(block.timestamp.sub(weightedStakeDate[account])).mul(rewardRate)) / (100 * rewardDuration); } function stakeWithPermit(uint256 amount, uint deadline, uint8 v, bytes32 r, bytes32 s) external nonReentrant { require(amount > 0, "StakingRewardsSameTokenFixedAPY: Cannot stake 0"); _totalSupply = _totalSupply.add(amount); uint previousAmount = _balances[msg.sender]; uint newAmount = previousAmount.add(amount); weightedStakeDate[msg.sender] = (weightedStakeDate[msg.sender].mul(previousAmount) / newAmount).add(block.timestamp.mul(amount) / newAmount); _balances[msg.sender] = newAmount; // permit IERC20Permit(address(token)).permit(msg.sender, address(this), amount, deadline, v, r, s); token.safeTransferFrom(msg.sender, address(this), amount); emit Staked(msg.sender, amount); } function stake(uint256 amount) external override nonReentrant { require(amount > 0, "StakingRewardsSameTokenFixedAPY: Cannot stake 0"); _totalSupply = _totalSupply.add(amount); uint previousAmount = _balances[msg.sender]; uint newAmount = previousAmount.add(amount); weightedStakeDate[msg.sender] = (weightedStakeDate[msg.sender].mul(previousAmount) / newAmount).add(block.timestamp.mul(amount) / newAmount); _balances[msg.sender] = newAmount; token.safeTransferFrom(msg.sender, address(this), amount); emit Staked(msg.sender, amount); } function stakeFor(uint256 amount, address user) external override nonReentrant { require(amount > 0, "StakingRewardsSameTokenFixedAPY: Cannot stake 0"); _totalSupply = _totalSupply.add(amount); uint previousAmount = _balances[user]; uint newAmount = previousAmount.add(amount); weightedStakeDate[user] = (weightedStakeDate[user].mul(previousAmount) / newAmount).add(block.timestamp.mul(amount) / newAmount); _balances[user] = newAmount; token.safeTransferFrom(msg.sender, address(this), amount); emit Staked(user, amount); } //A user can withdraw its staking tokens even if there is no rewards tokens on the contract account function withdraw(uint256 amount) public override nonReentrant { require(amount > 0, "StakingRewardsSameTokenFixedAPY: Cannot withdraw 0"); _totalSupply = _totalSupply.sub(amount); _balances[msg.sender] = _balances[msg.sender].sub(amount); token.safeTransfer(msg.sender, amount); emit Withdrawn(msg.sender, amount); } function getReward() public override nonReentrant { uint256 reward = earned(msg.sender); if (reward > 0) { weightedStakeDate[msg.sender] = block.timestamp; token.safeTransfer(msg.sender, reward); emit RewardPaid(msg.sender, reward); } } function withdrawAndGetReward(uint256 amount) external override { getReward(); withdraw(amount); } function exit() external override { getReward(); withdraw(_balances[msg.sender]); } function updateRewardAmount(uint256 reward) external onlyOwner { rewardRate = reward; emit RewardUpdated(reward); } function rescue(address to, IERC20 tokenAddress, uint256 amount) external onlyOwner { require(to != address(0), "StakingRewardsSameTokenFixedAPY: Cannot rescue to the zero address"); require(amount > 0, "StakingRewardsSameTokenFixedAPY: Cannot rescue 0"); require(tokenAddress != token, "StakingRewardsSameTokenFixedAPY: Cannot rescue staking/reward token"); tokenAddress.safeTransfer(to, amount); emit RescueToken(to, address(tokenAddress), amount); } function rescue(address payable to, uint256 amount) external onlyOwner { require(to != address(0), "StakingRewardsSameTokenFixedAPY: Cannot rescue to the zero address"); require(amount > 0, "StakingRewardsSameTokenFixedAPY: Cannot rescue 0"); to.transfer(amount); emit Rescue(to, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_rewardRate","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Rescue","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RescueToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"exit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"newOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"contract IERC20","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardRate","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":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"stakeFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"stakeWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"transferOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"name":"updateRewardAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"weightedStakeDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawAndGetReward","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50604051611c36380380611c3683398101604081905261002f916100a6565b6001600081815581546001600160a01b0319163317918290556040516001600160a01b0392909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600380546001600160a01b0319166001600160a01b0393909316929092179091556004556100de565b600080604083850312156100b8578182fd5b82516001600160a01b03811681146100ce578283fd5b6020939093015192949293505050565b611b49806100ed6000396000f3fe608060405234801561001057600080fd5b50600436106101765760003560e01c80637b0a47ee116100d8578063e9fad8ee1161008c578063f44c407a11610066578063f44c407a146102a9578063f520e7e5146102bc578063fc0c546a146102c457610176565b8063e9fad8ee1461027b578063ecd9ba8214610283578063f2fde38b1461029657610176565b8063a694fc3a116100bd578063a694fc3a1461024d578063baee99c214610260578063d4ee1d901461027357610176565b80637b0a47ee146102305780638da5cb5b1461023857610176565b80633d18b9121161012f57806370a082311161011457806370a082311461020257806379ba5097146102155780637a4e4ecf1461021d57610176565b80633d18b912146101e757806351746bb2146101ef57610176565b806318160ddd1161016057806318160ddd146101b957806320ff430b146101c15780632e1a7d4d146101d457610176565b80628cc2621461017b57806315c2ba14146101a4575b600080fd5b61018e6101893660046113bd565b6102cc565b60405161019b9190611a14565b60405180910390f35b6101b76101b2366004611464565b61035c565b005b61018e6103f6565b6101b76101cf366004611404565b6103fc565b6101b76101e2366004611464565b61058a565b6101b76106cb565b6101b76101fd36600461147c565b6107be565b61018e6102103660046113bd565b610984565b6101b76109ac565b6101b761022b3660046113d9565b610a68565b61018e610bc1565b610240610bc7565b60405161019b9190611531565b6101b761025b366004611464565b610be3565b61018e61026e3660046113bd565b610d68565b610240610d7a565b6101b7610d96565b6101b76102913660046114ab565b610db9565b6101b76102a43660046113bd565b610faf565b6101b76102b7366004611464565b61106f565b61018e611080565b610240611088565b60006102dd6301e133806064611a6e565b60045473ffffffffffffffffffffffffffffffffffffffff841660009081526005602052604090205461034c91906103469061031a9042906110a4565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260076020526040902054906110f4565b906110f4565b6103569190611a35565b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146103b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad906115f7565b60405180910390fd5b60048190556040517fcb94909754d27c309adf4167150f1f7aa04de40b6a0e6bb98b2ae80a2bf438f6906103eb908390611a14565b60405180910390a150565b60065490565b60015473ffffffffffffffffffffffffffffffffffffffff16331461044d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad906115f7565b73ffffffffffffffffffffffffffffffffffffffff831661049a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad90611991565b600081116104d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad90611663565b60035473ffffffffffffffffffffffffffffffffffffffff83811691161415610529576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad90611843565b61054a73ffffffffffffffffffffffffffffffffffffffff8316848361115a565b7faabf44ab9d5bef08d1b60f287a337f0d11a248e49741ad189b429e47e98ba91083838360405161057d93929190611578565b60405180910390a1505050565b600160008082825461059c9190611a1d565b9091555050600054816105db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad906116c0565b6006546105e890836110a4565b6006553360009081526007602052604090205461060590836110a4565b3360008181526007602052604090209190915560035461063e9173ffffffffffffffffffffffffffffffffffffffff909116908461115a565b3373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040516106849190611a14565b60405180910390a260005481146106c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad90611923565b5050565b60016000808282546106dd9190611a1d565b909155505060008054906106f0336102cc565b9050801561077f573360008181526005602052604090204290556003546107309173ffffffffffffffffffffffffffffffffffffffff909116908361115a565b3373ffffffffffffffffffffffffffffffffffffffff167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486826040516107769190611a14565b60405180910390a25b5060005481146107bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad90611923565b50565b60016000808282546107d09190611a1d565b90915550506000548261080f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad906117e6565b60065461081c90846111fb565b60065573ffffffffffffffffffffffffffffffffffffffff82166000908152600760205260408120549061085082866111fb565b90506108ac8161086042886110f4565b61086a9190611a35565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260056020526040902054839061089c90866110f4565b6108a69190611a35565b906111fb565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526005602090815260408083209490945560079052919091208290556003546108f49116333088611244565b8373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d8660405161093a9190611a14565b60405180910390a25050600054811461097f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad90611923565b505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526007602052604090205490565b60025473ffffffffffffffffffffffffffffffffffffffff1633146109d057600080fd5b60025460015460405173ffffffffffffffffffffffffffffffffffffffff92831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360028054600180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b60015473ffffffffffffffffffffffffffffffffffffffff163314610ab9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad906115f7565b73ffffffffffffffffffffffffffffffffffffffff8216610b06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad90611991565b60008111610b40576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad90611663565b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f19350505050158015610b83573d6000803e3d6000fd5b507f542fa6bfee3b4746210fbdd1d83f9e49b65adde3639f8d8f165dd18347938af28282604051610bb5929190611552565b60405180910390a15050565b60045481565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6001600080828254610bf59190611a1d565b909155505060005481610c34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad906117e6565b600654610c4190836111fb565b6006553360009081526007602052604081205490610c5f82856111fb565b9050610c9581610c6f42876110f4565b610c799190611a35565b33600090815260056020526040902054839061089c90866110f4565b336000818152600560209081526040808320949094556007905291909120829055600354610cdd9173ffffffffffffffffffffffffffffffffffffffff909116903087611244565b3373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d85604051610d239190611a14565b60405180910390a2505060005481146106c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad90611923565b60056020526000908152604090205481565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b610d9e6106cb565b33600090815260076020526040902054610db79061058a565b565b6001600080828254610dcb9190611a1d565b909155505060005485610e0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad906117e6565b600654610e1790876111fb565b6006553360009081526007602052604081205490610e3582896111fb565b9050610e4581610c6f428b6110f4565b336000818152600560209081526040808320949094556007905282902083905560035491517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163d505accf91610ec49130908d908d908d908d908d906004016115a9565b600060405180830381600087803b158015610ede57600080fd5b505af1158015610ef2573d6000803e3d6000fd5b5050600354610f1c925073ffffffffffffffffffffffffffffffffffffffff16905033308b611244565b3373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d89604051610f629190611a14565b60405180910390a250506000548114610fa7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad90611923565b505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314611000576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad906115f7565b60025473ffffffffffffffffffffffffffffffffffffffff8281169116141561102857600080fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6110776106cb565b6107bb8161058a565b6301e1338081565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b6000828211156110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad90611752565b60006110ec8385611aab565b949350505050565b60008261110357506000610356565b600061110f8385611a6e565b90508261111c8583611a35565b14611153576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad90611789565b9392505050565b61097f8363a9059cbb60e01b8484604051602401611179929190611552565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261126b565b6000806112088385611a1d565b905083811015611153576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad9061162c565b611265846323b872dd60e01b85858560405160240161117993929190611578565b50505050565b61128a8273ffffffffffffffffffffffffffffffffffffffff166113b7565b6112c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad9061195a565b6000808373ffffffffffffffffffffffffffffffffffffffff16836040516112e891906114f8565b6000604051808303816000865af19150503d8060008114611325576040519150601f19603f3d011682016040523d82523d6000602084013e61132a565b606091505b509150915081611366576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad9061171d565b80511561126557808060200190518101906113819190611444565b611265576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad906118c6565b3b151590565b6000602082840312156113ce578081fd5b813561115381611af1565b600080604083850312156113eb578081fd5b82356113f681611af1565b946020939093013593505050565b600080600060608486031215611418578081fd5b833561142381611af1565b9250602084013561143381611af1565b929592945050506040919091013590565b600060208284031215611455578081fd5b81518015158114611153578182fd5b600060208284031215611475578081fd5b5035919050565b6000806040838503121561148e578182fd5b8235915060208301356114a081611af1565b809150509250929050565b600080600080600060a086880312156114c2578081fd5b8535945060208601359350604086013560ff811681146114e0578182fd5b94979396509394606081013594506080013592915050565b60008251815b8181101561151857602081860181015185830152016114fe565b818111156115265782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff97881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6020808252818101527f4f776e61626c653a2043616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526030908201527f5374616b696e675265776172647353616d65546f6b656e46697865644150593a60408201527f2043616e6e6f7420726573637565203000000000000000000000000000000000606082015260800190565b60208082526032908201527f5374616b696e675265776172647353616d65546f6b656e46697865644150593a60408201527f2043616e6e6f7420776974686472617720300000000000000000000000000000606082015260800190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60408201527f7700000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602f908201527f5374616b696e675265776172647353616d65546f6b656e46697865644150593a60408201527f2043616e6e6f74207374616b6520300000000000000000000000000000000000606082015260800190565b60208082526043908201527f5374616b696e675265776172647353616d65546f6b656e46697865644150593a60408201527f2043616e6e6f7420726573637565207374616b696e672f72657761726420746f60608201527f6b656e0000000000000000000000000000000000000000000000000000000000608082015260a00190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60408201527f6f74207375636365656400000000000000000000000000000000000000000000606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b60208082526042908201527f5374616b696e675265776172647353616d65546f6b656e46697865644150593a60408201527f2043616e6e6f742072657363756520746f20746865207a65726f20616464726560608201527f7373000000000000000000000000000000000000000000000000000000000000608082015260a00190565b90815260200190565b60008219821115611a3057611a30611ac2565b500190565b600082611a69577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611aa657611aa6611ac2565b500290565b600082821015611abd57611abd611ac2565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146107bb57600080fdfea2646970667358221220e2a361cc44c5244e9a0e1e35997e386cd13d8388f82c35c712b6d4d5d043d86364736f6c63430008000033000000000000000000000000eb58343b36c7528f23caae63a1502402413100490000000000000000000000000000000000000000000000000000000000000005
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101765760003560e01c80637b0a47ee116100d8578063e9fad8ee1161008c578063f44c407a11610066578063f44c407a146102a9578063f520e7e5146102bc578063fc0c546a146102c457610176565b8063e9fad8ee1461027b578063ecd9ba8214610283578063f2fde38b1461029657610176565b8063a694fc3a116100bd578063a694fc3a1461024d578063baee99c214610260578063d4ee1d901461027357610176565b80637b0a47ee146102305780638da5cb5b1461023857610176565b80633d18b9121161012f57806370a082311161011457806370a082311461020257806379ba5097146102155780637a4e4ecf1461021d57610176565b80633d18b912146101e757806351746bb2146101ef57610176565b806318160ddd1161016057806318160ddd146101b957806320ff430b146101c15780632e1a7d4d146101d457610176565b80628cc2621461017b57806315c2ba14146101a4575b600080fd5b61018e6101893660046113bd565b6102cc565b60405161019b9190611a14565b60405180910390f35b6101b76101b2366004611464565b61035c565b005b61018e6103f6565b6101b76101cf366004611404565b6103fc565b6101b76101e2366004611464565b61058a565b6101b76106cb565b6101b76101fd36600461147c565b6107be565b61018e6102103660046113bd565b610984565b6101b76109ac565b6101b761022b3660046113d9565b610a68565b61018e610bc1565b610240610bc7565b60405161019b9190611531565b6101b761025b366004611464565b610be3565b61018e61026e3660046113bd565b610d68565b610240610d7a565b6101b7610d96565b6101b76102913660046114ab565b610db9565b6101b76102a43660046113bd565b610faf565b6101b76102b7366004611464565b61106f565b61018e611080565b610240611088565b60006102dd6301e133806064611a6e565b60045473ffffffffffffffffffffffffffffffffffffffff841660009081526005602052604090205461034c91906103469061031a9042906110a4565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260076020526040902054906110f4565b906110f4565b6103569190611a35565b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146103b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad906115f7565b60405180910390fd5b60048190556040517fcb94909754d27c309adf4167150f1f7aa04de40b6a0e6bb98b2ae80a2bf438f6906103eb908390611a14565b60405180910390a150565b60065490565b60015473ffffffffffffffffffffffffffffffffffffffff16331461044d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad906115f7565b73ffffffffffffffffffffffffffffffffffffffff831661049a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad90611991565b600081116104d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad90611663565b60035473ffffffffffffffffffffffffffffffffffffffff83811691161415610529576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad90611843565b61054a73ffffffffffffffffffffffffffffffffffffffff8316848361115a565b7faabf44ab9d5bef08d1b60f287a337f0d11a248e49741ad189b429e47e98ba91083838360405161057d93929190611578565b60405180910390a1505050565b600160008082825461059c9190611a1d565b9091555050600054816105db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad906116c0565b6006546105e890836110a4565b6006553360009081526007602052604090205461060590836110a4565b3360008181526007602052604090209190915560035461063e9173ffffffffffffffffffffffffffffffffffffffff909116908461115a565b3373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040516106849190611a14565b60405180910390a260005481146106c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad90611923565b5050565b60016000808282546106dd9190611a1d565b909155505060008054906106f0336102cc565b9050801561077f573360008181526005602052604090204290556003546107309173ffffffffffffffffffffffffffffffffffffffff909116908361115a565b3373ffffffffffffffffffffffffffffffffffffffff167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486826040516107769190611a14565b60405180910390a25b5060005481146107bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad90611923565b50565b60016000808282546107d09190611a1d565b90915550506000548261080f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad906117e6565b60065461081c90846111fb565b60065573ffffffffffffffffffffffffffffffffffffffff82166000908152600760205260408120549061085082866111fb565b90506108ac8161086042886110f4565b61086a9190611a35565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260056020526040902054839061089c90866110f4565b6108a69190611a35565b906111fb565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526005602090815260408083209490945560079052919091208290556003546108f49116333088611244565b8373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d8660405161093a9190611a14565b60405180910390a25050600054811461097f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad90611923565b505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526007602052604090205490565b60025473ffffffffffffffffffffffffffffffffffffffff1633146109d057600080fd5b60025460015460405173ffffffffffffffffffffffffffffffffffffffff92831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360028054600180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b60015473ffffffffffffffffffffffffffffffffffffffff163314610ab9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad906115f7565b73ffffffffffffffffffffffffffffffffffffffff8216610b06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad90611991565b60008111610b40576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad90611663565b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f19350505050158015610b83573d6000803e3d6000fd5b507f542fa6bfee3b4746210fbdd1d83f9e49b65adde3639f8d8f165dd18347938af28282604051610bb5929190611552565b60405180910390a15050565b60045481565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6001600080828254610bf59190611a1d565b909155505060005481610c34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad906117e6565b600654610c4190836111fb565b6006553360009081526007602052604081205490610c5f82856111fb565b9050610c9581610c6f42876110f4565b610c799190611a35565b33600090815260056020526040902054839061089c90866110f4565b336000818152600560209081526040808320949094556007905291909120829055600354610cdd9173ffffffffffffffffffffffffffffffffffffffff909116903087611244565b3373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d85604051610d239190611a14565b60405180910390a2505060005481146106c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad90611923565b60056020526000908152604090205481565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b610d9e6106cb565b33600090815260076020526040902054610db79061058a565b565b6001600080828254610dcb9190611a1d565b909155505060005485610e0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad906117e6565b600654610e1790876111fb565b6006553360009081526007602052604081205490610e3582896111fb565b9050610e4581610c6f428b6110f4565b336000818152600560209081526040808320949094556007905282902083905560035491517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163d505accf91610ec49130908d908d908d908d908d906004016115a9565b600060405180830381600087803b158015610ede57600080fd5b505af1158015610ef2573d6000803e3d6000fd5b5050600354610f1c925073ffffffffffffffffffffffffffffffffffffffff16905033308b611244565b3373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d89604051610f629190611a14565b60405180910390a250506000548114610fa7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad90611923565b505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314611000576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad906115f7565b60025473ffffffffffffffffffffffffffffffffffffffff8281169116141561102857600080fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6110776106cb565b6107bb8161058a565b6301e1338081565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b6000828211156110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad90611752565b60006110ec8385611aab565b949350505050565b60008261110357506000610356565b600061110f8385611a6e565b90508261111c8583611a35565b14611153576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad90611789565b9392505050565b61097f8363a9059cbb60e01b8484604051602401611179929190611552565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261126b565b6000806112088385611a1d565b905083811015611153576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad9061162c565b611265846323b872dd60e01b85858560405160240161117993929190611578565b50505050565b61128a8273ffffffffffffffffffffffffffffffffffffffff166113b7565b6112c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad9061195a565b6000808373ffffffffffffffffffffffffffffffffffffffff16836040516112e891906114f8565b6000604051808303816000865af19150503d8060008114611325576040519150601f19603f3d011682016040523d82523d6000602084013e61132a565b606091505b509150915081611366576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad9061171d565b80511561126557808060200190518101906113819190611444565b611265576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad906118c6565b3b151590565b6000602082840312156113ce578081fd5b813561115381611af1565b600080604083850312156113eb578081fd5b82356113f681611af1565b946020939093013593505050565b600080600060608486031215611418578081fd5b833561142381611af1565b9250602084013561143381611af1565b929592945050506040919091013590565b600060208284031215611455578081fd5b81518015158114611153578182fd5b600060208284031215611475578081fd5b5035919050565b6000806040838503121561148e578182fd5b8235915060208301356114a081611af1565b809150509250929050565b600080600080600060a086880312156114c2578081fd5b8535945060208601359350604086013560ff811681146114e0578182fd5b94979396509394606081013594506080013592915050565b60008251815b8181101561151857602081860181015185830152016114fe565b818111156115265782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff97881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6020808252818101527f4f776e61626c653a2043616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526030908201527f5374616b696e675265776172647353616d65546f6b656e46697865644150593a60408201527f2043616e6e6f7420726573637565203000000000000000000000000000000000606082015260800190565b60208082526032908201527f5374616b696e675265776172647353616d65546f6b656e46697865644150593a60408201527f2043616e6e6f7420776974686472617720300000000000000000000000000000606082015260800190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60408201527f7700000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602f908201527f5374616b696e675265776172647353616d65546f6b656e46697865644150593a60408201527f2043616e6e6f74207374616b6520300000000000000000000000000000000000606082015260800190565b60208082526043908201527f5374616b696e675265776172647353616d65546f6b656e46697865644150593a60408201527f2043616e6e6f7420726573637565207374616b696e672f72657761726420746f60608201527f6b656e0000000000000000000000000000000000000000000000000000000000608082015260a00190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60408201527f6f74207375636365656400000000000000000000000000000000000000000000606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b60208082526042908201527f5374616b696e675265776172647353616d65546f6b656e46697865644150593a60408201527f2043616e6e6f742072657363756520746f20746865207a65726f20616464726560608201527f7373000000000000000000000000000000000000000000000000000000000000608082015260a00190565b90815260200190565b60008219821115611a3057611a30611ac2565b500190565b600082611a69577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611aa657611aa6611ac2565b500290565b600082821015611abd57611abd611ac2565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146107bb57600080fdfea2646970667358221220e2a361cc44c5244e9a0e1e35997e386cd13d8388f82c35c712b6d4d5d043d86364736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000eb58343b36c7528f23caae63a1502402413100490000000000000000000000000000000000000000000000000000000000000005
-----Decoded View---------------
Arg [0] : _token (address): 0xEB58343b36C7528F23CAAe63a150240241310049
Arg [1] : _rewardRate (uint256): 5
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000eb58343b36c7528f23caae63a150240241310049
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000005
Deployed Bytecode Sourcemap
6596:5436:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7749:212;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11038:138;;;;;;:::i;:::-;;:::i;:::-;;7510:102;;;:::i;11184:504::-;;;;;;:::i;:::-;;:::i;10105:367::-;;;;;;:::i;:::-;;:::i;10480:307::-;;;:::i;9391:601::-;;;;;;:::i;:::-;;:::i;7620:121::-;;;;;;:::i;:::-;;:::i;6233:204::-;;;:::i;11696:333::-;;;;;;:::i;:::-;;:::i;6783:25::-;;;:::i;5698:20::-;;;:::i;:::-;;;;;;;:::i;8769:614::-;;;;;;:::i;:::-;;:::i;6875:52::-;;;;;;:::i;:::-;;:::i;5725:23::-;;;:::i;10924:106::-;;;:::i;7969:792::-;;;;;;:::i;:::-;;:::i;6070:155::-;;;;;;:::i;:::-;;:::i;10795:121::-;;;;;;:::i;:::-;;:::i;6816:49::-;;;:::i;6757:19::-;;;:::i;7749:212::-;7812:7;7932:20;6857:8;7932:3;:20;:::i;:::-;7916:10;;7883:26;;;;;;;:17;:26;;;;;;7840:87;;7916:10;7840:71;;7863:47;;:15;;:19;:47::i;:::-;7840:18;;;;;;;:9;:18;;;;;;;:22;:71::i;:::-;:75;;:87::i;:::-;7839:114;;;;:::i;:::-;7832:121;7749:212;-1:-1:-1;;7749:212:0:o;11038:138::-;6000:5;;;;5986:10;:19;5978:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11112:10:::1;:19:::0;;;11147:21:::1;::::0;::::1;::::0;::::1;::::0;11125:6;;11147:21:::1;:::i;:::-;;;;;;;;11038:138:::0;:::o;7510:102::-;7592:12;;7510:102;:::o;11184:504::-;6000:5;;;;5986:10;:19;5978:64;;;;;;;;;;;;:::i;:::-;11287:16:::1;::::0;::::1;11279:95;;;;;;;;;;;;:::i;:::-;11402:1;11393:6;:10;11385:71;;;;;;;;;;;;:::i;:::-;11491:5;::::0;::::1;11475:21:::0;;::::1;11491:5:::0;::::1;11475:21;;11467:101;;;;;;;;;;;;:::i;:::-;11581:37;:25;::::0;::::1;11607:2:::0;11611:6;11581:25:::1;:37::i;:::-;11634:46;11646:2;11658:12;11673:6;11634:46;;;;;;;;:::i;:::-;;;;;;;;11184:504:::0;;;:::o;10105:367::-;4989:1;4972:13;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;5001:20:0;5024:13;10187:10;10179:73:::1;;;;;;;;;;;;:::i;:::-;10278:12;::::0;:24:::1;::::0;10295:6;10278:16:::1;:24::i;:::-;10263:12;:39:::0;10347:10:::1;10337:21;::::0;;;:9:::1;:21;::::0;;;;;:33:::1;::::0;10363:6;10337:25:::1;:33::i;:::-;10323:10;10313:21;::::0;;;:9:::1;:21;::::0;;;;:57;;;;10381:5:::1;::::0;:38:::1;::::0;10313:21:::1;10381:5:::0;;::::1;::::0;10412:6;10381:18:::1;:38::i;:::-;10445:10;10435:29;;;10457:6;10435:29;;;;;;:::i;:::-;;;;;;;;5084:13:::0;;5068:12;:29;5060:73;;;;;;;;;;;;:::i;:::-;10105:367;;:::o;10480:307::-;4989:1;4972:13;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;5001:20:0;5024:13;;;10558:18:::1;10565:10;10558:6;:18::i;:::-;10541:35:::0;-1:-1:-1;10591:10:0;;10587:193:::1;;10636:10;10618:29;::::0;;;:17:::1;:29;::::0;;;;10650:15:::1;10618:47:::0;;10680:5:::1;::::0;:38:::1;::::0;10618:29:::1;10680:5:::0;;::::1;::::0;10711:6;10680:18:::1;:38::i;:::-;10749:10;10738:30;;;10761:6;10738:30;;;;;;:::i;:::-;;;;;;;;10587:193;5048:1;5084:13:::0;;5068:12;:29;5060:73;;;;;;;;;;;;:::i;:::-;10480:307;:::o;9391:601::-;4989:1;4972:13;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;5001:20:0;5024:13;9489:10;9481:70:::1;;;;;;;;;;;;:::i;:::-;9577:12;::::0;:24:::1;::::0;9594:6;9577:16:::1;:24::i;:::-;9562:12;:39:::0;9634:15:::1;::::0;::::1;9612:19;9634:15:::0;;;:9:::1;:15;::::0;;;;;;9677:26:::1;9634:15:::0;9696:6;9677:18:::1;:26::i;:::-;9660:43:::0;-1:-1:-1;9740:102:0::1;9660:43:::0;9802:27:::1;:15;9822:6:::0;9802:19:::1;:27::i;:::-;:39;;;;:::i;:::-;9741:23;::::0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;9787:9;;9741:43:::1;::::0;9769:14;9741:27:::1;:43::i;:::-;:55;;;;:::i;:::-;9740:61:::0;::::1;:102::i;:::-;9714:23;::::0;;::::1;;::::0;;;:17:::1;:23;::::0;;;;;;;:128;;;;9853:9:::1;:15:::0;;;;;;:27;;;9891:5:::1;::::0;:57:::1;::::0;:5:::1;9914:10;9934:4;9941:6:::0;9891:22:::1;:57::i;:::-;9971:4;9964:20;;;9977:6;9964:20;;;;;;:::i;:::-;;;;;;;;5048:1;;5084:13:::0;;5068:12;:29;5060:73;;;;;;;;;;;;:::i;:::-;9391:601;;;:::o;7620:121::-;7715:18;;7688:7;7715:18;;;:9;:18;;;;;;;7620:121::o;6233:204::-;6308:8;;;;6294:10;:22;6286:31;;;;;;6361:8;;;6354:5;6333:37;;6361:8;;;;;6354:5;;;;6333:37;;6361:8;;6333:37;6389:8;;;;6381:16;;;;;;6389:8;;;6381:16;;;;6408:21;;;6233:204::o;11696:333::-;6000:5;;;;5986:10;:19;5978:64;;;;;;;;;;;;:::i;:::-;11786:16:::1;::::0;::::1;11778:95;;;;;;;;;;;;:::i;:::-;11901:1;11892:6;:10;11884:71;;;;;;;;;;;;:::i;:::-;11968:19;::::0;:11:::1;::::0;::::1;::::0;:19;::::1;;;::::0;11980:6;;11968:19:::1;::::0;;;11980:6;11968:11;:19;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12003:18;12010:2;12014:6;12003:18;;;;;;;:::i;:::-;;;;;;;;11696:333:::0;;:::o;6783:25::-;;;;:::o;5698:20::-;;;;;;:::o;8769:614::-;4989:1;4972:13;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;5001:20:0;5024:13;8850:10;8842:70:::1;;;;;;;;;;;;:::i;:::-;8938:12;::::0;:24:::1;::::0;8955:6;8938:16:::1;:24::i;:::-;8923:12;:39:::0;9005:10:::1;8973:19;8995:21:::0;;;:9:::1;:21;::::0;;;;;;9044:26:::1;8995:21:::0;9063:6;9044:18:::1;:26::i;:::-;9027:43:::0;-1:-1:-1;9113:108:0::1;9027:43:::0;9181:27:::1;:15;9201:6:::0;9181:19:::1;:27::i;:::-;:39;;;;:::i;:::-;9132:10;9114:29;::::0;;;:17:::1;:29;::::0;;;;;9166:9;;9114:49:::1;::::0;9148:14;9114:33:::1;:49::i;9113:108::-;9099:10;9081:29;::::0;;;:17:::1;:29;::::0;;;;;;;:140;;;;9232:9:::1;:21:::0;;;;;;:33;;;9276:5:::1;::::0;:57:::1;::::0;9081:29:::1;9276:5:::0;;::::1;::::0;9319:4:::1;9326:6:::0;9276:22:::1;:57::i;:::-;9356:10;9349:26;;;9368:6;9349:26;;;;;;:::i;:::-;;;;;;;;5048:1;;5084:13:::0;;5068:12;:29;5060:73;;;;;;;;;;;;:::i;6875:52::-;;;;;;;;;;;;;:::o;5725:23::-;;;;;;:::o;10924:106::-;10969:11;:9;:11::i;:::-;11010:10;11000:21;;;;:9;:21;;;;;;10991:31;;:8;:31::i;:::-;10924:106::o;7969:792::-;4989:1;4972:13;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;5001:20:0;5024:13;8097:10;8089:70:::1;;;;;;;;;;;;:::i;:::-;8185:12;::::0;:24:::1;::::0;8202:6;8185:16:::1;:24::i;:::-;8170:12;:39:::0;8252:10:::1;8220:19;8242:21:::0;;;:9:::1;:21;::::0;;;;;;8291:26:::1;8242:21:::0;8310:6;8291:18:::1;:26::i;:::-;8274:43:::0;-1:-1:-1;8360:108:0::1;8274:43:::0;8428:27:::1;:15;8448:6:::0;8428:19:::1;:27::i;8360:108::-;8346:10;8328:29;::::0;;;:17:::1;:29;::::0;;;;;;;:140;;;;8479:9:::1;:21:::0;;;;;:33;;;8565:5:::1;::::0;8544:89;;;;;8328:29:::1;8565:5:::0;;::::1;::::0;8544:35:::1;::::0;:89:::1;::::0;8600:4:::1;::::0;8607:6;;8615:8;;8625:1;;8628;;8631;;8544:89:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;8654:5:0::1;::::0;:57:::1;::::0;-1:-1:-1;8654:5:0::1;;::::0;-1:-1:-1;8677:10:0::1;8697:4;8704:6:::0;8654:22:::1;:57::i;:::-;8734:10;8727:26;;;8746:6;8727:26;;;;;;:::i;:::-;;;;;;;;5048:1;;5084:13:::0;;5068:12;:29;5060:73;;;;;;;;;;;;:::i;:::-;7969:792;;;;;;:::o;6070:155::-;6000:5;;;;5986:10;:19;5978:64;;;;;;;;;;;;:::i;:::-;6173:8:::1;::::0;::::1;6156:25:::0;;::::1;6173:8:::0;::::1;6156:25;;6148:34;;;::::0;::::1;;6193:8;:24:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;6070:155::o;10795:121::-;10870:11;:9;:11::i;:::-;10892:16;10901:6;10892:8;:16::i;6816:49::-;6857:8;6816:49;:::o;6757:19::-;;;;;;:::o;919:184::-;977:7;1010:1;1005;:6;;997:49;;;;;;;;;;;;:::i;:::-;1057:9;1069:5;1073:1;1069;:5;:::i;:::-;1057:17;919:184;-1:-1:-1;;;;919:184:0:o;1111:248::-;1169:7;1191:6;1187:47;;-1:-1:-1;1221:1:0;1214:8;;1187:47;1246:9;1258:5;1262:1;1258;:5;:::i;:::-;1246:17;-1:-1:-1;1291:1:0;1282:5;1286:1;1246:17;1282:5;:::i;:::-;:10;1274:56;;;;;;;;;;;;:::i;:::-;1350:1;1111:248;-1:-1:-1;;;1111:248:0:o;2796:176::-;2879:85;2898:5;2928:23;;;2953:2;2957:5;2905:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2879:18;:85::i;730:181::-;788:7;;820:5;824:1;820;:5;:::i;:::-;808:17;;849:1;844;:6;;836:46;;;;;;;;;;;;:::i;2980:204::-;3081:95;3100:5;3130:27;;;3159:4;3165:2;3169:5;3107:68;;;;;;;;;;:::i;3081:95::-;2980:204;;;;:::o;4133:454::-;4221:27;4229:5;4221:25;;;:27::i;:::-;4213:71;;;;;;;;;;;;:::i;:::-;4298:12;4312:23;4347:5;4339:19;;4359:4;4339:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4297:67;;;;4383:7;4375:52;;;;;;;;;;;;:::i;:::-;4444:17;;:21;4440:140;;4502:10;4491:30;;;;;;;;;;;;:::i;:::-;4483:85;;;;;;;;;;;;:::i;2286:411::-;2642:20;2681:8;;;2286:411::o;14:259:1:-;;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:33;237:5;210:33;:::i;278:335::-;;;415:2;403:9;394:7;390:23;386:32;383:2;;;436:6;428;421:22;383:2;480:9;467:23;499:33;526:5;499:33;:::i;:::-;551:5;603:2;588:18;;;;575:32;;-1:-1:-1;;;373:240:1:o;618:483::-;;;;777:2;765:9;756:7;752:23;748:32;745:2;;;798:6;790;783:22;745:2;842:9;829:23;861:33;888:5;861:33;:::i;:::-;913:5;-1:-1:-1;970:2:1;955:18;;942:32;983:35;942:32;983:35;:::i;:::-;735:366;;1037:7;;-1:-1:-1;;;1091:2:1;1076:18;;;;1063:32;;735:366::o;1106:297::-;;1226:2;1214:9;1205:7;1201:23;1197:32;1194:2;;;1247:6;1239;1232:22;1194:2;1284:9;1278:16;1337:5;1330:13;1323:21;1316:5;1313:32;1303:2;;1364:6;1356;1349:22;1408:190;;1520:2;1508:9;1499:7;1495:23;1491:32;1488:2;;;1541:6;1533;1526:22;1488:2;-1:-1:-1;1569:23:1;;1478:120;-1:-1:-1;1478:120:1:o;1603:327::-;;;1732:2;1720:9;1711:7;1707:23;1703:32;1700:2;;;1753:6;1745;1738:22;1700:2;1794:9;1781:23;1771:33;;1854:2;1843:9;1839:18;1826:32;1867:33;1894:5;1867:33;:::i;:::-;1919:5;1909:15;;;1690:240;;;;;:::o;1935:563::-;;;;;;2113:3;2101:9;2092:7;2088:23;2084:33;2081:2;;;2135:6;2127;2120:22;2081:2;2176:9;2163:23;2153:33;;2233:2;2222:9;2218:18;2205:32;2195:42;;2287:2;2276:9;2272:18;2259:32;2331:4;2324:5;2320:16;2313:5;2310:27;2300:2;;2356:6;2348;2341:22;2300:2;2071:427;;;;-1:-1:-1;2384:5:1;;2436:2;2421:18;;2408:32;;-1:-1:-1;2487:3:1;2472:19;2459:33;;2071:427;-1:-1:-1;;2071:427:1:o;2503:430::-;;2670:6;2664:13;2695:3;2707:129;2721:6;2718:1;2715:13;2707:129;;;2819:4;2803:14;;;2799:25;;2793:32;2780:11;;;2773:53;2736:12;2707:129;;;2854:6;2851:1;2848:13;2845:2;;;2889:3;2880:6;2875:3;2871:16;2864:29;2845:2;-1:-1:-1;2911:16:1;;;;;2640:293;-1:-1:-1;;2640:293:1:o;2938:226::-;3114:42;3102:55;;;;3084:74;;3072:2;3057:18;;3039:125::o;3169:305::-;3381:42;3369:55;;;;3351:74;;3456:2;3441:18;;3434:34;3339:2;3324:18;;3306:168::o;3479:398::-;3691:42;3760:15;;;3742:34;;3812:15;;;;3807:2;3792:18;;3785:43;3859:2;3844:18;;3837:34;;;;3669:2;3654:18;;3636:241::o;3882:693::-;4203:42;4272:15;;;4254:34;;4324:15;;;;4319:2;4304:18;;4297:43;4371:2;4356:18;;4349:34;;;;4414:2;4399:18;;4392:34;;;;4475:4;4463:17;4457:3;4442:19;;4435:46;4512:3;4497:19;;4490:35;4556:3;4541:19;;4534:35;;;;4180:3;4165:19;;4147:428::o;5126:356::-;5328:2;5310:21;;;5347:18;;;5340:30;5406:34;5401:2;5386:18;;5379:62;5473:2;5458:18;;5300:182::o;5487:351::-;5689:2;5671:21;;;5728:2;5708:18;;;5701:30;5767:29;5762:2;5747:18;;5740:57;5829:2;5814:18;;5661:177::o;5843:412::-;6045:2;6027:21;;;6084:2;6064:18;;;6057:30;6123:34;6118:2;6103:18;;6096:62;6194:18;6189:2;6174:18;;6167:46;6245:3;6230:19;;6017:238::o;6260:414::-;6462:2;6444:21;;;6501:2;6481:18;;;6474:30;6540:34;6535:2;6520:18;;6513:62;6611:20;6606:2;6591:18;;6584:48;6664:3;6649:19;;6434:240::o;6679:356::-;6881:2;6863:21;;;6900:18;;;6893:30;6959:34;6954:2;6939:18;;6932:62;7026:2;7011:18;;6853:182::o;7040:354::-;7242:2;7224:21;;;7281:2;7261:18;;;7254:30;7320:32;7315:2;7300:18;;7293:60;7385:2;7370:18;;7214:180::o;7399:397::-;7601:2;7583:21;;;7640:2;7620:18;;;7613:30;7679:34;7674:2;7659:18;;7652:62;7750:3;7745:2;7730:18;;7723:31;7786:3;7771:19;;7573:223::o;7801:411::-;8003:2;7985:21;;;8042:2;8022:18;;;8015:30;8081:34;8076:2;8061:18;;8054:62;8152:17;8147:2;8132:18;;8125:45;8202:3;8187:19;;7975:237::o;8217:471::-;8419:2;8401:21;;;8458:2;8438:18;;;8431:30;8497:34;8492:2;8477:18;;8470:62;8568:34;8563:2;8548:18;;8541:62;8640:5;8634:3;8619:19;;8612:34;8678:3;8663:19;;8391:297::o;8693:406::-;8895:2;8877:21;;;8934:2;8914:18;;;8907:30;8973:34;8968:2;8953:18;;8946:62;9044:12;9039:2;9024:18;;9017:40;9089:3;9074:19;;8867:232::o;9104:355::-;9306:2;9288:21;;;9345:2;9325:18;;;9318:30;9384:33;9379:2;9364:18;;9357:61;9450:2;9435:18;;9278:181::o;9464:355::-;9666:2;9648:21;;;9705:2;9685:18;;;9678:30;9744:33;9739:2;9724:18;;9717:61;9810:2;9795:18;;9638:181::o;9824:470::-;10026:2;10008:21;;;10065:2;10045:18;;;10038:30;10104:34;10099:2;10084:18;;10077:62;10175:34;10170:2;10155:18;;10148:62;10247:4;10241:3;10226:19;;10219:33;10284:3;10269:19;;9998:296::o;10299:177::-;10445:25;;;10433:2;10418:18;;10400:76::o;10481:128::-;;10552:1;10548:6;10545:1;10542:13;10539:2;;;10558:18;;:::i;:::-;-1:-1:-1;10594:9:1;;10529:80::o;10614:274::-;;10680:1;10670:2;;10715:77;10712:1;10705:88;10816:4;10813:1;10806:15;10844:4;10841:1;10834:15;10670:2;-1:-1:-1;10873:9:1;;10660:228::o;10893:::-;;11059:1;10991:66;10987:74;10984:1;10981:81;10976:1;10969:9;10962:17;10958:105;10955:2;;;11066:18;;:::i;:::-;-1:-1:-1;11106:9:1;;10945:176::o;11126:125::-;;11194:1;11191;11188:8;11185:2;;;11199:18;;:::i;:::-;-1:-1:-1;11236:9:1;;11175:76::o;11256:184::-;11308:77;11305:1;11298:88;11405:4;11402:1;11395:15;11429:4;11426:1;11419:15;11445:156;11533:42;11526:5;11522:54;11515:5;11512:65;11502:2;;11591:1;11588;11581:12
Swarm Source
ipfs://e2a361cc44c5244e9a0e1e35997e386cd13d8388f82c35c712b6d4d5d043d863
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 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.