Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
2,128,503,878.319211144042766394 EHX
Holders
966
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
EHX
Compiler Version
v0.8.16+commit.07a7930e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.16; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } contract ERC20 is Context, IERC20 { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() external virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library Roles { struct Role { mapping (address => bool) bearer; } function add(Role storage role, address account) internal { require(!has(role, account), "Roles: account already has role"); role.bearer[account] = true; } function remove(Role storage role, address account) internal { require(has(role, account), "Roles: account does not have role"); role.bearer[account] = false; } 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 AuthorizedRole is Ownable { using Roles for Roles.Role; event AuthorizedAdded(address indexed account); event AuthorizedRemoved(address indexed account); Roles.Role private _authorizeds; modifier onlyAuthorized() { require(isAuthorized(msg.sender), "AuthorizedRole: caller does not have the Authorized role"); _; } function isAuthorized(address account) public view returns (bool) { return _authorizeds.has(account); } function addAuthorized(address account) public onlyOwner { _addAuthorized(account); } function removeAuthorized(address account) public onlyOwner { _removeAuthorized(account); } function renounceAuthorized() public { _removeAuthorized(msg.sender); } function _addAuthorized(address account) internal { _authorizeds.add(account); emit AuthorizedAdded(account); } function _removeAuthorized(address account) internal { _authorizeds.remove(account); emit AuthorizedRemoved(account); } } interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); } interface IDexFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } contract EHX is ERC20, Ownable, AuthorizedRole { uint256 public maxTransaction; address public robinHoodWallet; uint256 public robinHoodPercent = 10; IDexRouter public immutable dexRouter; //address public immutable lpPair; address public immutable lpPairEth; mapping (address => uint256) public lastBuyBlock; uint256 public tradingActiveBlock = 0; // 0 means trading is not active mapping (address => bool) public restrictedWallets; uint256 public blockForPenaltyEnd; bool public limitsInEffect = true; bool public tradingActive = false; bool public robinHoodActive = true; mapping (address => bool) public _isWhitelisted; mapping (address => bool) public automatedMarketMakerPairs; // Events event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event EnabledTrading(); event RemovedLimits(); event Whitelisted(address indexed account, bool isWhitelisted); event UpdatedMaxTransaction(uint256 newAmount); event TransferForeignToken(address token, uint256 amount); constructor() ERC20("Eterna", "EHX") { address stablecoinAddress; address _dexRouter; // automatically detect router/desired stablecoin if(block.chainid == 1){ stablecoinAddress = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; // USDC _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH: Uniswap V2 } else if(block.chainid == 4){ stablecoinAddress = 0xE7d541c18D6aDb863F4C570065c57b75a53a64d3; // Rinkeby Testnet USDC _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH: Uniswap V2 } else if(block.chainid == 56){ stablecoinAddress = 0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56; // BUSD _dexRouter = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BNB Chain: PCS V2 } else if(block.chainid == 97){ stablecoinAddress = 0x78867BbEeF44f2326bF8DDd1941a4439382EF2A7; // BSC Testnet BUSD _dexRouter = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // BNB Chain: PCS V2 } else { revert("Chain not configured"); } dexRouter = IDexRouter(_dexRouter); // create pair // lpPair = IDexFactory(dexRouter.factory()).createPair(address(this), address(stablecoinAddress)); // setAutomatedMarketMakerPair(address(lpPair), true); lpPairEth = IDexFactory(dexRouter.factory()).createPair(address(this), dexRouter.WETH()); setAutomatedMarketMakerPair(address(lpPairEth), true); uint256 totalSupply = 2 * 1e9 * 1e18; maxTransaction = totalSupply * 5 / 1000; setWhitelistedAddress(address(this), true); setWhitelistedAddress(address(0xdead), true); setWhitelistedAddress(address(dexRouter), true); setWhitelistedAddress(address(msg.sender), true); _mint(address(msg.sender), totalSupply); } // Owner / Whitelisted Functions function enableTrading() external onlyOwner { require(!tradingActive, "Trading is already active, cannot relaunch."); tradingActive = true; tradingActiveBlock = block.number; emit EnabledTrading(); } function manageRestrictedWallets(address[] calldata wallets, bool restricted) external onlyOwner { for(uint256 i = 0; i < wallets.length; i++){ restrictedWallets[wallets[i]] = restricted; } } function removeLimits() external onlyOwner { limitsInEffect = false; maxTransaction = totalSupply(); emit RemovedLimits(); } function setRobinHoodActive(bool active) external onlyOwner { robinHoodActive = active; } function setRobinHoodPercent(uint256 perc) external onlyOwner { require(perc <= 10000, "too high"); robinHoodPercent = perc; } function setRobinHoodAddress(address wallet) external onlyOwner { require(wallet != address(0), "zero address"); robinHoodWallet = wallet; } function updateMaxTransaction(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 1000) / (10 ** decimals()), "Cannot set max buy amount lower than 0.1%"); maxTransaction = newNum * (10 ** decimals()); emit UpdatedMaxTransaction(maxTransaction); } function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) { require(_token != address(0), "_token address cannot be 0"); uint256 _contractBalance = IERC20(_token).balanceOf(address(this)); _sent = IERC20(_token).transfer(_to, _contractBalance); emit TransferForeignToken(_token, _contractBalance); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(value, "The pair cannot be removed from automatedMarketMakerPairs"); automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function setWhitelistedAddress(address account, bool excluded) public onlyOwner { _isWhitelisted[account] = excluded; emit Whitelisted(account, excluded); } function mintTokens(address destination, uint256 amount) public onlyAuthorized { _mint(destination, amount); } function burnTokens(uint256 amount) public onlyAuthorized { _burn(msg.sender, amount); } // private / internal functions function _transfer(address from, address to, uint256 amount) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); // transfer of 0 is allowed, but triggers no logic. In case of staking where a staking pool is paying out 0 rewards. if(amount == 0){ super._transfer(from, to, 0); return; } if(!tradingActive){ require(_isWhitelisted[from] || _isWhitelisted[to], "Trading is not active."); } if(tradingActiveBlock > 0){ require((!restrictedWallets[from] && !restrictedWallets[to]) || to == owner() || to == address(0xdead), "Restricted wallet"); } if(robinHoodActive && (!_isWhitelisted[to] && !_isWhitelisted[from])){ if(automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to]){ lastBuyBlock[to] = block.number; } else if(lastBuyBlock[from] == block.number && robinHoodPercent > 0){ uint256 robinHoodAmount = amount * robinHoodPercent / 10000; uint256 transferAmount = amount - robinHoodAmount; super._transfer(from, robinHoodWallet, robinHoodAmount); super._transfer(from, to, transferAmount); return; } } if(limitsInEffect){ if (!_isWhitelisted[from] && !_isWhitelisted[to]){ //on buy or sell if (automatedMarketMakerPairs[from] || automatedMarketMakerPairs[to]) { require(amount <= maxTransaction, "Buy transfer amount exceeds the max buy."); } } } super._transfer(from, to, amount); } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"AuthorizedAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"AuthorizedRemoved","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isWhitelisted","type":"bool"}],"name":"Whitelisted","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addAuthorized","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastBuyBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPairEth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"restricted","type":"bool"}],"name":"manageRestrictedWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintTokens","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":[{"internalType":"address","name":"account","type":"address"}],"name":"removeAuthorized","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceAuthorized","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"restrictedWallets","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"robinHoodActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"robinHoodPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"robinHoodWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"active","type":"bool"}],"name":"setRobinHoodActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setRobinHoodAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"perc","type":"uint256"}],"name":"setRobinHoodPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setWhitelistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","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"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c0604052600a6009556000600b55600e805462ffffff1916620100011790553480156200002c57600080fd5b5060405180604001604052806006815260200165457465726e6160d01b8152506040518060400160405280600381526020016208a90b60eb1b815250816003908162000079919062000767565b50600462000088828262000767565b50505060006200009d6200041b60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600080466001036200012a575073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb489050737a250d5630b4cf539739df2c5dacb4c659f2488d6200022b565b4660040362000166575073e7d541c18d6adb863f4c570065c57b75a53a64d39050737a250d5630b4cf539739df2c5dacb4c659f2488d6200022b565b46603803620001a2575073e9e7cea3dedca5984780bafc599bd69add087d5690507310ed43c718714eb63d5aa57b78b54704e256024e6200022b565b46606103620001de57507378867bbeef44f2326bf8ddd1941a4439382ef2a7905073d99d1c33f9fc3444f8101754abc46c52416550d16200022b565b60405162461bcd60e51b815260206004820152601460248201527f436861696e206e6f7420636f6e6669677572656400000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000276573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029c919062000833565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000312919062000833565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000360573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000386919062000833565b6001600160a01b031660a0819052620003a19060016200041f565b6b06765c793fa10079d00000006103e8620003be8260056200087b565b620003ca91906200089d565b600755620003da30600162000533565b620003e961dead600162000533565b608051620003f990600162000533565b6200040633600162000533565b620004123382620005dd565b505050620008dc565b3390565b6005546001600160a01b031633146200046a5760405162461bcd60e51b8152602060048201819052602482015260008051602062002b14833981519152604482015260640162000222565b80620004df5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840162000222565b6001600160a01b038216600081815260106020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b031633146200057e5760405162461bcd60e51b8152602060048201819052602482015260008051602062002b14833981519152604482015260640162000222565b6001600160a01b0382166000818152600f6020908152604091829020805460ff191685151590811790915591519182527fa54714518c5d275fdcd3d2a461e4858e4e8cb04fb93cd0bca9d6d34115f26440910160405180910390a25050565b6001600160a01b038216620006355760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000222565b8060026000828254620006499190620008c0565b90915550506001600160a01b0382166000908152602081905260408120805483929062000678908490620008c0565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620006ed57607f821691505b6020821081036200070e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200076257600081815260208120601f850160051c810160208610156200073d5750805b601f850160051c820191505b818110156200075e5782815560010162000749565b5050505b505050565b81516001600160401b03811115620007835762000783620006c2565b6200079b81620007948454620006d8565b8462000714565b602080601f831160018114620007d35760008415620007ba5750858301515b600019600386901b1c1916600185901b1785556200075e565b600085815260208120601f198616915b828110156200080457888601518255948401946001909101908401620007e3565b5085821015620008235787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200084657600080fd5b81516001600160a01b03811681146200085e57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161562000898576200089862000865565b500290565b600082620008bb57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620008d657620008d662000865565b92915050565b60805160a051612212620009026000396000610462015260006102d801526122126000f3fe608060405234801561001057600080fd5b50600436106102745760003560e01c806395d89b4111610151578063bbc0c742116100c3578063ee40166e11610087578063ee40166e146105aa578063f076e535146105b3578063f0dda65c146105d6578063f2fde38b146105e9578063fdd7d450146105fc578063fe9fbb801461060f57600080fd5b8063bbc0c7421461053b578063c3f70b521461054d578063cf1c316a14610556578063d07c1e4314610569578063dd62ed3e1461057157600080fd5b8063a2af568511610115578063a2af5685146104c3578063a457c2d7146104d6578063a62068ce146104e9578063a9059cbb146104f2578063ac8e332814610505578063b62496f51461051857600080fd5b806395d89b411461045557806396adebb31461045d57806399bafefb146104845780639a7a23d61461048d5780639cee2142146104a057600080fd5b8063485d7d94116101ea578063715018a6116101ae578063715018a614610406578063751039fc1461040e5780637b337a36146104165780638366e79a146104295780638a8c523c1461043c5780638da5cb5b1461044457600080fd5b8063485d7d94146103975780634a62bb65146103aa5780635679dfdb146103b75780636d1b229d146103ca57806370a08231146103dd57600080fd5b8063095ea7b31161023c578063095ea7b31461030d57806318160ddd1461033057806323b872dd14610342578063313ce5671461035557806337b28bfd14610364578063395093511461038457600080fd5b806302d9e921146102795780630517d13d146102a957806306fdde03146102be5780630758d924146102d3578063093bcbb5146102fa575b600080fd5b60085461028c906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6102bc6102b7366004611c8d565b610622565b005b6102c661073e565b6040516102a09190611ca6565b61028c7f000000000000000000000000000000000000000000000000000000000000000081565b6102bc610308366004611c8d565b6107d0565b61032061031b366004611d10565b61083c565b60405190151581526020016102a0565b6002545b6040519081526020016102a0565b610320610350366004611d3a565b610853565b604051601281526020016102a0565b610334610372366004611d76565b600a6020526000908152604090205481565b610320610392366004611d10565b6108fd565b6102bc6103a5366004611d76565b610939565b600e546103209060ff1681565b600e546103209062010000900460ff1681565b6102bc6103d8366004611c8d565b61096f565b6103346103eb366004611d76565b6001600160a01b031660009081526020819052604090205490565b6102bc61099e565b6102bc610a12565b6102bc610424366004611da6565b610a77565b610320610437366004611ddd565b610b00565b6102bc610cb1565b6005546001600160a01b031661028c565b6102c6610d85565b61028c7f000000000000000000000000000000000000000000000000000000000000000081565b61033460095481565b6102bc61049b366004611da6565b610d94565b6103206104ae366004611d76565b600f6020526000908152604090205460ff1681565b6102bc6104d1366004611d76565b610e85565b6103206104e4366004611d10565b610f16565b610334600d5481565b610320610500366004611d10565b610faf565b6102bc610513366004611e10565b610fbc565b610320610526366004611d76565b60106020526000908152604090205460ff1681565b600e5461032090610100900460ff1681565b61033460075481565b6102bc610564366004611d76565b61105d565b6102bc611090565b61033461057f366004611ddd565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610334600b5481565b6103206105c1366004611d76565b600c6020526000908152604090205460ff1681565b6102bc6105e4366004611d10565b61109b565b6102bc6105f7366004611d76565b6110ce565b6102bc61060a366004611e96565b6111b9565b61032061061d366004611d76565b6111ff565b6005546001600160a01b031633146106555760405162461bcd60e51b815260040161064c90611eb3565b60405180910390fd5b6106616012600a611fe2565b6103e861066d60025490565b610678906001611ff1565b6106829190612010565b61068c9190612010565b8110156106ed5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b606482015260840161064c565b6106f96012600a611fe2565b6107039082611ff1565b60078190556040519081527f76a9278644b7300961aa0e7e86f10934585987f1daf1c6ecc971c183766915749060200160405180910390a150565b60606003805461074d90612032565b80601f016020809104026020016040519081016040528092919081815260200182805461077990612032565b80156107c65780601f1061079b576101008083540402835291602001916107c6565b820191906000526020600020905b8154815290600101906020018083116107a957829003601f168201915b5050505050905090565b6005546001600160a01b031633146107fa5760405162461bcd60e51b815260040161064c90611eb3565b6127108111156108375760405162461bcd60e51b81526020600482015260086024820152670e8dede40d0d2ced60c31b604482015260640161064c565b600955565b600061084933848461120c565b5060015b92915050565b6000610860848484611331565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108e55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161064c565b6108f2853385840361120c565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161084991859061093490869061206c565b61120c565b6005546001600160a01b031633146109635760405162461bcd60e51b815260040161064c90611eb3565b61096c8161172a565b50565b610978336111ff565b6109945760405162461bcd60e51b815260040161064c9061207f565b61096c338261176c565b6005546001600160a01b031633146109c85760405162461bcd60e51b815260040161064c90611eb3565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610a3c5760405162461bcd60e51b815260040161064c90611eb3565b600e805460ff191690556002546007556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b03163314610aa15760405162461bcd60e51b815260040161064c90611eb3565b6001600160a01b0382166000818152600f6020908152604091829020805460ff191685151590811790915591519182527fa54714518c5d275fdcd3d2a461e4858e4e8cb04fb93cd0bca9d6d34115f26440910160405180910390a25050565b6005546000906001600160a01b03163314610b2d5760405162461bcd60e51b815260040161064c90611eb3565b6001600160a01b038316610b835760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000604482015260640161064c565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015610bca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bee91906120dc565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015610c41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6591906120f5565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b03163314610cdb5760405162461bcd60e51b815260040161064c90611eb3565b600e54610100900460ff1615610d475760405162461bcd60e51b815260206004820152602b60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526a3a103932b630bab731b41760a91b606482015260840161064c565b600e805461ff00191661010017905543600b556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b60606004805461074d90612032565b6005546001600160a01b03163314610dbe5760405162461bcd60e51b815260040161064c90611eb3565b80610e315760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161064c565b6001600160a01b038216600081815260106020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314610eaf5760405162461bcd60e51b815260040161064c90611eb3565b6001600160a01b038116610ef45760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015260640161064c565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610f985760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161064c565b610fa5338585840361120c565b5060019392505050565b6000610849338484611331565b6005546001600160a01b03163314610fe65760405162461bcd60e51b815260040161064c90611eb3565b60005b828110156110575781600c600086868581811061100857611008612112565b905060200201602081019061101d9190611d76565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061104f81612128565b915050610fe9565b50505050565b6005546001600160a01b031633146110875760405162461bcd60e51b815260040161064c90611eb3565b61096c81611896565b6110993361172a565b565b6110a4336111ff565b6110c05760405162461bcd60e51b815260040161064c9061207f565b6110ca82826118d8565b5050565b6005546001600160a01b031633146110f85760405162461bcd60e51b815260040161064c90611eb3565b6001600160a01b03811661115d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161064c565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111e35760405162461bcd60e51b815260040161064c90611eb3565b600e8054911515620100000262ff000019909216919091179055565b600061084d6006836119b7565b6001600160a01b03831661126e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161064c565b6001600160a01b0382166112cf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161064c565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166113575760405162461bcd60e51b815260040161064c90612141565b6001600160a01b03821661137d5760405162461bcd60e51b815260040161064c90612186565b806000036113965761139183836000611a3a565b505050565b600e54610100900460ff16611429576001600160a01b0383166000908152600f602052604090205460ff16806113e457506001600160a01b0382166000908152600f602052604090205460ff165b6114295760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161064c565b600b54156114e0576001600160a01b0383166000908152600c602052604090205460ff1615801561147357506001600160a01b0382166000908152600c602052604090205460ff16155b8061148b57506005546001600160a01b038381169116145b806114a057506001600160a01b03821661dead145b6114e05760405162461bcd60e51b815260206004820152601160248201527014995cdd1c9a58dd1959081dd85b1b195d607a1b604482015260640161064c565b600e5462010000900460ff16801561153557506001600160a01b0382166000908152600f602052604090205460ff1615801561153557506001600160a01b0383166000908152600f602052604090205460ff16155b15611626576001600160a01b03831660009081526010602052604090205460ff16801561157b57506001600160a01b03821660009081526010602052604090205460ff16155b156115a0576001600160a01b0382166000908152600a60205260409020439055611626565b6001600160a01b0383166000908152600a6020526040902054431480156115c957506000600954115b15611626576000612710600954836115e19190611ff1565b6115eb9190612010565b905060006115f982846121c9565b6008549091506116149086906001600160a01b031684611a3a565b61161f858583611a3a565b5050505050565b600e5460ff161561171f576001600160a01b0383166000908152600f602052604090205460ff1615801561167357506001600160a01b0382166000908152600f602052604090205460ff16155b1561171f576001600160a01b03831660009081526010602052604090205460ff16806116b757506001600160a01b03821660009081526010602052604090205460ff165b1561171f5760075481111561171f5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b606482015260840161064c565b611391838383611a3a565b611735600682611b8f565b6040516001600160a01b038216907f0fafd0343e6c6f6985727574866da48938c918559eb9521cf9cc0d317ea0f7b490600090a250565b6001600160a01b0382166117cc5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161064c565b6001600160a01b038216600090815260208190526040902054818110156118405760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161064c565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611324565b6118a1600682611c11565b6040516001600160a01b038216907fdd10d14f6ac19e913d4edbb11fd30661531e2ccd0d23f571e9b224f001f0dd0690600090a250565b6001600160a01b03821661192e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161064c565b8060026000828254611940919061206c565b90915550506001600160a01b0382166000908152602081905260408120805483929061196d90849061206c565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60006001600160a01b038216611a1a5760405162461bcd60e51b815260206004820152602260248201527f526f6c65733a206163636f756e7420697320746865207a65726f206164647265604482015261737360f01b606482015260840161064c565b506001600160a01b03166000908152602091909152604090205460ff1690565b6001600160a01b038316611a605760405162461bcd60e51b815260040161064c90612141565b6001600160a01b038216611a865760405162461bcd60e51b815260040161064c90612186565b6001600160a01b03831660009081526020819052604090205481811015611afe5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161064c565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611b3590849061206c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b8191815260200190565b60405180910390a350505050565b611b9982826119b7565b611bef5760405162461bcd60e51b815260206004820152602160248201527f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6044820152606560f81b606482015260840161064c565b6001600160a01b0316600090815260209190915260409020805460ff19169055565b611c1b82826119b7565b15611c685760405162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015260640161064c565b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b600060208284031215611c9f57600080fd5b5035919050565b600060208083528351808285015260005b81811015611cd357858101830151858201604001528201611cb7565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611d0b57600080fd5b919050565b60008060408385031215611d2357600080fd5b611d2c83611cf4565b946020939093013593505050565b600080600060608486031215611d4f57600080fd5b611d5884611cf4565b9250611d6660208501611cf4565b9150604084013590509250925092565b600060208284031215611d8857600080fd5b611d9182611cf4565b9392505050565b801515811461096c57600080fd5b60008060408385031215611db957600080fd5b611dc283611cf4565b91506020830135611dd281611d98565b809150509250929050565b60008060408385031215611df057600080fd5b611df983611cf4565b9150611e0760208401611cf4565b90509250929050565b600080600060408486031215611e2557600080fd5b833567ffffffffffffffff80821115611e3d57600080fd5b818601915086601f830112611e5157600080fd5b813581811115611e6057600080fd5b8760208260051b8501011115611e7557600080fd5b60209283019550935050840135611e8b81611d98565b809150509250925092565b600060208284031215611ea857600080fd5b8135611d9181611d98565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611f39578160001904821115611f1f57611f1f611ee8565b80851615611f2c57918102915b93841c9390800290611f03565b509250929050565b600082611f505750600161084d565b81611f5d5750600061084d565b8160018114611f735760028114611f7d57611f99565b600191505061084d565b60ff841115611f8e57611f8e611ee8565b50506001821b61084d565b5060208310610133831016604e8410600b8410161715611fbc575081810a61084d565b611fc68383611efe565b8060001904821115611fda57611fda611ee8565b029392505050565b6000611d9160ff841683611f41565b600081600019048311821515161561200b5761200b611ee8565b500290565b60008261202d57634e487b7160e01b600052601260045260246000fd5b500490565b600181811c9082168061204657607f821691505b60208210810361206657634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561084d5761084d611ee8565b60208082526038908201527f417574686f72697a6564526f6c653a2063616c6c657220646f6573206e6f742060408201527f686176652074686520417574686f72697a656420726f6c650000000000000000606082015260800190565b6000602082840312156120ee57600080fd5b5051919050565b60006020828403121561210757600080fd5b8151611d9181611d98565b634e487b7160e01b600052603260045260246000fd5b60006001820161213a5761213a611ee8565b5060010190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561084d5761084d611ee856fea2646970667358221220ae0ff36a49f12924cac84f6ad52b3f2a698de9bd90ab68195e6434635025792c64736f6c634300081000334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102745760003560e01c806395d89b4111610151578063bbc0c742116100c3578063ee40166e11610087578063ee40166e146105aa578063f076e535146105b3578063f0dda65c146105d6578063f2fde38b146105e9578063fdd7d450146105fc578063fe9fbb801461060f57600080fd5b8063bbc0c7421461053b578063c3f70b521461054d578063cf1c316a14610556578063d07c1e4314610569578063dd62ed3e1461057157600080fd5b8063a2af568511610115578063a2af5685146104c3578063a457c2d7146104d6578063a62068ce146104e9578063a9059cbb146104f2578063ac8e332814610505578063b62496f51461051857600080fd5b806395d89b411461045557806396adebb31461045d57806399bafefb146104845780639a7a23d61461048d5780639cee2142146104a057600080fd5b8063485d7d94116101ea578063715018a6116101ae578063715018a614610406578063751039fc1461040e5780637b337a36146104165780638366e79a146104295780638a8c523c1461043c5780638da5cb5b1461044457600080fd5b8063485d7d94146103975780634a62bb65146103aa5780635679dfdb146103b75780636d1b229d146103ca57806370a08231146103dd57600080fd5b8063095ea7b31161023c578063095ea7b31461030d57806318160ddd1461033057806323b872dd14610342578063313ce5671461035557806337b28bfd14610364578063395093511461038457600080fd5b806302d9e921146102795780630517d13d146102a957806306fdde03146102be5780630758d924146102d3578063093bcbb5146102fa575b600080fd5b60085461028c906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6102bc6102b7366004611c8d565b610622565b005b6102c661073e565b6040516102a09190611ca6565b61028c7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6102bc610308366004611c8d565b6107d0565b61032061031b366004611d10565b61083c565b60405190151581526020016102a0565b6002545b6040519081526020016102a0565b610320610350366004611d3a565b610853565b604051601281526020016102a0565b610334610372366004611d76565b600a6020526000908152604090205481565b610320610392366004611d10565b6108fd565b6102bc6103a5366004611d76565b610939565b600e546103209060ff1681565b600e546103209062010000900460ff1681565b6102bc6103d8366004611c8d565b61096f565b6103346103eb366004611d76565b6001600160a01b031660009081526020819052604090205490565b6102bc61099e565b6102bc610a12565b6102bc610424366004611da6565b610a77565b610320610437366004611ddd565b610b00565b6102bc610cb1565b6005546001600160a01b031661028c565b6102c6610d85565b61028c7f0000000000000000000000006cd9f0a814bc24a68bd2cfbc1fd54edd6513d41481565b61033460095481565b6102bc61049b366004611da6565b610d94565b6103206104ae366004611d76565b600f6020526000908152604090205460ff1681565b6102bc6104d1366004611d76565b610e85565b6103206104e4366004611d10565b610f16565b610334600d5481565b610320610500366004611d10565b610faf565b6102bc610513366004611e10565b610fbc565b610320610526366004611d76565b60106020526000908152604090205460ff1681565b600e5461032090610100900460ff1681565b61033460075481565b6102bc610564366004611d76565b61105d565b6102bc611090565b61033461057f366004611ddd565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610334600b5481565b6103206105c1366004611d76565b600c6020526000908152604090205460ff1681565b6102bc6105e4366004611d10565b61109b565b6102bc6105f7366004611d76565b6110ce565b6102bc61060a366004611e96565b6111b9565b61032061061d366004611d76565b6111ff565b6005546001600160a01b031633146106555760405162461bcd60e51b815260040161064c90611eb3565b60405180910390fd5b6106616012600a611fe2565b6103e861066d60025490565b610678906001611ff1565b6106829190612010565b61068c9190612010565b8110156106ed5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b606482015260840161064c565b6106f96012600a611fe2565b6107039082611ff1565b60078190556040519081527f76a9278644b7300961aa0e7e86f10934585987f1daf1c6ecc971c183766915749060200160405180910390a150565b60606003805461074d90612032565b80601f016020809104026020016040519081016040528092919081815260200182805461077990612032565b80156107c65780601f1061079b576101008083540402835291602001916107c6565b820191906000526020600020905b8154815290600101906020018083116107a957829003601f168201915b5050505050905090565b6005546001600160a01b031633146107fa5760405162461bcd60e51b815260040161064c90611eb3565b6127108111156108375760405162461bcd60e51b81526020600482015260086024820152670e8dede40d0d2ced60c31b604482015260640161064c565b600955565b600061084933848461120c565b5060015b92915050565b6000610860848484611331565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108e55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161064c565b6108f2853385840361120c565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161084991859061093490869061206c565b61120c565b6005546001600160a01b031633146109635760405162461bcd60e51b815260040161064c90611eb3565b61096c8161172a565b50565b610978336111ff565b6109945760405162461bcd60e51b815260040161064c9061207f565b61096c338261176c565b6005546001600160a01b031633146109c85760405162461bcd60e51b815260040161064c90611eb3565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610a3c5760405162461bcd60e51b815260040161064c90611eb3565b600e805460ff191690556002546007556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b03163314610aa15760405162461bcd60e51b815260040161064c90611eb3565b6001600160a01b0382166000818152600f6020908152604091829020805460ff191685151590811790915591519182527fa54714518c5d275fdcd3d2a461e4858e4e8cb04fb93cd0bca9d6d34115f26440910160405180910390a25050565b6005546000906001600160a01b03163314610b2d5760405162461bcd60e51b815260040161064c90611eb3565b6001600160a01b038316610b835760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000604482015260640161064c565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015610bca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bee91906120dc565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015610c41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6591906120f5565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b03163314610cdb5760405162461bcd60e51b815260040161064c90611eb3565b600e54610100900460ff1615610d475760405162461bcd60e51b815260206004820152602b60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526a3a103932b630bab731b41760a91b606482015260840161064c565b600e805461ff00191661010017905543600b556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b60606004805461074d90612032565b6005546001600160a01b03163314610dbe5760405162461bcd60e51b815260040161064c90611eb3565b80610e315760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161064c565b6001600160a01b038216600081815260106020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314610eaf5760405162461bcd60e51b815260040161064c90611eb3565b6001600160a01b038116610ef45760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015260640161064c565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610f985760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161064c565b610fa5338585840361120c565b5060019392505050565b6000610849338484611331565b6005546001600160a01b03163314610fe65760405162461bcd60e51b815260040161064c90611eb3565b60005b828110156110575781600c600086868581811061100857611008612112565b905060200201602081019061101d9190611d76565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061104f81612128565b915050610fe9565b50505050565b6005546001600160a01b031633146110875760405162461bcd60e51b815260040161064c90611eb3565b61096c81611896565b6110993361172a565b565b6110a4336111ff565b6110c05760405162461bcd60e51b815260040161064c9061207f565b6110ca82826118d8565b5050565b6005546001600160a01b031633146110f85760405162461bcd60e51b815260040161064c90611eb3565b6001600160a01b03811661115d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161064c565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111e35760405162461bcd60e51b815260040161064c90611eb3565b600e8054911515620100000262ff000019909216919091179055565b600061084d6006836119b7565b6001600160a01b03831661126e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161064c565b6001600160a01b0382166112cf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161064c565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166113575760405162461bcd60e51b815260040161064c90612141565b6001600160a01b03821661137d5760405162461bcd60e51b815260040161064c90612186565b806000036113965761139183836000611a3a565b505050565b600e54610100900460ff16611429576001600160a01b0383166000908152600f602052604090205460ff16806113e457506001600160a01b0382166000908152600f602052604090205460ff165b6114295760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161064c565b600b54156114e0576001600160a01b0383166000908152600c602052604090205460ff1615801561147357506001600160a01b0382166000908152600c602052604090205460ff16155b8061148b57506005546001600160a01b038381169116145b806114a057506001600160a01b03821661dead145b6114e05760405162461bcd60e51b815260206004820152601160248201527014995cdd1c9a58dd1959081dd85b1b195d607a1b604482015260640161064c565b600e5462010000900460ff16801561153557506001600160a01b0382166000908152600f602052604090205460ff1615801561153557506001600160a01b0383166000908152600f602052604090205460ff16155b15611626576001600160a01b03831660009081526010602052604090205460ff16801561157b57506001600160a01b03821660009081526010602052604090205460ff16155b156115a0576001600160a01b0382166000908152600a60205260409020439055611626565b6001600160a01b0383166000908152600a6020526040902054431480156115c957506000600954115b15611626576000612710600954836115e19190611ff1565b6115eb9190612010565b905060006115f982846121c9565b6008549091506116149086906001600160a01b031684611a3a565b61161f858583611a3a565b5050505050565b600e5460ff161561171f576001600160a01b0383166000908152600f602052604090205460ff1615801561167357506001600160a01b0382166000908152600f602052604090205460ff16155b1561171f576001600160a01b03831660009081526010602052604090205460ff16806116b757506001600160a01b03821660009081526010602052604090205460ff165b1561171f5760075481111561171f5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b606482015260840161064c565b611391838383611a3a565b611735600682611b8f565b6040516001600160a01b038216907f0fafd0343e6c6f6985727574866da48938c918559eb9521cf9cc0d317ea0f7b490600090a250565b6001600160a01b0382166117cc5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161064c565b6001600160a01b038216600090815260208190526040902054818110156118405760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161064c565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611324565b6118a1600682611c11565b6040516001600160a01b038216907fdd10d14f6ac19e913d4edbb11fd30661531e2ccd0d23f571e9b224f001f0dd0690600090a250565b6001600160a01b03821661192e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161064c565b8060026000828254611940919061206c565b90915550506001600160a01b0382166000908152602081905260408120805483929061196d90849061206c565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60006001600160a01b038216611a1a5760405162461bcd60e51b815260206004820152602260248201527f526f6c65733a206163636f756e7420697320746865207a65726f206164647265604482015261737360f01b606482015260840161064c565b506001600160a01b03166000908152602091909152604090205460ff1690565b6001600160a01b038316611a605760405162461bcd60e51b815260040161064c90612141565b6001600160a01b038216611a865760405162461bcd60e51b815260040161064c90612186565b6001600160a01b03831660009081526020819052604090205481811015611afe5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161064c565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611b3590849061206c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b8191815260200190565b60405180910390a350505050565b611b9982826119b7565b611bef5760405162461bcd60e51b815260206004820152602160248201527f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6044820152606560f81b606482015260840161064c565b6001600160a01b0316600090815260209190915260409020805460ff19169055565b611c1b82826119b7565b15611c685760405162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015260640161064c565b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b600060208284031215611c9f57600080fd5b5035919050565b600060208083528351808285015260005b81811015611cd357858101830151858201604001528201611cb7565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611d0b57600080fd5b919050565b60008060408385031215611d2357600080fd5b611d2c83611cf4565b946020939093013593505050565b600080600060608486031215611d4f57600080fd5b611d5884611cf4565b9250611d6660208501611cf4565b9150604084013590509250925092565b600060208284031215611d8857600080fd5b611d9182611cf4565b9392505050565b801515811461096c57600080fd5b60008060408385031215611db957600080fd5b611dc283611cf4565b91506020830135611dd281611d98565b809150509250929050565b60008060408385031215611df057600080fd5b611df983611cf4565b9150611e0760208401611cf4565b90509250929050565b600080600060408486031215611e2557600080fd5b833567ffffffffffffffff80821115611e3d57600080fd5b818601915086601f830112611e5157600080fd5b813581811115611e6057600080fd5b8760208260051b8501011115611e7557600080fd5b60209283019550935050840135611e8b81611d98565b809150509250925092565b600060208284031215611ea857600080fd5b8135611d9181611d98565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611f39578160001904821115611f1f57611f1f611ee8565b80851615611f2c57918102915b93841c9390800290611f03565b509250929050565b600082611f505750600161084d565b81611f5d5750600061084d565b8160018114611f735760028114611f7d57611f99565b600191505061084d565b60ff841115611f8e57611f8e611ee8565b50506001821b61084d565b5060208310610133831016604e8410600b8410161715611fbc575081810a61084d565b611fc68383611efe565b8060001904821115611fda57611fda611ee8565b029392505050565b6000611d9160ff841683611f41565b600081600019048311821515161561200b5761200b611ee8565b500290565b60008261202d57634e487b7160e01b600052601260045260246000fd5b500490565b600181811c9082168061204657607f821691505b60208210810361206657634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561084d5761084d611ee8565b60208082526038908201527f417574686f72697a6564526f6c653a2063616c6c657220646f6573206e6f742060408201527f686176652074686520417574686f72697a656420726f6c650000000000000000606082015260800190565b6000602082840312156120ee57600080fd5b5051919050565b60006020828403121561210757600080fd5b8151611d9181611d98565b634e487b7160e01b600052603260045260246000fd5b60006001820161213a5761213a611ee8565b5060010190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561084d5761084d611ee856fea2646970667358221220ae0ff36a49f12924cac84f6ad52b3f2a698de9bd90ab68195e6434635025792c64736f6c63430008100033
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.