Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 168 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Create Token Loc... | 17171782 | 429 days ago | IN | 0 ETH | 0.09525527 | ||||
Create Token Loc... | 15493811 | 666 days ago | IN | 0 ETH | 0.01887929 | ||||
Create Token Loc... | 15325692 | 692 days ago | IN | 0 ETH | 0.01543041 | ||||
Create Token Loc... | 15310674 | 695 days ago | IN | 0 ETH | 0.0284756 | ||||
Create Token Loc... | 15301299 | 696 days ago | IN | 0 ETH | 0.00982079 | ||||
Create Token Loc... | 15290996 | 698 days ago | IN | 0 ETH | 0.01034585 | ||||
Create Token Loc... | 15278220 | 700 days ago | IN | 0 ETH | 0.01480239 | ||||
Create Token Loc... | 15272934 | 701 days ago | IN | 0 ETH | 0.01285664 | ||||
Create Token Loc... | 15250567 | 704 days ago | IN | 0 ETH | 0.01999586 | ||||
Create Token Loc... | 15179353 | 715 days ago | IN | 0 ETH | 0.03714009 | ||||
Create Token Loc... | 15179222 | 715 days ago | IN | 0 ETH | 0.02292529 | ||||
Create Token Loc... | 15126575 | 723 days ago | IN | 0 ETH | 0.0325373 | ||||
Create Token Loc... | 15092136 | 729 days ago | IN | 0 ETH | 0.10631856 | ||||
Create Token Loc... | 15072631 | 732 days ago | IN | 0 ETH | 0.01886817 | ||||
Create Token Loc... | 14968502 | 750 days ago | IN | 0 ETH | 0.12583666 | ||||
Create Token Loc... | 14948972 | 753 days ago | IN | 0 ETH | 0.04590949 | ||||
Create Token Loc... | 14916743 | 759 days ago | IN | 0 ETH | 0.12078371 | ||||
Create Token Loc... | 14888312 | 764 days ago | IN | 0 ETH | 0.07220052 | ||||
Create Token Loc... | 14888066 | 764 days ago | IN | 0 ETH | 0.10433905 | ||||
Create Token Loc... | 14887349 | 764 days ago | IN | 0 ETH | 0.11484382 | ||||
Create Token Loc... | 14883496 | 764 days ago | IN | 0 ETH | 0.05910582 | ||||
Create Token Loc... | 14718938 | 791 days ago | IN | 0 ETH | 0.1506869 | ||||
Create Token Loc... | 14714090 | 792 days ago | IN | 0 ETH | 0.06126872 | ||||
Create Token Loc... | 14711888 | 792 days ago | IN | 0 ETH | 0.14608313 | ||||
Create Token Loc... | 14710503 | 792 days ago | IN | 0 ETH | 0.0822659 |
Latest 25 internal transactions (View All)
Advanced mode:
Loading...
Loading
Contract Name:
SwapTokenLockerFactory
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-02-19 */ // SPDX-License-Identifier: MIT pragma solidity ^0.6.12; contract SwapAdmin { address public admin; address public candidate; constructor(address _admin) public { require(_admin != address(0), "admin address cannot be 0"); admin = _admin; emit AdminChanged(address(0), _admin); } function setCandidate(address _candidate) external onlyAdmin { address old = candidate; candidate = _candidate; emit candidateChanged( old, candidate); } function becomeAdmin( ) external { require( msg.sender == candidate, "Only candidate can become admin"); address old = admin; admin = candidate; emit AdminChanged( old, admin ); } modifier onlyAdmin { require( (msg.sender == admin), "Only the contract admin can perform this action"); _; } event candidateChanged(address oldCandidate, address newCandidate ); event AdminChanged(address oldAdmin, address newAdmin); } 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. */ 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. */ 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. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } contract SwapTokenLocker is SwapAdmin { using SafeMath for uint; struct LockInfo { uint128 amount; uint128 claimedAmount; uint64 lockTimestamp; uint64 lastUpdated; uint32 lockHours; } address immutable token; mapping (address => LockInfo) public lockData; constructor(address _admin, address _token) public SwapAdmin(_admin) { token = _token; } function getToken() external view returns(address) { return token; } function emergencyWithdraw(address _tokenAddress) external onlyAdmin { require(_tokenAddress != address(0), "Token address is invalid"); IERC20(_tokenAddress).transfer(msg.sender, IERC20(_tokenAddress).balanceOf(address(this))); } function getLockData(address _user) external view returns(uint128, uint128, uint64, uint64, uint32) { require(_user != address(0), "User address is invalid"); LockInfo storage _lockInfo = lockData[_user]; return ( _lockInfo.amount, _lockInfo.claimedAmount, _lockInfo.lockTimestamp, _lockInfo.lastUpdated, _lockInfo.lockHours); } function sendLockTokenMany( address[] calldata _users, uint128[] calldata _amounts, uint32[] calldata _lockHours, uint256 _sendAmount ) external onlyAdmin { require(_users.length == _amounts.length, "array length not eq"); require(_users.length == _lockHours.length, "array length not eq"); require(_sendAmount > 0 , "Amount is invalid"); IERC20(token).transferFrom(msg.sender, address(this), _sendAmount); for (uint256 j = 0; j < _users.length; j++) { sendLockToken(_users[j], _amounts[j], uint64(block.timestamp), _lockHours[j]); } } function sendLockToken( address _user, uint128 _amount, uint64 _lockTimestamp, uint32 _lockHours ) internal { require(_amount > 0, "amount can not zero"); require(_lockHours > 0, "lock hours need more than zero"); require(_lockTimestamp > 0, "lock timestamp need more than zero"); require(lockData[_user].amount == 0, "this address has already locked"); LockInfo memory lockinfo = LockInfo({ amount: _amount, lockTimestamp: _lockTimestamp, lockHours: _lockHours, lastUpdated: uint64(block.timestamp), claimedAmount: 0 }); lockData[_user] = lockinfo; } function claimToken(uint128 _amount) external returns (uint256) { require(_amount > 0, "Invalid parameter amount"); address _user = msg.sender; LockInfo storage _lockInfo = lockData[_user]; require(_lockInfo.lockTimestamp <= block.timestamp, "Vesting time is not started"); require(_lockInfo.amount > 0, "No lock token to claim"); uint256 passhours = block.timestamp.sub(_lockInfo.lockTimestamp).div(1 hours); require(passhours > 0, "need wait for one hour at least"); require((block.timestamp - _lockInfo.lastUpdated) > 1 hours, "You have to wait at least an hour to claim"); uint256 available = 0; if (passhours >= _lockInfo.lockHours) { available = _lockInfo.amount; } else { available = uint256(_lockInfo.amount).div(_lockInfo.lockHours).mul(passhours); } available = available.sub(_lockInfo.claimedAmount); require(available > 0, "not available claim"); uint256 claim = _amount; if (_amount > available) { // claim as much as possible claim = available; } _lockInfo.claimedAmount = uint128(uint256(_lockInfo.claimedAmount).add(claim)); IERC20(token).transfer(_user, claim); _lockInfo.lastUpdated = uint64(block.timestamp); return claim; } } contract SwapTokenLockerFactory { event SwapTokenLockerCreated(address admin, address locker); mapping(address => address[]) private deployedContracts; address[] private allLockers; function getLastDeployed(address owner) external view returns(address locker) { uint256 length = deployedContracts[owner].length; return deployedContracts[owner][length - 1]; } function getAllContracts() external view returns (address[] memory) { return allLockers; } function getDeployed(address owner) external view returns(address[] memory) { return deployedContracts[owner]; } function createTokenLocker(address token) external returns (address locker) { SwapTokenLocker lockerContract = new SwapTokenLocker(msg.sender, token); locker = address(lockerContract); deployedContracts[msg.sender].push(locker); allLockers.push(locker); emit SwapTokenLockerCreated(msg.sender, locker); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"admin","type":"address"},{"indexed":false,"internalType":"address","name":"locker","type":"address"}],"name":"SwapTokenLockerCreated","type":"event"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"createTokenLocker","outputs":[{"internalType":"address","name":"locker","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAllContracts","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"getDeployed","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"getLastDeployed","outputs":[{"internalType":"address","name":"locker","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5061286a806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806318d3ce961461005157806343f03ab6146100b0578063a77b6e0314610149578063b45a5c3c146101b7575b600080fd5b610059610225565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561009c578082015181840152602081019050610081565b505050509050019250505060405180910390f35b6100f2600480360360208110156100c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102b3565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561013557808201518184015260208101905061011a565b505050509050019250505060405180910390f35b61018b6004803603602081101561015f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061037f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101f9600480360360208110156101cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610445565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b606060018054806020026020016040519081016040528092919081815260200182805480156102a957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161025f575b5050505050905090565b60606000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561037357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610329575b50505050509050919050565b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600182038154811061041257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b600080338360405161045690610628565b808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050604051809103906000f0801580156104af573d6000803e3d6000fd5b5090508091506000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f758ba1a81be07b9701bb6c4ac4fc3979d34e18d3465ffd5cd4c2958d231899013383604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a150919050565b6121ff806106368339019056fe60a060405234801561001057600080fd5b506040516121ff3803806121ff8339818101604052604081101561003357600080fd5b81019080805190602001909291908051906020019092919050505081600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f61646d696e20616464726573732063616e6e6f7420626520300000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f600082604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050505060805160601c6120006101ff6000398061086552806109e752806111a052506120006000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80636e5110ae116100665780636e5110ae146102865780636ff1c9bc146102da578063c62223311461031e578063e8345bd1146103d0578063f851a440146104825761009e565b806307880b7f146100a35780631c9fa3cc146100e757806321df0da71461021457806325971dff146102485780636c8381f814610252575b600080fd5b6100e5600480360360208110156100b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104b6565b005b610212600480360360808110156100fd57600080fd5b810190808035906020019064010000000081111561011a57600080fd5b82018360208201111561012c57600080fd5b8035906020019184602083028401116401000000008311171561014e57600080fd5b90919293919293908035906020019064010000000081111561016f57600080fd5b82018360208201111561018157600080fd5b803590602001918460208302840111640100000000831117156101a357600080fd5b9091929391929390803590602001906401000000008111156101c457600080fd5b8201836020820111156101d657600080fd5b803590602001918460208302840111640100000000831117156101f857600080fd5b909192939192939080359060200190929190505050610653565b005b61021c6109e3565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610250610a0b565b005b61025a610be4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102c46004803603602081101561029c57600080fd5b8101908080356fffffffffffffffffffffffffffffffff169060200190929190505050610c0a565b6040518082815260200191505060405180910390f35b61031c600480360360208110156102f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112a3565b005b6103606004803603602081101561033457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061153b565b60405180866fffffffffffffffffffffffffffffffff168152602001856fffffffffffffffffffffffffffffffff1681526020018467ffffffffffffffff1681526020018367ffffffffffffffff1681526020018263ffffffff1681526020019550505050505060405180910390f35b610412600480360360208110156103e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116c5565b60405180866fffffffffffffffffffffffffffffffff168152602001856fffffffffffffffffffffffffffffffff1681526020018467ffffffffffffffff1681526020018367ffffffffffffffff1681526020018263ffffffff1681526020019550505050505060405180910390f35b61048a61176b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461055a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180611f50602f913960400191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f0faed18be9e8f4d4c05dfbcc80ea2c97a0be729614d766827778f60890c02cab81600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180611f50602f913960400191505060405180910390fd5b848490508787905014610772576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6172726179206c656e677468206e6f742065710000000000000000000000000081525060200191505060405180910390fd5b8282905087879050146107ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6172726179206c656e677468206e6f742065710000000000000000000000000081525060200191505060405180910390fd5b60008111610863576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f416d6f756e7420697320696e76616c696400000000000000000000000000000081525060200191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561091257600080fd5b505af1158015610926573d6000803e3d6000fd5b505050506040513d602081101561093c57600080fd5b81019080805190602001909291905050505060005b878790508110156109d9576109cc88888381811061096b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1687878481811061099457fe5b905060200201356fffffffffffffffffffffffffffffffff16428787868181106109ba57fe5b9050602002013563ffffffff1661178f565b8080600101915050610951565b5050505050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ace576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4f6e6c792063616e6469646174652063616e206265636f6d652061646d696e0081525060200191505060405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f8160008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080826fffffffffffffffffffffffffffffffff1611610c93576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c696420706172616d6574657220616d6f756e74000000000000000081525060200191505060405180910390fd5b60003390506000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050428160010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff161115610d73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f56657374696e672074696d65206973206e6f742073746172746564000000000081525060200191505060405180910390fd5b60008160000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1611610e1b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4e6f206c6f636b20746f6b656e20746f20636c61696d0000000000000000000081525060200191505060405180910390fd5b6000610e66610e10610e588460010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1642611b9990919063ffffffff16565b611be390919063ffffffff16565b905060008111610ede576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f6e656564207761697420666f72206f6e6520686f7572206174206c656173740081525060200191505060405180910390fd5b610e108260010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16420311610f5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611fa1602a913960400191505060405180910390fd5b60008260010160109054906101000a900463ffffffff1663ffffffff168210610fb9578260000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16905061102d565b61102a8261101c8560010160109054906101000a900463ffffffff1663ffffffff168660000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16611be390919063ffffffff16565b611c2d90919063ffffffff16565b90505b6110728360000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1682611b9990919063ffffffff16565b9050600081116110ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6e6f7420617661696c61626c6520636c61696d0000000000000000000000000081525060200191505060405180910390fd5b6000866fffffffffffffffffffffffffffffffff16905081876fffffffffffffffffffffffffffffffff16111561111f578190505b611164818560000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16611cb390919063ffffffff16565b8460000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561122f57600080fd5b505af1158015611243573d6000803e3d6000fd5b505050506040513d602081101561125957600080fd5b810190808051906020019092919050505050428460010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508095505050505050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180611f50602f913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f546f6b656e206164647265737320697320696e76616c6964000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561146e57600080fd5b505afa158015611482573d6000803e3d6000fd5b505050506040513d602081101561149857600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156114fc57600080fd5b505af1158015611510573d6000803e3d6000fd5b505050506040513d602081101561152657600080fd5b81019080805190602001909291905050505050565b60008060008060008073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f55736572206164647265737320697320696e76616c696400000000000000000081525060200191505060405180910390fd5b6000600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a90046fffffffffffffffffffffffffffffffff168160000160109054906101000a90046fffffffffffffffffffffffffffffffff168260010160009054906101000a900467ffffffffffffffff168360010160089054906101000a900467ffffffffffffffff168460010160109054906101000a900463ffffffff16955095509550955095505091939590929450565b60026020528060005260406000206000915090508060000160009054906101000a90046fffffffffffffffffffffffffffffffff16908060000160109054906101000a90046fffffffffffffffffffffffffffffffff16908060010160009054906101000a900467ffffffffffffffff16908060010160089054906101000a900467ffffffffffffffff16908060010160109054906101000a900463ffffffff16905085565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000836fffffffffffffffffffffffffffffffff1611611817576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f616d6f756e742063616e206e6f74207a65726f0000000000000000000000000081525060200191505060405180910390fd5b60008163ffffffff1611611893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f6c6f636b20686f757273206e656564206d6f7265207468616e207a65726f000081525060200191505060405180910390fd5b60008267ffffffffffffffff16116118f6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611f7f6022913960400191505060405180910390fd5b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16146119dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f7468697320616464726573732068617320616c7265616479206c6f636b65640081525060200191505060405180910390fd5b6119e4611ec1565b6040518060a00160405280856fffffffffffffffffffffffffffffffff16815260200160006fffffffffffffffffffffffffffffffff1681526020018467ffffffffffffffff1681526020014267ffffffffffffffff1681526020018363ffffffff16815250905080600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060408201518160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160010160106101000a81548163ffffffff021916908363ffffffff1602179055509050505050505050565b6000611bdb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d3b565b905092915050565b6000611c2583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611dfb565b905092915050565b600080831415611c405760009050611cad565b6000828402905082848281611c5157fe5b0414611ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611f2f6021913960400191505060405180910390fd5b809150505b92915050565b600080828401905083811015611d31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000838311158290611de8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611dad578082015181840152602081019050611d92565b50505050905090810190601f168015611dda5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290611ea7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611e6c578082015181840152602081019050611e51565b50505050905090810190601f168015611e995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611eb357fe5b049050809150509392505050565b6040518060a0016040528060006fffffffffffffffffffffffffffffffff16815260200160006fffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600063ffffffff168152509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f6e6c792074686520636f6e74726163742061646d696e2063616e20706572666f726d207468697320616374696f6e6c6f636b2074696d657374616d70206e656564206d6f7265207468616e207a65726f596f75206861766520746f2077616974206174206c6561737420616e20686f757220746f20636c61696da26469706673582212201321d4c8206b5bba1da689ee43c73f08bd09236ac84c888faed73da0233d63bb64736f6c634300060c0033a2646970667358221220ae770558b4580299a158c8831b2238e7262327088aa124fb84864e47918bdae964736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806318d3ce961461005157806343f03ab6146100b0578063a77b6e0314610149578063b45a5c3c146101b7575b600080fd5b610059610225565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561009c578082015181840152602081019050610081565b505050509050019250505060405180910390f35b6100f2600480360360208110156100c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102b3565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561013557808201518184015260208101905061011a565b505050509050019250505060405180910390f35b61018b6004803603602081101561015f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061037f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101f9600480360360208110156101cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610445565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b606060018054806020026020016040519081016040528092919081815260200182805480156102a957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161025f575b5050505050905090565b60606000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561037357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610329575b50505050509050919050565b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600182038154811061041257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b600080338360405161045690610628565b808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050604051809103906000f0801580156104af573d6000803e3d6000fd5b5090508091506000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f758ba1a81be07b9701bb6c4ac4fc3979d34e18d3465ffd5cd4c2958d231899013383604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a150919050565b6121ff806106368339019056fe60a060405234801561001057600080fd5b506040516121ff3803806121ff8339818101604052604081101561003357600080fd5b81019080805190602001909291908051906020019092919050505081600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f61646d696e20616464726573732063616e6e6f7420626520300000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f600082604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050505060805160601c6120006101ff6000398061086552806109e752806111a052506120006000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80636e5110ae116100665780636e5110ae146102865780636ff1c9bc146102da578063c62223311461031e578063e8345bd1146103d0578063f851a440146104825761009e565b806307880b7f146100a35780631c9fa3cc146100e757806321df0da71461021457806325971dff146102485780636c8381f814610252575b600080fd5b6100e5600480360360208110156100b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104b6565b005b610212600480360360808110156100fd57600080fd5b810190808035906020019064010000000081111561011a57600080fd5b82018360208201111561012c57600080fd5b8035906020019184602083028401116401000000008311171561014e57600080fd5b90919293919293908035906020019064010000000081111561016f57600080fd5b82018360208201111561018157600080fd5b803590602001918460208302840111640100000000831117156101a357600080fd5b9091929391929390803590602001906401000000008111156101c457600080fd5b8201836020820111156101d657600080fd5b803590602001918460208302840111640100000000831117156101f857600080fd5b909192939192939080359060200190929190505050610653565b005b61021c6109e3565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610250610a0b565b005b61025a610be4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102c46004803603602081101561029c57600080fd5b8101908080356fffffffffffffffffffffffffffffffff169060200190929190505050610c0a565b6040518082815260200191505060405180910390f35b61031c600480360360208110156102f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112a3565b005b6103606004803603602081101561033457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061153b565b60405180866fffffffffffffffffffffffffffffffff168152602001856fffffffffffffffffffffffffffffffff1681526020018467ffffffffffffffff1681526020018367ffffffffffffffff1681526020018263ffffffff1681526020019550505050505060405180910390f35b610412600480360360208110156103e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116c5565b60405180866fffffffffffffffffffffffffffffffff168152602001856fffffffffffffffffffffffffffffffff1681526020018467ffffffffffffffff1681526020018367ffffffffffffffff1681526020018263ffffffff1681526020019550505050505060405180910390f35b61048a61176b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461055a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180611f50602f913960400191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f0faed18be9e8f4d4c05dfbcc80ea2c97a0be729614d766827778f60890c02cab81600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180611f50602f913960400191505060405180910390fd5b848490508787905014610772576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6172726179206c656e677468206e6f742065710000000000000000000000000081525060200191505060405180910390fd5b8282905087879050146107ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6172726179206c656e677468206e6f742065710000000000000000000000000081525060200191505060405180910390fd5b60008111610863576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f416d6f756e7420697320696e76616c696400000000000000000000000000000081525060200191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561091257600080fd5b505af1158015610926573d6000803e3d6000fd5b505050506040513d602081101561093c57600080fd5b81019080805190602001909291905050505060005b878790508110156109d9576109cc88888381811061096b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1687878481811061099457fe5b905060200201356fffffffffffffffffffffffffffffffff16428787868181106109ba57fe5b9050602002013563ffffffff1661178f565b8080600101915050610951565b5050505050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ace576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4f6e6c792063616e6469646174652063616e206265636f6d652061646d696e0081525060200191505060405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f8160008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080826fffffffffffffffffffffffffffffffff1611610c93576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c696420706172616d6574657220616d6f756e74000000000000000081525060200191505060405180910390fd5b60003390506000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050428160010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff161115610d73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f56657374696e672074696d65206973206e6f742073746172746564000000000081525060200191505060405180910390fd5b60008160000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1611610e1b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4e6f206c6f636b20746f6b656e20746f20636c61696d0000000000000000000081525060200191505060405180910390fd5b6000610e66610e10610e588460010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1642611b9990919063ffffffff16565b611be390919063ffffffff16565b905060008111610ede576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f6e656564207761697420666f72206f6e6520686f7572206174206c656173740081525060200191505060405180910390fd5b610e108260010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16420311610f5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611fa1602a913960400191505060405180910390fd5b60008260010160109054906101000a900463ffffffff1663ffffffff168210610fb9578260000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16905061102d565b61102a8261101c8560010160109054906101000a900463ffffffff1663ffffffff168660000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16611be390919063ffffffff16565b611c2d90919063ffffffff16565b90505b6110728360000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1682611b9990919063ffffffff16565b9050600081116110ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6e6f7420617661696c61626c6520636c61696d0000000000000000000000000081525060200191505060405180910390fd5b6000866fffffffffffffffffffffffffffffffff16905081876fffffffffffffffffffffffffffffffff16111561111f578190505b611164818560000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16611cb390919063ffffffff16565b8460000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561122f57600080fd5b505af1158015611243573d6000803e3d6000fd5b505050506040513d602081101561125957600080fd5b810190808051906020019092919050505050428460010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508095505050505050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180611f50602f913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f546f6b656e206164647265737320697320696e76616c6964000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561146e57600080fd5b505afa158015611482573d6000803e3d6000fd5b505050506040513d602081101561149857600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156114fc57600080fd5b505af1158015611510573d6000803e3d6000fd5b505050506040513d602081101561152657600080fd5b81019080805190602001909291905050505050565b60008060008060008073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f55736572206164647265737320697320696e76616c696400000000000000000081525060200191505060405180910390fd5b6000600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a90046fffffffffffffffffffffffffffffffff168160000160109054906101000a90046fffffffffffffffffffffffffffffffff168260010160009054906101000a900467ffffffffffffffff168360010160089054906101000a900467ffffffffffffffff168460010160109054906101000a900463ffffffff16955095509550955095505091939590929450565b60026020528060005260406000206000915090508060000160009054906101000a90046fffffffffffffffffffffffffffffffff16908060000160109054906101000a90046fffffffffffffffffffffffffffffffff16908060010160009054906101000a900467ffffffffffffffff16908060010160089054906101000a900467ffffffffffffffff16908060010160109054906101000a900463ffffffff16905085565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000836fffffffffffffffffffffffffffffffff1611611817576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f616d6f756e742063616e206e6f74207a65726f0000000000000000000000000081525060200191505060405180910390fd5b60008163ffffffff1611611893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f6c6f636b20686f757273206e656564206d6f7265207468616e207a65726f000081525060200191505060405180910390fd5b60008267ffffffffffffffff16116118f6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611f7f6022913960400191505060405180910390fd5b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16146119dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f7468697320616464726573732068617320616c7265616479206c6f636b65640081525060200191505060405180910390fd5b6119e4611ec1565b6040518060a00160405280856fffffffffffffffffffffffffffffffff16815260200160006fffffffffffffffffffffffffffffffff1681526020018467ffffffffffffffff1681526020014267ffffffffffffffff1681526020018363ffffffff16815250905080600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060408201518160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160010160106101000a81548163ffffffff021916908363ffffffff1602179055509050505050505050565b6000611bdb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d3b565b905092915050565b6000611c2583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611dfb565b905092915050565b600080831415611c405760009050611cad565b6000828402905082848281611c5157fe5b0414611ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611f2f6021913960400191505060405180910390fd5b809150505b92915050565b600080828401905083811015611d31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000838311158290611de8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611dad578082015181840152602081019050611d92565b50505050905090810190601f168015611dda5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290611ea7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611e6c578082015181840152602081019050611e51565b50505050905090810190601f168015611e995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611eb357fe5b049050809150509392505050565b6040518060a0016040528060006fffffffffffffffffffffffffffffffff16815260200160006fffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600063ffffffff168152509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f6e6c792074686520636f6e74726163742061646d696e2063616e20706572666f726d207468697320616374696f6e6c6f636b2074696d657374616d70206e656564206d6f7265207468616e207a65726f596f75206861766520746f2077616974206174206c6561737420616e20686f757220746f20636c61696da26469706673582212201321d4c8206b5bba1da689ee43c73f08bd09236ac84c888faed73da0233d63bb64736f6c634300060c0033a2646970667358221220ae770558b4580299a158c8831b2238e7262327088aa124fb84864e47918bdae964736f6c634300060c0033
Deployed Bytecode Sourcemap
12358:1014:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12769:104;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12881:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12562:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13015:354;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12769:104;12819:16;12855:10;12848:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12769:104;:::o;12881:126::-;12939:16;12975:17;:24;12993:5;12975:24;;;;;;;;;;;;;;;12968:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12881:126;;;:::o;12562:199::-;12624:14;12651;12668:17;:24;12686:5;12668:24;;;;;;;;;;;;;;;:31;;;;12651:48;;12717:17;:24;12735:5;12717:24;;;;;;;;;;;;;;;12751:1;12742:6;:10;12717:36;;;;;;;;;;;;;;;;;;;;;;;;;12710:43;;;12562:199;;;:::o;13015:354::-;13075:14;13102:30;13155:10;13167:5;13135:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13102:71;;13201:14;13184:32;;13227:17;:29;13245:10;13227:29;;;;;;;;;;;;;;;13262:6;13227:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13280:10;13296:6;13280:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13319:42;13342:10;13354:6;13319:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;13015:354;;;;:::o;-1:-1:-1:-;;;;;;;;:::o
Swarm Source
ipfs://ae770558b4580299a158c8831b2238e7262327088aa124fb84864e47918bdae9
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 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.