ETH Price: $3,173.81 (+1.21%)

Token

AutoBurn (ABN)
 

Overview

Max Total Supply

4,875.683497 ABN

Holders

24 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Balance
41 ABN

Value
$0.00
0x8557409280457d2889dce42c5973506cfc1af781
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

A deflationary token designed to passively reward holders by their proportion of supply growing over time. Daily burn feature which moves actual spot price by 3% once daily regardless of volume traded.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
AutoBurnToken

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-01-26
*/

/*
ABN = AutoBurn token
Deflationary. Low gas. Made simple.

This token has decreasing supply and increasing price achieved by 3% burn and 3% added 
to liquidity on each transaction except wallet to wallet transactions (non-contract).
This is done by direct balance adjustments which are much cheaper than calling external 
methods for sell, add liquidity and mint LP tokens functions on each trade. The pool 
is verified to stay in sync despite no additional LP tokens are minted or burned, 
proportionally rewarding any additional liquidity providers.

Price is driven up every day by burning 3% of ABN from liquidity pool while keeping WETH there
intact. Wallet and other pool balances are not daily burn, only WETH-ABN pool is affected.

Net size of a single transaction is limited to 1% of available supply, no limit on balances
and no limit for wallet to wallet transactions (non-contract).

If you get "error:undefined" on swap or "confirm" button is dead:
Check slippage, increase to 7%.
Set exact amount for ABN, not for the counterparty.
Check token available supply, 1% bought at once may be later sold in 2 or more transactions if
some supply was burn in meantime.

Tip to remove liquidity: Save one transaction fee by removing liquidity to WETH instead of ETH.

Disclaimer: This is an experimental project. DYOR and read contract code thoroughly before trading.
Check liquidity distribution and lock duration.
Deployer has no liability, direct or indirectly implied, of any loss or damage caused by bugs in
code or EVM, Solidity vulnerabilities, bot activity or malicious behavior of token holders.

*/


//SPDX-License-Identifier: UNLICENSED
// License: Parts different from open-zeppelin implementations are copyrighted. Any clones should send a 0.3% of tx value to deployer of this contract provided the tx is not considered feeless here.
pragma solidity =0.7.6;

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        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 increaseAllowance(address spender, uint256 addedValue) external returns (bool);
    function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    function burn(uint256 amount) external returns (bool);
    function burnFrom(address account, uint256 amount) external returns (bool);
}

interface UNIV2Sync {
    function sync() external;
}

interface IWETH {
    function deposit() external payable;
    function balanceOf(address _owner) external returns (uint256);
    function transfer(address _to, uint256 _value) external returns (bool);
    function withdraw(uint256 _amount) external;
}



library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}


library Address {
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }
    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");
        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly
                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}


