More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 63 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Stake | 10952809 | 1612 days ago | IN | 0 ETH | 0.00231227 | ||||
Stake | 10936116 | 1615 days ago | IN | 0 ETH | 0.00507675 | ||||
Withdraw | 10930550 | 1615 days ago | IN | 0 ETH | 0.00375081 | ||||
Withdraw | 10924712 | 1616 days ago | IN | 0 ETH | 0.0078118 | ||||
Withdraw | 10922510 | 1617 days ago | IN | 0 ETH | 0.006158 | ||||
Withdraw | 10922509 | 1617 days ago | IN | 0 ETH | 0.00246538 | ||||
Withdraw | 10922505 | 1617 days ago | IN | 0 ETH | 0.0078118 | ||||
Withdraw | 10919909 | 1617 days ago | IN | 0 ETH | 0.00425873 | ||||
Withdraw | 10919894 | 1617 days ago | IN | 0 ETH | 0.00425873 | ||||
Withdraw | 10919856 | 1617 days ago | IN | 0 ETH | 0.00702767 | ||||
Withdraw | 10919835 | 1617 days ago | IN | 0 ETH | 0.008381 | ||||
Withdraw | 10919829 | 1617 days ago | IN | 0 ETH | 0.00629043 | ||||
Withdraw | 10919787 | 1617 days ago | IN | 0 ETH | 0.00648578 | ||||
Withdraw | 10919419 | 1617 days ago | IN | 0 ETH | 0.0060971 | ||||
Withdraw | 10919417 | 1617 days ago | IN | 0 ETH | 0.00582157 | ||||
Withdraw | 10919250 | 1617 days ago | IN | 0 ETH | 0.00579635 | ||||
Withdraw | 10918923 | 1617 days ago | IN | 0 ETH | 0.00340362 | ||||
Withdraw | 10918920 | 1617 days ago | IN | 0 ETH | 0.00399305 | ||||
Exit | 10918641 | 1617 days ago | IN | 0 ETH | 0.00517116 | ||||
Withdraw | 10918585 | 1617 days ago | IN | 0 ETH | 0.00409767 | ||||
Get Reward | 10917764 | 1617 days ago | IN | 0 ETH | 0.00793375 | ||||
Withdraw | 10917756 | 1617 days ago | IN | 0 ETH | 0.01145208 | ||||
Stake | 10917526 | 1617 days ago | IN | 0 ETH | 0.0129821 | ||||
Stake | 10917364 | 1617 days ago | IN | 0 ETH | 0.01095699 | ||||
Stake | 10917363 | 1617 days ago | IN | 0 ETH | 0.01226808 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
SGRewardSUSHIPool
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-09-26 */ pragma solidity ^0.5.0; /** * @dev Standard math utilities missing in the Solidity language. */ library Math { /** * @dev Returns the largest of two numbers. */ function max(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } /** * @dev Returns the smallest of two numbers. */ function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } /** * @dev Returns the average of two numbers. The result is rounded towards * zero. */ function average(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b) / 2 can overflow, so we distribute return (a / 2) + (b / 2) + (((a % 2) + (b % 2)) / 2); } } pragma solidity ^0.5.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. * * _Available since v2.4.0._ */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } pragma solidity ^0.5.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN 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. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor() internal {} // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: @openzeppelin/contracts/ownership/Ownable.sol pragma solidity ^0.5.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * 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. */ contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() internal { _owner = _msgSender(); emit OwnershipTransferred(address(0), _owner); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } /** * @dev Returns true if the caller is the current owner. */ function isOwner() public view returns (bool) { return _msgSender() == _owner; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = 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 onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol pragma solidity ^0.5.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); function mint(address account, uint256 amount) external; /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); } // File: @openzeppelin/contracts/utils/Address.sol pragma solidity ^0.5.5; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * This test is non-exhaustive, and there may be false-negatives: during the * execution of a contract's constructor, its address will be reported as * not containing a contract. * * IMPORTANT: It is unsafe to assume that an address for which this * function returns false is an externally-owned account (EOA) and not a * contract. */ 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. // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != 0x0 && codehash != accountHash); } /** * @dev Converts an `address` into `address payable`. Note that this is * simply a type cast: the actual underlying value is not changed. * * _Available since v2.4.0._ */ function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. * * _Available since v2.4.0._ */ function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); // solhint-disable-next-line avoid-call-value (bool success, ) = recipient.call.value(amount)(""); require( success, "Address: unable to send value, recipient may have reverted" ); } } // File: @openzeppelin/contracts/token/ERC20/SafeERC20.sol pragma solidity ^0.5.0; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ 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 { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length 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, "SafeERC20: decreased allowance below zero" ); callOptionalReturn( token, abi.encodeWithSelector( token.approve.selector, spender, newAllowance ) ); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. // A Solidity high level call has three parts: // 1. The target address is checked to verify it contains contract code // 2. The call itself is made, and success asserted // 3. The return value is decoded, which in turn checks the size of the returned data. // solhint-disable-next-line max-line-length require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require( abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed" ); } } } pragma solidity ^0.5.0; contract IRewardDistributionRecipient is Ownable { address rewardDistribution; // function notifyRewardAmount(uint256 reward) external; modifier onlyRewardDistribution() { require( _msgSender() == rewardDistribution, "Caller is not reward distribution" ); _; } function setRewardDistribution(address _rewardDistribution) external onlyOwner { require( _rewardDistribution != address(0), "rewardDistribution can't be address(0) !" ); rewardDistribution = _rewardDistribution; } } pragma solidity ^0.5.0; contract LPTokenWrapper { using SafeMath for uint256; using SafeERC20 for IERC20; // IERC20 public y = IERC20(0x6B3595068778DD592e39A122f4f5a5cF09C90fE2); uint256 private _totalSupply; mapping(address => uint256) private _balances; function totalSupply() public view returns (uint256) { return _totalSupply; } function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function stake(uint256 amount) public { _totalSupply = _totalSupply.add(amount); _balances[msg.sender] = _balances[msg.sender].add(amount); y.safeTransferFrom(msg.sender, address(this), amount); } function withdraw(uint256 amount) public { _totalSupply = _totalSupply.sub(amount); _balances[msg.sender] = _balances[msg.sender].sub(amount); // y.safeTransfer(msg.sender, amount); y.transfer(msg.sender, amount); } } contract SGRewardSUSHIPool is LPTokenWrapper, IRewardDistributionRecipient { address public developer; uint256 public developerBalance = 0; bool isInit = true; IERC20 public yieldToken = IERC20(0x523EEAfdaC23FA2CB0C3873CdA4818cdc80e28E8); uint256 public constant DURATION = 5 days; // total 1000 uint256 public initreward = 1000 * 1e18; uint256 public starttime = 1600423200; uint256 public periodFinish = 0; uint256 public rewardRate = 0; uint256 public lastUpdateTime; uint256 public rewardPerTokenStored; mapping(address => uint256) public userRewardPerTokenPaid; mapping(address => uint256) public rewards; event RewardAdded(uint256 reward); event Staked(address indexed user, uint256 amount); event Withdrawn(address indexed user, uint256 amount); event RewardPaid(address indexed user, uint256 reward); modifier onlyDeveloper() { require(msg.sender == developer); _; } constructor() public { developer = msg.sender; periodFinish = starttime.add(DURATION); } modifier updateReward(address account) { if (block.timestamp < periodFinish) { rewardPerTokenStored = rewardPerToken(); lastUpdateTime = lastTimeRewardApplicable(); if (account != address(0)) { rewards[account] = earned(account); developerBalance = rewards[account].mul(10).div(100); userRewardPerTokenPaid[account] = rewardPerTokenStored; } } _; } function lastTimeRewardApplicable() public view returns (uint256) { return Math.min(block.timestamp, periodFinish); } function rewardPerToken() public view returns (uint256) { if (totalSupply() == 0) { return rewardPerTokenStored; } return rewardPerTokenStored.add( lastTimeRewardApplicable() .sub(lastUpdateTime) .mul(rewardRate) .mul(1e18) .div(totalSupply()) ); } function earned(address account) public view returns (uint256) { if (block.timestamp < periodFinish) { return balanceOf(account) .mul(rewardPerToken().sub(userRewardPerTokenPaid[account])) .div(1e18) .add(rewards[account]); } else { return rewards[account]; } } // stake visibility is public as overriding LPTokenWrapper's stake() function function stake(uint256 amount) public updateReward(msg.sender) checkStart checkEnd { require(amount > 0, "Cannot stake 0"); super.stake(amount); emit Staked(msg.sender, amount); } function withdraw(uint256 amount) public updateReward(msg.sender) checkStart { require(amount > 0, "Cannot withdraw 0"); super.withdraw(amount); emit Withdrawn(msg.sender, amount); } function exit() external { withdraw(balanceOf(msg.sender)); getReward(); } function developerWithdraw() external onlyDeveloper { yieldToken.safeTransfer(developer, developerBalance); developerBalance = 0; } function setDeveloper(address _developer) public onlyDeveloper { require(_developer != address(0), "developer can't be address(0)"); developer = _developer; } function getReward() public updateReward(msg.sender) checkStart { uint256 reward = earned(msg.sender); if (reward > 0) { rewards[msg.sender] = 0; yieldToken.safeTransfer(msg.sender, reward); emit RewardPaid(msg.sender, reward); } } modifier checkEnd() { require(block.timestamp < periodFinish, "expired"); _; } modifier checkStart() { require(block.timestamp > starttime, "not start"); _; } function initialization() external onlyDeveloper updateReward(address(0)) { require(isInit, "not initialization"); rewardRate = initreward.div(DURATION); yieldToken.mint( address(this), initreward.mul(10).div(100).add(initreward) ); isInit = false; emit RewardAdded(initreward); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardAdded","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":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"},{"constant":true,"inputs":[],"name":"DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"developer","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"developerBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"developerWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getReward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"initialization","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"initreward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastTimeRewardApplicable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"periodFinish","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardPerTokenStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_developer","type":"address"}],"name":"setDeveloper","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_rewardDistribution","type":"address"}],"name":"setRewardDistribution","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"starttime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userRewardPerTokenPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"y","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"yieldToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052736b3595068778dd592e39a122f4f5a5cf09c90fe26000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006006556001600760006101000a81548160ff02191690831515021790555073523eeafdac23fa2cb0c3873cda4818cdc80e28e8600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550683635c9adc5dea00000600855635f6485206009556000600a556000600b55348015620000f957600080fd5b506200010a6200023360201b60201c565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a333600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000227620697806009546200023b60201b62001d421790919060201c565b600a81905550620002c4565b600033905090565b600080828401905083811015620002ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b61288a80620002d46000396000f3fe608060405234801561001057600080fd5b50600436106101d95760003560e01c80638da5889711610104578063c8f33c91116100a2578063e9fad8ee11610071578063e9fad8ee1461067c578063ebe2b12b14610686578063f2fde38b146106a4578063ff70fa49146106e8576101d9565b8063c8f33c91146105d8578063ca4b208b146105f6578063cd3daf9d14610640578063df136d651461065e576101d9565b80639c907b58116100de5780639c907b5814610538578063a56dfe4a14610556578063a694fc3a146105a0578063c172085e146105ce576101d9565b80638da58897146104ae5780638da5cb5b146104cc5780638f32d59b14610516576101d9565b8063371c73b31161017c57806376d5de851161014b57806376d5de85146103d05780637b0a47ee1461041a57806380faa57d146104385780638b87634714610456576101d9565b8063371c73b3146103465780633d18b9121461036457806370a082311461036e578063715018a6146103c6576101d9565b806318160ddd116101b857806318160ddd146102d25780631be05289146102f05780631ec750251461030e5780632e1a7d4d14610318576101d9565b80628cc262146101de5780630700037d146102365780630d68b7611461028e575b600080fd5b610220600480360360208110156101f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061072c565b6040518082815260200191505060405180910390f35b6102786004803603602081101561024c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610865565b6040518082815260200191505060405180910390f35b6102d0600480360360208110156102a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061087d565b005b6102da6109c1565b6040518082815260200191505060405180910390f35b6102f86109cb565b6040518082815260200191505060405180910390f35b6103166109d2565b005b6103446004803603602081101561032e57600080fd5b8101908080359060200190929190505050610aa7565b005b61034e610d4a565b6040518082815260200191505060405180910390f35b61036c610d50565b005b6103b06004803603602081101561038457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061101d565b6040518082815260200191505060405180910390f35b6103ce611066565b005b6103d86111a1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104226111c7565b6040518082815260200191505060405180910390f35b6104406111cd565b6040518082815260200191505060405180910390f35b6104986004803603602081101561046c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111e0565b6040518082815260200191505060405180910390f35b6104b66111f8565b6040518082815260200191505060405180910390f35b6104d46111fe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61051e611228565b604051808215151515815260200191505060405180910390f35b610540611287565b6040518082815260200191505060405180910390f35b61055e61128d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105cc600480360360208110156105b657600080fd5b81019080803590602001909291905050506112b2565b005b6105d66115cc565b005b6105e0611976565b6040518082815260200191505060405180910390f35b6105fe61197c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106486119a2565b6040518082815260200191505060405180910390f35b610666611a3a565b6040518082815260200191505060405180910390f35b610684611a40565b005b61068e611a5b565b6040518082815260200191505060405180910390f35b6106e6600480360360208110156106ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a61565b005b61072a600480360360208110156106fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ae7565b005b6000600a5442101561081d57610816600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610808670de0b6b3a76400006107fa6107e3600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107d56119a2565b611c2890919063ffffffff16565b6107ec8861101d565b611c7290919063ffffffff16565b611cf890919063ffffffff16565b611d4290919063ffffffff16565b9050610860565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b600f6020528060005260406000206000915090505481565b610885611228565b6108f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561097d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061282e6028913960400191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600154905090565b6206978081565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a2c57600080fd5b610a9d600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600654600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611dca9092919063ffffffff16565b6000600681905550565b33600a54421015610c0257610aba6119a2565b600d81905550610ac86111cd565b600c81905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c0157610b0b8161072c565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610bb46064610ba6600a600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7290919063ffffffff16565b611cf890919063ffffffff16565b600681905550600d54600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b6009544211610c79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f6e6f74207374617274000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008211610cef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f43616e6e6f74207769746864726177203000000000000000000000000000000081525060200191505060405180910390fd5b610cf882611e9b565b3373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040518082815260200191505060405180910390a25050565b60065481565b33600a54421015610eab57610d636119a2565b600d81905550610d716111cd565b600c81905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610eaa57610db48161072c565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e5d6064610e4f600a600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7290919063ffffffff16565b611cf890919063ffffffff16565b600681905550600d54600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b6009544211610f22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f6e6f74207374617274000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000610f2d3361072c565b90506000811115611019576000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fca3382600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611dca9092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486826040518082815260200191505060405180910390a25b5050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61106e611228565b6110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b60006111db42600a54612032565b905090565b600e6020528060005260406000206000915090505481565b60095481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661126b61204b565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60085481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b33600a5442101561140d576112c56119a2565b600d819055506112d36111cd565b600c81905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461140c576113168161072c565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113bf60646113b1600a600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7290919063ffffffff16565b611cf890919063ffffffff16565b600681905550600d54600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b6009544211611484576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f6e6f74207374617274000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600a5442106114fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260078152602001807f657870697265640000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008211611571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f43616e6e6f74207374616b65203000000000000000000000000000000000000081525060200191505060405180910390fd5b61157a82612053565b3373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d836040518082815260200191505060405180910390a25050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461162657600080fd5b6000600a544210156117825761163a6119a2565b600d819055506116486111cd565b600c81905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146117815761168b8161072c565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117346064611726600a600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7290919063ffffffff16565b611cf890919063ffffffff16565b600681905550600d54600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600760009054906101000a900460ff16611804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6e6f7420696e697469616c697a6174696f6e000000000000000000000000000081525060200191505060405180910390fd5b61181c62069780600854611cf890919063ffffffff16565b600b81905550600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f193061189e6008546118906064611882600a600854611c7290919063ffffffff16565b611cf890919063ffffffff16565b611d4290919063ffffffff16565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561190757600080fd5b505af115801561191b573d6000803e3d6000fd5b505050506000600760006101000a81548160ff0219169083151502179055507fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d6008546040518082815260200191505060405180910390a150565b600c5481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806119ad6109c1565b14156119bd57600d549050611a37565b611a34611a236119cb6109c1565b611a15670de0b6b3a7640000611a07600b546119f9600c546119eb6111cd565b611c2890919063ffffffff16565b611c7290919063ffffffff16565b611c7290919063ffffffff16565b611cf890919063ffffffff16565b600d54611d4290919063ffffffff16565b90505b90565b600d5481565b611a51611a4c3361101d565b610aa7565b611a59610d50565b565b600a5481565b611a69611228565b611adb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611ae481612154565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b4157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611be4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f646576656c6f7065722063616e2774206265206164647265737328302900000081525060200191505060405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611c6a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061229a565b905092915050565b600080831415611c855760009050611cf2565b6000828402905082848281611c9657fe5b0414611ced576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806127e36021913960400191505060405180910390fd5b809150505b92915050565b6000611d3a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061235a565b905092915050565b600080828401905083811015611dc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b611e96838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612420565b505050565b611eb081600154611c2890919063ffffffff16565b600181905550611f0881600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c2890919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611ff357600080fd5b505af1158015612007573d6000803e3d6000fd5b505050506040513d602081101561201d57600080fd5b81019080805190602001909291905050505050565b60008183106120415781612043565b825b905092915050565b600033905090565b61206881600154611d4290919063ffffffff16565b6001819055506120c081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4290919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121513330836000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661266b909392919063ffffffff16565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156121da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806127bd6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000838311158290612347576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561230c5780820151818401526020810190506122f1565b50505050905090810190601f1680156123395780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290612406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156123cb5780820151818401526020810190506123b0565b50505050905090810190601f1680156123f85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161241257fe5b049050809150509392505050565b61243f8273ffffffffffffffffffffffffffffffffffffffff16612771565b6124b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061250057805182526020820191506020810190506020830392506124dd565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612562576040519150601f19603f3d011682016040523d82523d6000602084013e612567565b606091505b5091509150816125df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115612665578080602001905160208110156125fe57600080fd5b8101908080519060200190929190505050612664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612804602a913960400191505060405180910390fd5b5b50505050565b61276b848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612420565b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b82141580156127b35750808214155b9250505091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564726577617264446973747269627574696f6e2063616e277420626520616464726573732830292021a265627a7a7231582019b723964a6f9a4dda976fca258384a9a14b59cf4c6f04d1866dc63741d9cbf364736f6c63430005110032
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101d95760003560e01c80638da5889711610104578063c8f33c91116100a2578063e9fad8ee11610071578063e9fad8ee1461067c578063ebe2b12b14610686578063f2fde38b146106a4578063ff70fa49146106e8576101d9565b8063c8f33c91146105d8578063ca4b208b146105f6578063cd3daf9d14610640578063df136d651461065e576101d9565b80639c907b58116100de5780639c907b5814610538578063a56dfe4a14610556578063a694fc3a146105a0578063c172085e146105ce576101d9565b80638da58897146104ae5780638da5cb5b146104cc5780638f32d59b14610516576101d9565b8063371c73b31161017c57806376d5de851161014b57806376d5de85146103d05780637b0a47ee1461041a57806380faa57d146104385780638b87634714610456576101d9565b8063371c73b3146103465780633d18b9121461036457806370a082311461036e578063715018a6146103c6576101d9565b806318160ddd116101b857806318160ddd146102d25780631be05289146102f05780631ec750251461030e5780632e1a7d4d14610318576101d9565b80628cc262146101de5780630700037d146102365780630d68b7611461028e575b600080fd5b610220600480360360208110156101f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061072c565b6040518082815260200191505060405180910390f35b6102786004803603602081101561024c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610865565b6040518082815260200191505060405180910390f35b6102d0600480360360208110156102a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061087d565b005b6102da6109c1565b6040518082815260200191505060405180910390f35b6102f86109cb565b6040518082815260200191505060405180910390f35b6103166109d2565b005b6103446004803603602081101561032e57600080fd5b8101908080359060200190929190505050610aa7565b005b61034e610d4a565b6040518082815260200191505060405180910390f35b61036c610d50565b005b6103b06004803603602081101561038457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061101d565b6040518082815260200191505060405180910390f35b6103ce611066565b005b6103d86111a1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104226111c7565b6040518082815260200191505060405180910390f35b6104406111cd565b6040518082815260200191505060405180910390f35b6104986004803603602081101561046c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111e0565b6040518082815260200191505060405180910390f35b6104b66111f8565b6040518082815260200191505060405180910390f35b6104d46111fe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61051e611228565b604051808215151515815260200191505060405180910390f35b610540611287565b6040518082815260200191505060405180910390f35b61055e61128d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105cc600480360360208110156105b657600080fd5b81019080803590602001909291905050506112b2565b005b6105d66115cc565b005b6105e0611976565b6040518082815260200191505060405180910390f35b6105fe61197c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106486119a2565b6040518082815260200191505060405180910390f35b610666611a3a565b6040518082815260200191505060405180910390f35b610684611a40565b005b61068e611a5b565b6040518082815260200191505060405180910390f35b6106e6600480360360208110156106ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a61565b005b61072a600480360360208110156106fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ae7565b005b6000600a5442101561081d57610816600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610808670de0b6b3a76400006107fa6107e3600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107d56119a2565b611c2890919063ffffffff16565b6107ec8861101d565b611c7290919063ffffffff16565b611cf890919063ffffffff16565b611d4290919063ffffffff16565b9050610860565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b600f6020528060005260406000206000915090505481565b610885611228565b6108f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561097d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061282e6028913960400191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600154905090565b6206978081565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a2c57600080fd5b610a9d600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600654600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611dca9092919063ffffffff16565b6000600681905550565b33600a54421015610c0257610aba6119a2565b600d81905550610ac86111cd565b600c81905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c0157610b0b8161072c565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610bb46064610ba6600a600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7290919063ffffffff16565b611cf890919063ffffffff16565b600681905550600d54600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b6009544211610c79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f6e6f74207374617274000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008211610cef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f43616e6e6f74207769746864726177203000000000000000000000000000000081525060200191505060405180910390fd5b610cf882611e9b565b3373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040518082815260200191505060405180910390a25050565b60065481565b33600a54421015610eab57610d636119a2565b600d81905550610d716111cd565b600c81905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610eaa57610db48161072c565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e5d6064610e4f600a600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7290919063ffffffff16565b611cf890919063ffffffff16565b600681905550600d54600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b6009544211610f22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f6e6f74207374617274000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000610f2d3361072c565b90506000811115611019576000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fca3382600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611dca9092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486826040518082815260200191505060405180910390a25b5050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61106e611228565b6110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b60006111db42600a54612032565b905090565b600e6020528060005260406000206000915090505481565b60095481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661126b61204b565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60085481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b33600a5442101561140d576112c56119a2565b600d819055506112d36111cd565b600c81905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461140c576113168161072c565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113bf60646113b1600a600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7290919063ffffffff16565b611cf890919063ffffffff16565b600681905550600d54600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b6009544211611484576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f6e6f74207374617274000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600a5442106114fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260078152602001807f657870697265640000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008211611571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f43616e6e6f74207374616b65203000000000000000000000000000000000000081525060200191505060405180910390fd5b61157a82612053565b3373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d836040518082815260200191505060405180910390a25050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461162657600080fd5b6000600a544210156117825761163a6119a2565b600d819055506116486111cd565b600c81905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146117815761168b8161072c565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117346064611726600a600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7290919063ffffffff16565b611cf890919063ffffffff16565b600681905550600d54600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600760009054906101000a900460ff16611804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6e6f7420696e697469616c697a6174696f6e000000000000000000000000000081525060200191505060405180910390fd5b61181c62069780600854611cf890919063ffffffff16565b600b81905550600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f193061189e6008546118906064611882600a600854611c7290919063ffffffff16565b611cf890919063ffffffff16565b611d4290919063ffffffff16565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561190757600080fd5b505af115801561191b573d6000803e3d6000fd5b505050506000600760006101000a81548160ff0219169083151502179055507fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d6008546040518082815260200191505060405180910390a150565b600c5481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806119ad6109c1565b14156119bd57600d549050611a37565b611a34611a236119cb6109c1565b611a15670de0b6b3a7640000611a07600b546119f9600c546119eb6111cd565b611c2890919063ffffffff16565b611c7290919063ffffffff16565b611c7290919063ffffffff16565b611cf890919063ffffffff16565b600d54611d4290919063ffffffff16565b90505b90565b600d5481565b611a51611a4c3361101d565b610aa7565b611a59610d50565b565b600a5481565b611a69611228565b611adb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611ae481612154565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b4157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611be4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f646576656c6f7065722063616e2774206265206164647265737328302900000081525060200191505060405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611c6a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061229a565b905092915050565b600080831415611c855760009050611cf2565b6000828402905082848281611c9657fe5b0414611ced576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806127e36021913960400191505060405180910390fd5b809150505b92915050565b6000611d3a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061235a565b905092915050565b600080828401905083811015611dc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b611e96838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612420565b505050565b611eb081600154611c2890919063ffffffff16565b600181905550611f0881600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c2890919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611ff357600080fd5b505af1158015612007573d6000803e3d6000fd5b505050506040513d602081101561201d57600080fd5b81019080805190602001909291905050505050565b60008183106120415781612043565b825b905092915050565b600033905090565b61206881600154611d4290919063ffffffff16565b6001819055506120c081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4290919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121513330836000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661266b909392919063ffffffff16565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156121da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806127bd6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000838311158290612347576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561230c5780820151818401526020810190506122f1565b50505050905090810190601f1680156123395780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290612406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156123cb5780820151818401526020810190506123b0565b50505050905090810190601f1680156123f85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161241257fe5b049050809150509392505050565b61243f8273ffffffffffffffffffffffffffffffffffffffff16612771565b6124b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061250057805182526020820191506020810190506020830392506124dd565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612562576040519150601f19603f3d011682016040523d82523d6000602084013e612567565b606091505b5091509150816125df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115612665578080602001905160208110156125fe57600080fd5b8101908080519060200190929190505050612664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612804602a913960400191505060405180910390fd5b5b50505050565b61276b848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612420565b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b82141580156127b35750808214155b9250505091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564726577617264446973747269627574696f6e2063616e277420626520616464726573732830292021a265627a7a7231582019b723964a6f9a4dda976fca258384a9a14b59cf4c6f04d1866dc63741d9cbf364736f6c63430005110032
Deployed Bytecode Sourcemap
22506:4556:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22506:4556:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24703:399;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24703:399:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23159:42;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23159:42:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21188:295;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21188:295:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;21790:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22776:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25812:154;;;:::i;:::-;;25453:246;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25453:246:0;;;;;;;;;;;;;;;;;:::i;:::-;;22619:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26163:302;;;:::i;:::-;;21889:110;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21889:110:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9253:140;;;:::i;:::-;;22690:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;22977:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24136:131;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23095:57;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23095:57:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22891:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8442:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8808:94;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;22845:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21624:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;25193:252;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25193:252:0;;;;;;;;;;;;;;;;;:::i;:::-;;26692:367;;;:::i;:::-;;23015:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22588:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;24275:420;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23053:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25707:97;;;:::i;:::-;;22937:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9548:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9548:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;25974:181;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25974:181:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;24703:399;24757:7;24799:12;;24781:15;:30;24777:318;;;24852:175;25010:7;:16;25018:7;25010:16;;;;;;;;;;;;;;;;24852:131;24978:4;24852:99;24897:53;24918:22;:31;24941:7;24918:31;;;;;;;;;;;;;;;;24897:16;:14;:16::i;:::-;:20;;:53;;;;:::i;:::-;24852:18;24862:7;24852:9;:18::i;:::-;:44;;:99;;;;:::i;:::-;:125;;:131;;;;:::i;:::-;:157;;:175;;;;:::i;:::-;24828:199;;;;24777:318;25067:7;:16;25075:7;25067:16;;;;;;;;;;;;;;;;25060:23;;24703:399;;;;:::o;23159:42::-;;;;;;;;;;;;;;;;;:::o;21188:295::-;8654:9;:7;:9::i;:::-;8646:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21354:1;21323:33;;:19;:33;;;;21301:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21456:19;21435:18;;:40;;;;;;;;;;;;;;;;;;21188:295;:::o;21790:91::-;21834:7;21861:12;;21854:19;;21790:91;:::o;22776:41::-;22811:6;22776:41;:::o;25812:154::-;23488:9;;;;;;;;;;;23474:23;;:10;:23;;;23466:32;;;;;;25875:52;25899:9;;;;;;;;;;;25910:16;;25875:10;;;;;;;;;;;:23;;;;:52;;;;;:::i;:::-;25957:1;25938:16;:20;;;;25812:154::o;25453:246::-;25525:10;23717:12;;23699:15;:30;23695:414;;;23769:16;:14;:16::i;:::-;23746:20;:39;;;;23817:26;:24;:26::i;:::-;23800:14;:43;;;;23881:1;23862:21;;:7;:21;;;23858:240;;23923:15;23930:7;23923:6;:15::i;:::-;23904:7;:16;23912:7;23904:16;;;;;;;;;;;;;;;:34;;;;23976:33;24005:3;23976:24;23997:2;23976:7;:16;23984:7;23976:16;;;;;;;;;;;;;;;;:20;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;23957:16;:52;;;;24062:20;;24028:22;:31;24051:7;24028:31;;;;;;;;;;;;;;;:54;;;;23858:240;23695:414;26641:9;;26623:15;:27;26615:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25590:1;25581:6;:10;25573:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25624:22;25639:6;25624:14;:22::i;:::-;25672:10;25662:29;;;25684:6;25662:29;;;;;;;;;;;;;;;;;;25453:246;;:::o;22619:35::-;;;;:::o;26163:302::-;26204:10;23717:12;;23699:15;:30;23695:414;;;23769:16;:14;:16::i;:::-;23746:20;:39;;;;23817:26;:24;:26::i;:::-;23800:14;:43;;;;23881:1;23862:21;;:7;:21;;;23858:240;;23923:15;23930:7;23923:6;:15::i;:::-;23904:7;:16;23912:7;23904:16;;;;;;;;;;;;;;;:34;;;;23976:33;24005:3;23976:24;23997:2;23976:7;:16;23984:7;23976:16;;;;;;;;;;;;;;;;:20;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;23957:16;:52;;;;24062:20;;24028:22;:31;24051:7;24028:31;;;;;;;;;;;;;;;:54;;;;23858:240;23695:414;26641:9;;26623:15;:27;26615:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26238:14;26255:18;26262:10;26255:6;:18::i;:::-;26238:35;;26297:1;26288:6;:10;26284:174;;;26337:1;26315:7;:19;26323:10;26315:19;;;;;;;;;;;;;;;:23;;;;26353:43;26377:10;26389:6;26353:10;;;;;;;;;;;:23;;;;:43;;;;;:::i;:::-;26427:10;26416:30;;;26439:6;26416:30;;;;;;;;;;;;;;;;;;26284:174;26675:1;26163:302;:::o;21889:110::-;21946:7;21973:9;:18;21983:7;21973:18;;;;;;;;;;;;;;;;21966:25;;21889:110;;;:::o;9253:140::-;8654:9;:7;:9::i;:::-;8646:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9352:1;9315:40;;9336:6;;;;;;;;;;;9315:40;;;;;;;;;;;;9383:1;9366:6;;:19;;;;;;;;;;;;;;;;;;9253:140::o;22690:77::-;;;;;;;;;;;;;:::o;22977:29::-;;;;:::o;24136:131::-;24193:7;24220:39;24229:15;24246:12;;24220:8;:39::i;:::-;24213:46;;24136:131;:::o;23095:57::-;;;;;;;;;;;;;;;;;:::o;22891:37::-;;;;:::o;8442:79::-;8480:7;8507:6;;;;;;;;;;;8500:13;;8442:79;:::o;8808:94::-;8848:4;8888:6;;;;;;;;;;;8872:22;;:12;:10;:12::i;:::-;:22;;;8865:29;;8808:94;:::o;22845:39::-;;;;:::o;21624:68::-;;;;;;;;;;;;;:::o;25193:252::-;25262:10;23717:12;;23699:15;:30;23695:414;;;23769:16;:14;:16::i;:::-;23746:20;:39;;;;23817:26;:24;:26::i;:::-;23800:14;:43;;;;23881:1;23862:21;;:7;:21;;;23858:240;;23923:15;23930:7;23923:6;:15::i;:::-;23904:7;:16;23912:7;23904:16;;;;;;;;;;;;;;;:34;;;;23976:33;24005:3;23976:24;23997:2;23976:7;:16;23984:7;23976:16;;;;;;;;;;;;;;;;:20;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;23957:16;:52;;;;24062:20;;24028:22;:31;24051:7;24028:31;;;;;;;;;;;;;;;:54;;;;23858:240;23695:414;26641:9;;26623:15;:27;26615:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26530:12;;26512:15;:30;26504:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25345:1;25336:6;:10;25328:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25376:19;25388:6;25376:11;:19::i;:::-;25418:10;25411:26;;;25430:6;25411:26;;;;;;;;;;;;;;;;;;25193:252;;:::o;26692:367::-;23488:9;;;;;;;;;;;23474:23;;:10;:23;;;23466:32;;;;;;26762:1;23717:12;;23699:15;:30;23695:414;;;23769:16;:14;:16::i;:::-;23746:20;:39;;;;23817:26;:24;:26::i;:::-;23800:14;:43;;;;23881:1;23862:21;;:7;:21;;;23858:240;;23923:15;23930:7;23923:6;:15::i;:::-;23904:7;:16;23912:7;23904:16;;;;;;;;;;;;;;;:34;;;;23976:33;24005:3;23976:24;23997:2;23976:7;:16;23984:7;23976:16;;;;;;;;;;;;;;;;:20;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;23957:16;:52;;;;24062:20;;24028:22;:31;24051:7;24028:31;;;;;;;;;;;;;;;:54;;;;23858:240;23695:414;26785:6;;;;;;;;;;;26777:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26840:24;22811:6;26840:10;;:14;;:24;;;;:::i;:::-;26827:10;:37;;;;26875:10;;;;;;;;;;;:15;;;26913:4;26933:43;26965:10;;26933:27;26956:3;26933:18;26948:2;26933:10;;:14;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;:31;;:43;;;;:::i;:::-;26875:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26875:112:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26875:112:0;;;;27007:5;26998:6;;:14;;;;;;;;;;;;;;;;;;27028:23;27040:10;;27028:23;;;;;;;;;;;;;;;;;;23509:1;26692:367::o;23015:29::-;;;;:::o;22588:24::-;;;;;;;;;;;;;:::o;24275:420::-;24322:7;24363:1;24346:13;:11;:13::i;:::-;:18;24342:78;;;24388:20;;24381:27;;;;24342:78;24450:237;24493:179;24658:13;:11;:13::i;:::-;24493:138;24626:4;24493:106;24588:10;;24493:68;24546:14;;24493:26;:24;:26::i;:::-;:52;;:68;;;;:::i;:::-;:94;;:106;;;;:::i;:::-;:132;;:138;;;;:::i;:::-;:164;;:179;;;;:::i;:::-;24450:20;;:24;;:237;;;;:::i;:::-;24430:257;;24275:420;;:::o;23053:35::-;;;;:::o;25707:97::-;25743:31;25752:21;25762:10;25752:9;:21::i;:::-;25743:8;:31::i;:::-;25785:11;:9;:11::i;:::-;25707:97::o;22937:31::-;;;;:::o;9548:109::-;8654:9;:7;:9::i;:::-;8646:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9621:28;9640:8;9621:18;:28::i;:::-;9548:109;:::o;25974:181::-;23488:9;;;;;;;;;;;23474:23;;:10;:23;;;23466:32;;;;;;26078:1;26056:24;;:10;:24;;;;26048:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26137:10;26125:9;;:22;;;;;;;;;;;;;;;;;;25974:181;:::o;2118:136::-;2176:7;2203:43;2207:1;2210;2203:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2196:50;;2118:136;;;;:::o;3068:471::-;3126:7;3376:1;3371;:6;3367:47;;;3401:1;3394:8;;;;3367:47;3426:9;3442:1;3438;:5;3426:17;;3471:1;3466;3462;:5;;;;;;:10;3454:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3530:1;3523:8;;;3068:471;;;;;:::o;4007:132::-;4065:7;4092:39;4096:1;4099;4092:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4085:46;;4007:132;;;;:::o;1662:181::-;1720:7;1740:9;1756:1;1752;:5;1740:17;;1781:1;1776;:6;;1768:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1834:1;1827:8;;;1662:181;;;;:::o;17023:247::-;17140:122;17173:5;17216;:14;;;:23;;;;17241:2;17245:5;17193:58;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;17193:58:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;17193:58:0;17140:18;:122::i;:::-;17023:247;;;:::o;22243:256::-;22310:24;22327:6;22310:12;;:16;;:24;;;;:::i;:::-;22295:12;:39;;;;22369:33;22395:6;22369:9;:21;22379:10;22369:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;22345:9;:21;22355:10;22345:21;;;;;;;;;;;;;;;:57;;;;22461:1;;;;;;;;;;;:10;;;22472;22484:6;22461:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22461:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22461:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22461:30:0;;;;;;;;;;;;;;;;;22243:256;:::o;374:106::-;432:7;463:1;459;:5;:13;;471:1;459:13;;;467:1;459:13;452:20;;374:106;;;;:::o;7167:98::-;7212:15;7247:10;7240:17;;7167:98;:::o;22007:228::-;22071:24;22088:6;22071:12;;:16;;:24;;;;:::i;:::-;22056:12;:39;;;;22130:33;22156:6;22130:9;:21;22140:10;22130:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;22106:9;:21;22116:10;22106:21;;;;;;;;;;;;;;;:57;;;;22174:53;22193:10;22213:4;22220:6;22174:1;;;;;;;;;;;:18;;;;:53;;;;;;:::i;:::-;22007:228;:::o;9763:266::-;9871:1;9851:22;;:8;:22;;;;9829:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9984:8;9955:38;;9976:6;;;;;;;;;;;9955:38;;;;;;;;;;;;10013:8;10004:6;;:17;;;;;;;;;;;;;;;;;;9763:266;:::o;2591:226::-;2711:7;2744:1;2739;:6;;2747:12;2731:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2731:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2771:9;2787:1;2783;:5;2771:17;;2808:1;2801:8;;;2591:226;;;;;:::o;4669:379::-;4789:7;4888:1;4884;:5;4891:12;4876:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4876:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4915:9;4931:1;4927;:5;;;;;;4915:17;;5039:1;5032:8;;;4669:379;;;;;:::o;19633:1176::-;20237:27;20245:5;20237:25;;;:27::i;:::-;20229:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20374:12;20388:23;20423:5;20415:19;;20435:4;20415:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;20415:25:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;20373:67:0;;;;20459:7;20451:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20540:1;20520:10;:17;:21;20516:286;;;20693:10;20682:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20682:30:0;;;;;;;;;;;;;;;;20656:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20516:286;19633:1176;;;;:::o;17278:284::-;17422:132;17455:5;17498;:18;;;:27;;;;17527:4;17533:2;17537:5;17475:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;17475:68:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;17475:68:0;17422:18;:132::i;:::-;17278:284;;;;:::o;13721:850::-;13781:4;14234:16;14269:19;14301:66;14269:98;;;;14483:7;14471:20;14459:32;;14532:3;14520:15;;:8;:15;;:42;;;;;14551:11;14539:8;:23;;14520:42;14512:51;;;;13721:850;;;:::o
Swarm Source
bzzr://19b723964a6f9a4dda976fca258384a9a14b59cf4c6f04d1866dc63741d9cbf3
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.