ERC-20
Overview
Max Total Supply
553.791666666666666546 ToshiCoin
Holders
75
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.778794666596560767 ToshiCoinValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ToshiCoinNonTradable
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-11-01 */ pragma solidity ^0.6.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ 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 ); } pragma solidity ^0.6.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal virtual view returns (address payable) { return msg.sender; } function _msgData() internal virtual view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } pragma solidity ^0.6.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } pragma solidity ^0.6.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ 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) { 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; } } pragma solidity >=0.6.0; /** * @title Roles * @dev Library for managing addresses assigned to a Role. */ library Roles { struct Role { mapping(address => bool) bearer; } /** * @dev Give an account access to this role. */ function add(Role storage role, address account) internal { require(!has(role, account), "Roles: account already has role"); role.bearer[account] = true; } /** * @dev Remove an account's access to this role. */ function remove(Role storage role, address account) internal { require(has(role, account), "Roles: account does not have role"); role.bearer[account] = false; } /** * @dev Check if an account has this role. * @return bool */ function has(Role storage role, address account) internal view returns (bool) { require(account != address(0), "Roles: account is the zero address"); return role.bearer[account]; } } contract MinterRole is Context { using Roles for Roles.Role; event MinterAdded(address indexed account); event MinterRemoved(address indexed account); Roles.Role private _minters; constructor() internal { _addMinter(_msgSender()); } modifier onlyMinter() { require( isMinter(_msgSender()), "MinterRole: caller does not have the Minter role" ); _; } function isMinter(address account) public view returns (bool) { return _minters.has(account); } function addMinter(address account) public onlyMinter { _addMinter(account); } function renounceMinter() public { _removeMinter(_msgSender()); } function _addMinter(address account) internal { _minters.add(account); emit MinterAdded(account); } function _removeMinter(address account) internal { _minters.remove(account); emit MinterRemoved(account); } } contract CanTransferRole is Context { using Roles for Roles.Role; event CanTransferAdded(address indexed account); event CanTransferRemoved(address indexed account); Roles.Role private _canTransfer; constructor() internal { _addCanTransfer(_msgSender()); } modifier onlyCanTransfer() { require( canTransfer(_msgSender()), "CanTransferRole: caller does not have the CanTransfer role" ); _; } function canTransfer(address account) public view returns (bool) { return _canTransfer.has(account); } function addCanTransfer(address account) public onlyCanTransfer { _addCanTransfer(account); } function renounceCanTransfer() public { _removeCanTransfer(_msgSender()); } function _addCanTransfer(address account) internal { _canTransfer.add(account); emit CanTransferAdded(account); } function _removeCanTransfer(address account) internal { _canTransfer.remove(account); emit CanTransferRemoved(account); } } contract ToshiCoinNonTradable is Ownable, MinterRole, CanTransferRole { using SafeMath for uint256; event Transfer(address indexed from, address indexed to, uint256 value); mapping(address => uint256) private _balances; string public name = "ToshiCoin - Non Tradable"; string public symbol = "ToshiCoin"; uint8 public decimals = 18; uint256 public totalSupply; uint256 public totalClaimed; uint256 public totalMinted; uint256 public remainingToshiCoinForSale = 4000 * (1e18); uint256 public priceInTOSHI = 2; IERC20 public toshi; address public toshiTreasury; constructor(IERC20 _toshi, address _toshiTreasury) public { toshi = _toshi; toshiTreasury = _toshiTreasury; } function addClaimed(uint256 amount) internal { totalClaimed = totalClaimed.add(amount); } function addMinted(uint256 amount) internal { totalMinted = totalMinted.add(amount); } function setRemainingToshiCoinForSale(uint256 _remainingToshiCoinForSale) external onlyMinter { remainingToshiCoinForSale = _remainingToshiCoinForSale; } function setPriceInToshi(uint256 _priceInTOSHI) external onlyMinter { priceInTOSHI = _priceInTOSHI; } function setToshiTreasury(address _toshiTreasury) external onlyMinter { toshiTreasury = _toshiTreasury; } /** * @dev Anyone can purchase ToshiCoin for TOSHI until it is sold out. */ function purchase(uint256 amount) external { uint256 price = priceInTOSHI.mul(amount); uint256 balance = toshi.balanceOf(msg.sender); require(balance >= price, "ToshiCoin: Not enough TOSHI in wallet."); require( remainingToshiCoinForSale >= amount, "ToshiCoin: Not enough ToshiCoin for sale." ); safeToshiTransferFrom(msg.sender, toshiTreasury, price); remainingToshiCoinForSale = remainingToshiCoinForSale.sub(amount); _mint(msg.sender, amount); addMinted(amount); } /** * @dev Claiming is white-listed to specific minter addresses for now to limit transfers. */ function claim(address to, uint256 amount) public onlyCanTransfer { transfer(to, amount); addClaimed(amount); } /** * @dev Transferring is white-listed to specific minter addresses for now. */ function transfer(address to, uint256 amount) public onlyCanTransfer returns (bool) { require( amount <= _balances[msg.sender], "ToshiCoin: Cannot transfer more than balance" ); _balances[msg.sender] = _balances[msg.sender].sub(amount); _balances[to] = _balances[to].add(amount); emit Transfer(msg.sender, to, amount); return true; } /** * @dev Transferring is white-listed to specific minter addresses for now. */ function transferFrom( address from, address to, uint256 amount ) public onlyCanTransfer returns (bool) { require( amount <= _balances[from], "ToshiCoin: Cannot transfer more than balance" ); _balances[from] = _balances[from].sub(amount); _balances[to] = _balances[to].add(amount); emit Transfer(from, to, amount); return true; } /** * @dev Gets the balance of the specified address. */ function balanceOf(address account) public view returns (uint256) { return _balances[account]; } /** * @dev Minting is white-listed to specific minter addresses for now. */ function mint(address to, uint256 amount) public onlyMinter { _mint(to, amount); addMinted(amount); } /** * @dev Burning is white-listed to specific minter addresses for now. */ function burn(address from, uint256 value) public onlyCanTransfer { require( _balances[from] >= value, "ToshiCoin: Cannot burn more than the address balance" ); _burn(from, value); } /** * @dev Internal function that creates an amount of the token and assigns it to an account. * This encapsulates the modification of balances such that the proper events are emitted. * @param to The account that will receive the created tokens. * @param amount The amount that will be created. */ function _mint(address to, uint256 amount) internal { require(to != address(0), "ToshiCoin: mint to the zero address"); totalSupply = totalSupply.add(amount); _balances[to] = _balances[to].add(amount); emit Transfer(address(0), to, amount); } /** * @dev Internal function that destroys an amount of the token of a given address. * @param from The account whose tokens will be destroyed. * @param amount The amount that will be destroyed. */ function _burn(address from, uint256 amount) internal { require(from != address(0), "ToshiCoin: burn from the zero address"); totalSupply = totalSupply.sub(amount); _balances[from] = _balances[from].sub(amount); emit Transfer(from, address(0), amount); } /** * @dev Safe token transfer from to prevent over-transfers. */ function safeToshiTransferFrom( address from, address to, uint256 amount ) internal { uint256 tokenBalance = toshi.balanceOf(address(from)); uint256 transferAmount = amount > tokenBalance ? tokenBalance : amount; toshi.transferFrom(from, to, transferAmount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20","name":"_toshi","type":"address"},{"internalType":"address","name":"_toshiTreasury","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"CanTransferAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"CanTransferRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"MinterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"MinterRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addCanTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"canTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceInTOSHI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"purchase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"remainingToshiCoinForSale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceCanTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_priceInTOSHI","type":"uint256"}],"name":"setPriceInToshi","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_remainingToshiCoinForSale","type":"uint256"}],"name":"setRemainingToshiCoinForSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_toshiTreasury","type":"address"}],"name":"setToshiTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toshi","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toshiTreasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c0604052601860808190527f546f736869436f696e202d204e6f6e205472616461626c65000000000000000060a090815262000040916004919062000314565b50604080518082019091526009808252682a37b9b434a1b7b4b760b91b6020909201918252620000739160059162000314565b506006805460ff1916601217905568d8d726b7177a800000600a556002600b55348015620000a057600080fd5b5060405162001c4538038062001c4583398181016040526040811015620000c657600080fd5b5080516020909101516000620000db6200017f565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000139620001336200017f565b62000183565b6200014d620001476200017f565b620001d5565b600c80546001600160a01b039384166001600160a01b031991821617909155600d8054929093169116179055620003b0565b3390565b6200019e8160016200022760201b62000f701790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b620001f08160026200022760201b62000f701790919060201c565b6040516001600160a01b038216907f531fb3f4abc13206cb61d4f7ef7b0acf84a392b92b2ce893be8ef23553e74a8f90600090a250565b620002338282620002ab565b1562000286576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038216620002f45760405162461bcd60e51b815260040180806020018281038252602281526020018062001c236022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200035757805160ff191683800117855562000387565b8280016001018555821562000387579182015b82811115620003875782518255916020019190600101906200036a565b506200039592915062000399565b5090565b5b808211156200039557600081556001016200039a565b61186380620003c06000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80638da5cb5b11610104578063aa271e1a116100a2578063d54ad2a111610071578063d54ad2a114610507578063efef39a11461050f578063f2fde38b1461052c578063f408d96c14610552576101cf565b8063aa271e1a14610490578063aad3ec96146104b6578063abd4df67146104e2578063c04db401146104ff576101cf565b806398650275116100de57806398650275146104285780639dc29fac14610430578063a2309ff81461045c578063a9059cbb14610464576101cf565b80638da5cb5b146103f257806395d89b41146103fa578063983b2d5614610402576101cf565b80633e3d5b7c1161017157806370a082311161014b57806370a0823114610396578063715018a6146103bc57806378fc3cb3146103c457806379cfb19b146103ea576101cf565b80633e3d5b7c146103295780633eebdbcd1461034657806340c10f191461036a576101cf565b806323b872dd116101ad57806323b872dd1461029357806324c5b464146102dd578063313ce567146103035780633b9335b114610321576101cf565b806306fdde03146101d4578063101aab781461025157806318160ddd14610279575b600080fd5b6101dc61055a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102165781810151838201526020016101fe565b50505050905090810190601f1680156102435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102776004803603602081101561026757600080fd5b50356001600160a01b03166105e8565b005b61028161063f565b60408051918252519081900360200190f35b6102c9600480360360608110156102a957600080fd5b506001600160a01b03813581169160208101359091169060400135610645565b604080519115158252519081900360200190f35b610277600480360360208110156102f357600080fd5b50356001600160a01b0316610785565b61030b6107f2565b6040805160ff9092168252519081900360200190f35b6102816107fb565b6102776004803603602081101561033f57600080fd5b5035610801565b61034e61084c565b604080516001600160a01b039092168252519081900360200190f35b6102776004803603604081101561038057600080fd5b506001600160a01b03813516906020013561085b565b610281600480360360208110156103ac57600080fd5b50356001600160a01b03166108b8565b6102776108d3565b6102c9600480360360208110156103da57600080fd5b50356001600160a01b0316610987565b61034e61099a565b61034e6109a9565b6101dc6109b8565b6102776004803603602081101561041857600080fd5b50356001600160a01b0316610a13565b610277610a62565b6102776004803603604081101561044657600080fd5b506001600160a01b038135169060200135610a74565b610281610b1b565b6102c96004803603604081101561047a57600080fd5b506001600160a01b038135169060200135610b21565b6102c9600480360360208110156104a657600080fd5b50356001600160a01b0316610c49565b610277600480360360408110156104cc57600080fd5b506001600160a01b038135169060200135610c56565b610277600480360360208110156104f857600080fd5b5035610cb0565b610281610cfb565b610281610d01565b6102776004803603602081101561052557600080fd5b5035610d07565b6102776004803603602081101561054257600080fd5b50356001600160a01b0316610e56565b610277610f60565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105e05780601f106105b5576101008083540402835291602001916105e0565b820191906000526020600020905b8154815290600101906020018083116105c357829003601f168201915b505050505081565b6105f86105f3610ff1565b610987565b6106335760405162461bcd60e51b815260040180806020018281038252603a815260200180611740603a913960400191505060405180910390fd5b61063c81610ff5565b50565b60075481565b60006106526105f3610ff1565b61068d5760405162461bcd60e51b815260040180806020018281038252603a815260200180611740603a913960400191505060405180910390fd5b6001600160a01b0384166000908152600360205260409020548211156106e45760405162461bcd60e51b815260040180806020018281038252602c815260200180611802602c913960400191505060405180910390fd5b6001600160a01b0384166000908152600360205260409020546107079083611037565b6001600160a01b0380861660009081526003602052604080822093909355908516815220546107369083611080565b6001600160a01b0380851660008181526003602090815260409182902094909455805186815290519193928816926000805160206117bd83398151915292918290030190a35060019392505050565b610795610790610ff1565b610c49565b6107d05760405162461bcd60e51b81526004018080602001828103825260308152602001806116ef6030913960400191505060405180910390fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b60065460ff1681565b600a5481565b61080c610790610ff1565b6108475760405162461bcd60e51b81526004018080602001828103825260308152602001806116ef6030913960400191505060405180910390fd5b600b55565b600c546001600160a01b031681565b610866610790610ff1565b6108a15760405162461bcd60e51b81526004018080602001828103825260308152602001806116ef6030913960400191505060405180910390fd5b6108ab82826110da565b6108b481611198565b5050565b6001600160a01b031660009081526003602052604090205490565b6108db610ff1565b6000546001600160a01b0390811691161461093d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60006109946002836111ab565b92915050565b600d546001600160a01b031681565b6000546001600160a01b031690565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105e05780601f106105b5576101008083540402835291602001916105e0565b610a1e610790610ff1565b610a595760405162461bcd60e51b81526004018080602001828103825260308152602001806116ef6030913960400191505060405180910390fd5b61063c81611212565b610a72610a6d610ff1565b611254565b565b610a7f6105f3610ff1565b610aba5760405162461bcd60e51b815260040180806020018281038252603a815260200180611740603a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902054811115610b115760405162461bcd60e51b81526004018080602001828103825260348152602001806116726034913960400191505060405180910390fd5b6108b48282611296565b60095481565b6000610b2e6105f3610ff1565b610b695760405162461bcd60e51b815260040180806020018281038252603a815260200180611740603a913960400191505060405180910390fd5b33600090815260036020526040902054821115610bb75760405162461bcd60e51b815260040180806020018281038252602c815260200180611802602c913960400191505060405180910390fd5b33600090815260036020526040902054610bd19083611037565b33600090815260036020526040808220929092556001600160a01b03851681522054610bfd9083611080565b6001600160a01b0384166000818152600360209081526040918290209390935580518581529051919233926000805160206117bd8339815191529281900390910190a350600192915050565b60006109946001836111ab565b610c616105f3610ff1565b610c9c5760405162461bcd60e51b815260040180806020018281038252603a815260200180611740603a913960400191505060405180910390fd5b610ca68282610b21565b506108b481611353565b610cbb610790610ff1565b610cf65760405162461bcd60e51b81526004018080602001828103825260308152602001806116ef6030913960400191505060405180910390fd5b600a55565b600b5481565b60085481565b600b54600090610d179083611366565b600c54604080516370a0823160e01b815233600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610d6857600080fd5b505afa158015610d7c573d6000803e3d6000fd5b505050506040513d6020811015610d9257600080fd5b5051905081811015610dd55760405162461bcd60e51b81526004018080602001828103825260268152602001806116a66026913960400191505060405180910390fd5b82600a541015610e165760405162461bcd60e51b81526004018080602001828103825260298152602001806116496029913960400191505060405180910390fd5b600d54610e2e9033906001600160a01b0316846113bf565b600a54610e3b9084611037565b600a55610e4833846110da565b610e5183611198565b505050565b610e5e610ff1565b6000546001600160a01b03908116911614610ec0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116610f055760405162461bcd60e51b81526004018080602001828103825260268152602001806116236026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610a72610f6b610ff1565b6114e2565b610f7a82826111ab565b15610fcc576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b3390565b611000600282610f70565b6040516001600160a01b038216907f531fb3f4abc13206cb61d4f7ef7b0acf84a392b92b2ce893be8ef23553e74a8f90600090a250565b600061107983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611524565b9392505050565b600082820183811015611079576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b03821661111f5760405162461bcd60e51b81526004018080602001828103825260238152602001806116cc6023913960400191505060405180910390fd5b60075461112c9082611080565b6007556001600160a01b0382166000908152600360205260409020546111529082611080565b6001600160a01b03831660008181526003602090815260408083209490945583518581529351929391926000805160206117bd8339815191529281900390910190a35050565b6009546111a59082611080565b60095550565b60006001600160a01b0382166111f25760405162461bcd60e51b815260040180806020018281038252602281526020018061179b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b61121d600182610f70565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b61125f6001826115bb565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b6001600160a01b0382166112db5760405162461bcd60e51b81526004018080602001828103825260258152602001806117dd6025913960400191505060405180910390fd5b6007546112e89082611037565b6007556001600160a01b03821660009081526003602052604090205461130e9082611037565b6001600160a01b0383166000818152600360209081526040808320949094558351858152935191936000805160206117bd833981519152929081900390910190a35050565b6008546113609082611080565b60085550565b60008261137557506000610994565b8282028284828161138257fe5b04146110795760405162461bcd60e51b815260040180806020018281038252602181526020018061177a6021913960400191505060405180910390fd5b600c54604080516370a0823160e01b81526001600160a01b038681166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b15801561141057600080fd5b505afa158015611424573d6000803e3d6000fd5b505050506040513d602081101561143a57600080fd5b50519050600081831161144d578261144f565b815b600c54604080516323b872dd60e01b81526001600160a01b03898116600483015288811660248301526044820185905291519394509116916323b872dd916064808201926020929091908290030181600087803b1580156114af57600080fd5b505af11580156114c3573d6000803e3d6000fd5b505050506040513d60208110156114d957600080fd5b50505050505050565b6114ed6002826115bb565b6040516001600160a01b038216907fe63cdbc5df48c9c19f2cdb038b14762dae6eabe99f357a3caab7c1f1f5f26f7290600090a250565b600081848411156115b35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611578578181015183820152602001611560565b50505050905090810190601f1680156115a55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6115c582826111ab565b6116005760405162461bcd60e51b815260040180806020018281038252602181526020018061171f6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373546f736869436f696e3a204e6f7420656e6f75676820546f736869436f696e20666f722073616c652e546f736869436f696e3a2043616e6e6f74206275726e206d6f7265207468616e2074686520616464726573732062616c616e6365546f736869436f696e3a204e6f7420656e6f75676820544f53484920696e2077616c6c65742e546f736869436f696e3a206d696e7420746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6543616e5472616e73666572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652043616e5472616e7366657220726f6c65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef546f736869436f696e3a206275726e2066726f6d20746865207a65726f2061646472657373546f736869436f696e3a2043616e6e6f74207472616e73666572206d6f7265207468616e2062616c616e6365a2646970667358221220bfc7624d10956d222d1973f12e2c86c50c3fb6291edb10b3830b95929950d27f64736f6c634300060c0033526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373000000000000000000000000f136d7b0b7ae5b86d21e7b78dfa95375a7360f190000000000000000000000003e8168ffb61c2dfd8da9b8621a1b7a2ce52672f0
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c80638da5cb5b11610104578063aa271e1a116100a2578063d54ad2a111610071578063d54ad2a114610507578063efef39a11461050f578063f2fde38b1461052c578063f408d96c14610552576101cf565b8063aa271e1a14610490578063aad3ec96146104b6578063abd4df67146104e2578063c04db401146104ff576101cf565b806398650275116100de57806398650275146104285780639dc29fac14610430578063a2309ff81461045c578063a9059cbb14610464576101cf565b80638da5cb5b146103f257806395d89b41146103fa578063983b2d5614610402576101cf565b80633e3d5b7c1161017157806370a082311161014b57806370a0823114610396578063715018a6146103bc57806378fc3cb3146103c457806379cfb19b146103ea576101cf565b80633e3d5b7c146103295780633eebdbcd1461034657806340c10f191461036a576101cf565b806323b872dd116101ad57806323b872dd1461029357806324c5b464146102dd578063313ce567146103035780633b9335b114610321576101cf565b806306fdde03146101d4578063101aab781461025157806318160ddd14610279575b600080fd5b6101dc61055a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102165781810151838201526020016101fe565b50505050905090810190601f1680156102435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102776004803603602081101561026757600080fd5b50356001600160a01b03166105e8565b005b61028161063f565b60408051918252519081900360200190f35b6102c9600480360360608110156102a957600080fd5b506001600160a01b03813581169160208101359091169060400135610645565b604080519115158252519081900360200190f35b610277600480360360208110156102f357600080fd5b50356001600160a01b0316610785565b61030b6107f2565b6040805160ff9092168252519081900360200190f35b6102816107fb565b6102776004803603602081101561033f57600080fd5b5035610801565b61034e61084c565b604080516001600160a01b039092168252519081900360200190f35b6102776004803603604081101561038057600080fd5b506001600160a01b03813516906020013561085b565b610281600480360360208110156103ac57600080fd5b50356001600160a01b03166108b8565b6102776108d3565b6102c9600480360360208110156103da57600080fd5b50356001600160a01b0316610987565b61034e61099a565b61034e6109a9565b6101dc6109b8565b6102776004803603602081101561041857600080fd5b50356001600160a01b0316610a13565b610277610a62565b6102776004803603604081101561044657600080fd5b506001600160a01b038135169060200135610a74565b610281610b1b565b6102c96004803603604081101561047a57600080fd5b506001600160a01b038135169060200135610b21565b6102c9600480360360208110156104a657600080fd5b50356001600160a01b0316610c49565b610277600480360360408110156104cc57600080fd5b506001600160a01b038135169060200135610c56565b610277600480360360208110156104f857600080fd5b5035610cb0565b610281610cfb565b610281610d01565b6102776004803603602081101561052557600080fd5b5035610d07565b6102776004803603602081101561054257600080fd5b50356001600160a01b0316610e56565b610277610f60565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105e05780601f106105b5576101008083540402835291602001916105e0565b820191906000526020600020905b8154815290600101906020018083116105c357829003601f168201915b505050505081565b6105f86105f3610ff1565b610987565b6106335760405162461bcd60e51b815260040180806020018281038252603a815260200180611740603a913960400191505060405180910390fd5b61063c81610ff5565b50565b60075481565b60006106526105f3610ff1565b61068d5760405162461bcd60e51b815260040180806020018281038252603a815260200180611740603a913960400191505060405180910390fd5b6001600160a01b0384166000908152600360205260409020548211156106e45760405162461bcd60e51b815260040180806020018281038252602c815260200180611802602c913960400191505060405180910390fd5b6001600160a01b0384166000908152600360205260409020546107079083611037565b6001600160a01b0380861660009081526003602052604080822093909355908516815220546107369083611080565b6001600160a01b0380851660008181526003602090815260409182902094909455805186815290519193928816926000805160206117bd83398151915292918290030190a35060019392505050565b610795610790610ff1565b610c49565b6107d05760405162461bcd60e51b81526004018080602001828103825260308152602001806116ef6030913960400191505060405180910390fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b60065460ff1681565b600a5481565b61080c610790610ff1565b6108475760405162461bcd60e51b81526004018080602001828103825260308152602001806116ef6030913960400191505060405180910390fd5b600b55565b600c546001600160a01b031681565b610866610790610ff1565b6108a15760405162461bcd60e51b81526004018080602001828103825260308152602001806116ef6030913960400191505060405180910390fd5b6108ab82826110da565b6108b481611198565b5050565b6001600160a01b031660009081526003602052604090205490565b6108db610ff1565b6000546001600160a01b0390811691161461093d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60006109946002836111ab565b92915050565b600d546001600160a01b031681565b6000546001600160a01b031690565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105e05780601f106105b5576101008083540402835291602001916105e0565b610a1e610790610ff1565b610a595760405162461bcd60e51b81526004018080602001828103825260308152602001806116ef6030913960400191505060405180910390fd5b61063c81611212565b610a72610a6d610ff1565b611254565b565b610a7f6105f3610ff1565b610aba5760405162461bcd60e51b815260040180806020018281038252603a815260200180611740603a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902054811115610b115760405162461bcd60e51b81526004018080602001828103825260348152602001806116726034913960400191505060405180910390fd5b6108b48282611296565b60095481565b6000610b2e6105f3610ff1565b610b695760405162461bcd60e51b815260040180806020018281038252603a815260200180611740603a913960400191505060405180910390fd5b33600090815260036020526040902054821115610bb75760405162461bcd60e51b815260040180806020018281038252602c815260200180611802602c913960400191505060405180910390fd5b33600090815260036020526040902054610bd19083611037565b33600090815260036020526040808220929092556001600160a01b03851681522054610bfd9083611080565b6001600160a01b0384166000818152600360209081526040918290209390935580518581529051919233926000805160206117bd8339815191529281900390910190a350600192915050565b60006109946001836111ab565b610c616105f3610ff1565b610c9c5760405162461bcd60e51b815260040180806020018281038252603a815260200180611740603a913960400191505060405180910390fd5b610ca68282610b21565b506108b481611353565b610cbb610790610ff1565b610cf65760405162461bcd60e51b81526004018080602001828103825260308152602001806116ef6030913960400191505060405180910390fd5b600a55565b600b5481565b60085481565b600b54600090610d179083611366565b600c54604080516370a0823160e01b815233600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610d6857600080fd5b505afa158015610d7c573d6000803e3d6000fd5b505050506040513d6020811015610d9257600080fd5b5051905081811015610dd55760405162461bcd60e51b81526004018080602001828103825260268152602001806116a66026913960400191505060405180910390fd5b82600a541015610e165760405162461bcd60e51b81526004018080602001828103825260298152602001806116496029913960400191505060405180910390fd5b600d54610e2e9033906001600160a01b0316846113bf565b600a54610e3b9084611037565b600a55610e4833846110da565b610e5183611198565b505050565b610e5e610ff1565b6000546001600160a01b03908116911614610ec0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116610f055760405162461bcd60e51b81526004018080602001828103825260268152602001806116236026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610a72610f6b610ff1565b6114e2565b610f7a82826111ab565b15610fcc576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b3390565b611000600282610f70565b6040516001600160a01b038216907f531fb3f4abc13206cb61d4f7ef7b0acf84a392b92b2ce893be8ef23553e74a8f90600090a250565b600061107983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611524565b9392505050565b600082820183811015611079576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b03821661111f5760405162461bcd60e51b81526004018080602001828103825260238152602001806116cc6023913960400191505060405180910390fd5b60075461112c9082611080565b6007556001600160a01b0382166000908152600360205260409020546111529082611080565b6001600160a01b03831660008181526003602090815260408083209490945583518581529351929391926000805160206117bd8339815191529281900390910190a35050565b6009546111a59082611080565b60095550565b60006001600160a01b0382166111f25760405162461bcd60e51b815260040180806020018281038252602281526020018061179b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b61121d600182610f70565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b61125f6001826115bb565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b6001600160a01b0382166112db5760405162461bcd60e51b81526004018080602001828103825260258152602001806117dd6025913960400191505060405180910390fd5b6007546112e89082611037565b6007556001600160a01b03821660009081526003602052604090205461130e9082611037565b6001600160a01b0383166000818152600360209081526040808320949094558351858152935191936000805160206117bd833981519152929081900390910190a35050565b6008546113609082611080565b60085550565b60008261137557506000610994565b8282028284828161138257fe5b04146110795760405162461bcd60e51b815260040180806020018281038252602181526020018061177a6021913960400191505060405180910390fd5b600c54604080516370a0823160e01b81526001600160a01b038681166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b15801561141057600080fd5b505afa158015611424573d6000803e3d6000fd5b505050506040513d602081101561143a57600080fd5b50519050600081831161144d578261144f565b815b600c54604080516323b872dd60e01b81526001600160a01b03898116600483015288811660248301526044820185905291519394509116916323b872dd916064808201926020929091908290030181600087803b1580156114af57600080fd5b505af11580156114c3573d6000803e3d6000fd5b505050506040513d60208110156114d957600080fd5b50505050505050565b6114ed6002826115bb565b6040516001600160a01b038216907fe63cdbc5df48c9c19f2cdb038b14762dae6eabe99f357a3caab7c1f1f5f26f7290600090a250565b600081848411156115b35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611578578181015183820152602001611560565b50505050905090810190601f1680156115a55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6115c582826111ab565b6116005760405162461bcd60e51b815260040180806020018281038252602181526020018061171f6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373546f736869436f696e3a204e6f7420656e6f75676820546f736869436f696e20666f722073616c652e546f736869436f696e3a2043616e6e6f74206275726e206d6f7265207468616e2074686520616464726573732062616c616e6365546f736869436f696e3a204e6f7420656e6f75676820544f53484920696e2077616c6c65742e546f736869436f696e3a206d696e7420746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6543616e5472616e73666572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652043616e5472616e7366657220726f6c65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef546f736869436f696e3a206275726e2066726f6d20746865207a65726f2061646472657373546f736869436f696e3a2043616e6e6f74207472616e73666572206d6f7265207468616e2062616c616e6365a2646970667358221220bfc7624d10956d222d1973f12e2c86c50c3fb6291edb10b3830b95929950d27f64736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f136d7b0b7ae5b86d21e7b78dfa95375a7360f190000000000000000000000003e8168ffb61c2dfd8da9b8621a1b7a2ce52672f0
-----Decoded View---------------
Arg [0] : _toshi (address): 0xF136D7b0B7AE5b86D21E7B78DFA95375a7360f19
Arg [1] : _toshiTreasury (address): 0x3e8168fFB61C2dFd8DA9B8621A1B7a2ce52672F0
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000f136d7b0b7ae5b86d21e7b78dfa95375a7360f19
Arg [1] : 0000000000000000000000003e8168ffb61c2dfd8da9b8621a1b7a2ce52672f0
Deployed Bytecode Sourcemap
14726:5849:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14972:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14219:107;;;;;;;;;;;;;;;;-1:-1:-1;14219:107:0;-1:-1:-1;;;;;14219:107:0;;:::i;:::-;;15102:26;;;:::i;:::-;;;;;;;;;;;;;;;;17780:452;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17780:452:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;16050:119;;;;;;;;;;;;;;;;-1:-1:-1;16050:119:0;-1:-1:-1;;;;;16050:119:0;;:::i;15067:26::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15204:56;;;:::i;15927:115::-;;;;;;;;;;;;;;;;-1:-1:-1;15927:115:0;;:::i;15307:19::-;;;:::i;:::-;;;;-1:-1:-1;;;;;15307:19:0;;;;;;;;;;;;;;18525:124;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18525:124:0;;;;;;;;:::i;18314:110::-;;;;;;;;;;;;;;;;-1:-1:-1;18314:110:0;-1:-1:-1;;;;;18314:110:0;;:::i;5478:148::-;;;:::i;14095:116::-;;;;;;;;;;;;;;;;-1:-1:-1;14095:116:0;-1:-1:-1;;;;;14095:116:0;;:::i;15333:28::-;;;:::i;4836:79::-;;;:::i;15026:34::-;;;:::i;13133:92::-;;;;;;;;;;;;;;;;-1:-1:-1;13133:92:0;-1:-1:-1;;;;;13133:92:0;;:::i;13233:79::-;;;:::i;18750:242::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18750:242:0;;;;;;;;:::i;15169:26::-;;;:::i;17218:456::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17218:456:0;;;;;;;;:::i;13016:109::-;;;;;;;;;;;;;;;;-1:-1:-1;13016:109:0;-1:-1:-1;;;;;13016:109:0;;:::i;16978:134::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16978:134:0;;;;;;;;:::i;15729:190::-;;;;;;;;;;;;;;;;-1:-1:-1;15729:190:0;;:::i;15267:31::-;;;:::i;15135:27::-;;;:::i;16270:587::-;;;;;;;;;;;;;;;;-1:-1:-1;16270:587:0;;:::i;5781:281::-;;;;;;;;;;;;;;;;-1:-1:-1;5781:281:0;-1:-1:-1;;;;;5781:281:0;;:::i;14334:89::-;;;:::i;14972:47::-;;;;;;;;;;;;;;;-1:-1:-1;;14972:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14219:107::-;13956:25;13968:12;:10;:12::i;:::-;13956:11;:25::i;:::-;13934:133;;;;-1:-1:-1;;;13934:133:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14294:24:::1;14310:7;14294:15;:24::i;:::-;14219:107:::0;:::o;15102:26::-;;;;:::o;17780:452::-;17910:4;13956:25;13968:12;:10;:12::i;13956:25::-;13934:133;;;;-1:-1:-1;;;13934:133:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17959:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;;17949:25;::::1;;17927:119;;;;-1:-1:-1::0;;;17927:119:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;18077:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;;:27:::1;::::0;18097:6;18077:19:::1;:27::i;:::-;-1:-1:-1::0;;;;;18059:15:0;;::::1;;::::0;;;:9:::1;:15;::::0;;;;;:45;;;;18131:13;;::::1;::::0;;;;:25:::1;::::0;18149:6;18131:17:::1;:25::i;:::-;-1:-1:-1::0;;;;;18115:13:0;;::::1;;::::0;;;:9:::1;:13;::::0;;;;;;;;:41;;;;18174:26;;;;;;;18115:13;;18174:26;;::::1;::::0;-1:-1:-1;;;;;;;;;;;18174:26:0;;;;;;;::::1;-1:-1:-1::0;18220:4:0::1;17780:452:::0;;;;;:::o;16050:119::-;12890:22;12899:12;:10;:12::i;:::-;12890:8;:22::i;:::-;12868:120;;;;-1:-1:-1;;;12868:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16131:13:::1;:30:::0;;-1:-1:-1;;;;;;16131:30:0::1;-1:-1:-1::0;;;;;16131:30:0;;;::::1;::::0;;;::::1;::::0;;16050:119::o;15067:26::-;;;;;;:::o;15204:56::-;;;;:::o;15927:115::-;12890:22;12899:12;:10;:12::i;12890:22::-;12868:120;;;;-1:-1:-1;;;12868:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16006:12:::1;:28:::0;15927:115::o;15307:19::-;;;-1:-1:-1;;;;;15307:19:0;;:::o;18525:124::-;12890:22;12899:12;:10;:12::i;12890:22::-;12868:120;;;;-1:-1:-1;;;12868:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18596:17:::1;18602:2;18606:6;18596:5;:17::i;:::-;18624;18634:6;18624:9;:17::i;:::-;18525:124:::0;;:::o;18314:110::-;-1:-1:-1;;;;;18398:18:0;18371:7;18398:18;;;:9;:18;;;;;;;18314:110::o;5478:148::-;5058:12;:10;:12::i;:::-;5048:6;;-1:-1:-1;;;;;5048:6:0;;;:22;;;5040:67;;;;;-1:-1:-1;;;5040:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5585:1:::1;5569:6:::0;;5548:40:::1;::::0;-1:-1:-1;;;;;5569:6:0;;::::1;::::0;5548:40:::1;::::0;5585:1;;5548:40:::1;5616:1;5599:19:::0;;-1:-1:-1;;;;;;5599:19:0::1;::::0;;5478:148::o;14095:116::-;14154:4;14178:25;:12;14195:7;14178:16;:25::i;:::-;14171:32;14095:116;-1:-1:-1;;14095:116:0:o;15333:28::-;;;-1:-1:-1;;;;;15333:28:0;;:::o;4836:79::-;4874:7;4901:6;-1:-1:-1;;;;;4901:6:0;4836:79;:::o;15026:34::-;;;;;;;;;;;;;;;-1:-1:-1;;15026:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13133:92;12890:22;12899:12;:10;:12::i;12890:22::-;12868:120;;;;-1:-1:-1;;;12868:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13198:19:::1;13209:7;13198:10;:19::i;13233:79::-:0;13277:27;13291:12;:10;:12::i;:::-;13277:13;:27::i;:::-;13233:79::o;18750:242::-;13956:25;13968:12;:10;:12::i;13956:25::-;13934:133;;;;-1:-1:-1;;;13934:133:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18849:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;;:24;-1:-1:-1;18849:24:0::1;18827:126;;;;-1:-1:-1::0;;;18827:126:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18966:18;18972:4;18978:5;18966;:18::i;15169:26::-:0;;;;:::o;17218:456::-;17323:4;13956:25;13968:12;:10;:12::i;13956:25::-;13934:133;;;;-1:-1:-1;;;13934:133:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17387:10:::1;17377:21;::::0;;;:9:::1;:21;::::0;;;;;17367:31;::::1;;17345:125;;;;-1:-1:-1::0;;;17345:125:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17517:10;17507:21;::::0;;;:9:::1;:21;::::0;;;;;:33:::1;::::0;17533:6;17507:25:::1;:33::i;:::-;17493:10;17483:21;::::0;;;:9:::1;:21;::::0;;;;;:57;;;;-1:-1:-1;;;;;17567:13:0;::::1;::::0;;;;:25:::1;::::0;17585:6;17567:17:::1;:25::i;:::-;-1:-1:-1::0;;;;;17551:13:0;::::1;;::::0;;;:9:::1;:13;::::0;;;;;;;;:41;;;;17610:32;;;;;;;17551:13;;17619:10:::1;::::0;-1:-1:-1;;;;;;;;;;;17610:32:0;;;;;;;;::::1;-1:-1:-1::0;17662:4:0::1;17218:456:::0;;;;:::o;13016:109::-;13072:4;13096:21;:8;13109:7;13096:12;:21::i;16978:134::-;13956:25;13968:12;:10;:12::i;13956:25::-;13934:133;;;;-1:-1:-1;;;13934:133:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17055:20:::1;17064:2;17068:6;17055:8;:20::i;:::-;;17086:18;17097:6;17086:10;:18::i;15729:190::-:0;12890:22;12899:12;:10;:12::i;12890:22::-;12868:120;;;;-1:-1:-1;;;12868:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15857:25:::1;:54:::0;15729:190::o;15267:31::-;;;;:::o;15135:27::-;;;;:::o;16270:587::-;16340:12;;16324:13;;16340:24;;16357:6;16340:16;:24::i;:::-;16393:5;;:27;;;-1:-1:-1;;;16393:27:0;;16409:10;16393:27;;;;;;16324:40;;-1:-1:-1;16375:15:0;;-1:-1:-1;;;;;16393:5:0;;;;:15;;:27;;;;;;;;;;;;;;;:5;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16393:27:0;;-1:-1:-1;16441:16:0;;;;16433:67;;;;-1:-1:-1;;;16433:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16562:6;16533:25;;:35;;16511:126;;;;-1:-1:-1;;;16511:126:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16684:13;;16650:55;;16672:10;;-1:-1:-1;;;;;16684:13:0;16699:5;16650:21;:55::i;:::-;16746:25;;:37;;16776:6;16746:29;:37::i;:::-;16718:25;:65;16796:25;16802:10;16814:6;16796:5;:25::i;:::-;16832:17;16842:6;16832:9;:17::i;:::-;16270:587;;;:::o;5781:281::-;5058:12;:10;:12::i;:::-;5048:6;;-1:-1:-1;;;;;5048:6:0;;;:22;;;5040:67;;;;;-1:-1:-1;;;5040:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5884:22:0;::::1;5862:110;;;;-1:-1:-1::0;;;5862:110:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6009:6;::::0;;5988:38:::1;::::0;-1:-1:-1;;;;;5988:38:0;;::::1;::::0;6009:6;::::1;::::0;5988:38:::1;::::0;::::1;6037:6;:17:::0;;-1:-1:-1;;;;;;6037:17:0::1;-1:-1:-1::0;;;;;6037:17:0;;;::::1;::::0;;;::::1;::::0;;5781:281::o;14334:89::-;14383:32;14402:12;:10;:12::i;:::-;14383:18;:32::i;11772:178::-;11850:18;11854:4;11860:7;11850:3;:18::i;:::-;11849:19;11841:63;;;;;-1:-1:-1;;;11841:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11915:20:0;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;11915:27:0;11938:4;11915:27;;;11772:178::o;3423:106::-;3511:10;3423:106;:::o;14431:136::-;14493:25;:12;14510:7;14493:16;:25::i;:::-;14534;;-1:-1:-1;;;;;14534:25:0;;;;;;;;14431:136;:::o;7400:::-;7458:7;7485:43;7489:1;7492;7485:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;7478:50;7400:136;-1:-1:-1;;;7400:136:0:o;6936:181::-;6994:7;7026:5;;;7050:6;;;;7042:46;;;;;-1:-1:-1;;;7042:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;19334:287;-1:-1:-1;;;;;19405:16:0;;19397:64;;;;-1:-1:-1;;;19397:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19488:11;;:23;;19504:6;19488:15;:23::i;:::-;19474:11;:37;-1:-1:-1;;;;;19538:13:0;;;;;;:9;:13;;;;;;:25;;19556:6;19538:17;:25::i;:::-;-1:-1:-1;;;;;19522:13:0;;;;;;:9;:13;;;;;;;;:41;;;;19581:32;;;;;;;19522:13;;;;-1:-1:-1;;;;;;;;;;;19581:32:0;;;;;;;;;19334:287;;:::o;15621:100::-;15690:11;;:23;;15706:6;15690:15;:23::i;:::-;15676:11;:37;-1:-1:-1;15621:100:0:o;12308:235::-;12407:4;-1:-1:-1;;;;;12437:21:0;;12429:68;;;;-1:-1:-1;;;12429:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12515:20:0;:11;:20;;;;;;;;;;;;;;;12308:235::o;13320:122::-;13377:21;:8;13390:7;13377:12;:21::i;:::-;13414:20;;-1:-1:-1;;;;;13414:20:0;;;;;;;;13320:122;:::o;13450:130::-;13510:24;:8;13526:7;13510:15;:24::i;:::-;13550:22;;-1:-1:-1;;;;;13550:22:0;;;;;;;;13450:130;:::o;19856:299::-;-1:-1:-1;;;;;19929:18:0;;19921:68;;;;-1:-1:-1;;;19921:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20016:11;;:23;;20032:6;20016:15;:23::i;:::-;20002:11;:37;-1:-1:-1;;;;;20068:15:0;;;;;;:9;:15;;;;;;:27;;20088:6;20068:19;:27::i;:::-;-1:-1:-1;;;;;20050:15:0;;;;;;:9;:15;;;;;;;;:45;;;;20113:34;;;;;;;20050:15;;-1:-1:-1;;;;;;;;;;;20113:34:0;;;;;;;;;;19856:299;;:::o;15510:103::-;15581:12;;:24;;15598:6;15581:16;:24::i;:::-;15566:12;:39;-1:-1:-1;15510:103:0:o;8324:471::-;8382:7;8627:6;8623:47;;-1:-1:-1;8657:1:0;8650:8;;8623:47;8694:5;;;8698:1;8694;:5;:1;8718:5;;;;;:10;8710:56;;;;-1:-1:-1;;;8710:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20246:326;20396:5;;:30;;;-1:-1:-1;;;20396:30:0;;-1:-1:-1;;;;;20396:30:0;;;;;;;;;20373:20;;20396:5;;;;;:15;;:30;;;;;;;;;;;;;;;:5;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20396:30:0;;-1:-1:-1;20437:22:0;20462:21;;;:45;;20501:6;20462:45;;;20486:12;20462:45;20520:5;;:44;;;-1:-1:-1;;;20520:44:0;;-1:-1:-1;;;;;20520:44:0;;;;;;;;;;;;;;;;;;;;;;20437:70;;-1:-1:-1;20520:5:0;;;:18;;:44;;;;;;;;;;;;;;;:5;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;20246:326:0:o;14575:144::-;14640:28;:12;14660:7;14640:19;:28::i;:::-;14684:27;;-1:-1:-1;;;;;14684:27:0;;;;;;;;14575:144;:::o;7839:226::-;7959:7;7995:12;7987:6;;;;7979:29;;;;-1:-1:-1;;;7979:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8031:5:0;;;7839:226::o;12030:183::-;12110:18;12114:4;12120:7;12110:3;:18::i;:::-;12102:64;;;;-1:-1:-1;;;12102:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12177:20:0;12200:5;12177:20;;;;;;;;;;;:28;;-1:-1:-1;;12177:28:0;;;12030:183::o
Swarm Source
ipfs://bfc7624d10956d222d1973f12e2c86c50c3fb6291edb10b3830b95929950d27f
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.