More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 167 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 13861441 | 1048 days ago | IN | 0 ETH | 0.00669044 | ||||
Deposit | 13317285 | 1134 days ago | IN | 0 ETH | 0.0088106 | ||||
Deposit | 13282500 | 1139 days ago | IN | 0 ETH | 0.00460234 | ||||
Withdraw | 13267758 | 1141 days ago | IN | 0 ETH | 0.00486776 | ||||
Withdraw | 13263312 | 1142 days ago | IN | 0 ETH | 0.01125149 | ||||
Withdraw | 13262902 | 1142 days ago | IN | 0 ETH | 0.01195687 | ||||
Deposit | 13262086 | 1142 days ago | IN | 0 ETH | 0.00393528 | ||||
Deposit | 13262070 | 1142 days ago | IN | 0 ETH | 0.00383659 | ||||
Deposit | 13261889 | 1142 days ago | IN | 0 ETH | 0.00283908 | ||||
Deposit | 13215290 | 1149 days ago | IN | 0 ETH | 0.00546502 | ||||
Deposit | 13202442 | 1151 days ago | IN | 0 ETH | 0.00498254 | ||||
Deposit | 13194467 | 1153 days ago | IN | 0 ETH | 0.0067896 | ||||
Deposit | 13112970 | 1165 days ago | IN | 0 ETH | 0.0071196 | ||||
Deposit | 13112965 | 1165 days ago | IN | 0 ETH | 0.00702925 | ||||
Deposit | 13105761 | 1166 days ago | IN | 0 ETH | 0.00459268 | ||||
Deposit | 13067734 | 1172 days ago | IN | 0 ETH | 0.00348026 | ||||
Deposit | 13062545 | 1173 days ago | IN | 0 ETH | 0.00490256 | ||||
Deposit | 13054435 | 1174 days ago | IN | 0 ETH | 0.00275545 | ||||
Deposit | 13029377 | 1178 days ago | IN | 0 ETH | 0.0028262 | ||||
Deposit | 13011716 | 1181 days ago | IN | 0 ETH | 0.00552063 | ||||
Deposit | 12984980 | 1185 days ago | IN | 0 ETH | 0.00254349 | ||||
Deposit | 12974656 | 1187 days ago | IN | 0 ETH | 0.0043998 | ||||
Deposit | 12971670 | 1187 days ago | IN | 0 ETH | 0.00401471 | ||||
Deposit | 12970782 | 1187 days ago | IN | 0 ETH | 0.00226046 | ||||
Deposit | 12956675 | 1189 days ago | IN | 0 ETH | 0.00244642 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
12691887 | 1231 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Name:
FarmUniswap
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-06-23 */ // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.7.0; library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue( target, data, value, "Address: low-level call with value failed" ); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require( address(this).balance >= value, "Address: insufficient balance for call" ); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue( address target, bytes memory data, uint256 weiValue, string memory errorMessage ) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: weiValue}(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } 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) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); 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) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } 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, "SafeERC20: decreased allowance below zero" ); _callOptionalReturn( token, abi.encodeWithSelector( token.approve.selector, spender, newAllowance ) ); } function _callOptionalReturn(IERC20 token, bytes memory data) private { bytes memory returndata = address(token).functionCall( data, "SafeERC20: low-level call failed" ); if (returndata.length > 0) { require( abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed" ); } } } library TransferHelper { function safeApprove( address token, address to, uint256 value ) internal { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); require( success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: APPROVE_FAILED" ); } function safeTransfer( address token, address to, uint256 value ) internal { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); require( success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: TRANSFER_FAILED" ); } function safeTransferFrom( address token, address from, address to, uint256 value ) internal { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require( success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: TRANSFER_FROM_FAILED" ); } } 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 ); } interface IFarmFactory { function userEnteredFarm(address _user) external; function userLeftFarm(address _user) external; function registerFarm(address _farmAddress) external; } contract FarmUniswap { using SafeMath for uint256; using SafeERC20 for IERC20; /// @notice information stuct on each user than stakes LP tokens. struct UserInfo { uint256 amount; // How many LP tokens the user has provided. uint256 rewardDebt; // Reward debt. } /// @notice all the settings for this farm in one struct struct FarmInfo { IERC20 lpToken; IERC20 rewardToken; uint256 startBlock; uint256 blockReward; uint256 bonusEndBlock; uint256 bonus; uint256 endBlock; uint256 lastRewardBlock; // Last block number that reward distribution occurs. uint256 accRewardPerShare; // Accumulated Rewards per share, times 1e12 uint256 farmableSupply; // set in init, total amount of tokens farmable uint256 numFarmers; } /// @notice farm type id. Useful for back-end systems to know how to read the contract (ABI) as we plan to launch multiple farm types uint256 public farmType = 1; IFarmFactory public factory; address public farmGenerator; FarmInfo public farmInfo; /// @notice information on each user than stakes LP tokens mapping(address => UserInfo) public userInfo; event Deposit(address indexed user, uint256 amount); event Withdraw(address indexed user, uint256 amount); event EmergencyWithdraw(address indexed user, uint256 amount); constructor(address _factory, address _farmGenerator) public { factory = IFarmFactory(_factory); farmGenerator = _farmGenerator; } /** * @notice initialize the farming contract. This is called only once upon farm creation and the FarmGenerator ensures the farm has the correct paramaters */ function init( IERC20 _rewardToken, uint256 _amount, IERC20 _lpToken, uint256 _blockReward, uint256 _startBlock, uint256 _endBlock, uint256 _bonusEndBlock, uint256 _bonus ) public { address msgSender = _msgSender(); require(msgSender == address(farmGenerator), "FORBIDDEN"); TransferHelper.safeTransferFrom( address(_rewardToken), msgSender, address(this), _amount ); farmInfo.rewardToken = _rewardToken; farmInfo.startBlock = _startBlock; farmInfo.blockReward = _blockReward; farmInfo.bonusEndBlock = _bonusEndBlock; farmInfo.bonus = _bonus; uint256 lastRewardBlock = block.number > _startBlock ? block.number : _startBlock; farmInfo.lpToken = _lpToken; farmInfo.lastRewardBlock = lastRewardBlock; farmInfo.accRewardPerShare = 0; farmInfo.endBlock = _endBlock; farmInfo.farmableSupply = _amount; } /** * @notice Gets the reward multiplier over the given _from_block until _to block * @param _from_block the start of the period to measure rewards for * @param _to the end of the period to measure rewards for * @return The weighted multiplier for the given period */ function getMultiplier(uint256 _from_block, uint256 _to) public view returns (uint256) { uint256 _from = _from_block >= farmInfo.startBlock ? _from_block : farmInfo.startBlock; uint256 to = farmInfo.endBlock > _to ? _to : farmInfo.endBlock; // if (to <= farmInfo.bonusEndBlock) { return to.sub(_from).mul(farmInfo.bonus); } else if (_from >= farmInfo.bonusEndBlock) { return to.sub(_from); } else { return farmInfo.bonusEndBlock.sub(_from).mul(farmInfo.bonus).add( to.sub(farmInfo.bonusEndBlock) ); } } /** * @notice function to see accumulated balance of reward token for specified user * @param _user the user for whom unclaimed tokens will be shown * @return total amount of withdrawable reward tokens */ function pendingReward(address _user) external view returns (uint256) { UserInfo storage user = userInfo[_user]; uint256 accRewardPerShare = farmInfo.accRewardPerShare; uint256 lpSupply = farmInfo.lpToken.balanceOf(address(this)); if (block.number > farmInfo.lastRewardBlock && lpSupply != 0) { uint256 multiplier = getMultiplier(farmInfo.lastRewardBlock, block.number); uint256 tokenReward = multiplier.mul(farmInfo.blockReward); accRewardPerShare = accRewardPerShare.add( tokenReward.mul(1e12).div(lpSupply) ); } return user.amount.mul(accRewardPerShare).div(1e12).sub(user.rewardDebt); } /** * @notice updates pool information to be up to date to the current block */ function updatePool() public { if (block.number <= farmInfo.lastRewardBlock) { return; } uint256 lpSupply = farmInfo.lpToken.balanceOf(address(this)); if (lpSupply == 0) { farmInfo.lastRewardBlock = block.number < farmInfo.endBlock ? block.number : farmInfo.endBlock; return; } uint256 multiplier = getMultiplier(farmInfo.lastRewardBlock, block.number); uint256 tokenReward = multiplier.mul(farmInfo.blockReward); farmInfo.accRewardPerShare = farmInfo.accRewardPerShare.add( tokenReward.mul(1e12).div(lpSupply) ); farmInfo.lastRewardBlock = block.number < farmInfo.endBlock ? block.number : farmInfo.endBlock; } /** * @notice deposit LP token function for msgSender * @param _amount the total deposit amount */ function deposit(uint256 _amount) public { address msgSender = _msgSender(); UserInfo storage user = userInfo[msgSender]; updatePool(); if (user.amount > 0) { uint256 pending = user.amount.mul(farmInfo.accRewardPerShare).div(1e12).sub( user.rewardDebt ); safeRewardTransfer(msgSender, pending); } if (user.amount == 0 && _amount > 0) { factory.userEnteredFarm(msgSender); farmInfo.numFarmers = farmInfo.numFarmers.add(1); } farmInfo.lpToken.safeTransferFrom( address(msgSender), address(this), _amount ); user.amount = user.amount.add(_amount); user.rewardDebt = user.amount.mul(farmInfo.accRewardPerShare).div(1e12); emit Deposit(msgSender, _amount); } /** * @notice withdraw LP token function for msgSender * @param _amount the total withdrawable amount */ function withdraw(uint256 _amount) public { address msgSender = _msgSender(); UserInfo storage user = userInfo[msgSender]; require(user.amount >= _amount, "INSUFFICIENT"); updatePool(); if (user.amount == _amount && _amount > 0) { factory.userLeftFarm(msgSender); farmInfo.numFarmers = farmInfo.numFarmers.sub(1); } uint256 pending = user.amount.mul(farmInfo.accRewardPerShare).div(1e12).sub( user.rewardDebt ); safeRewardTransfer(msgSender, pending); user.amount = user.amount.sub(_amount); user.rewardDebt = user.amount.mul(farmInfo.accRewardPerShare).div(1e12); farmInfo.lpToken.safeTransfer(address(msgSender), _amount); emit Withdraw(msgSender, _amount); } /** * @notice emergency functoin to withdraw LP tokens and forego harvest rewards. Important to protect users LP tokens */ function emergencyWithdraw() public { address msgSender = _msgSender(); UserInfo storage user = userInfo[msgSender]; farmInfo.lpToken.safeTransfer(address(msgSender), user.amount); emit EmergencyWithdraw(msgSender, user.amount); if (user.amount > 0) { factory.userLeftFarm(msgSender); farmInfo.numFarmers = farmInfo.numFarmers.sub(1); } user.amount = 0; user.rewardDebt = 0; } /** * @notice Safe reward transfer function, just in case a rounding error causes pool to not have enough reward tokens * @param _to the user address to transfer tokens to * @param _amount the total amount of tokens to transfer */ function safeRewardTransfer(address _to, uint256 _amount) internal { uint256 rewardBal = farmInfo.rewardToken.balanceOf(address(this)); if (_amount > rewardBal) { farmInfo.rewardToken.transfer(_to, rewardBal); } else { farmInfo.rewardToken.transfer(_to, _amount); } } function _msgSender() internal view virtual returns (address payable) { return msg.sender; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_farmGenerator","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"contract IFarmFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"farmGenerator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"farmInfo","outputs":[{"internalType":"contract IERC20","name":"lpToken","type":"address"},{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"blockReward","type":"uint256"},{"internalType":"uint256","name":"bonusEndBlock","type":"uint256"},{"internalType":"uint256","name":"bonus","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"lastRewardBlock","type":"uint256"},{"internalType":"uint256","name":"accRewardPerShare","type":"uint256"},{"internalType":"uint256","name":"farmableSupply","type":"uint256"},{"internalType":"uint256","name":"numFarmers","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"farmType","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_from_block","type":"uint256"},{"internalType":"uint256","name":"_to","type":"uint256"}],"name":"getMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_rewardToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"contract IERC20","name":"_lpToken","type":"address"},{"internalType":"uint256","name":"_blockReward","type":"uint256"},{"internalType":"uint256","name":"_startBlock","type":"uint256"},{"internalType":"uint256","name":"_endBlock","type":"uint256"},{"internalType":"uint256","name":"_bonusEndBlock","type":"uint256"},{"internalType":"uint256","name":"_bonus","type":"uint256"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"pendingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updatePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600160005534801561001557600080fd5b506040516119053803806119058339818101604052604081101561003857600080fd5b508051602090910151600180546001600160a01b039384166001600160a01b031991821617909155600280549390921692169190911790556118868061007f6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c8063b20268c211610081578063db2e21bc1161005b578063db2e21bc146102ae578063e3161ddd146102b6578063f40f0f52146102be576100d4565b8063b20268c214610229578063b6b55f2514610289578063c45a0155146102a6576100d4565b80632e1a7d4d116100b25780632e1a7d4d146101cd5780632ebed9ec146101ec5780638dbb1e3a14610206576100d4565b80631959a002146100d95780631d49d66c146101255780632dd999961461019c575b600080fd5b61010c600480360360208110156100ef57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102f1565b6040805192835260208301919091528051918290030190f35b61012d61030a565b6040805173ffffffffffffffffffffffffffffffffffffffff9c8d1681529a909b1660208b0152898b01989098526060890196909652608088019490945260a087019290925260c086015260e08501526101008401526101208301526101408201529051908190036101600190f35b6101a461034b565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101ea600480360360208110156101e357600080fd5b5035610367565b005b6101f46105af565b60408051918252519081900360200190f35b6101f46004803603604081101561021c57600080fd5b50803590602001356105b5565b6101ea600480360361010081101561024057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135169060608101359060808101359060a08101359060c08101359060e0013561065b565b6101ea6004803603602081101561029f57600080fd5b50356107c2565b6101a4610995565b6101ea6109b1565b6101ea610af9565b6101f4600480360360208110156102d457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c2c565b600e602052600090815260409020805460019091015482565b600354600454600554600654600754600854600954600a54600b54600c54600d5473ffffffffffffffffffffffffffffffffffffffff9a8b169a909916988b565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b6000610371610d73565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600e6020526040902080549192509083111561040a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f494e53554646494349454e540000000000000000000000000000000000000000604482015290519081900360640190fd5b610412610af9565b8054831480156104225750600083115b156104c657600154604080517f76cb255400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152915191909216916376cb255491602480830192600092919082900301818387803b15801561049b57600080fd5b505af11580156104af573d6000803e3d6000fd5b5050600d546104c2925090506001610d77565b600d555b600061050182600101546104fb64e8d4a510006104f56003600801548760000154610dc090919063ffffffff16565b90610e33565b90610d77565b905061050d8382610e75565b81546105199085610d77565b808355600b546105349164e8d4a51000916104f59190610dc0565b600183015560035461055d9073ffffffffffffffffffffffffffffffffffffffff168486611084565b60408051858152905173ffffffffffffffffffffffffffffffffffffffff8516917f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364919081900360200190a250505050565b60005481565b6000806003600201548410156105cd576005546105cf565b835b9050600083600360060154116105e7576009546105e9565b835b60075490915081116106155760085461060c906106068385610d77565b90610dc0565b92505050610655565b60075482106106285761060c8183610d77565b60075461060c9061063a908390610d77565b60085460075461064f91906106069087610d77565b90611111565b92915050565b6000610665610d73565b60025490915073ffffffffffffffffffffffffffffffffffffffff8083169116146106f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f464f5242494444454e0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6106fd8982308b611185565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8b16179055600585905560068690556007839055600882905560004386106107605785610762565b435b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9a909a1699909917909855505050600a949094556000600b55600955505050600c5550565b60006107cc610d73565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600e602052604090209091506107fc610af9565b80541561084057600061083282600101546104fb64e8d4a510006104f56003600801548760000154610dc090919063ffffffff16565b905061083e8382610e75565b505b805415801561084f5750600083115b156108f357600154604080517f79cdf99b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152915191909216916379cdf99b91602480830192600092919082900301818387803b1580156108c857600080fd5b505af11580156108dc573d6000803e3d6000fd5b5050600d546108ef925090506001611111565b600d555b6003546109189073ffffffffffffffffffffffffffffffffffffffff16833086611355565b80546109249084611111565b808255600b5461093f9164e8d4a51000916104f59190610dc0565b600182015560408051848152905173ffffffffffffffffffffffffffffffffffffffff8416917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a2505050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60006109bb610d73565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600e60205260409020805460035493945090926109f89216908490611084565b8054604080519182525173ffffffffffffffffffffffffffffffffffffffff8416917f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd9695919081900360200190a2805415610aeb57600154604080517f76cb255400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152915191909216916376cb255491602480830192600092919082900301818387803b158015610ac057600080fd5b505af1158015610ad4573d6000803e3d6000fd5b5050600d54610ae7925090506001610d77565b600d555b600080825560019091015550565b600a544311610b0757610c2a565b600354604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015610b7857600080fd5b505afa158015610b8c573d6000803e3d6000fd5b505050506040513d6020811015610ba257600080fd5b5051905080610bc7576009544310610bbc57600954610bbe565b435b600a5550610c2a565b6000610bd8600360070154436105b5565b600654909150600090610bec908390610dc0565b9050610c0d610c04846104f58464e8d4a51000610dc0565b600b5490611111565b600b556009544310610c2157600954610c23565b435b600a555050505b565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600e60209081526040808320600b5460035483517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529351959692959194879491909316926370a0823192602480840193829003018186803b158015610cb557600080fd5b505afa158015610cc9573d6000803e3d6000fd5b505050506040513d6020811015610cdf57600080fd5b5051600a5490915043118015610cf457508015155b15610d42576000610d0a600360070154436105b5565b600654909150600090610d1e908390610dc0565b9050610d3d610d36846104f58464e8d4a51000610dc0565b8590611111565b935050505b610d6a83600101546104fb64e8d4a510006104f5868860000154610dc090919063ffffffff16565b95945050505050565b3390565b6000610db983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113f0565b9392505050565b600082610dcf57506000610655565b82820282848281610ddc57fe5b0414610db9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117e26021913960400191505060405180910390fd5b6000610db983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114a1565b60048054604080517f70a0823100000000000000000000000000000000000000000000000000000000815230938101939093525160009273ffffffffffffffffffffffffffffffffffffffff909216916370a08231916024808301926020929190829003018186803b158015610eea57600080fd5b505afa158015610efe573d6000803e3d6000fd5b505050506040513d6020811015610f1457600080fd5b5051905080821115610fd25760048054604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811694820194909452602481018590529051929091169163a9059cbb916044808201926020929091908290030181600087803b158015610fa057600080fd5b505af1158015610fb4573d6000803e3d6000fd5b505050506040513d6020811015610fca57600080fd5b5061107f9050565b60048054604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811694820194909452602481018690529051929091169163a9059cbb916044808201926020929091908290030181600087803b15801561105257600080fd5b505af1158015611066573d6000803e3d6000fd5b505050506040513d602081101561107c57600080fd5b50505b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261107f908490611520565b600082820183811015610db957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061126357805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611226565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112c5576040519150601f19603f3d011682016040523d82523d6000602084013e6112ca565b606091505b50915091508180156112f85750805115806112f857508080602001905160208110156112f557600080fd5b50515b61134d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061182d6024913960400191505060405180910390fd5b505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526113ea908590611520565b50505050565b60008184841115611499576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561145e578181015183820152602001611446565b50505050905090810190601f16801561148b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000818361150a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815283516024840152835190928392604490910191908501908083836000831561145e578181015183820152602001611446565b50600083858161151657fe5b0495945050505050565b6060611582826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166115f89092919063ffffffff16565b80519091501561107f578080602001905160208110156115a157600080fd5b505161107f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611803602a913960400191505060405180910390fd5b6060611607848460008561160f565b949350505050565b606061161a856117db565b61168557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106116ef57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016116b2565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611751576040519150601f19603f3d011682016040523d82523d6000602084013e611756565b606091505b5091509150811561176a5791506116079050565b80511561177a5780518082602001fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815286516024840152865187939192839260440191908501908083836000831561145e578181015183820152602001611446565b3b15159056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a264697066735822122098ecbc79f19e35cce6d0060ae4107969a2f9998698840eb9497385bde0cf593964736f6c634300060c0033000000000000000000000000189e4485eb47875e4c344f2290fbeb4b4e66179900000000000000000000000073217ee72fdedf763bacd83acf60b4218f6ff8af
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100d45760003560e01c8063b20268c211610081578063db2e21bc1161005b578063db2e21bc146102ae578063e3161ddd146102b6578063f40f0f52146102be576100d4565b8063b20268c214610229578063b6b55f2514610289578063c45a0155146102a6576100d4565b80632e1a7d4d116100b25780632e1a7d4d146101cd5780632ebed9ec146101ec5780638dbb1e3a14610206576100d4565b80631959a002146100d95780631d49d66c146101255780632dd999961461019c575b600080fd5b61010c600480360360208110156100ef57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102f1565b6040805192835260208301919091528051918290030190f35b61012d61030a565b6040805173ffffffffffffffffffffffffffffffffffffffff9c8d1681529a909b1660208b0152898b01989098526060890196909652608088019490945260a087019290925260c086015260e08501526101008401526101208301526101408201529051908190036101600190f35b6101a461034b565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101ea600480360360208110156101e357600080fd5b5035610367565b005b6101f46105af565b60408051918252519081900360200190f35b6101f46004803603604081101561021c57600080fd5b50803590602001356105b5565b6101ea600480360361010081101561024057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135169060608101359060808101359060a08101359060c08101359060e0013561065b565b6101ea6004803603602081101561029f57600080fd5b50356107c2565b6101a4610995565b6101ea6109b1565b6101ea610af9565b6101f4600480360360208110156102d457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c2c565b600e602052600090815260409020805460019091015482565b600354600454600554600654600754600854600954600a54600b54600c54600d5473ffffffffffffffffffffffffffffffffffffffff9a8b169a909916988b565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b6000610371610d73565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600e6020526040902080549192509083111561040a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f494e53554646494349454e540000000000000000000000000000000000000000604482015290519081900360640190fd5b610412610af9565b8054831480156104225750600083115b156104c657600154604080517f76cb255400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152915191909216916376cb255491602480830192600092919082900301818387803b15801561049b57600080fd5b505af11580156104af573d6000803e3d6000fd5b5050600d546104c2925090506001610d77565b600d555b600061050182600101546104fb64e8d4a510006104f56003600801548760000154610dc090919063ffffffff16565b90610e33565b90610d77565b905061050d8382610e75565b81546105199085610d77565b808355600b546105349164e8d4a51000916104f59190610dc0565b600183015560035461055d9073ffffffffffffffffffffffffffffffffffffffff168486611084565b60408051858152905173ffffffffffffffffffffffffffffffffffffffff8516917f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364919081900360200190a250505050565b60005481565b6000806003600201548410156105cd576005546105cf565b835b9050600083600360060154116105e7576009546105e9565b835b60075490915081116106155760085461060c906106068385610d77565b90610dc0565b92505050610655565b60075482106106285761060c8183610d77565b60075461060c9061063a908390610d77565b60085460075461064f91906106069087610d77565b90611111565b92915050565b6000610665610d73565b60025490915073ffffffffffffffffffffffffffffffffffffffff8083169116146106f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f464f5242494444454e0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6106fd8982308b611185565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8b16179055600585905560068690556007839055600882905560004386106107605785610762565b435b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9a909a1699909917909855505050600a949094556000600b55600955505050600c5550565b60006107cc610d73565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600e602052604090209091506107fc610af9565b80541561084057600061083282600101546104fb64e8d4a510006104f56003600801548760000154610dc090919063ffffffff16565b905061083e8382610e75565b505b805415801561084f5750600083115b156108f357600154604080517f79cdf99b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152915191909216916379cdf99b91602480830192600092919082900301818387803b1580156108c857600080fd5b505af11580156108dc573d6000803e3d6000fd5b5050600d546108ef925090506001611111565b600d555b6003546109189073ffffffffffffffffffffffffffffffffffffffff16833086611355565b80546109249084611111565b808255600b5461093f9164e8d4a51000916104f59190610dc0565b600182015560408051848152905173ffffffffffffffffffffffffffffffffffffffff8416917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a2505050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60006109bb610d73565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600e60205260409020805460035493945090926109f89216908490611084565b8054604080519182525173ffffffffffffffffffffffffffffffffffffffff8416917f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd9695919081900360200190a2805415610aeb57600154604080517f76cb255400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152915191909216916376cb255491602480830192600092919082900301818387803b158015610ac057600080fd5b505af1158015610ad4573d6000803e3d6000fd5b5050600d54610ae7925090506001610d77565b600d555b600080825560019091015550565b600a544311610b0757610c2a565b600354604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015610b7857600080fd5b505afa158015610b8c573d6000803e3d6000fd5b505050506040513d6020811015610ba257600080fd5b5051905080610bc7576009544310610bbc57600954610bbe565b435b600a5550610c2a565b6000610bd8600360070154436105b5565b600654909150600090610bec908390610dc0565b9050610c0d610c04846104f58464e8d4a51000610dc0565b600b5490611111565b600b556009544310610c2157600954610c23565b435b600a555050505b565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600e60209081526040808320600b5460035483517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529351959692959194879491909316926370a0823192602480840193829003018186803b158015610cb557600080fd5b505afa158015610cc9573d6000803e3d6000fd5b505050506040513d6020811015610cdf57600080fd5b5051600a5490915043118015610cf457508015155b15610d42576000610d0a600360070154436105b5565b600654909150600090610d1e908390610dc0565b9050610d3d610d36846104f58464e8d4a51000610dc0565b8590611111565b935050505b610d6a83600101546104fb64e8d4a510006104f5868860000154610dc090919063ffffffff16565b95945050505050565b3390565b6000610db983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113f0565b9392505050565b600082610dcf57506000610655565b82820282848281610ddc57fe5b0414610db9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117e26021913960400191505060405180910390fd5b6000610db983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114a1565b60048054604080517f70a0823100000000000000000000000000000000000000000000000000000000815230938101939093525160009273ffffffffffffffffffffffffffffffffffffffff909216916370a08231916024808301926020929190829003018186803b158015610eea57600080fd5b505afa158015610efe573d6000803e3d6000fd5b505050506040513d6020811015610f1457600080fd5b5051905080821115610fd25760048054604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811694820194909452602481018590529051929091169163a9059cbb916044808201926020929091908290030181600087803b158015610fa057600080fd5b505af1158015610fb4573d6000803e3d6000fd5b505050506040513d6020811015610fca57600080fd5b5061107f9050565b60048054604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811694820194909452602481018690529051929091169163a9059cbb916044808201926020929091908290030181600087803b15801561105257600080fd5b505af1158015611066573d6000803e3d6000fd5b505050506040513d602081101561107c57600080fd5b50505b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261107f908490611520565b600082820183811015610db957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061126357805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611226565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112c5576040519150601f19603f3d011682016040523d82523d6000602084013e6112ca565b606091505b50915091508180156112f85750805115806112f857508080602001905160208110156112f557600080fd5b50515b61134d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061182d6024913960400191505060405180910390fd5b505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526113ea908590611520565b50505050565b60008184841115611499576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561145e578181015183820152602001611446565b50505050905090810190601f16801561148b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000818361150a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815283516024840152835190928392604490910191908501908083836000831561145e578181015183820152602001611446565b50600083858161151657fe5b0495945050505050565b6060611582826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166115f89092919063ffffffff16565b80519091501561107f578080602001905160208110156115a157600080fd5b505161107f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611803602a913960400191505060405180910390fd5b6060611607848460008561160f565b949350505050565b606061161a856117db565b61168557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106116ef57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016116b2565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611751576040519150601f19603f3d011682016040523d82523d6000602084013e611756565b606091505b5091509150811561176a5791506116079050565b80511561177a5780518082602001fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815286516024840152865187939192839260440191908501908083836000831561145e578181015183820152602001611446565b3b15159056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a264697066735822122098ecbc79f19e35cce6d0060ae4107969a2f9998698840eb9497385bde0cf593964736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000189e4485eb47875e4c344f2290fbeb4b4e66179900000000000000000000000073217ee72fdedf763bacd83acf60b4218f6ff8af
-----Decoded View---------------
Arg [0] : _factory (address): 0x189e4485EB47875E4C344F2290fBEb4b4e661799
Arg [1] : _farmGenerator (address): 0x73217eE72fDedf763BACd83Acf60b4218f6ff8Af
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000189e4485eb47875e4c344f2290fbeb4b4e661799
Arg [1] : 00000000000000000000000073217ee72fdedf763bacd83acf60b4218f6ff8af
Deployed Bytecode Sourcemap
8962:9239:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10188:44;;;;;;;;;;;;;;;;-1:-1:-1;10188:44:0;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10091:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10054:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16012:843;;;;;;;;;;;;;;;;-1:-1:-1;16012:843:0;;:::i;:::-;;9984:27;;;:::i;:::-;;;;;;;;;;;;;;;;12165:743;;;;;;;;;;;;;;;;-1:-1:-1;12165:743:0;;;;;;;:::i;10766:1088::-;;;;;;;;;;;;;;;;-1:-1:-1;10766:1088:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14964:912::-;;;;;;;;;;;;;;;;-1:-1:-1;14964:912:0;;:::i;10020:27::-;;;:::i;17003:479::-;;;:::i;14003:831::-;;;:::i;13150:748::-;;;;;;;;;;;;;;;;-1:-1:-1;13150:748:0;;;;:::i;10188:44::-;;;;;;;;;;;;;;;;;;;:::o;10091:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10054:28::-;;;;;;:::o;16012:843::-;16065:17;16085:12;:10;:12::i;:::-;16132:19;;;16108:21;16132:19;;;:8;:19;;;;;16170:11;;16065:32;;-1:-1:-1;16132:19:0;16170:22;-1:-1:-1;16170:22:0;16162:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16220:12;:10;:12::i;:::-;16247:11;;:22;;:37;;;;;16283:1;16273:7;:11;16247:37;16243:164;;;16301:7;;:31;;;;;;:7;:31;;;;;;;;;:7;;;;;:20;;:31;;;;;:7;;:31;;;;;;;:7;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16369:19:0;;:26;;-1:-1:-1;16369:19:0;-1:-1:-1;16393:1:0;16369:23;:26::i;:::-;16347:19;:48;16243:164;16417:15;16448:106;16524:4;:15;;;16448:53;16496:4;16448:43;16464:8;:26;;;16448:4;:11;;;:15;;:43;;;;:::i;:::-;:47;;:53::i;:::-;:57;;:106::i;:::-;16417:137;;16565:38;16584:9;16595:7;16565:18;:38::i;:::-;16628:11;;:24;;16644:7;16628:15;:24::i;:::-;16614:38;;;16697:26;;16681:53;;16729:4;;16681:43;;16614:38;16681:15;:43::i;:53::-;16663:15;;;:71;16745:8;:16;:58;;:16;;16783:9;16795:7;16745:29;:58::i;:::-;16819:28;;;;;;;;;;;;;;;;;;;;;;16012:843;;;;:::o;9984:27::-;;;;:::o;12165:743::-;12270:7;12295:13;12339:8;:19;;;12324:11;:34;;:104;;12409:19;;12324:104;;;12378:11;12324:104;12295:133;;12439:10;12472:3;12452:8;:17;;;:23;:49;;12484:17;;12452:49;;;12478:3;12452:49;12534:22;;12439:62;;-1:-1:-1;12528:28:0;;12524:377;;12598:14;;12580:33;;:13;:2;12587:5;12580:6;:13::i;:::-;:17;;:33::i;:::-;12573:40;;;;;;12524:377;12644:22;;12635:31;;12631:270;;12690:13;:2;12697:5;12690:6;:13::i;12631:270::-;12847:22;;12760:129;;12840:30;;:2;;:6;:30::i;:::-;12798:14;;12760:22;;:53;;12798:14;12760:33;;12787:5;12760:26;:33::i;:53::-;:57;;:129::i;12165:743::-;;;;;:::o;10766:1088::-;11034:17;11054:12;:10;:12::i;:::-;11106:13;;11034:32;;-1:-1:-1;11106:13:0;11085:35;;;11106:13;;11085:35;11077:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11147:152;11201:12;11229:9;11261:4;11281:7;11147:31;:152::i;:::-;11310:20;:35;;;;;;;;;;11358:19;:33;;;11402:20;:35;;;11448:22;:39;;;11498:14;:23;;;-1:-1:-1;11573:12:0;-1:-1:-1;;11573:55:0;;11617:11;11573:55;;;11602:12;11573:55;11639:8;:27;;;;;;;;;;;;;;;;-1:-1:-1;;;11677:24:0;:42;;;;-1:-1:-1;11730:26:0;:30;11773:17;:29;-1:-1:-1;;;11813:23:0;:33;-1:-1:-1;10766:1088:0:o;14964:912::-;15016:17;15036:12;:10;:12::i;:::-;15083:19;;;15059:21;15083:19;;;:8;:19;;;;;15016:32;;-1:-1:-1;15113:12:0;:10;:12::i;:::-;15140:11;;:15;15136:250;;15172:15;15207:114;15287:4;:15;;;15207:53;15255:4;15207:43;15223:8;:26;;;15207:4;:11;;;:15;;:43;;;;:::i;:114::-;15172:149;;15336:38;15355:9;15366:7;15336:18;:38::i;:::-;15136:250;;15400:11;;:16;:31;;;;;15430:1;15420:7;:11;15400:31;15396:161;;;15448:7;;:34;;;;;;:7;:34;;;;;;;;;:7;;;;;:23;;:34;;;;;:7;;:34;;;;;;;:7;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15519:19:0;;:26;;-1:-1:-1;15519:19:0;-1:-1:-1;15543:1:0;15519:23;:26::i;:::-;15497:19;:48;15396:161;15567:8;:16;:127;;:16;;15623:9;15656:4;15676:7;15567:33;:127::i;:::-;15719:11;;:24;;15735:7;15719:15;:24::i;:::-;15705:38;;;15788:26;;15772:53;;15820:4;;15772:43;;15705:38;15772:15;:43::i;:53::-;15754:15;;;:71;15841:27;;;;;;;;;;;;;;;;;;;;;;14964:912;;;:::o;10020:27::-;;;;;;:::o;17003:479::-;17050:17;17070:12;:10;:12::i;:::-;17117:19;;;;17093:21;17117:19;;;:8;:19;;;;;17197:11;;17147:8;:16;17050:32;;-1:-1:-1;17117:19:0;;17147:62;;:16;;17050:32;;17147:29;:62::i;:::-;17254:11;;17225:41;;;;;;;;;;;;;;;;;;;;;17281:11;;:15;17277:142;;17313:7;;:31;;;;;;:7;:31;;;;;;;;;:7;;;;;:20;;:31;;;;;:7;;:31;;;;;;;:7;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17381:19:0;;:26;;-1:-1:-1;17381:19:0;-1:-1:-1;17405:1:0;17381:23;:26::i;:::-;17359:19;:48;17277:142;17443:1;17429:15;;;17455;;;;:19;-1:-1:-1;17003:479:0:o;14003:831::-;14063:24;;14047:12;:40;14043:79;;14104:7;;14043:79;14151:8;:16;:41;;;;;;14186:4;14151:41;;;;;;14132:16;;14151;;;:26;;:41;;;;;;;;;;;;;;:16;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14151:41:0;;-1:-1:-1;14207:13:0;14203:195;;14279:17;;14264:12;:32;:101;;14348:17;;14264:101;;;14316:12;14264:101;14237:24;:128;-1:-1:-1;14380:7:0;;14203:195;14408:18;14442:53;14456:8;:24;;;14482:12;14442:13;:53::i;:::-;14543:20;;14408:87;;-1:-1:-1;14506:19:0;;14528:36;;14408:87;;14528:14;:36::i;:::-;14506:58;-1:-1:-1;14604:91:0;14649:35;14675:8;14649:21;14506:58;14665:4;14649:15;:21::i;:35::-;14604:26;;;:30;:91::i;:::-;14575:26;:120;14748:17;;14733:12;:32;:93;;14809:17;;14733:93;;;14781:12;14733:93;14706:24;:120;-1:-1:-1;;;14003:831:0;:::o;13150:748::-;13255:15;;;;13211:7;13255:15;;;:8;:15;;;;;;;;13309:26;;:8;13365:16;:41;;;;;13400:4;13365:41;;;;;;13211:7;;13255:15;;13309:26;;13211:7;;13365:16;;;;;:26;;:41;;;;;;;;;;:16;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13365:41:0;13436:24;;13365:41;;-1:-1:-1;13421:12:0;:39;:56;;;;-1:-1:-1;13464:13:0;;;13421:56;13417:378;;;13494:18;13532:53;13546:8;:24;;;13572:12;13532:13;:53::i;:::-;13637:20;;13494:91;;-1:-1:-1;13600:19:0;;13622:36;;13494:91;;13622:14;:36::i;:::-;13600:58;-1:-1:-1;13693:90:0;13733:35;13759:8;13733:21;13600:58;13749:4;13733:15;:21::i;:35::-;13693:17;;:21;:90::i;:::-;13673:110;;13417:378;;;13825:65;13874:4;:15;;;13825:44;13864:4;13825:34;13841:17;13825:4;:11;;;:15;;:34;;;;:::i;:65::-;13805:85;13150:748;-1:-1:-1;;;;;13150:748:0:o;18092:106::-;18180:10;18092:106;:::o;2866:136::-;2924:7;2951:43;2955:1;2958;2951:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2944:50;2866:136;-1:-1:-1;;;2866:136:0:o;3242:246::-;3300:7;3324:6;3320:47;;-1:-1:-1;3354:1:0;3347:8;;3320:47;3389:5;;;3393:1;3389;:5;:1;3413:5;;;;;:10;3405:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3496:132;3554:7;3581:39;3585:1;3588;3581:39;;;;;;;;;;;;;;;;;:3;:39::i;17750:334::-;17848:20;;;:45;;;;;;17887:4;17848:45;;;;;;;;17828:17;;17848:20;;;;;:30;;:45;;;;;;;;;;;;;;:20;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17848:45:0;;-1:-1:-1;17908:19:0;;;17904:173;;;17944:20;;;:45;;;;;;:20;:45;;;;;;;;;;;;;;;;;;:20;;;;;:29;;:45;;;;;;;;;;;;;;;:20;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17904:173:0;;-1:-1:-1;17904:173:0;;18022:20;;;:43;;;;;;:20;:43;;;;;;;;;;;;;;;;;;:20;;;;;:29;;:43;;;;;;;;;;;;;;;:20;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17904:173:0;17750:334;;;:::o;4304:248::-;4475:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4498:23;4475:58;;;4421:123;;4455:5;;4421:19;:123::i;2679:179::-;2737:7;2769:5;;;2793:6;;;;2785:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7533:419;7738:51;;;7727:10;7738:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7727:63;;;;7679:12;;7693:17;;7727:10;;;;7738:51;7727:63;;;7738:51;7727:63;;7738:51;7727:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7678:112;;;;7823:7;:57;;;;-1:-1:-1;7835:11:0;;:16;;:44;;;7866:4;7855:24;;;;;;;;;;;;;;;-1:-1:-1;7855:24:0;7835:44;7801:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7533:419;;;;;;:::o;4560:285::-;4758:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4781:27;4758:68;;;4704:133;;4738:5;;4704:19;:133::i;:::-;4560:285;;;;:::o;3010:224::-;3130:7;3166:12;3158:6;;;;3150:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3202:5:0;;;3010:224::o;3636:223::-;3756:7;3791:12;3784:5;3776:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3815:9;3831:1;3827;:5;;;;;;;3636:223;-1:-1:-1;;;;;3636:223:0:o;6276:444::-;6357:23;6396:118;6442:4;6396:118;;;;;;;;;;;;;;;;;6404:5;6396:27;;;;:118;;;;;:::i;:::-;6529:17;;6357:157;;-1:-1:-1;6529:21:0;6525:188;;6604:10;6593:30;;;;;;;;;;;;;;;-1:-1:-1;6593:30:0;6567:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;898:230;1035:12;1067:53;1090:6;1098:4;1104:1;1107:12;1067:22;:53::i;:::-;1060:60;898:230;-1:-1:-1;;;;898:230:0:o;1904:744::-;2077:12;2110:18;2121:6;2110:10;:18::i;:::-;2102:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2174:12;2188:23;2228:6;:11;;2247:8;2257:4;2228:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2173:89;;;;2277:7;2273:368;;;2308:10;-1:-1:-1;2301:17:0;;-1:-1:-1;2301:17:0;2273:368;2355:17;;:21;2351:279;;2458:10;2452:17;2519:15;2506:10;2502:2;2498:19;2491:44;2406:148;2594:20;;;;;;;;;;;;;;;;;;;;2601:12;;2594:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;91:196;223:20;271:8;;;91:196::o
Swarm Source
ipfs://98ecbc79f19e35cce6d0060ae4107969a2f9998698840eb9497385bde0cf5939
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.