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
TokenTracker
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
PoolTokensContainer
Compiler Version
v0.4.26+commit.4563c3fc
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-07-31 */ // File: solidity/contracts/utility/interfaces/IOwned.sol pragma solidity 0.4.26; /* Owned contract interface */ contract IOwned { // this function isn't abstract since the compiler emits automatically generated getter functions as external function owner() public view returns (address) {this;} function transferOwnership(address _newOwner) public; function acceptOwnership() public; } // File: solidity/contracts/token/interfaces/IERC20Token.sol pragma solidity 0.4.26; /* ERC20 Standard Token interface */ contract IERC20Token { // these functions aren't abstract since the compiler emits automatically generated getter functions as external function name() public view returns (string) {this;} function symbol() public view returns (string) {this;} function decimals() public view returns (uint8) {this;} function totalSupply() public view returns (uint256) {this;} function balanceOf(address _owner) public view returns (uint256) {_owner; this;} function allowance(address _owner, address _spender) public view returns (uint256) {_owner; _spender; this;} function transfer(address _to, uint256 _value) public returns (bool success); function transferFrom(address _from, address _to, uint256 _value) public returns (bool success); function approve(address _spender, uint256 _value) public returns (bool success); } // File: solidity/contracts/utility/interfaces/ITokenHolder.sol pragma solidity 0.4.26; /* Token Holder interface */ contract ITokenHolder is IOwned { function withdrawTokens(IERC20Token _token, address _to, uint256 _amount) public; } // File: solidity/contracts/converter/interfaces/IConverterAnchor.sol pragma solidity 0.4.26; /* Converter Anchor interface */ contract IConverterAnchor is IOwned, ITokenHolder { } // File: solidity/contracts/token/interfaces/ISmartToken.sol pragma solidity 0.4.26; /* Smart Token interface */ contract ISmartToken is IConverterAnchor, IERC20Token { function disableTransfers(bool _disable) public; function issue(address _to, uint256 _amount) public; function destroy(address _from, uint256 _amount) public; } // File: solidity/contracts/converter/types/liquidity-pool-v2/interfaces/IPoolTokensContainer.sol pragma solidity 0.4.26; /* Pool Tokens Container interface */ contract IPoolTokensContainer is IConverterAnchor { function poolTokens() public view returns (ISmartToken[]); function createToken() public returns (ISmartToken); function mint(ISmartToken _token, address _to, uint256 _amount) public; function burn(ISmartToken _token, address _from, uint256 _amount) public; } // File: solidity/contracts/utility/Owned.sol pragma solidity 0.4.26; /** * @dev Provides support and utilities for contract ownership */ contract Owned is IOwned { address public owner; address public newOwner; /** * @dev triggered when the owner is updated * * @param _prevOwner previous owner * @param _newOwner new owner */ event OwnerUpdate(address indexed _prevOwner, address indexed _newOwner); /** * @dev initializes a new Owned instance */ constructor() public { owner = msg.sender; } // allows execution by the owner only modifier ownerOnly { _ownerOnly(); _; } // error message binary size optimization function _ownerOnly() internal view { require(msg.sender == owner, "ERR_ACCESS_DENIED"); } /** * @dev allows transferring the contract ownership * the new owner still needs to accept the transfer * can only be called by the contract owner * * @param _newOwner new contract owner */ function transferOwnership(address _newOwner) public ownerOnly { require(_newOwner != owner, "ERR_SAME_OWNER"); newOwner = _newOwner; } /** * @dev used by a new owner to accept an ownership transfer */ function acceptOwnership() public { require(msg.sender == newOwner, "ERR_ACCESS_DENIED"); emit OwnerUpdate(owner, newOwner); owner = newOwner; newOwner = address(0); } } // File: solidity/contracts/utility/Utils.sol pragma solidity 0.4.26; /** * @dev Utilities & Common Modifiers */ contract Utils { // verifies that a value is greater than zero modifier greaterThanZero(uint256 _value) { _greaterThanZero(_value); _; } // error message binary size optimization function _greaterThanZero(uint256 _value) internal pure { require(_value > 0, "ERR_ZERO_VALUE"); } // validates an address - currently only checks that it isn't null modifier validAddress(address _address) { _validAddress(_address); _; } // error message binary size optimization function _validAddress(address _address) internal pure { require(_address != address(0), "ERR_INVALID_ADDRESS"); } // verifies that the address is different than this contract address modifier notThis(address _address) { _notThis(_address); _; } // error message binary size optimization function _notThis(address _address) internal view { require(_address != address(this), "ERR_ADDRESS_IS_SELF"); } } // File: solidity/contracts/utility/TokenHandler.sol pragma solidity 0.4.26; contract TokenHandler { bytes4 private constant APPROVE_FUNC_SELECTOR = bytes4(keccak256("approve(address,uint256)")); bytes4 private constant TRANSFER_FUNC_SELECTOR = bytes4(keccak256("transfer(address,uint256)")); bytes4 private constant TRANSFER_FROM_FUNC_SELECTOR = bytes4(keccak256("transferFrom(address,address,uint256)")); /** * @dev executes the ERC20 token's `approve` function and reverts upon failure * the main purpose of this function is to prevent a non standard ERC20 token * from failing silently * * @param _token ERC20 token address * @param _spender approved address * @param _value allowance amount */ function safeApprove(IERC20Token _token, address _spender, uint256 _value) internal { execute(_token, abi.encodeWithSelector(APPROVE_FUNC_SELECTOR, _spender, _value)); } /** * @dev executes the ERC20 token's `transfer` function and reverts upon failure * the main purpose of this function is to prevent a non standard ERC20 token * from failing silently * * @param _token ERC20 token address * @param _to target address * @param _value transfer amount */ function safeTransfer(IERC20Token _token, address _to, uint256 _value) internal { execute(_token, abi.encodeWithSelector(TRANSFER_FUNC_SELECTOR, _to, _value)); } /** * @dev executes the ERC20 token's `transferFrom` function and reverts upon failure * the main purpose of this function is to prevent a non standard ERC20 token * from failing silently * * @param _token ERC20 token address * @param _from source address * @param _to target address * @param _value transfer amount */ function safeTransferFrom(IERC20Token _token, address _from, address _to, uint256 _value) internal { execute(_token, abi.encodeWithSelector(TRANSFER_FROM_FUNC_SELECTOR, _from, _to, _value)); } /** * @dev executes a function on the ERC20 token and reverts upon failure * the main purpose of this function is to prevent a non standard ERC20 token * from failing silently * * @param _token ERC20 token address * @param _data data to pass in to the token's contract for execution */ function execute(IERC20Token _token, bytes memory _data) private { uint256[1] memory ret = [uint256(1)]; assembly { let success := call( gas, // gas remaining _token, // destination address 0, // no ether add(_data, 32), // input buffer (starts after the first 32 bytes in the `data` array) mload(_data), // input length (loaded from the first 32 bytes in the `data` array) ret, // output buffer 32 // output length ) if iszero(success) { revert(0, 0) } } require(ret[0] != 0, "ERR_TRANSFER_FAILED"); } } // File: solidity/contracts/utility/TokenHolder.sol pragma solidity 0.4.26; /** * @dev We consider every contract to be a 'token holder' since it's currently not possible * for a contract to deny receiving tokens. * * The TokenHolder's contract sole purpose is to provide a safety mechanism that allows * the owner to send tokens that were sent to the contract by mistake back to their sender. * * Note that we use the non standard ERC-20 interface which has no return value for transfer * in order to support both non standard as well as standard token contracts. * see https://github.com/ethereum/solidity/issues/4116 */ contract TokenHolder is ITokenHolder, TokenHandler, Owned, Utils { /** * @dev withdraws tokens held by the contract and sends them to an account * can only be called by the owner * * @param _token ERC20 token contract address * @param _to account to receive the new amount * @param _amount amount to withdraw */ function withdrawTokens(IERC20Token _token, address _to, uint256 _amount) public ownerOnly validAddress(_token) validAddress(_to) notThis(_to) { safeTransfer(_token, _to, _amount); } } // File: solidity/contracts/utility/SafeMath.sol pragma solidity 0.4.26; /** * @dev Library for basic math operations with overflow/underflow protection */ library SafeMath { /** * @dev returns the sum of _x and _y, reverts if the calculation overflows * * @param _x value 1 * @param _y value 2 * * @return sum */ function add(uint256 _x, uint256 _y) internal pure returns (uint256) { uint256 z = _x + _y; require(z >= _x, "ERR_OVERFLOW"); return z; } /** * @dev returns the difference of _x minus _y, reverts if the calculation underflows * * @param _x minuend * @param _y subtrahend * * @return difference */ function sub(uint256 _x, uint256 _y) internal pure returns (uint256) { require(_x >= _y, "ERR_UNDERFLOW"); return _x - _y; } /** * @dev returns the product of multiplying _x by _y, reverts if the calculation overflows * * @param _x factor 1 * @param _y factor 2 * * @return product */ function mul(uint256 _x, uint256 _y) internal pure returns (uint256) { // gas optimization if (_x == 0) return 0; uint256 z = _x * _y; require(z / _x == _y, "ERR_OVERFLOW"); return z; } /** * @dev Integer division of two numbers truncating the quotient, reverts on division by zero. * * @param _x dividend * @param _y divisor * * @return quotient */ function div(uint256 _x, uint256 _y) internal pure returns (uint256) { require(_y > 0, "ERR_DIVIDE_BY_ZERO"); uint256 c = _x / _y; return c; } } // File: solidity/contracts/token/ERC20Token.sol pragma solidity 0.4.26; /** * @dev ERC20 Standard Token implementation */ contract ERC20Token is IERC20Token, Utils { using SafeMath for uint256; string public name; string public symbol; uint8 public decimals; uint256 public totalSupply; mapping (address => uint256) public balanceOf; mapping (address => mapping (address => uint256)) public allowance; /** * @dev triggered when tokens are transferred between wallets * * @param _from source address * @param _to target address * @param _value transfer amount */ event Transfer(address indexed _from, address indexed _to, uint256 _value); /** * @dev triggered when a wallet allows another wallet to transfer tokens from on its behalf * * @param _owner wallet that approves the allowance * @param _spender wallet that receives the allowance * @param _value allowance amount */ event Approval(address indexed _owner, address indexed _spender, uint256 _value); /** * @dev initializes a new ERC20Token instance * * @param _name token name * @param _symbol token symbol * @param _decimals decimal points, for display purposes * @param _totalSupply total supply of token units */ constructor(string _name, string _symbol, uint8 _decimals, uint256 _totalSupply) public { // validate input require(bytes(_name).length > 0, "ERR_INVALID_NAME"); require(bytes(_symbol).length > 0, "ERR_INVALID_SYMBOL"); name = _name; symbol = _symbol; decimals = _decimals; totalSupply = _totalSupply; balanceOf[msg.sender] = _totalSupply; } /** * @dev transfers tokens to a given address * throws on any error rather then return a false flag to minimize user errors * * @param _to target address * @param _value transfer amount * * @return true if the transfer was successful, false if it wasn't */ function transfer(address _to, uint256 _value) public validAddress(_to) returns (bool success) { balanceOf[msg.sender] = balanceOf[msg.sender].sub(_value); balanceOf[_to] = balanceOf[_to].add(_value); emit Transfer(msg.sender, _to, _value); return true; } /** * @dev transfers tokens to a given address on behalf of another address * throws on any error rather then return a false flag to minimize user errors * * @param _from source address * @param _to target address * @param _value transfer amount * * @return true if the transfer was successful, false if it wasn't */ function transferFrom(address _from, address _to, uint256 _value) public validAddress(_from) validAddress(_to) returns (bool success) { allowance[_from][msg.sender] = allowance[_from][msg.sender].sub(_value); balanceOf[_from] = balanceOf[_from].sub(_value); balanceOf[_to] = balanceOf[_to].add(_value); emit Transfer(_from, _to, _value); return true; } /** * @dev allows another account/contract to transfers tokens on behalf of the caller * throws on any error rather then return a false flag to minimize user errors * * also, to minimize the risk of the approve/transferFrom attack vector * (see https://docs.google.com/document/d/1YLPtQxZu1UAvO9cZ1O2RPXBbT0mooh4DYKjA_jp-RLM/), approve has to be called twice * in 2 separate transactions - once to change the allowance to 0 and secondly to change it to the new allowance value * * @param _spender approved address * @param _value allowance amount * * @return true if the approval was successful, false if it wasn't */ function approve(address _spender, uint256 _value) public validAddress(_spender) returns (bool success) { // if the allowance isn't 0, it can only be updated to 0 to prevent an allowance change immediately after withdrawal require(_value == 0 || allowance[msg.sender][_spender] == 0, "ERR_INVALID_AMOUNT"); allowance[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } } // File: solidity/contracts/token/SmartToken.sol pragma solidity 0.4.26; /** * @dev Smart Token * * 'Owned' is specified here for readability reasons */ contract SmartToken is ISmartToken, Owned, ERC20Token, TokenHolder { using SafeMath for uint256; uint16 public constant version = 4; bool public transfersEnabled = true; // true if transfer/transferFrom are enabled, false otherwise /** * @dev triggered when the total supply is increased * * @param _amount amount that gets added to the supply */ event Issuance(uint256 _amount); /** * @dev triggered when the total supply is decreased * * @param _amount amount that gets removed from the supply */ event Destruction(uint256 _amount); /** * @dev initializes a new SmartToken instance * * @param _name token name * @param _symbol token short symbol, minimum 1 character * @param _decimals for display purposes only */ constructor(string _name, string _symbol, uint8 _decimals) public ERC20Token(_name, _symbol, _decimals, 0) { } // allows execution only when transfers are enabled modifier transfersAllowed { _transfersAllowed(); _; } // error message binary size optimization function _transfersAllowed() internal view { require(transfersEnabled, "ERR_TRANSFERS_DISABLED"); } /** * @dev disables/enables transfers * can only be called by the contract owner * * @param _disable true to disable transfers, false to enable them */ function disableTransfers(bool _disable) public ownerOnly { transfersEnabled = !_disable; } /** * @dev increases the token supply and sends the new tokens to the given account * can only be called by the contract owner * * @param _to account to receive the new amount * @param _amount amount to increase the supply by */ function issue(address _to, uint256 _amount) public ownerOnly validAddress(_to) notThis(_to) { totalSupply = totalSupply.add(_amount); balanceOf[_to] = balanceOf[_to].add(_amount); emit Issuance(_amount); emit Transfer(address(0), _to, _amount); } /** * @dev removes tokens from the given account and decreases the token supply * can only be called by the contract owner * * @param _from account to remove the amount from * @param _amount amount to decrease the supply by */ function destroy(address _from, uint256 _amount) public ownerOnly { balanceOf[_from] = balanceOf[_from].sub(_amount); totalSupply = totalSupply.sub(_amount); emit Transfer(_from, address(0), _amount); emit Destruction(_amount); } // ERC20 standard method overrides with some extra functionality /** * @dev send coins * throws on any error rather then return a false flag to minimize user errors * in addition to the standard checks, the function throws if transfers are disabled * * @param _to target address * @param _value transfer amount * * @return true if the transfer was successful, false if it wasn't */ function transfer(address _to, uint256 _value) public transfersAllowed returns (bool success) { assert(super.transfer(_to, _value)); return true; } /** * @dev an account/contract attempts to get the coins * throws on any error rather then return a false flag to minimize user errors * in addition to the standard checks, the function throws if transfers are disabled * * @param _from source address * @param _to target address * @param _value transfer amount * * @return true if the transfer was successful, false if it wasn't */ function transferFrom(address _from, address _to, uint256 _value) public transfersAllowed returns (bool success) { assert(super.transferFrom(_from, _to, _value)); return true; } } // File: solidity/contracts/converter/types/liquidity-pool-v2/PoolTokensContainer.sol pragma solidity 0.4.26; /** * @dev The PoolTokensContainer contract serves as a container for multiple pool tokens. * It is used by specific liquidity pool types that require more than a single pool token, * while still maintaining the single converter / anchor relationship. * * It maintains and provides a list of the underlying pool tokens. */ contract PoolTokensContainer is IPoolTokensContainer, Owned, TokenHolder { uint8 internal constant MAX_POOL_TOKENS = 5; // maximum pool tokens in the container string public name; // pool name string public symbol; // pool symbol uint8 public decimals; // underlying pool tokens decimals ISmartToken[] private _poolTokens; // underlying pool tokens /** * @dev initializes a new PoolTokensContainer instance * * @param _name pool name, also used as a prefix for the underlying pool token names * @param _symbol pool symbol, also used as a prefix for the underlying pool token symbols * @param _decimals used for the underlying pool token decimals */ constructor(string _name, string _symbol, uint8 _decimals) public { // validate input require(bytes(_name).length > 0, "ERR_INVALID_NAME"); require(bytes(_symbol).length > 0, "ERR_INVALID_SYMBOL"); name = _name; symbol = _symbol; decimals = _decimals; } /** * @dev returns the list of pool tokens * * @return list of pool tokens */ function poolTokens() public view returns (ISmartToken[] memory) { return _poolTokens; } /** * @dev creates a new pool token and adds it to the list * * @return new pool token address */ function createToken() public ownerOnly returns (ISmartToken) { // verify that the max limit wasn't reached require(_poolTokens.length < MAX_POOL_TOKENS, "ERR_MAX_LIMIT_REACHED"); string memory poolName = concatStrDigit(name, uint8(_poolTokens.length + 1)); string memory poolSymbol = concatStrDigit(symbol, uint8(_poolTokens.length + 1)); SmartToken token = new SmartToken(poolName, poolSymbol, decimals); _poolTokens.push(token); return token; } /** * @dev increases the pool token supply and sends the new tokens to the given account * can only be called by the contract owner * * @param _token pool token address * @param _to account to receive the newly minted tokens * @param _amount amount to mint */ function mint(ISmartToken _token, address _to, uint256 _amount) public ownerOnly { _token.issue(_to, _amount); } /** * @dev removes tokens from the given account and decreases the pool token supply * can only be called by the contract owner * * @param _token pool token address * @param _from account to remove the tokens from * @param _amount amount to burn */ function burn(ISmartToken _token, address _from, uint256 _amount) public ownerOnly { _token.destroy(_from, _amount); } /** * @dev concatenates a string and a digit (single only) and returns the result string * * @param _str string * @param _digit digit * @return concatenated string */ function concatStrDigit(string _str, uint8 _digit) private pure returns (string) { return string(abi.encodePacked(_str, uint8(bytes1('0')) + _digit)); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"withdrawTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"poolTokens","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"createToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_from","type":"address"},{"name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_name","type":"string"},{"name":"_symbol","type":"string"},{"name":"_decimals","type":"uint8"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_prevOwner","type":"address"},{"indexed":true,"name":"_newOwner","type":"address"}],"name":"OwnerUpdate","type":"event"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200224038038062002240833981016040908152815160208301519183015160008054600160a060020a03191633178155918401805190949390930192909110620000c157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4552525f494e56414c49445f4e414d4500000000000000000000000000000000604482015290519081900360640190fd5b81516000106200013257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4552525f494e56414c49445f53594d424f4c0000000000000000000000000000604482015290519081900360640190fd5b8251620001479060029060208601906200017b565b5081516200015d9060039060208501906200017b565b506004805460ff191660ff9290921691909117905550620002209050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001be57805160ff1916838001178555620001ee565b82800160010185558215620001ee579182015b82811115620001ee578251825591602001919060010190620001d1565b50620001fc92915062000200565b5090565b6200021d91905b80821115620001fc576000815560010162000207565b90565b61201080620002306000396000f300608060405260043610620000ad5763ffffffff60e060020a60003504166306fdde038114620000b2578063313ce56714620001425780635e35359e14620001705780636d3e313e146200019f57806379ba509714620002095780638da5cb5b146200022157806395d89b4114620002555780639cbf9e36146200026d578063c6c3bbe61462000285578063d4ee1d9014620002b2578063f2fde38b14620002ca578063f6b911bc14620002ee575b600080fd5b348015620000bf57600080fd5b50620000ca6200031b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101562000106578181015183820152602001620000ec565b50505050905090810190601f168015620001345780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156200014f57600080fd5b506200015a620003aa565b6040805160ff9092168252519081900360200190f35b3480156200017d57600080fd5b506200019d600160a060020a0360043581169060243516604435620003b3565b005b348015620001ac57600080fd5b50620001b7620003f6565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015620001f5578181015183820152602001620001db565b505050509050019250505060405180910390f35b3480156200021657600080fd5b506200019d6200045a565b3480156200022e57600080fd5b50620002396200052e565b60408051600160a060020a039092168252519081900360200190f35b3480156200026257600080fd5b50620000ca6200053d565b3480156200027a57600080fd5b50620002396200059b565b3480156200029257600080fd5b506200019d600160a060020a036004358116906024351660443562000882565b348015620002bf57600080fd5b50620002396200090e565b348015620002d757600080fd5b506200019d600160a060020a03600435166200091d565b348015620002fb57600080fd5b506200019d600160a060020a0360043581169060243516604435620009bd565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015620003a25780601f106200037657610100808354040283529160200191620003a2565b820191906000526020600020905b8154815290600101906020018083116200038457829003601f168201915b505050505081565b60045460ff1681565b620003bd62000a2b565b82620003c98162000a90565b82620003d58162000a90565b83620003e18162000af4565b620003ee86868662000b56565b505050505050565b606060058054806020026020016040519081016040528092919081815260200182805480156200045057602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831162000431575b5050505050905090565b600154600160a060020a03163314620004bd576040805160e560020a62461bcd02815260206004820152601160248201527f4552525f4143434553535f44454e494544000000000000000000000000000000604482015290519081900360640190fd5b60015460008054604051600160a060020a0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b600054600160a060020a031681565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015620003a25780601f106200037657610100808354040283529160200191620003a2565b60006060806000620005ac62000a2b565b600580541062000606576040805160e560020a62461bcd02815260206004820152601560248201527f4552525f4d41585f4c494d49545f524541434845440000000000000000000000604482015290519081900360640190fd5b60028054604080516020601f60001961010060018716150201909416859004938401819004810282018101909252828152620006a89390929091830182828015620006955780601f10620006695761010080835404028352916020019162000695565b820191906000526020600020905b8154815290600101906020018083116200067757829003601f168201915b5050600554600101925062000c12915050565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529396506200070e939291830182828015620006955780601f10620006695761010080835404028352916020019162000695565b6004549092508390839060ff166200072562000d8c565b60ff82166040820152606080825284519082015283518190602080830191608084019188019080838360005b838110156200076b57818101518382015260200162000751565b50505050905090810190601f168015620007995780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015620007ce578181015183820152602001620007b4565b50505050905090810190601f168015620007fc5780820380516001836020036101000a031916815260200191505b5095505050505050604051809103906000f08015801562000821573d6000803e3d6000fd5b50600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038316179055949350505050565b6200088c62000a2b565b82600160a060020a031663867904b483836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b158015620008f057600080fd5b505af115801562000905573d6000803e3d6000fd5b50505050505050565b600154600160a060020a031681565b6200092762000a2b565b600054600160a060020a03828116911614156200098e576040805160e560020a62461bcd02815260206004820152600e60248201527f4552525f53414d455f4f574e4552000000000000000000000000000000000000604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b620009c762000a2b565b82600160a060020a031663a24835d183836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b158015620008f057600080fd5b600054600160a060020a0316331462000a8e576040805160e560020a62461bcd02815260206004820152601160248201527f4552525f4143434553535f44454e494544000000000000000000000000000000604482015290519081900360640190fd5b565b600160a060020a038116151562000af1576040805160e560020a62461bcd02815260206004820152601360248201527f4552525f494e56414c49445f4144445245535300000000000000000000000000604482015290519081900360640190fd5b50565b600160a060020a03811630141562000af1576040805160e560020a62461bcd02815260206004820152601360248201527f4552525f414444524553535f49535f53454c4600000000000000000000000000604482015290519081900360640190fd5b604080517f7472616e7366657228616464726573732c75696e74323536290000000000000081528151908190036019018120600160a060020a038516602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915262000c0d90849062000cfa565b505050565b606082827f30000000000000000000000000000000000000000000000000000000000000007f01000000000000000000000000000000000000000000000000000000000000009004016040516020018083805190602001908083835b6020831062000c8f5780518252601f19909201916020918201910162000c6e565b6001836020036101000a0380198251168184511680821785525050505050509050018260ff1660ff167f010000000000000000000000000000000000000000000000000000000000000002815260010192505050604051602081830303815290604052905092915050565b62000d0462000d9d565b602060405190810160405280600181525090506020818351602085016000875af180151562000d3257600080fd5b508051151562000c0d576040805160e560020a62461bcd02815260206004820152601360248201527f4552525f5452414e534645525f4641494c454400000000000000000000000000604482015290519081900360640190fd5b6040516112288062000dbd83390190565b6020604051908101604052806001906020820280388339509192915050560060806040526008805460ff191660011790553480156200001e57600080fd5b506040516200122838038062001228833981016040908152815160208301519183015160008054600160a060020a0319163317815591840180519094939093019290918491849184918110620000d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4552525f494e56414c49445f4e414d4500000000000000000000000000000000604482015290519081900360640190fd5b82516000106200014657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4552525f494e56414c49445f53594d424f4c0000000000000000000000000000604482015290519081900360640190fd5b83516200015b906002906020870190620001a8565b50825162000171906003906020860190620001a8565b506004805460ff191660ff9390931692909217909155600581905533600090815260066020526040902055506200024d9350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001eb57805160ff19168380011785556200021b565b828001600101855582156200021b579182015b828111156200021b578251825591602001919060010190620001fe565b50620002299291506200022d565b5090565b6200024a91905b8082111562000229576000815560010162000234565b90565b610fcb806200025d6000396000f3006080604052600436106101065763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461010b578063095ea7b3146101955780631608f18f146101cd57806318160ddd146101e957806323b872dd14610210578063313ce5671461023a57806354fd4d50146102655780635e35359e1461029157806370a08231146102bb57806379ba5097146102dc578063867904b4146102f15780638da5cb5b1461031557806395d89b4114610346578063a24835d11461035b578063a9059cbb1461037f578063bef97c87146103a3578063d4ee1d90146103b8578063dd62ed3e146103cd578063f2fde38b146103f4575b600080fd5b34801561011757600080fd5b50610120610415565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015a578181015183820152602001610142565b50505050905090810190601f1680156101875780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101a157600080fd5b506101b9600160a060020a03600435166024356104a0565b604080519115158252519081900360200190f35b3480156101d957600080fd5b506101e76004351515610598565b005b3480156101f557600080fd5b506101fe6105b2565b60408051918252519081900360200190f35b34801561021c57600080fd5b506101b9600160a060020a03600435811690602435166044356105b8565b34801561024657600080fd5b5061024f6105df565b6040805160ff9092168252519081900360200190f35b34801561027157600080fd5b5061027a6105e8565b6040805161ffff9092168252519081900360200190f35b34801561029d57600080fd5b506101e7600160a060020a03600435811690602435166044356105ed565b3480156102c757600080fd5b506101fe600160a060020a0360043516610626565b3480156102e857600080fd5b506101e7610638565b3480156102fd57600080fd5b506101e7600160a060020a036004351660243561070b565b34801561032157600080fd5b5061032a6107ed565b60408051600160a060020a039092168252519081900360200190f35b34801561035257600080fd5b506101206107fc565b34801561036757600080fd5b506101e7600160a060020a0360043516602435610857565b34801561038b57600080fd5b506101b9600160a060020a036004351660243561091d565b3480156103af57600080fd5b506101b9610942565b3480156103c457600080fd5b5061032a61094b565b3480156103d957600080fd5b506101fe600160a060020a036004358116906024351661095a565b34801561040057600080fd5b506101e7600160a060020a0360043516610977565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156104985780601f1061046d57610100808354040283529160200191610498565b820191906000526020600020905b81548152906001019060200180831161047b57829003601f168201915b505050505081565b6000826104ac81610a14565b8215806104da5750336000908152600760209081526040808320600160a060020a0388168452909152902054155b1515610530576040805160e560020a62461bcd02815260206004820152601260248201527f4552525f494e56414c49445f414d4f554e540000000000000000000000000000604482015290519081900360640190fd5b336000818152600760209081526040808320600160a060020a03891680855290835292819020879055805187815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6105a0610a77565b6008805460ff19169115919091179055565b60055481565b60006105c2610adb565b6105cd848484610b37565b15156105d557fe5b5060019392505050565b60045460ff1681565b600481565b6105f5610a77565b826105ff81610a14565b8261060981610a14565b8361061381610c48565b61061e868686610ca9565b505050505050565b60066020526000908152604090205481565b600154600160a060020a0316331461069a576040805160e560020a62461bcd02815260206004820152601160248201527f4552525f4143434553535f44454e494544000000000000000000000000000000604482015290519081900360640190fd5b60015460008054604051600160a060020a0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b610713610a77565b8161071d81610a14565b8261072781610c48565b60055461073a908463ffffffff610d6316565b600555600160a060020a038416600090815260066020526040902054610766908463ffffffff610d6316565b600160a060020a03851660009081526006602090815260409182902092909255805185815290517f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3929181900390910190a1604080518481529051600160a060020a03861691600091600080516020610f808339815191529181900360200190a350505050565b600054600160a060020a031681565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104985780601f1061046d57610100808354040283529160200191610498565b61085f610a77565b600160a060020a038216600090815260066020526040902054610888908263ffffffff610dc716565b600160a060020a0383166000908152600660205260409020556005546108b4908263ffffffff610dc716565b600555604080518281529051600091600160a060020a03851691600080516020610f808339815191529181900360200190a36040805182815290517f9a1b418bc061a5d80270261562e6986a35d995f8051145f277be16103abd34539181900360200190a15050565b6000610927610adb565b6109318383610e27565b151561093957fe5b50600192915050565b60085460ff1681565b600154600160a060020a031681565b600760209081526000928352604080842090915290825290205481565b61097f610a77565b600054600160a060020a03828116911614156109e5576040805160e560020a62461bcd02815260206004820152600e60248201527f4552525f53414d455f4f574e4552000000000000000000000000000000000000604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a0381161515610a74576040805160e560020a62461bcd02815260206004820152601360248201527f4552525f494e56414c49445f4144445245535300000000000000000000000000604482015290519081900360640190fd5b50565b600054600160a060020a03163314610ad9576040805160e560020a62461bcd02815260206004820152601160248201527f4552525f4143434553535f44454e494544000000000000000000000000000000604482015290519081900360640190fd5b565b60085460ff161515610ad9576040805160e560020a62461bcd02815260206004820152601660248201527f4552525f5452414e53464552535f44495341424c454400000000000000000000604482015290519081900360640190fd5b600083610b4381610a14565b83610b4d81610a14565b600160a060020a0386166000908152600760209081526040808320338452909152902054610b81908563ffffffff610dc716565b600160a060020a038716600081815260076020908152604080832033845282528083209490945591815260069091522054610bc2908563ffffffff610dc716565b600160a060020a038088166000908152600660205260408082209390935590871681522054610bf7908563ffffffff610d6316565b600160a060020a0380871660008181526006602090815260409182902094909455805188815290519193928a1692600080516020610f8083398151915292918290030190a350600195945050505050565b600160a060020a038116301415610a74576040805160e560020a62461bcd02815260206004820152601360248201527f4552525f414444524553535f49535f53454c4600000000000000000000000000604482015290519081900360640190fd5b604080517f7472616e7366657228616464726573732c75696e74323536290000000000000081528151908190036019018120600160a060020a038516602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610d5e908490610ed2565b505050565b600082820183811015610dc0576040805160e560020a62461bcd02815260206004820152600c60248201527f4552525f4f564552464c4f570000000000000000000000000000000000000000604482015290519081900360640190fd5b9392505050565b600081831015610e21576040805160e560020a62461bcd02815260206004820152600d60248201527f4552525f554e444552464c4f5700000000000000000000000000000000000000604482015290519081900360640190fd5b50900390565b600082610e3381610a14565b33600090815260066020526040902054610e53908463ffffffff610dc716565b3360009081526006602052604080822092909255600160a060020a03861681522054610e85908463ffffffff610d6316565b600160a060020a038516600081815260066020908152604091829020939093558051868152905191923392600080516020610f808339815191529281900390910190a35060019392505050565b610eda610f60565b602060405190810160405280600181525090506020818351602085016000875af1801515610f0757600080fd5b5080511515610d5e576040805160e560020a62461bcd02815260206004820152601360248201527f4552525f5452414e534645525f4641494c454400000000000000000000000000604482015290519081900360640190fd5b60206040519081016040528060019060208202803883395091929150505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820beee208c22ae870537d105c61a090e7f41fa6f1fef41c468ae684af1b789c8650029a165627a7a72305820f2c36512c8ba78021679f42c96d5a108a4548efe17a2dece61cf4cf5910372d80029000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000004506f6f6c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004504f4f4c00000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405260043610620000ad5763ffffffff60e060020a60003504166306fdde038114620000b2578063313ce56714620001425780635e35359e14620001705780636d3e313e146200019f57806379ba509714620002095780638da5cb5b146200022157806395d89b4114620002555780639cbf9e36146200026d578063c6c3bbe61462000285578063d4ee1d9014620002b2578063f2fde38b14620002ca578063f6b911bc14620002ee575b600080fd5b348015620000bf57600080fd5b50620000ca6200031b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101562000106578181015183820152602001620000ec565b50505050905090810190601f168015620001345780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156200014f57600080fd5b506200015a620003aa565b6040805160ff9092168252519081900360200190f35b3480156200017d57600080fd5b506200019d600160a060020a0360043581169060243516604435620003b3565b005b348015620001ac57600080fd5b50620001b7620003f6565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015620001f5578181015183820152602001620001db565b505050509050019250505060405180910390f35b3480156200021657600080fd5b506200019d6200045a565b3480156200022e57600080fd5b50620002396200052e565b60408051600160a060020a039092168252519081900360200190f35b3480156200026257600080fd5b50620000ca6200053d565b3480156200027a57600080fd5b50620002396200059b565b3480156200029257600080fd5b506200019d600160a060020a036004358116906024351660443562000882565b348015620002bf57600080fd5b50620002396200090e565b348015620002d757600080fd5b506200019d600160a060020a03600435166200091d565b348015620002fb57600080fd5b506200019d600160a060020a0360043581169060243516604435620009bd565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015620003a25780601f106200037657610100808354040283529160200191620003a2565b820191906000526020600020905b8154815290600101906020018083116200038457829003601f168201915b505050505081565b60045460ff1681565b620003bd62000a2b565b82620003c98162000a90565b82620003d58162000a90565b83620003e18162000af4565b620003ee86868662000b56565b505050505050565b606060058054806020026020016040519081016040528092919081815260200182805480156200045057602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831162000431575b5050505050905090565b600154600160a060020a03163314620004bd576040805160e560020a62461bcd02815260206004820152601160248201527f4552525f4143434553535f44454e494544000000000000000000000000000000604482015290519081900360640190fd5b60015460008054604051600160a060020a0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b600054600160a060020a031681565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015620003a25780601f106200037657610100808354040283529160200191620003a2565b60006060806000620005ac62000a2b565b600580541062000606576040805160e560020a62461bcd02815260206004820152601560248201527f4552525f4d41585f4c494d49545f524541434845440000000000000000000000604482015290519081900360640190fd5b60028054604080516020601f60001961010060018716150201909416859004938401819004810282018101909252828152620006a89390929091830182828015620006955780601f10620006695761010080835404028352916020019162000695565b820191906000526020600020905b8154815290600101906020018083116200067757829003601f168201915b5050600554600101925062000c12915050565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529396506200070e939291830182828015620006955780601f10620006695761010080835404028352916020019162000695565b6004549092508390839060ff166200072562000d8c565b60ff82166040820152606080825284519082015283518190602080830191608084019188019080838360005b838110156200076b57818101518382015260200162000751565b50505050905090810190601f168015620007995780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015620007ce578181015183820152602001620007b4565b50505050905090810190601f168015620007fc5780820380516001836020036101000a031916815260200191505b5095505050505050604051809103906000f08015801562000821573d6000803e3d6000fd5b50600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038316179055949350505050565b6200088c62000a2b565b82600160a060020a031663867904b483836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b158015620008f057600080fd5b505af115801562000905573d6000803e3d6000fd5b50505050505050565b600154600160a060020a031681565b6200092762000a2b565b600054600160a060020a03828116911614156200098e576040805160e560020a62461bcd02815260206004820152600e60248201527f4552525f53414d455f4f574e4552000000000000000000000000000000000000604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b620009c762000a2b565b82600160a060020a031663a24835d183836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b158015620008f057600080fd5b600054600160a060020a0316331462000a8e576040805160e560020a62461bcd02815260206004820152601160248201527f4552525f4143434553535f44454e494544000000000000000000000000000000604482015290519081900360640190fd5b565b600160a060020a038116151562000af1576040805160e560020a62461bcd02815260206004820152601360248201527f4552525f494e56414c49445f4144445245535300000000000000000000000000604482015290519081900360640190fd5b50565b600160a060020a03811630141562000af1576040805160e560020a62461bcd02815260206004820152601360248201527f4552525f414444524553535f49535f53454c4600000000000000000000000000604482015290519081900360640190fd5b604080517f7472616e7366657228616464726573732c75696e74323536290000000000000081528151908190036019018120600160a060020a038516602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915262000c0d90849062000cfa565b505050565b606082827f30000000000000000000000000000000000000000000000000000000000000007f01000000000000000000000000000000000000000000000000000000000000009004016040516020018083805190602001908083835b6020831062000c8f5780518252601f19909201916020918201910162000c6e565b6001836020036101000a0380198251168184511680821785525050505050509050018260ff1660ff167f010000000000000000000000000000000000000000000000000000000000000002815260010192505050604051602081830303815290604052905092915050565b62000d0462000d9d565b602060405190810160405280600181525090506020818351602085016000875af180151562000d3257600080fd5b508051151562000c0d576040805160e560020a62461bcd02815260206004820152601360248201527f4552525f5452414e534645525f4641494c454400000000000000000000000000604482015290519081900360640190fd5b6040516112288062000dbd83390190565b6020604051908101604052806001906020820280388339509192915050560060806040526008805460ff191660011790553480156200001e57600080fd5b506040516200122838038062001228833981016040908152815160208301519183015160008054600160a060020a0319163317815591840180519094939093019290918491849184918110620000d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4552525f494e56414c49445f4e414d4500000000000000000000000000000000604482015290519081900360640190fd5b82516000106200014657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4552525f494e56414c49445f53594d424f4c0000000000000000000000000000604482015290519081900360640190fd5b83516200015b906002906020870190620001a8565b50825162000171906003906020860190620001a8565b506004805460ff191660ff9390931692909217909155600581905533600090815260066020526040902055506200024d9350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001eb57805160ff19168380011785556200021b565b828001600101855582156200021b579182015b828111156200021b578251825591602001919060010190620001fe565b50620002299291506200022d565b5090565b6200024a91905b8082111562000229576000815560010162000234565b90565b610fcb806200025d6000396000f3006080604052600436106101065763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461010b578063095ea7b3146101955780631608f18f146101cd57806318160ddd146101e957806323b872dd14610210578063313ce5671461023a57806354fd4d50146102655780635e35359e1461029157806370a08231146102bb57806379ba5097146102dc578063867904b4146102f15780638da5cb5b1461031557806395d89b4114610346578063a24835d11461035b578063a9059cbb1461037f578063bef97c87146103a3578063d4ee1d90146103b8578063dd62ed3e146103cd578063f2fde38b146103f4575b600080fd5b34801561011757600080fd5b50610120610415565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015a578181015183820152602001610142565b50505050905090810190601f1680156101875780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101a157600080fd5b506101b9600160a060020a03600435166024356104a0565b604080519115158252519081900360200190f35b3480156101d957600080fd5b506101e76004351515610598565b005b3480156101f557600080fd5b506101fe6105b2565b60408051918252519081900360200190f35b34801561021c57600080fd5b506101b9600160a060020a03600435811690602435166044356105b8565b34801561024657600080fd5b5061024f6105df565b6040805160ff9092168252519081900360200190f35b34801561027157600080fd5b5061027a6105e8565b6040805161ffff9092168252519081900360200190f35b34801561029d57600080fd5b506101e7600160a060020a03600435811690602435166044356105ed565b3480156102c757600080fd5b506101fe600160a060020a0360043516610626565b3480156102e857600080fd5b506101e7610638565b3480156102fd57600080fd5b506101e7600160a060020a036004351660243561070b565b34801561032157600080fd5b5061032a6107ed565b60408051600160a060020a039092168252519081900360200190f35b34801561035257600080fd5b506101206107fc565b34801561036757600080fd5b506101e7600160a060020a0360043516602435610857565b34801561038b57600080fd5b506101b9600160a060020a036004351660243561091d565b3480156103af57600080fd5b506101b9610942565b3480156103c457600080fd5b5061032a61094b565b3480156103d957600080fd5b506101fe600160a060020a036004358116906024351661095a565b34801561040057600080fd5b506101e7600160a060020a0360043516610977565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156104985780601f1061046d57610100808354040283529160200191610498565b820191906000526020600020905b81548152906001019060200180831161047b57829003601f168201915b505050505081565b6000826104ac81610a14565b8215806104da5750336000908152600760209081526040808320600160a060020a0388168452909152902054155b1515610530576040805160e560020a62461bcd02815260206004820152601260248201527f4552525f494e56414c49445f414d4f554e540000000000000000000000000000604482015290519081900360640190fd5b336000818152600760209081526040808320600160a060020a03891680855290835292819020879055805187815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6105a0610a77565b6008805460ff19169115919091179055565b60055481565b60006105c2610adb565b6105cd848484610b37565b15156105d557fe5b5060019392505050565b60045460ff1681565b600481565b6105f5610a77565b826105ff81610a14565b8261060981610a14565b8361061381610c48565b61061e868686610ca9565b505050505050565b60066020526000908152604090205481565b600154600160a060020a0316331461069a576040805160e560020a62461bcd02815260206004820152601160248201527f4552525f4143434553535f44454e494544000000000000000000000000000000604482015290519081900360640190fd5b60015460008054604051600160a060020a0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b610713610a77565b8161071d81610a14565b8261072781610c48565b60055461073a908463ffffffff610d6316565b600555600160a060020a038416600090815260066020526040902054610766908463ffffffff610d6316565b600160a060020a03851660009081526006602090815260409182902092909255805185815290517f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3929181900390910190a1604080518481529051600160a060020a03861691600091600080516020610f808339815191529181900360200190a350505050565b600054600160a060020a031681565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104985780601f1061046d57610100808354040283529160200191610498565b61085f610a77565b600160a060020a038216600090815260066020526040902054610888908263ffffffff610dc716565b600160a060020a0383166000908152600660205260409020556005546108b4908263ffffffff610dc716565b600555604080518281529051600091600160a060020a03851691600080516020610f808339815191529181900360200190a36040805182815290517f9a1b418bc061a5d80270261562e6986a35d995f8051145f277be16103abd34539181900360200190a15050565b6000610927610adb565b6109318383610e27565b151561093957fe5b50600192915050565b60085460ff1681565b600154600160a060020a031681565b600760209081526000928352604080842090915290825290205481565b61097f610a77565b600054600160a060020a03828116911614156109e5576040805160e560020a62461bcd02815260206004820152600e60248201527f4552525f53414d455f4f574e4552000000000000000000000000000000000000604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a0381161515610a74576040805160e560020a62461bcd02815260206004820152601360248201527f4552525f494e56414c49445f4144445245535300000000000000000000000000604482015290519081900360640190fd5b50565b600054600160a060020a03163314610ad9576040805160e560020a62461bcd02815260206004820152601160248201527f4552525f4143434553535f44454e494544000000000000000000000000000000604482015290519081900360640190fd5b565b60085460ff161515610ad9576040805160e560020a62461bcd02815260206004820152601660248201527f4552525f5452414e53464552535f44495341424c454400000000000000000000604482015290519081900360640190fd5b600083610b4381610a14565b83610b4d81610a14565b600160a060020a0386166000908152600760209081526040808320338452909152902054610b81908563ffffffff610dc716565b600160a060020a038716600081815260076020908152604080832033845282528083209490945591815260069091522054610bc2908563ffffffff610dc716565b600160a060020a038088166000908152600660205260408082209390935590871681522054610bf7908563ffffffff610d6316565b600160a060020a0380871660008181526006602090815260409182902094909455805188815290519193928a1692600080516020610f8083398151915292918290030190a350600195945050505050565b600160a060020a038116301415610a74576040805160e560020a62461bcd02815260206004820152601360248201527f4552525f414444524553535f49535f53454c4600000000000000000000000000604482015290519081900360640190fd5b604080517f7472616e7366657228616464726573732c75696e74323536290000000000000081528151908190036019018120600160a060020a038516602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610d5e908490610ed2565b505050565b600082820183811015610dc0576040805160e560020a62461bcd02815260206004820152600c60248201527f4552525f4f564552464c4f570000000000000000000000000000000000000000604482015290519081900360640190fd5b9392505050565b600081831015610e21576040805160e560020a62461bcd02815260206004820152600d60248201527f4552525f554e444552464c4f5700000000000000000000000000000000000000604482015290519081900360640190fd5b50900390565b600082610e3381610a14565b33600090815260066020526040902054610e53908463ffffffff610dc716565b3360009081526006602052604080822092909255600160a060020a03861681522054610e85908463ffffffff610d6316565b600160a060020a038516600081815260066020908152604091829020939093558051868152905191923392600080516020610f808339815191529281900390910190a35060019392505050565b610eda610f60565b602060405190810160405280600181525090506020818351602085016000875af1801515610f0757600080fd5b5080511515610d5e576040805160e560020a62461bcd02815260206004820152601360248201527f4552525f5452414e534645525f4641494c454400000000000000000000000000604482015290519081900360640190fd5b60206040519081016040528060019060208202803883395091929150505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820beee208c22ae870537d105c61a090e7f41fa6f1fef41c468ae684af1b789c8650029a165627a7a72305820f2c36512c8ba78021679f42c96d5a108a4548efe17a2dece61cf4cf5910372d80029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000004506f6f6c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004504f4f4c00000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Pool
Arg [1] : _symbol (string): POOL
Arg [2] : _decimals (uint8): 18
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [4] : 506f6f6c00000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [6] : 504f4f4c00000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.