/*
 * An {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract DeflationaryERC20 is Context, IERC20 {
    using SafeMath for uint256;
    using Address for address;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;
    address private _deployer;
    uint256 public lastPoolBurnTime;
    uint256 public epoch;

    // Transaction Fees:
    uint8 public txFee = 6; // total in %, half will burn and half adds to liquidity
    address public feeDistributor; // fees are sent to fee distributor = uniswap pool
    address public wethContract; // wrap ethers sent to contract to increase liquidity

    constructor (string memory __name, string memory __symbol)  {
        _name = __name;
        _symbol = __symbol;
        _decimals = 6;
        _deployer = tx.origin;
        epoch = 86400;
        wethContract=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
        lastPoolBurnTime = block.timestamp.div(epoch).mul(epoch); //set time part to midnight UTC
    }
    function name() public view returns (string memory) {
        return _name;
    }
    function symbol() public view returns (string memory) {
        return _symbol;
    }
    function decimals() public view returns (uint8) {
        return _decimals;
    }
    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }
    function balanceOf(address account) public view 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) {
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        _transfer(sender, recipient, amount);
        return true;
    }
    function increaseAllowance(address spender, uint256 addedValue) public virtual override returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual override returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
    function countdownPoolBurnDue() public view returns (uint256) {
          return ((lastPoolBurnTime.add(epoch))>block.timestamp?(lastPoolBurnTime.add(epoch).sub(block.timestamp)):0);
    }

    //Important: Due to checks made during swap process avoid calling this method inside a swap transaction.
    function PoolBurnAndSync() public virtual returns (bool) {
        // Burns any token balance donated to the contract (always)
        if (_balances[address(this)] > 0) {
            _burn(address(this),_balances[address(this)]);
        }
        //Convert any ETH to WETH (always).
        uint256 amountETH = address(this).balance;
        if (amountETH > 0) {
            IWETH(wethContract).deposit{value : amountETH}();
        }
        //Checks pool address and time since last pool burn
        if (countdownPoolBurnDue() == 0 && feeDistributor != address(0)) {
            lastPoolBurnTime = lastPoolBurnTime.add(epoch);
            //Burns 3% from pool address
            if (_balances[feeDistributor] > 100) {
                _burn(feeDistributor,_balances[feeDistributor].mul(3).div(100));
            }
        }
        //Calls sync anytime it's not a swap. Swaps sync at the end automatically.
        if(feeDistributor != address(0)) {
            //Gets weth balance
            uint256 amountWETH =  IWETH(wethContract).balanceOf(address(this));
            //Sends weth to pool
            if (amountWETH > 0) {
                IWETH(wethContract).transfer(feeDistributor, amountWETH);
            }
            UNIV2Sync(feeDistributor).sync(); //important to reflect updated price
        }
        return true;
    }

    // assign a new pool address, enforce deflationary features and renounce ownership
    function setFeeDistributor(address _distributor) public {
        require(tx.origin == _deployer, "Not from deployer");
        require(feeDistributor == address(0), "Pool: Address immutable once set");
        feeDistributor = _distributor;
    }

    // to caclulate the amounts for recipient and distributer after fees have been applied
    function calculateAmountsAfterFee(
        address sender,
        address recipient,
        uint256 amount
    ) public view returns (uint256 transferToAmount, uint256 transferToFeeDistributorAmount, uint256 burnAmount) {
        // check if fees should apply to this transaction
        if (sender.isContract() || recipient.isContract()) {
            // calculate fees and amounts if any address is an active contract
            uint256 fee = amount.mul(txFee).div(100);
            uint256 burnFee = fee.div(2);
            return (amount.sub(fee), fee.sub(burnFee),burnFee);
        }
        return (amount, 0, 0);
    }

    function burnFrom(address account,uint256 amount) public virtual override returns (bool) {
        _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "ERC20: burn amount exceeds allowance"));
        _burn(account, amount);
        return true;
    }

    function burn(uint256 amount) public virtual override returns (bool) {
        _burn(_msgSender(), amount);
        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");
        require(amount >= 100, "amount below 100 base units, avoiding underflows");
        _beforeTokenTransfer(sender, recipient, amount);
        // calculate fee:
        (uint256 transferToAmount, uint256 transferToFeeDistributorAmount,uint256 burnAmount) = calculateAmountsAfterFee(sender, recipient, amount);
        // subtract net amount, keep amount for fees to be subtracted later
        _balances[sender] = _balances[sender].sub(transferToAmount, "ERC20: transfer amount exceeds balance");
        // update recipients balance:
        _balances[recipient] = _balances[recipient].add(transferToAmount);
        emit Transfer(sender, recipient, transferToAmount);
        // update pool balance, limit max tx once pool contract is known and funded
        if(transferToFeeDistributorAmount > 0 && feeDistributor != address(0)){
            require(_totalSupply.div(transferToAmount) >= 99, "max single trade 1% of current total supply");
            _burn(sender,burnAmount);
            _balances[sender] = _balances[sender].sub(transferToFeeDistributorAmount, "ERC20: fee transfer amount exceeds remaining balance");
            _balances[feeDistributor] = _balances[feeDistributor].add(transferToFeeDistributorAmount);
            emit Transfer(sender, feeDistributor, transferToFeeDistributorAmount);
            //Sync is made automatically at the end of swap transaction,  doing it earlier reverts the swap
        } else {
            //Since there may be relayers like 1inch allow sync on feeless txs only
            PoolBurnAndSync();
        }
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(_totalSupply == 0, "Mint: Not an initial supply mint");
        require(account != address(0), "ERC20: mint to the zero address");
        _beforeTokenTransfer(address(0), account, amount);
        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(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");
        _beforeTokenTransfer(account, address(0), amount);
        if(amount != 0) {
            _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
            _totalSupply = _totalSupply.sub(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);
    }

    /**
     * Hook that is called before any transfer of tokens. This includes minting and burning.
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
    //Before sennding ether to this contract ensure gas cost is estimated properly
    receive() external payable {
       PoolBurnAndSync();
    }
}

/**
 * ABN is a token designed to implement pool inflation and supply deflation using simplified way of transferring or burning 
 * fees manually and then forcing Uniswap pool to resync balances instead of costly sell, add liquidity and mint LP tokens.
 * The ABN Token itself is just a standard ERC20, with:
 * No minting.
 * Public burning.
 * Transfer fee applied. Fixed to 3% into pool + 3% burn.
 */
contract AutoBurnToken is DeflationaryERC20 {
    constructor()  DeflationaryERC20("AutoBurn", "ABN") {
        // maximum supply   = 100000 whole units with decimals = 6
        _mint(msg.sender, 100000e6);
    }
}

Contract Security Audit

Contract ABI

[{"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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"PoolBurnAndSync","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[{"internalType":"bool","name":"","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":"calculateAmountsAfterFee","outputs":[{"internalType":"uint256","name":"transferToAmount","type":"uint256"},{"internalType":"uint256","name":"transferToFeeDistributorAmount","type":"uint256"},{"internalType":"uint256","name":"burnAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"countdownPoolBurnDue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"epoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDistributor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"lastPoolBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_distributor","type":"address"}],"name":"setFeeDistributor","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":[{"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":"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":[],"name":"txFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wethContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526008805460ff191660061790553480156200001e57600080fd5b506040518060400160405280600881526020016720baba37a13ab93760c11b8152506040518060400160405280600381526020016220a12760e91b81525081600390805190602001906200007492919062000447565b5080516200008a90600490602084019062000447565b5060058054600660ff1990911617610100600160a81b03191661010032021790556201518060078190556009805473c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03199091161790556200010d90620000f942826200012a602090811b62000d9017901c565b6200017d60201b62000dd91790919060201c565b600655506200012490503364174876e800620001db565b620004f3565b60006200017483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200034060201b60201c565b90505b92915050565b6000826200018e5750600062000177565b828202828482816200019c57fe5b0414620001745760405162461bcd60e51b815260040180806020018281038252602181526020018062001c686021913960400191505060405180910390fd5b6002541562000231576040805162461bcd60e51b815260206004820181905260248201527f4d696e743a204e6f7420616e20696e697469616c20737570706c79206d696e74604482015290519081900360640190fd5b6001600160a01b0382166200028d576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6200029b60008383620003e7565b620002b781600254620003ec60201b62000e321790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620002ea91839062000e32620003ec821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183620003d05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620003945781810151838201526020016200037a565b50505050905090810190601f168015620003c25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581620003dd57fe5b0495945050505050565b505050565b60008282018381101562000174576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200047f5760008555620004ca565b82601f106200049a57805160ff1916838001178555620004ca565b82800160010185558215620004ca579182015b82811115620004ca578251825591602001919060010190620004ad565b50620004d8929150620004dc565b5090565b5b80821115620004d85760008155600101620004dd565b61176580620005036000396000f3fe6080604052600436106101395760003560e01c80634780eac1116100ab57806395d89b411161006f57806395d89b4114610484578063a457c2d714610499578063a9059cbb146104d2578063ccfc2e8d1461050b578063cf82046114610540578063dd62ed3e1461055557610149565b80634780eac1146103d95780635ceb62d7146103ee57806370a082311461040357806379cc679014610436578063900cf0cf1461046f57610149565b8063301a5801116100fd578063301a5801146102c0578063303308f214610321578063313ce567146103365780633793675c14610361578063395093511461037657806342966c68146103af57610149565b806306fdde031461014e578063095ea7b3146101d85780630d43e8ad1461022557806318160ddd1461025657806323b872dd1461027d57610149565b3661014957610146610590565b50005b600080fd5b34801561015a57600080fd5b50610163610868565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019d578181015183820152602001610185565b50505050905090810190601f1680156101ca5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101e457600080fd5b50610211600480360360408110156101fb57600080fd5b506001600160a01b0381351690602001356108fe565b604080519115158252519081900360200190f35b34801561023157600080fd5b5061023a61091c565b604080516001600160a01b039092168252519081900360200190f35b34801561026257600080fd5b5061026b610930565b60408051918252519081900360200190f35b34801561028957600080fd5b50610211600480360360608110156102a057600080fd5b506001600160a01b03813581169160208101359091169060400135610936565b3480156102cc57600080fd5b50610303600480360360608110156102e357600080fd5b506001600160a01b038135811691602081013590911690604001356109bd565b60408051938452602084019290925282820152519081900360600190f35b34801561032d57600080fd5b50610211610590565b34801561034257600080fd5b5061034b610a52565b6040805160ff9092168252519081900360200190f35b34801561036d57600080fd5b5061026b610a5b565b34801561038257600080fd5b506102116004803603604081101561039957600080fd5b506001600160a01b038135169060200135610a61565b3480156103bb57600080fd5b50610211600480360360208110156103d257600080fd5b5035610aaf565b3480156103e557600080fd5b5061023a610aca565b3480156103fa57600080fd5b5061026b610ad9565b34801561040f57600080fd5b5061026b6004803603602081101561042657600080fd5b50356001600160a01b0316610b25565b34801561044257600080fd5b506102116004803603604081101561045957600080fd5b506001600160a01b038135169060200135610b40565b34801561047b57600080fd5b5061026b610b96565b34801561049057600080fd5b50610163610b9c565b3480156104a557600080fd5b50610211600480360360408110156104bc57600080fd5b506001600160a01b038135169060200135610bfd565b3480156104de57600080fd5b50610211600480360360408110156104f557600080fd5b506001600160a01b038135169060200135610c65565b34801561051757600080fd5b5061053e6004803603602081101561052e57600080fd5b50356001600160a01b0316610c79565b005b34801561054c57600080fd5b5061034b610d5c565b34801561056157600080fd5b5061026b6004803603604081101561057857600080fd5b506001600160a01b0381358116916020013516610d65565b30600090815260208190526040812054156105bf57306000818152602081905260409020546105bf9190610e8c565b47801561063057600960009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561061657600080fd5b505af115801561062a573d6000803e3d6000fd5b50505050505b610638610ad9565b158015610654575060085461010090046001600160a01b031615155b156106d55760075460065461066891610e32565b60065560085461010090046001600160a01b0316600090815260208190526040902054606410156106d55760085461010090046001600160a01b03166000818152602081905260409020546106d591906106d0906064906106ca906003610dd9565b90610d90565b610e8c565b60085461010090046001600160a01b03161561086057600954604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a0823191602480830192602092919082900301818787803b15801561073757600080fd5b505af115801561074b573d6000803e3d6000fd5b505050506040513d602081101561076157600080fd5b5051905080156107f6576009546008546040805163a9059cbb60e01b81526101009092046001600160a01b03908116600484015260248301859052905192169163a9059cbb916044808201926020929091908290030181600087803b1580156107c957600080fd5b505af11580156107dd573d6000803e3d6000fd5b505050506040513d60208110156107f357600080fd5b50505b600860019054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561084657600080fd5b505af115801561085a573d6000803e3d6000fd5b50505050505b600191505090565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108f45780601f106108c9576101008083540402835291602001916108f4565b820191906000526020600020905b8154815290600101906020018083116108d757829003601f168201915b5050505050905090565b600061091261090b610f8f565b8484610f93565b5060015b92915050565b60085461010090046001600160a01b031681565b60025490565b60006109a884610944610f8f565b6109a385604051806060016040528060288152602001611655602891396001600160a01b038a16600090815260016020526040812090610982610f8f565b6001600160a01b03168152602081019190915260400160002054919061107f565b610f93565b6109b3848484611116565b5060019392505050565b60008060006109d4866001600160a01b031661142f565b806109ec57506109ec856001600160a01b031661142f565b15610a3f57600854600090610a0c906064906106ca90889060ff16610dd9565b90506000610a1b826002610d90565b9050610a27868361146b565b610a31838361146b565b829450945094505050610a49565b5082915060009050805b93509350939050565b60055460ff1690565b60065481565b6000610912610a6e610f8f565b846109a38560016000610a7f610f8f565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610e32565b6000610ac2610abc610f8f565b83610e8c565b506001919050565b6009546001600160a01b031681565b600042610af3600754600654610e3290919063ffffffff16565b11610aff576000610b20565b610b2042610b1a600754600654610e3290919063ffffffff16565b9061146b565b905090565b6001600160a01b031660009081526020819052604090205490565b6000610b8c83610b4e610f8f565b6109a38560405180606001604052806024815260200161167d602491396001600160a01b038916600090815260016020526040812090610982610f8f565b6109128383610e8c565b60075481565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108f45780601f106108c9576101008083540402835291602001916108f4565b6000610912610c0a610f8f565b846109a38560405180606001604052806025815260200161170b6025913960016000610c34610f8f565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061107f565b6000610912610c72610f8f565b8484611116565b60055461010090046001600160a01b03163214610cd1576040805162461bcd60e51b81526020600482015260116024820152702737ba10333937b6903232b83637bcb2b960791b604482015290519081900360640190fd5b60085461010090046001600160a01b031615610d34576040805162461bcd60e51b815260206004820181905260248201527f506f6f6c3a204164647265737320696d6d757461626c65206f6e636520736574604482015290519081900360640190fd5b600880546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60085460ff1681565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6000610dd283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114ad565b9392505050565b600082610de857506000610916565b82820282848281610df557fe5b0414610dd25760405162461bcd60e51b81526004018080602001828103825260218152602001806116046021913960400191505060405180910390fd5b600082820183811015610dd2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038216610ed15760405162461bcd60e51b81526004018080602001828103825260218152602001806116a16021913960400191505060405180910390fd5b610edd82600083611512565b8015610f8b57610f208160405180606001604052806022815260200161153b602291396001600160a01b038516600090815260208190526040902054919061107f565b6001600160a01b038316600090815260208190526040902055600254610f46908261146b565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35b5050565b3390565b6001600160a01b038316610fd85760405162461bcd60e51b81526004018080602001828103825260248152602001806116e76024913960400191505060405180910390fd5b6001600160a01b03821661101d5760405162461bcd60e51b81526004018080602001828103825260228152602001806115886022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000818484111561110e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110d35781810151838201526020016110bb565b50505050905090810190601f1680156111005780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b03831661115b5760405162461bcd60e51b81526004018080602001828103825260258152602001806116c26025913960400191505060405180910390fd5b6001600160a01b0382166111a05760405162461bcd60e51b81526004018080602001828103825260238152602001806115186023913960400191505060405180910390fd5b60648110156111e05760405162461bcd60e51b81526004018080602001828103825260308152602001806116256030913960400191505060405180910390fd5b6111eb838383611512565b60008060006111fb8686866109bd565b92509250925061123e836040518060600160405280602681526020016115aa602691396001600160a01b038916600090815260208190526040902054919061107f565b6001600160a01b03808816600090815260208190526040808220939093559087168152205461126d9084610e32565b6001600160a01b038087166000818152602081815260409182902094909455805187815290519193928a16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a36000821180156112e1575060085461010090046001600160a01b031615155b1561141d576002546063906112f69085610d90565b10156113335760405162461bcd60e51b815260040180806020018281038252602b81526020018061155d602b913960400191505060405180910390fd5b61133d8682610e8c565b61137a826040518060600160405280603481526020016115d0603491396001600160a01b038916600090815260208190526040902054919061107f565b6001600160a01b03808816600090815260208190526040808220939093556008546101009004909116815220546113b19083610e32565b600880546001600160a01b036101009182900481166000908152602081815260409182902095909555925483518781529351929004811693908a16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3611427565b611425610590565b505b505050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061146357508115155b949350505050565b6000610dd283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061107f565b600081836114fc5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156110d35781810151838201526020016110bb565b50600083858161150857fe5b0495945050505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63656d61782073696e676c65207472616465203125206f662063757272656e7420746f74616c20737570706c7945524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a20666565207472616e7366657220616d6f756e7420657863656564732072656d61696e696e672062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77616d6f756e742062656c6f7720313030206261736520756e6974732c2061766f6964696e6720756e646572666c6f777345524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cb6bfc5a9da24d07fbfb547d02eec0ca32b7e46a454db41f5aaca6fdbe801d8564736f6c63430007060033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77

Deployed Bytecode

0x6080604052600436106101395760003560e01c80634780eac1116100ab57806395d89b411161006f57806395d89b4114610484578063a457c2d714610499578063a9059cbb146104d2578063ccfc2e8d1461050b578063cf82046114610540578063dd62ed3e1461055557610149565b80634780eac1146103d95780635ceb62d7146103ee57806370a082311461040357806379cc679014610436578063900cf0cf1461046f57610149565b8063301a5801116100fd578063301a5801146102c0578063303308f214610321578063313ce567146103365780633793675c14610361578063395093511461037657806342966c68146103af57610149565b806306fdde031461014e578063095ea7b3146101d85780630d43e8ad1461022557806318160ddd1461025657806323b872dd1461027d57610149565b3661014957610146610590565b50005b600080fd5b34801561015a57600080fd5b50610163610868565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019d578181015183820152602001610185565b50505050905090810190601f1680156101ca5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101e457600080fd5b50610211600480360360408110156101fb57600080fd5b506001600160a01b0381351690602001356108fe565b604080519115158252519081900360200190f35b34801561023157600080fd5b5061023a61091c565b604080516001600160a01b039092168252519081900360200190f35b34801561026257600080fd5b5061026b610930565b60408051918252519081900360200190f35b34801561028957600080fd5b50610211600480360360608110156102a057600080fd5b506001600160a01b03813581169160208101359091169060400135610936565b3480156102cc57600080fd5b50610303600480360360608110156102e357600080fd5b506001600160a01b038135811691602081013590911690604001356109bd565b60408051938452602084019290925282820152519081900360600190f35b34801561032d57600080fd5b50610211610590565b34801561034257600080fd5b5061034b610a52565b6040805160ff9092168252519081900360200190f35b34801561036d57600080fd5b5061026b610a5b565b34801561038257600080fd5b506102116004803603604081101561039957600080fd5b506001600160a01b038135169060200135610a61565b3480156103bb57600080fd5b50610211600480360360208110156103d257600080fd5b5035610aaf565b3480156103e557600080fd5b5061023a610aca565b3480156103fa57600080fd5b5061026b610ad9565b34801561040f57600080fd5b5061026b6004803603602081101561042657600080fd5b50356001600160a01b0316610b25565b34801561044257600080fd5b506102116004803603604081101561045957600080fd5b506001600160a01b038135169060200135610b40565b34801561047b57600080fd5b5061026b610b96565b34801561049057600080fd5b50610163610b9c565b3480156104a557600080fd5b50610211600480360360408110156104bc57600080fd5b506001600160a01b038135169060200135610bfd565b3480156104de57600080fd5b50610211600480360360408110156104f557600080fd5b506001600160a01b038135169060200135610c65565b34801561051757600080fd5b5061053e6004803603602081101561052e57600080fd5b50356001600160a01b0316610c79565b005b34801561054c57600080fd5b5061034b610d5c565b34801561056157600080fd5b5061026b6004803603604081101561057857600080fd5b506001600160a01b0381358116916020013516610d65565b30600090815260208190526040812054156105bf57306000818152602081905260409020546105bf9190610e8c565b47801561063057600960009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561061657600080fd5b505af115801561062a573d6000803e3d6000fd5b50505050505b610638610ad9565b158015610654575060085461010090046001600160a01b031615155b156106d55760075460065461066891610e32565b60065560085461010090046001600160a01b0316600090815260208190526040902054606410156106d55760085461010090046001600160a01b03166000818152602081905260409020546106d591906106d0906064906106ca906003610dd9565b90610d90565b610e8c565b60085461010090046001600160a01b03161561086057600954604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a0823191602480830192602092919082900301818787803b15801561073757600080fd5b505af115801561074b573d6000803e3d6000fd5b505050506040513d602081101561076157600080fd5b5051905080156107f6576009546008546040805163a9059cbb60e01b81526101009092046001600160a01b03908116600484015260248301859052905192169163a9059cbb916044808201926020929091908290030181600087803b1580156107c957600080fd5b505af11580156107dd573d6000803e3d6000fd5b505050506040513d60208110156107f357600080fd5b50505b600860019054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561084657600080fd5b505af115801561085a573d6000803e3d6000fd5b50505050505b600191505090565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108f45780601f106108c9576101008083540402835291602001916108f4565b820191906000526020600020905b8154815290600101906020018083116108d757829003601f168201915b5050505050905090565b600061091261090b610f8f565b8484610f93565b5060015b92915050565b60085461010090046001600160a01b031681565b60025490565b60006109a884610944610f8f565b6109a385604051806060016040528060288152602001611655602891396001600160a01b038a16600090815260016020526040812090610982610f8f565b6001600160a01b03168152602081019190915260400160002054919061107f565b610f93565b6109b3848484611116565b5060019392505050565b60008060006109d4866001600160a01b031661142f565b806109ec57506109ec856001600160a01b031661142f565b15610a3f57600854600090610a0c906064906106ca90889060ff16610dd9565b90506000610a1b826002610d90565b9050610a27868361146b565b610a31838361146b565b829450945094505050610a49565b5082915060009050805b93509350939050565b60055460ff1690565b60065481565b6000610912610a6e610f8f565b846109a38560016000610a7f610f8f565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610e32565b6000610ac2610abc610f8f565b83610e8c565b506001919050565b6009546001600160a01b031681565b600042610af3600754600654610e3290919063ffffffff16565b11610aff576000610b20565b610b2042610b1a600754600654610e3290919063ffffffff16565b9061146b565b905090565b6001600160a01b031660009081526020819052604090205490565b6000610b8c83610b4e610f8f565b6109a38560405180606001604052806024815260200161167d602491396001600160a01b038916600090815260016020526040812090610982610f8f565b6109128383610e8c565b60075481565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108f45780601f106108c9576101008083540402835291602001916108f4565b6000610912610c0a610f8f565b846109a38560405180606001604052806025815260200161170b6025913960016000610c34610f8f565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061107f565b6000610912610c72610f8f565b8484611116565b60055461010090046001600160a01b03163214610cd1576040805162461bcd60e51b81526020600482015260116024820152702737ba10333937b6903232b83637bcb2b960791b604482015290519081900360640190fd5b60085461010090046001600160a01b031615610d34576040805162461bcd60e51b815260206004820181905260248201527f506f6f6c3a204164647265737320696d6d757461626c65206f6e636520736574604482015290519081900360640190fd5b600880546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60085460ff1681565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6000610dd283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114ad565b9392505050565b600082610de857506000610916565b82820282848281610df557fe5b0414610dd25760405162461bcd60e51b81526004018080602001828103825260218152602001806116046021913960400191505060405180910390fd5b600082820183811015610dd2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038216610ed15760405162461bcd60e51b81526004018080602001828103825260218152602001806116a16021913960400191505060405180910390fd5b610edd82600083611512565b8015610f8b57610f208160405180606001604052806022815260200161153b602291396001600160a01b038516600090815260208190526040902054919061107f565b6001600160a01b038316600090815260208190526040902055600254610f46908261146b565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35b5050565b3390565b6001600160a01b038316610fd85760405162461bcd60e51b81526004018080602001828103825260248152602001806116e76024913960400191505060405180910390fd5b6001600160a01b03821661101d5760405162461bcd60e51b81526004018080602001828103825260228152602001806115886022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000818484111561110e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110d35781810151838201526020016110bb565b50505050905090810190601f1680156111005780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b03831661115b5760405162461bcd60e51b81526004018080602001828103825260258152602001806116c26025913960400191505060405180910390fd5b6001600160a01b0382166111a05760405162461bcd60e51b81526004018080602001828103825260238152602001806115186023913960400191505060405180910390fd5b60648110156111e05760405162461bcd60e51b81526004018080602001828103825260308152602001806116256030913960400191505060405180910390fd5b6111eb838383611512565b60008060006111fb8686866109bd565b92509250925061123e836040518060600160405280602681526020016115aa602691396001600160a01b038916600090815260208190526040902054919061107f565b6001600160a01b03808816600090815260208190526040808220939093559087168152205461126d9084610e32565b6001600160a01b038087166000818152602081815260409182902094909455805187815290519193928a16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a36000821180156112e1575060085461010090046001600160a01b031615155b1561141d576002546063906112f69085610d90565b10156113335760405162461bcd60e51b815260040180806020018281038252602b81526020018061155d602b913960400191505060405180910390fd5b61133d8682610e8c565b61137a826040518060600160405280603481526020016115d0603491396001600160a01b038916600090815260208190526040902054919061107f565b6001600160a01b03808816600090815260208190526040808220939093556008546101009004909116815220546113b19083610e32565b600880546001600160a01b036101009182900481166000908152602081815260409182902095909555925483518781529351929004811693908a16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3611427565b611425610590565b505b505050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061146357508115155b949350505050565b6000610dd283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061107f565b600081836114fc5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156110d35781810151838201526020016110bb565b50600083858161150857fe5b0495945050505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63656d61782073696e676c65207472616465203125206f662063757272656e7420746f74616c20737570706c7945524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a20666565207472616e7366657220616d6f756e7420657863656564732072656d61696e696e672062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77616d6f756e742062656c6f7720313030206261736520756e6974732c2061766f6964696e6720756e646572666c6f777345524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cb6bfc5a9da24d07fbfb547d02eec0ca32b7e46a454db41f5aaca6fdbe801d8564736f6c63430007060033

Deployed Bytecode Sourcemap

18752:220:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18307:17;:15;:17::i;:::-;;18752:220;;;;;9672:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10512:169;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10512:169:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;9122:29;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;9122:29:0;;;;;;;;;;;;;;9943:100;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;10687:321;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10687:321:0;;;;;;;;;;;;;;;;;:::i;13655:641::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13655:641:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;11839:1369;;;;;;;;;;;;;:::i;9854:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8943:31;;;;;;;;;;;;;:::i;11014:227::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11014:227:0;;;;;;;;:::i;14594:137::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14594:137:0;;:::i;9209:27::-;;;;;;;;;;;;;:::i;11531:190::-;;;;;;;;;;;;;:::i;10049:119::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10049:119:0;-1:-1:-1;;;;;10049:119:0;;:::i;14304:282::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14304:282:0;;;;;;;;:::i;8981:20::-;;;;;;;;;;;;;:::i;9761:87::-;;;;;;;;;;;;;:::i;11247:278::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11247:278:0;;;;;;;;:::i;10174:175::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10174:175:0;;;;;;;;:::i;13304:251::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13304:251:0;-1:-1:-1;;;;;13304:251:0;;:::i;:::-;;9036:22;;;;;;;;;;;;;:::i;10355:151::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10355:151:0;;;;;;;;;;:::i;11839:1369::-;11998:4;11890;11980:24;;;;;;;;;;;:28;11976:106;;12039:4;12045:9;:24;;;;;;;;;;;12025:45;;12039:4;12025:5;:45::i;:::-;12157:21;12193:13;;12189:94;;12229:12;;;;;;;;;-1:-1:-1;;;;;12229:12:0;-1:-1:-1;;;;;12223:27:0;;12259:9;12223:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12189:94;12358:22;:20;:22::i;:::-;:27;:59;;;;-1:-1:-1;12389:14:0;;;;;-1:-1:-1;;;;;12389:14:0;:28;;12358:59;12354:329;;;12474:5;;12453:16;;:27;;:20;:27::i;:::-;12434:16;:46;12551:14;;;;;-1:-1:-1;;;;;12551:14:0;12541:9;:25;;;;;;;;;;;12569:3;-1:-1:-1;12537:135:0;;;12599:14;;;;;-1:-1:-1;;;;;12599:14:0;12614:9;:25;;;;;;;;;;;12593:63;;12599:14;12614:41;;12651:3;;12614:32;;12644:1;12614:29;:32::i;:::-;:36;;:41::i;:::-;12593:5;:63::i;:::-;12780:14;;;;;-1:-1:-1;;;;;12780:14:0;:28;12777:402;;12886:12;;12880:44;;;-1:-1:-1;;;12880:44:0;;12918:4;12880:44;;;;;;12858:18;;-1:-1:-1;;;;;12886:12:0;;12880:29;;:44;;;;;;;;;;;;;;12858:18;12886:12;12880:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12880:44:0;;-1:-1:-1;12977:14:0;;12973:111;;13018:12;;13041:14;;13012:56;;;-1:-1:-1;;;13012:56:0;;13018:12;13041:14;;;-1:-1:-1;;;;;13041:14:0;;;13012:56;;;;;;;;;;;;13018:12;;;13012:28;;:56;;;;;;;;;;;;;;;13018:12;;13012:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12973:111:0;13108:14;;;;;;;;;-1:-1:-1;;;;;13108:14:0;-1:-1:-1;;;;;13098:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12777:402;;13196:4;13189:11;;;11839:1369;:::o;9672:83::-;9742:5;9735:12;;;;;;;;-1:-1:-1;;9735:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9709:13;;9735:12;;9742:5;;9735:12;;9742:5;9735:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9672:83;:::o;10512:169::-;10595:4;10612:39;10621:12;:10;:12::i;:::-;10635:7;10644:6;10612:8;:39::i;:::-;-1:-1:-1;10669:4:0;10512:169;;;;;:::o;9122:29::-;;;;;;-1:-1:-1;;;;;9122:29:0;;:::o;9943:100::-;10023:12;;9943:100;:::o;10687:321::-;10793:4;10810:121;10819:6;10827:12;:10;:12::i;:::-;10841:89;10879:6;10841:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10841:19:0;;;;;;:11;:19;;;;;;10861:12;:10;:12::i;:::-;-1:-1:-1;;;;;10841:33:0;;;;;;;;;;;;-1:-1:-1;10841:33:0;;;:89;:37;:89::i;:::-;10810:8;:121::i;:::-;10942:36;10952:6;10960:9;10971:6;10942:9;:36::i;:::-;-1:-1:-1;10996:4:0;10687:321;;;;;:::o;13655:641::-;13795:24;13821:38;13861:18;13955:19;:6;-1:-1:-1;;;;;13955:17:0;;:19::i;:::-;:45;;;;13978:22;:9;-1:-1:-1;;;;;13978:20:0;;:22::i;:::-;13951:306;;;14122:5;;14097:11;;14111:26;;14133:3;;14111:17;;:6;;14122:5;;14111:10;:17::i;:26::-;14097:40;-1:-1:-1;14152:15:0;14170:10;14097:40;14178:1;14170:7;:10::i;:::-;14152:28;-1:-1:-1;14203:15:0;:6;14214:3;14203:10;:15::i;:::-;14220:16;:3;14228:7;14220;:16::i;:::-;14237:7;14195:50;;;;;;;;;;13951:306;-1:-1:-1;14275:6:0;;-1:-1:-1;14283:1:0;;-1:-1:-1;14283:1:0;13655:641;;;;;;;;:::o;9854:83::-;9920:9;;;;9854:83;:::o;8943:31::-;;;;:::o;11014:227::-;11111:4;11128:83;11137:12;:10;:12::i;:::-;11151:7;11160:50;11199:10;11160:11;:25;11172:12;:10;:12::i;:::-;-1:-1:-1;;;;;11160:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;11160:25:0;;;:34;;;;;;;;;;;:38;:50::i;14594:137::-;14657:4;14674:27;14680:12;:10;:12::i;:::-;14694:6;14674:5;:27::i;:::-;-1:-1:-1;14719:4:0;14594:137;;;:::o;9209:27::-;;;-1:-1:-1;;;;;9209:27:0;;:::o;11531:190::-;11584:7;11644:15;11615:27;11636:5;;11615:16;;:20;;:27;;;;:::i;:::-;11614:45;:98;;11711:1;11614:98;;;11661:48;11693:15;11661:27;11682:5;;11661:16;;:20;;:27;;;;:::i;:::-;:31;;:48::i;:::-;11606:107;;11531:190;:::o;10049:119::-;-1:-1:-1;;;;;10142:18:0;10115:7;10142:18;;;;;;;;;;;;10049:119::o;14304:282::-;14387:4;14404:119;14413:7;14422:12;:10;:12::i;:::-;14436:86;14475:6;14436:86;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14436:20:0;;;;;;:11;:20;;;;;;14457:12;:10;:12::i;14404:119::-;14534:22;14540:7;14549:6;14534:5;:22::i;8981:20::-;;;;:::o;9761:87::-;9833:7;9826:14;;;;;;;;-1:-1:-1;;9826:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9800:13;;9826:14;;9833:7;;9826:14;;9833:7;9826:14;;;;;;;;;;;;;;;;;;;;;;;;11247:278;11349:4;11366:129;11375:12;:10;:12::i;:::-;11389:7;11398:96;11437:15;11398:96;;;;;;;;;;;;;;;;;:11;:25;11410:12;:10;:12::i;:::-;-1:-1:-1;;;;;11398:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;11398:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;10174:175::-;10260:4;10277:42;10287:12;:10;:12::i;:::-;10301:9;10312:6;10277:9;:42::i;13304:251::-;13392:9;;;;;-1:-1:-1;;;;;13392:9:0;13379;:22;13371:52;;;;;-1:-1:-1;;;13371:52:0;;;;;;;;;;;;-1:-1:-1;;;13371:52:0;;;;;;;;;;;;;;;13442:14;;;;;-1:-1:-1;;;;;13442:14:0;:28;13434:73;;;;;-1:-1:-1;;;13434:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13518:14;:29;;-1:-1:-1;;;;;13518:29:0;;;;;-1:-1:-1;;;;;;13518:29:0;;;;;;;;;13304:251::o;9036:22::-;;;;;;:::o;10355:151::-;-1:-1:-1;;;;;10471:18:0;;;10444:7;10471:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10355:151::o;4438:132::-;4496:7;4523:39;4527:1;4530;4523:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4516:46;4438:132;-1:-1:-1;;;4438:132:0:o;4186:246::-;4244:7;4268:6;4264:47;;-1:-1:-1;4298:1:0;4291:8;;4264:47;4333:5;;;4337:1;4333;:5;:1;4357:5;;;;;:10;4349:56;;;;-1:-1:-1;;;4349:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3663:179;3721:7;3753:5;;;3777:6;;;;3769:46;;;;;-1:-1:-1;;;3769:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;17048:464;-1:-1:-1;;;;;17132:21:0;;17124:67;;;;-1:-1:-1;;;17124:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17202:49;17223:7;17240:1;17244:6;17202:20;:49::i;:::-;17265:11;;17262:243;;17314:68;17337:6;17314:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17314:18:0;;:9;:18;;;;;;;;;;;;:68;:22;:68::i;:::-;-1:-1:-1;;;;;17293:18:0;;:9;:18;;;;;;;;;;:89;17412:12;;:24;;17429:6;17412:16;:24::i;:::-;17397:12;:39;17456:37;;;;;;;;17482:1;;-1:-1:-1;;;;;17456:37:0;;;;;;;;;;;;17262:243;17048:464;;:::o;1950:106::-;2038:10;1950:106;:::o;17520:344::-;-1:-1:-1;;;;;17622:19:0;;17614:68;;;;-1:-1:-1;;;17614:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17701:21:0;;17693:68;;;;-1:-1:-1;;;17693:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17772:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17824:32;;;;;;;;;;;;;;;;;17520:344;;;:::o;3990:190::-;4076:7;4112:12;4104:6;;;;4096:29;;;;-1:-1:-1;;;4096:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4148:5:0;;;3990:190::o;14739:1846::-;-1:-1:-1;;;;;14845:20:0;;14837:70;;;;-1:-1:-1;;;14837:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14926:23:0;;14918:71;;;;-1:-1:-1;;;14918:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15018:3;15008:6;:13;;15000:74;;;;-1:-1:-1;;;15000:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15085:47;15106:6;15114:9;15125:6;15085:20;:47::i;:::-;15171:24;15197:38;15236:18;15258:51;15283:6;15291:9;15302:6;15258:24;:51::i;:::-;15170:139;;;;;;15417:81;15439:16;15417:81;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15417:17:0;;:9;:17;;;;;;;;;;;;:81;:21;:81::i;:::-;-1:-1:-1;;;;;15397:17:0;;;:9;:17;;;;;;;;;;;:101;;;;15571:20;;;;;;;:42;;15596:16;15571:24;:42::i;:::-;-1:-1:-1;;;;;15548:20:0;;;:9;:20;;;;;;;;;;;;:65;;;;15629:45;;;;;;;15548:20;;15629:45;;;;;;;;;;;;;15806:1;15773:30;:34;:66;;;;-1:-1:-1;15811:14:0;;;;;-1:-1:-1;;;;;15811:14:0;:28;;15773:66;15770:808;;;15863:12;;15901:2;;15863:34;;15880:16;15863;:34::i;:::-;:40;;15855:96;;;;-1:-1:-1;;;15855:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15966:24;15972:6;15979:10;15966:5;:24::i;:::-;16025:109;16047:30;16025:109;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16025:17:0;;:9;:17;;;;;;;;;;;;:109;:21;:109::i;:::-;-1:-1:-1;;;;;16005:17:0;;;:9;:17;;;;;;;;;;;:129;;;;16187:14;;;;;;;;16177:25;;;;:61;;16207:30;16177:29;:61::i;:::-;16159:14;;;-1:-1:-1;;;;;16159:14:0;;;;;;;16149:9;:25;;;;;;;;;;;;:89;;;;16275:14;;16258:64;;;;;;;16275:14;;;;;;16258:64;;;;;;;;;;;;;;;15770:808;;;16549:17;:15;:17::i;:::-;;15770:808;14739:1846;;;;;;:::o;5105:619::-;5165:4;5633:20;;5476:66;5673:23;;;;;;:42;;-1:-1:-1;5700:15:0;;;5673:42;5665:51;5105:619;-1:-1:-1;;;;5105:619:0:o;3848:136::-;3906:7;3933:43;3937:1;3940;3933:43;;;;;;;;;;;;;;;;;:3;:43::i;4576:189::-;4662:7;4697:12;4690:5;4682:28;;;;-1:-1:-1;;;4682:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4721:9;4737:1;4733;:5;;;;;;;4576:189;-1:-1:-1;;;;;4576:189:0:o;18088:92::-;;;;:::o

Swarm Source

ipfs://cb6bfc5a9da24d07fbfb547d02eec0ca32b7e46a454db41f5aaca6fdbe801d85
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.