ETH Price: $3,277.44 (+0.92%)
Gas: 2 Gwei

Token

AI Explorer ($AIXP)
 

Overview

Max Total Supply

1,000,000 $AIXP

Holders

143

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000330683 $AIXP

Value
$0.00
0x1e1cf6550e405890a9dcec7d06d90c0db7068ee9
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
AIEXPLORER

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-23
*/

//SPDX-License-Identifier: MIT

/**

TG : https://t.me/ExplorerAi_Erc

Website : https://aiexplorerbot.tech/

Twitter : https://twitter.com/explorerai_erc

**/

pragma solidity ^0.8.24;

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);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;

    mapping(address => mapping(address => uint256)) internal _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");
        _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");
        _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");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    
    function _tokengeneration(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: generation to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = amount;
        _balances[account] = amount;
        emit Transfer(address(0), account, 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);
    }

    
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library Address {
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract AIEXPLORER is ERC20, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

    bool private _liquidityMutex = false;
    bool private  providingLiquidity = false;
    bool public tradingEnabled = false;

    uint256 public  tokenLPThreshold = 5000 * 10**18;
    uint256 public maxWalletLimit = 20000 * 10**18;

    uint256 private  genesis_block;
    uint256 private deadline = 10;
    uint256 private launchtax = 35;

    address public  MW = 0xf44F580a5B5D04AB3AdD912847DfA40FF8034815;
	address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 Dev;
        uint256 LP;
    }

    Taxes public taxes = Taxes(5, 0);
    Taxes public sellTaxes = Taxes(5, 0);

    mapping(address => bool) public exemptFee;


    modifier mutexLock() {
        if (!_liquidityMutex) {
            _liquidityMutex = true;
            _;
            _liquidityMutex = false;
        }
    }

    constructor() ERC20("AI Explorer", "$AIXP") {
        _tokengeneration(msg.sender, 1000000 * 10**decimals());

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // Create a pair for this new token
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        exemptFee[address(this)] = true;
        exemptFee[msg.sender] = true;
        exemptFee[MW] = true;
        exemptFee[deadWallet] = true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        override
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");

        if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }

        if (sender == pair && !exemptFee[recipient] && !_liquidityMutex) {
            require(balanceOf(recipient) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }

        if (sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_liquidityMutex) {
           
            if (recipient != pair) {
                require(balanceOf(recipient) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
        }

        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        Taxes memory currentTaxes;

        bool useLaunchFee = !exemptFee[sender] &&
            !exemptFee[recipient] &&
            block.number < genesis_block + deadline;

        //set fee to zero if fees in contract are handled or exempted
        if (_liquidityMutex || exemptFee[sender] || exemptFee[recipient])
            fee = 0;

            //calculate fee
        else if (recipient == pair && !useLaunchFee) {
            feeswap =
                sellTaxes.LP +
                sellTaxes.Dev ;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (!useLaunchFee) {
            feeswap =
                taxes.LP +
                taxes.Dev ;
            feesum = feeswap;
            currentTaxes = taxes;
        } else if (useLaunchFee) {
            feeswap = launchtax;
            feesum = launchtax;
        }

        fee = (amount * feesum) / 100;

        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (providingLiquidity && sender != pair) handle_fees(feeswap, currentTaxes);

        //rest to recipient
        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {
            //send the fee to the contract
            if (feeswap > 0) {
                uint256 feeAmount = (amount * feeswap) / 100;
                super._transfer(sender, address(this), feeAmount);
            }

        }
    }

    function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private mutexLock {

	if(feeswap == 0){
            return;
        }	

        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= tokenLPThreshold) {
            if (tokenLPThreshold > 1) {
                contractBalance = tokenLPThreshold;
            }

            // Split the contract balance into halves
            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.LP) /
                denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.LP);
            uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.LP;

            if (ethToAddLiquidityWith > 0) {
                // Add liquidity
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }

            uint256 DevAmt = unitBalance * 2 * swapTaxes.Dev;
            if (DevAmt > 0) {
                payable(MW).sendValue(DevAmt);
            }

        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{ value: ethAmount }(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadWallet,
            block.timestamp
        );
    }

    function LPTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        tokenLPThreshold = new_amount * 10**decimals();
    }

    function BuyTax(
        uint256 _Dev,
        uint256 _LP
    ) external onlyOwner {
        taxes = Taxes(_Dev, _LP);
    }

    function SellTax(
        uint256 _Dev,
        uint256 _LP
    ) external onlyOwner {
        sellTaxes = Taxes(_Dev, _LP);
    }

   function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        providingLiquidity = true;
        genesis_block = block.number;
    }

    function updateMrkt(address newWallet) external onlyOwner {
        MW = newWallet;
    }


    function AddExemptFees(address _address) external onlyOwner {
        exemptFee[_address] = true;
    }

    function RemoveExemptFees(address _address) external onlyOwner {
        exemptFee[_address] = false;
    }


    function updateMaxWallet(uint256 maxWallet) external onlyOwner {
        maxWalletLimit = maxWallet * 10**decimals(); 
    }


    // fallbacks
    receive() external payable {}
}

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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"AddExemptFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Dev","type":"uint256"},{"internalType":"uint256","name":"_LP","type":"uint256"}],"name":"BuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"LPTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"MW","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"RemoveExemptFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Dev","type":"uint256"},{"internalType":"uint256","name":"_LP","type":"uint256"}],"name":"SellTax","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"Dev","type":"uint256"},{"internalType":"uint256","name":"LP","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"Dev","type":"uint256"},{"internalType":"uint256","name":"LP","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenLPThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMrkt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6007805462ffffff60a01b1916905569010f0cf064dd5920000060085569043c33c1937564800000600955600a600b556023600c55600d80546001600160a01b03191673f44f580a5b5d04ab3add912847dfa40ff8034815179055600560808190525f60a0819052600e829055600f81905561010060405260c082905260e081905260109190915560115534801562000096575f80fd5b506040518060400160405280600b81526020016a20a49022bc383637b932b960a91b81525060405180604001604052806005815260200164024414958560dc1b8152508160039081620000ea9190620004f5565b506004620000f98282620004f5565b50505062000116620001106200034260201b60201c565b62000346565b6200013e33620001296012600a620006d0565b6200013890620f4240620006e7565b62000397565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000194573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ba919062000701565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000206573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200022c919062000701565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000277573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200029d919062000701565b600680546001600160a01b03199081166001600160a01b03958616179091556007805490911691841691909117905550305f90815260126020526040808220805460ff1990811660019081179092553384528284208054821683179055600d549094168352908220805484168217905561dead9091527f1120e10407cab1193d7c5139d9aae5536deb3d83e855f25f8e42f811c01f56f7805490921617905562000729565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620004005760405162461bcd60e51b815260206004820152602560248201527f45524332303a2067656e65726174696f6e20746f20746865207a65726f206164604482015264647265737360d81b606482015260840160405180910390fd5b60028190556001600160a01b0382165f81815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200048157607f821691505b602082108103620004a057634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200045357805f5260205f20601f840160051c81016020851015620004cd5750805b601f840160051c820191505b81811015620004ee575f8155600101620004d9565b5050505050565b81516001600160401b0381111562000511576200051162000458565b62000529816200052284546200046c565b84620004a6565b602080601f8311600181146200055f575f8415620005475750858301515b5f19600386901b1c1916600185901b178555620005b9565b5f85815260208120601f198616915b828110156200058f578886015182559484019460019091019084016200056e565b5085821015620005ad57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200061557815f1904821115620005f957620005f9620005c1565b808516156200060757918102915b93841c9390800290620005da565b509250929050565b5f826200062d57506001620006ca565b816200063b57505f620006ca565b81600181146200065457600281146200065f576200067f565b6001915050620006ca565b60ff841115620006735762000673620005c1565b50506001821b620006ca565b5060208310610133831016604e8410600b8410161715620006a4575081810a620006ca565b620006b08383620005d5565b805f1904821115620006c657620006c6620005c1565b0290505b92915050565b5f620006e060ff8416836200061d565b9392505050565b8082028115828204841417620006ca57620006ca620005c1565b5f6020828403121562000712575f80fd5b81516001600160a01b0381168114620006e0575f80fd5b611c5c80620007375f395ff3fe6080604052600436106101de575f3560e01c806385141a77116100fd578063c5d32bb211610092578063ef12617e11610062578063ef12617e1461059a578063f2fde38b146105b9578063f66895a3146105d8578063f887ea40146105f2575f80fd5b8063c5d32bb2146104ea578063cb93a10914610518578063dd62ed3e14610537578063e16d5e111461057b575f80fd5b8063a457c2d7116100cd578063a457c2d71461046e578063a8aa1b311461048d578063a9059cbb146104ac578063b876a820146104cb575f80fd5b806385141a77146104145780638a8c523c146104295780638da5cb5b1461043d57806395d89b411461045a575f80fd5b806333bbacda1161017357806366a88d961161014357806366a88d961461038857806370a082311461039d578063715018a6146103d1578063728f8eea146103e5575f80fd5b806333bbacda146102f3578063369509281461031257806339509351146103495780634ada218b14610368575f80fd5b806318160ddd116101ae57806318160ddd146102865780631c499ab01461029a57806323b872dd146102b9578063313ce567146102d8575f80fd5b806306fdde03146101e9578063095ea7b3146102135780630fa1982314610242578063158158b814610263575f80fd5b366101e557005b5f80fd5b3480156101f4575f80fd5b506101fd610611565b60405161020a9190611838565b60405180910390f35b34801561021e575f80fd5b5061023261022d366004611898565b6106a1565b604051901515815260200161020a565b34801561024d575f80fd5b5061026161025c3660046118c2565b6106b7565b005b34801561026e575f80fd5b5061027860085481565b60405190815260200161020a565b348015610291575f80fd5b50600254610278565b3480156102a5575f80fd5b506102616102b43660046118e4565b61070c565b3480156102c4575f80fd5b506102326102d33660046118fb565b610752565b3480156102e3575f80fd5b506040516012815260200161020a565b3480156102fe575f80fd5b5061026161030d3660046118e4565b610801565b34801561031d575f80fd5b50600d54610331906001600160a01b031681565b6040516001600160a01b03909116815260200161020a565b348015610354575f80fd5b50610232610363366004611898565b610847565b348015610373575f80fd5b5060075461023290600160b01b900460ff1681565b348015610393575f80fd5b5061027860095481565b3480156103a8575f80fd5b506102786103b73660046118c2565b6001600160a01b03165f9081526020819052604090205490565b3480156103dc575f80fd5b5061026161087d565b3480156103f0575f80fd5b50600e54600f546103ff919082565b6040805192835260208301919091520161020a565b34801561041f575f80fd5b5061033161dead81565b348015610434575f80fd5b506102616108b2565b348015610448575f80fd5b506005546001600160a01b0316610331565b348015610465575f80fd5b506101fd610951565b348015610479575f80fd5b50610232610488366004611898565b610960565b348015610498575f80fd5b50600754610331906001600160a01b031681565b3480156104b7575f80fd5b506102326104c6366004611898565b6109fa565b3480156104d6575f80fd5b506102616104e53660046118c2565b610a06565b3480156104f5575f80fd5b506102326105043660046118c2565b60126020525f908152604090205460ff1681565b348015610523575f80fd5b50610261610532366004611939565b610a53565b348015610542575f80fd5b50610278610551366004611959565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610586575f80fd5b506102616105953660046118c2565b610a9b565b3480156105a5575f80fd5b506102616105b4366004611939565b610ae5565b3480156105c4575f80fd5b506102616105d33660046118c2565b610b2d565b3480156105e3575f80fd5b506010546011546103ff919082565b3480156105fd575f80fd5b50600654610331906001600160a01b031681565b60606003805461062090611990565b80601f016020809104026020016040519081016040528092919081815260200182805461064c90611990565b80156106975780601f1061066e57610100808354040283529160200191610697565b820191905f5260205f20905b81548152906001019060200180831161067a57829003601f168201915b5050505050905090565b5f6106ad338484610bc8565b5060015b92915050565b6005546001600160a01b031633146106ea5760405162461bcd60e51b81526004016106e1906119c8565b60405180910390fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146107365760405162461bcd60e51b81526004016106e1906119c8565b6107426012600a611af1565b61074c9082611aff565b60095550565b5f61075e848484610ceb565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156107e25760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016106e1565b6107f685336107f18685611b16565b610bc8565b506001949350505050565b6005546001600160a01b0316331461082b5760405162461bcd60e51b81526004016106e1906119c8565b6108376012600a611af1565b6108419082611aff565b60085550565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916106ad9185906107f1908690611b29565b6005546001600160a01b031633146108a75760405162461bcd60e51b81526004016106e1906119c8565b6108b05f6111c2565b565b6005546001600160a01b031633146108dc5760405162461bcd60e51b81526004016106e1906119c8565b600754600160b01b900460ff16156109365760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c656400000000000060448201526064016106e1565b6007805461ffff60a81b191661010160a81b17905543600a55565b60606004805461062090611990565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156109e15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106e1565b6109f033856107f18685611b16565b5060019392505050565b5f6106ad338484610ceb565b6005546001600160a01b03163314610a305760405162461bcd60e51b81526004016106e1906119c8565b6001600160a01b03165f908152601260205260409020805460ff19166001179055565b6005546001600160a01b03163314610a7d5760405162461bcd60e51b81526004016106e1906119c8565b60408051808201909152828152602001819052600e91909155600f55565b6005546001600160a01b03163314610ac55760405162461bcd60e51b81526004016106e1906119c8565b6001600160a01b03165f908152601260205260409020805460ff19169055565b6005546001600160a01b03163314610b0f5760405162461bcd60e51b81526004016106e1906119c8565b60408051808201909152828152602001819052601091909155601155565b6005546001600160a01b03163314610b575760405162461bcd60e51b81526004016106e1906119c8565b6001600160a01b038116610bbc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106e1565b610bc5816111c2565b50565b6001600160a01b038316610c2a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106e1565b6001600160a01b038216610c8b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106e1565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8111610d4c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106e1565b6001600160a01b0383165f9081526012602052604090205460ff16158015610d8c57506001600160a01b0382165f9081526012602052604090205460ff16155b15610de057600754600160b01b900460ff16610de05760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016106e1565b6007546001600160a01b038481169116148015610e1557506001600160a01b0382165f9081526012602052604090205460ff16155b8015610e2b5750600754600160a01b900460ff16155b15610eaa5760095481610e52846001600160a01b03165f9081526020819052604090205490565b610e5c9190611b29565b1115610eaa5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016106e1565b6007546001600160a01b03848116911614801590610ee057506001600160a01b0382165f9081526012602052604090205460ff16155b8015610f0457506001600160a01b0383165f9081526012602052604090205460ff16155b8015610f1a5750600754600160a01b900460ff16155b15610fae576007546001600160a01b03838116911614610fae5760095481610f56846001600160a01b03165f9081526020819052604090205490565b610f609190611b29565b1115610fae5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016106e1565b5f805f610fcc60405180604001604052805f81526020015f81525090565b6001600160a01b0387165f9081526012602052604081205460ff1615801561100c57506001600160a01b0387165f9081526012602052604090205460ff16155b80156110265750600b54600a546110239190611b29565b43105b600754909150600160a01b900460ff168061105857506001600160a01b0388165f9081526012602052604090205460ff165b8061107a57506001600160a01b0387165f9081526012602052604090205460ff165b15611087575f9250611123565b6007546001600160a01b0388811691161480156110a2575080155b156110db576010546011546110b79190611b29565b60408051808201909152601054815260115460208201529095508594509150611123565b8061111457600e54600f546110f09190611b29565b60408051808201909152600e548152600f5460208201529095508594509150611123565b801561112357600c5494508493505b606461112f8588611aff565b6111399190611b3c565b600754909350600160a81b900460ff16801561116357506007546001600160a01b03898116911614155b15611172576111728583611213565b6111868888611181868a611b16565b611349565b82156111b85784156111b8575f606461119f8789611aff565b6111a99190611b3c565b90506111b6893083611349565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b600754600160a01b900460ff16611345576007805460ff60a01b1916600160a01b179055811561133757305f908152602081905260409020546008548110611335576001600854111561126557506008545b5f611271846002611aff565b90505f818460200151846112859190611aff565b61128f9190611b3c565b90505f61129c8285611b16565b9050476112a88261151f565b5f6112b38247611b16565b90505f8760200151866112c69190611b16565b6112d09083611b3c565b90505f8860200151826112e39190611aff565b905080156112f5576112f5868261166f565b88515f90611304846002611aff565b61130e9190611aff565b9050801561132c57600d5461132c906001600160a01b03168261171e565b50505050505050505b505b6007805460ff60a01b191690555b5050565b6001600160a01b0383166113ad5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106e1565b6001600160a01b03821661140f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106e1565b6001600160a01b0383165f90815260208190526040902054818110156114865760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106e1565b6114908282611b16565b6001600160a01b038086165f9081526020819052604080822093909355908516815290812080548492906114c5908490611b29565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161151191815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061155257611552611b5b565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156115a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115cd9190611b6f565b816001815181106115e0576115e0611b5b565b6001600160a01b0392831660209182029290920101526006546116069130911684610bc8565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061163e9085905f90869030904290600401611b8a565b5f604051808303815f87803b158015611655575f80fd5b505af1158015611667573d5f803e3d5ffd5b505050505050565b6006546116879030906001600160a01b031684610bc8565b60065460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156116f2573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117179190611bfb565b5050505050565b8047101561176e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106e1565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146117b7576040519150601f19603f3d011682016040523d82523d5f602084013e6117bc565b606091505b50509050806118335760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106e1565b505050565b5f602080835283518060208501525f5b8181101561186457858101830151858201604001528201611848565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610bc5575f80fd5b5f80604083850312156118a9575f80fd5b82356118b481611884565b946020939093013593505050565b5f602082840312156118d2575f80fd5b81356118dd81611884565b9392505050565b5f602082840312156118f4575f80fd5b5035919050565b5f805f6060848603121561190d575f80fd5b833561191881611884565b9250602084013561192881611884565b929592945050506040919091013590565b5f806040838503121561194a575f80fd5b50508035926020909101359150565b5f806040838503121561196a575f80fd5b823561197581611884565b9150602083013561198581611884565b809150509250929050565b600181811c908216806119a457607f821691505b6020821081036119c257634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611a4b57815f1904821115611a3157611a316119fd565b80851615611a3e57918102915b93841c9390800290611a16565b509250929050565b5f82611a61575060016106b1565b81611a6d57505f6106b1565b8160018114611a835760028114611a8d57611aa9565b60019150506106b1565b60ff841115611a9e57611a9e6119fd565b50506001821b6106b1565b5060208310610133831016604e8410600b8410161715611acc575081810a6106b1565b611ad68383611a11565b805f1904821115611ae957611ae96119fd565b029392505050565b5f6118dd60ff841683611a53565b80820281158282048414176106b1576106b16119fd565b818103818111156106b1576106b16119fd565b808201808211156106b1576106b16119fd565b5f82611b5657634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611b7f575f80fd5b81516118dd81611884565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611bda5784516001600160a01b031683529383019391830191600101611bb5565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611c0d575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212200d645ed96df784ff4b1017fad31509e161fa51db52e21a493d5487f116f47b4464736f6c63430008180033

Deployed Bytecode

0x6080604052600436106101de575f3560e01c806385141a77116100fd578063c5d32bb211610092578063ef12617e11610062578063ef12617e1461059a578063f2fde38b146105b9578063f66895a3146105d8578063f887ea40146105f2575f80fd5b8063c5d32bb2146104ea578063cb93a10914610518578063dd62ed3e14610537578063e16d5e111461057b575f80fd5b8063a457c2d7116100cd578063a457c2d71461046e578063a8aa1b311461048d578063a9059cbb146104ac578063b876a820146104cb575f80fd5b806385141a77146104145780638a8c523c146104295780638da5cb5b1461043d57806395d89b411461045a575f80fd5b806333bbacda1161017357806366a88d961161014357806366a88d961461038857806370a082311461039d578063715018a6146103d1578063728f8eea146103e5575f80fd5b806333bbacda146102f3578063369509281461031257806339509351146103495780634ada218b14610368575f80fd5b806318160ddd116101ae57806318160ddd146102865780631c499ab01461029a57806323b872dd146102b9578063313ce567146102d8575f80fd5b806306fdde03146101e9578063095ea7b3146102135780630fa1982314610242578063158158b814610263575f80fd5b366101e557005b5f80fd5b3480156101f4575f80fd5b506101fd610611565b60405161020a9190611838565b60405180910390f35b34801561021e575f80fd5b5061023261022d366004611898565b6106a1565b604051901515815260200161020a565b34801561024d575f80fd5b5061026161025c3660046118c2565b6106b7565b005b34801561026e575f80fd5b5061027860085481565b60405190815260200161020a565b348015610291575f80fd5b50600254610278565b3480156102a5575f80fd5b506102616102b43660046118e4565b61070c565b3480156102c4575f80fd5b506102326102d33660046118fb565b610752565b3480156102e3575f80fd5b506040516012815260200161020a565b3480156102fe575f80fd5b5061026161030d3660046118e4565b610801565b34801561031d575f80fd5b50600d54610331906001600160a01b031681565b6040516001600160a01b03909116815260200161020a565b348015610354575f80fd5b50610232610363366004611898565b610847565b348015610373575f80fd5b5060075461023290600160b01b900460ff1681565b348015610393575f80fd5b5061027860095481565b3480156103a8575f80fd5b506102786103b73660046118c2565b6001600160a01b03165f9081526020819052604090205490565b3480156103dc575f80fd5b5061026161087d565b3480156103f0575f80fd5b50600e54600f546103ff919082565b6040805192835260208301919091520161020a565b34801561041f575f80fd5b5061033161dead81565b348015610434575f80fd5b506102616108b2565b348015610448575f80fd5b506005546001600160a01b0316610331565b348015610465575f80fd5b506101fd610951565b348015610479575f80fd5b50610232610488366004611898565b610960565b348015610498575f80fd5b50600754610331906001600160a01b031681565b3480156104b7575f80fd5b506102326104c6366004611898565b6109fa565b3480156104d6575f80fd5b506102616104e53660046118c2565b610a06565b3480156104f5575f80fd5b506102326105043660046118c2565b60126020525f908152604090205460ff1681565b348015610523575f80fd5b50610261610532366004611939565b610a53565b348015610542575f80fd5b50610278610551366004611959565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610586575f80fd5b506102616105953660046118c2565b610a9b565b3480156105a5575f80fd5b506102616105b4366004611939565b610ae5565b3480156105c4575f80fd5b506102616105d33660046118c2565b610b2d565b3480156105e3575f80fd5b506010546011546103ff919082565b3480156105fd575f80fd5b50600654610331906001600160a01b031681565b60606003805461062090611990565b80601f016020809104026020016040519081016040528092919081815260200182805461064c90611990565b80156106975780601f1061066e57610100808354040283529160200191610697565b820191905f5260205f20905b81548152906001019060200180831161067a57829003601f168201915b5050505050905090565b5f6106ad338484610bc8565b5060015b92915050565b6005546001600160a01b031633146106ea5760405162461bcd60e51b81526004016106e1906119c8565b60405180910390fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146107365760405162461bcd60e51b81526004016106e1906119c8565b6107426012600a611af1565b61074c9082611aff565b60095550565b5f61075e848484610ceb565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156107e25760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016106e1565b6107f685336107f18685611b16565b610bc8565b506001949350505050565b6005546001600160a01b0316331461082b5760405162461bcd60e51b81526004016106e1906119c8565b6108376012600a611af1565b6108419082611aff565b60085550565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916106ad9185906107f1908690611b29565b6005546001600160a01b031633146108a75760405162461bcd60e51b81526004016106e1906119c8565b6108b05f6111c2565b565b6005546001600160a01b031633146108dc5760405162461bcd60e51b81526004016106e1906119c8565b600754600160b01b900460ff16156109365760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c656400000000000060448201526064016106e1565b6007805461ffff60a81b191661010160a81b17905543600a55565b60606004805461062090611990565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156109e15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106e1565b6109f033856107f18685611b16565b5060019392505050565b5f6106ad338484610ceb565b6005546001600160a01b03163314610a305760405162461bcd60e51b81526004016106e1906119c8565b6001600160a01b03165f908152601260205260409020805460ff19166001179055565b6005546001600160a01b03163314610a7d5760405162461bcd60e51b81526004016106e1906119c8565b60408051808201909152828152602001819052600e91909155600f55565b6005546001600160a01b03163314610ac55760405162461bcd60e51b81526004016106e1906119c8565b6001600160a01b03165f908152601260205260409020805460ff19169055565b6005546001600160a01b03163314610b0f5760405162461bcd60e51b81526004016106e1906119c8565b60408051808201909152828152602001819052601091909155601155565b6005546001600160a01b03163314610b575760405162461bcd60e51b81526004016106e1906119c8565b6001600160a01b038116610bbc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106e1565b610bc5816111c2565b50565b6001600160a01b038316610c2a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106e1565b6001600160a01b038216610c8b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106e1565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8111610d4c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106e1565b6001600160a01b0383165f9081526012602052604090205460ff16158015610d8c57506001600160a01b0382165f9081526012602052604090205460ff16155b15610de057600754600160b01b900460ff16610de05760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016106e1565b6007546001600160a01b038481169116148015610e1557506001600160a01b0382165f9081526012602052604090205460ff16155b8015610e2b5750600754600160a01b900460ff16155b15610eaa5760095481610e52846001600160a01b03165f9081526020819052604090205490565b610e5c9190611b29565b1115610eaa5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016106e1565b6007546001600160a01b03848116911614801590610ee057506001600160a01b0382165f9081526012602052604090205460ff16155b8015610f0457506001600160a01b0383165f9081526012602052604090205460ff16155b8015610f1a5750600754600160a01b900460ff16155b15610fae576007546001600160a01b03838116911614610fae5760095481610f56846001600160a01b03165f9081526020819052604090205490565b610f609190611b29565b1115610fae5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016106e1565b5f805f610fcc60405180604001604052805f81526020015f81525090565b6001600160a01b0387165f9081526012602052604081205460ff1615801561100c57506001600160a01b0387165f9081526012602052604090205460ff16155b80156110265750600b54600a546110239190611b29565b43105b600754909150600160a01b900460ff168061105857506001600160a01b0388165f9081526012602052604090205460ff165b8061107a57506001600160a01b0387165f9081526012602052604090205460ff165b15611087575f9250611123565b6007546001600160a01b0388811691161480156110a2575080155b156110db576010546011546110b79190611b29565b60408051808201909152601054815260115460208201529095508594509150611123565b8061111457600e54600f546110f09190611b29565b60408051808201909152600e548152600f5460208201529095508594509150611123565b801561112357600c5494508493505b606461112f8588611aff565b6111399190611b3c565b600754909350600160a81b900460ff16801561116357506007546001600160a01b03898116911614155b15611172576111728583611213565b6111868888611181868a611b16565b611349565b82156111b85784156111b8575f606461119f8789611aff565b6111a99190611b3c565b90506111b6893083611349565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b600754600160a01b900460ff16611345576007805460ff60a01b1916600160a01b179055811561133757305f908152602081905260409020546008548110611335576001600854111561126557506008545b5f611271846002611aff565b90505f818460200151846112859190611aff565b61128f9190611b3c565b90505f61129c8285611b16565b9050476112a88261151f565b5f6112b38247611b16565b90505f8760200151866112c69190611b16565b6112d09083611b3c565b90505f8860200151826112e39190611aff565b905080156112f5576112f5868261166f565b88515f90611304846002611aff565b61130e9190611aff565b9050801561132c57600d5461132c906001600160a01b03168261171e565b50505050505050505b505b6007805460ff60a01b191690555b5050565b6001600160a01b0383166113ad5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106e1565b6001600160a01b03821661140f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106e1565b6001600160a01b0383165f90815260208190526040902054818110156114865760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106e1565b6114908282611b16565b6001600160a01b038086165f9081526020819052604080822093909355908516815290812080548492906114c5908490611b29565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161151191815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061155257611552611b5b565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156115a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115cd9190611b6f565b816001815181106115e0576115e0611b5b565b6001600160a01b0392831660209182029290920101526006546116069130911684610bc8565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061163e9085905f90869030904290600401611b8a565b5f604051808303815f87803b158015611655575f80fd5b505af1158015611667573d5f803e3d5ffd5b505050505050565b6006546116879030906001600160a01b031684610bc8565b60065460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156116f2573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117179190611bfb565b5050505050565b8047101561176e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106e1565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146117b7576040519150601f19603f3d011682016040523d82523d5f602084013e6117bc565b606091505b50509050806118335760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106e1565b505050565b5f602080835283518060208501525f5b8181101561186457858101830151858201604001528201611848565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610bc5575f80fd5b5f80604083850312156118a9575f80fd5b82356118b481611884565b946020939093013593505050565b5f602082840312156118d2575f80fd5b81356118dd81611884565b9392505050565b5f602082840312156118f4575f80fd5b5035919050565b5f805f6060848603121561190d575f80fd5b833561191881611884565b9250602084013561192881611884565b929592945050506040919091013590565b5f806040838503121561194a575f80fd5b50508035926020909101359150565b5f806040838503121561196a575f80fd5b823561197581611884565b9150602083013561198581611884565b809150509250929050565b600181811c908216806119a457607f821691505b6020821081036119c257634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611a4b57815f1904821115611a3157611a316119fd565b80851615611a3e57918102915b93841c9390800290611a16565b509250929050565b5f82611a61575060016106b1565b81611a6d57505f6106b1565b8160018114611a835760028114611a8d57611aa9565b60019150506106b1565b60ff841115611a9e57611a9e6119fd565b50506001821b6106b1565b5060208310610133831016604e8410600b8410161715611acc575081810a6106b1565b611ad68383611a11565b805f1904821115611ae957611ae96119fd565b029392505050565b5f6118dd60ff841683611a53565b80820281158282048414176106b1576106b16119fd565b818103818111156106b1576106b16119fd565b808201808211156106b1576106b16119fd565b5f82611b5657634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611b7f575f80fd5b81516118dd81611884565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611bda5784516001600160a01b031683529383019391830191600101611bb5565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611c0d575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212200d645ed96df784ff4b1017fad31509e161fa51db52e21a493d5487f116f47b4464736f6c63430008180033

Deployed Bytecode Sourcemap

8023:9091:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1954:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9607:161;;;;;;;;;;-1:-1:-1;9607:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;9607:161:0;1023:187:1;16595:91:0;;;;;;;;;;-1:-1:-1;16595:91:0;;;;;:::i;:::-;;:::i;:::-;;8299:48;;;;;;;;;;;;;;;;;;;1613:25:1;;;1601:2;1586:18;8299:48:0;1467:177:1;2293:108:0;;;;;;;;;;-1:-1:-1;2381:12:0;;2293:108;;16928:126;;;;;;;;;;-1:-1:-1;16928:126:0;;;;;:::i;:::-;;:::i;9776:448::-;;;;;;;;;;-1:-1:-1;9776:448:0;;;;;:::i;:::-;;:::i;2186:93::-;;;;;;;;;;-1:-1:-1;2186:93:0;;2269:2;2437:36:1;;2425:2;2410:18;2186:93:0;2295:184:1;15918:157:0;;;;;;;;;;-1:-1:-1;15918:157:0;;;;;:::i;:::-;;:::i;8521:63::-;;;;;;;;;;-1:-1:-1;8521:63:0;;;;-1:-1:-1;;;;;8521:63:0;;;;;;-1:-1:-1;;;;;2648:32:1;;;2630:51;;2618:2;2603:18;8521:63:0;2484:203:1;10232:248:0;;;;;;;;;;-1:-1:-1;10232:248:0;;;;;:::i;:::-;;:::i;8256:34::-;;;;;;;;;;-1:-1:-1;8256:34:0;;;;-1:-1:-1;;;8256:34:0;;;;;;8354:46;;;;;;;;;;;;;;;;2415:127;;;;;;;;;;-1:-1:-1;2415:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2516:18:0;2489:7;2516:18;;;;;;;;;;;;2415:127;6686:94;;;;;;;;;;;;;:::i;8748:32::-;;;;;;;;;;-1:-1:-1;8748:32:0;;;;;;;;;;;;;2866:25:1;;;2922:2;2907:18;;2900:34;;;;2839:18;8748:32:0;2692:248:1;8588:79:0;;;;;;;;;;;;8625:42;8588:79;;16363:224;;;;;;;;;;;;;:::i;6463:87::-;;;;;;;;;;-1:-1:-1;6536:6:0;;-1:-1:-1;;;;;6536:6:0;6463:87;;2068:104;;;;;;;;;;;;;:::i;10488:410::-;;;;;;;;;;-1:-1:-1;10488:410:0;;;;;:::i;:::-;;:::i;8138:19::-;;;;;;;;;;-1:-1:-1;8138:19:0;;;;-1:-1:-1;;;;;8138:19:0;;;10906:165;;;;;;;;;;-1:-1:-1;10906:165:0;;;;;:::i;:::-;;:::i;16696:105::-;;;;;;;;;;-1:-1:-1;16696:105:0;;;;;:::i;:::-;;:::i;8832:41::-;;;;;;;;;;-1:-1:-1;8832:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16083:130;;;;;;;;;;-1:-1:-1;16083:130:0;;;;;:::i;:::-;;:::i;2786:201::-;;;;;;;;;;-1:-1:-1;2786:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;2952:18:0;;;2920:7;2952:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2786:201;16809:109;;;;;;;;;;-1:-1:-1;16809:109:0;;;;;:::i;:::-;;:::i;16221:135::-;;;;;;;;;;-1:-1:-1;16221:135:0;;;;;:::i;:::-;;:::i;6788:192::-;;;;;;;;;;-1:-1:-1;6788:192:0;;;;;:::i;:::-;;:::i;8787:36::-;;;;;;;;;;-1:-1:-1;8787:36:0;;;;;;;;;8110:21;;;;;;;;;;-1:-1:-1;8110:21:0;;;;-1:-1:-1;;;;;8110:21:0;;;1954:100;2008:13;2041:5;2034:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1954:100;:::o;9607:161::-;9682:4;9699:39;314:10;9722:7;9731:6;9699:8;:39::i;:::-;-1:-1:-1;9756:4:0;9607:161;;;;;:::o;16595:91::-;6536:6;;-1:-1:-1;;;;;6536:6:0;314:10;6598:23;6590:68;;;;-1:-1:-1;;;6590:68:0;;;;;;;:::i;:::-;;;;;;;;;16664:2:::1;:14:::0;;-1:-1:-1;;;;;;16664:14:0::1;-1:-1:-1::0;;;;;16664:14:0;;;::::1;::::0;;;::::1;::::0;;16595:91::o;16928:126::-;6536:6;;-1:-1:-1;;;;;6536:6:0;314:10;6598:23;6590:68;;;;-1:-1:-1;;;6590:68:0;;;;;;;:::i;:::-;17031:14:::1;2269:2:::0;17031::::1;:14;:::i;:::-;17019:26;::::0;:9;:26:::1;:::i;:::-;17002:14;:43:::0;-1:-1:-1;16928:126:0:o;9776:448::-;9908:4;9925:36;9935:6;9943:9;9954:6;9925:9;:36::i;:::-;-1:-1:-1;;;;;10001:19:0;;9974:24;10001:19;;;:11;:19;;;;;;;;314:10;10001:33;;;;;;;;10053:26;;;;10045:79;;;;-1:-1:-1;;;10045:79:0;;6444:2:1;10045:79:0;;;6426:21:1;6483:2;6463:18;;;6456:30;6522:34;6502:18;;;6495:62;-1:-1:-1;;;6573:18:1;;;6566:38;6621:19;;10045:79:0;6242:404:1;10045:79:0;10135:57;10144:6;314:10;10166:25;10185:6;10166:16;:25;:::i;:::-;10135:8;:57::i;:::-;-1:-1:-1;10212:4:0;;9776:448;-1:-1:-1;;;;9776:448:0:o;15918:157::-;6536:6;;-1:-1:-1;;;;;6536:6:0;314:10;6598:23;6590:68;;;;-1:-1:-1;;;6590:68:0;;;;;;;:::i;:::-;16053:14:::1;2269:2:::0;16053::::1;:14;:::i;:::-;16040:27;::::0;:10;:27:::1;:::i;:::-;16021:16;:46:::0;-1:-1:-1;15918:157:0:o;10232:248::-;314:10;10348:4;10402:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10402:34:0;;;;;;;;;;10348:4;;10370:80;;10393:7;;10402:47;;10439:10;;10402:47;:::i;6686:94::-;6536:6;;-1:-1:-1;;;;;6536:6:0;314:10;6598:23;6590:68;;;;-1:-1:-1;;;6590:68:0;;;;;;;:::i;:::-;6751:21:::1;6769:1;6751:9;:21::i;:::-;6686:94::o:0;16363:224::-;6536:6;;-1:-1:-1;;;;;6536:6:0;314:10;6598:23;6590:68;;;;-1:-1:-1;;;6590:68:0;;;;;;;:::i;:::-;16427:14:::1;::::0;-1:-1:-1;;;16427:14:0;::::1;;;16426:15;16418:54;;;::::0;-1:-1:-1;;;16418:54:0;;7116:2:1;16418:54:0::1;::::0;::::1;7098:21:1::0;7155:2;7135:18;;;7128:30;7194:28;7174:18;;;7167:56;7240:18;;16418:54:0::1;6914:350:1::0;16418:54:0::1;16483:14;:21:::0;;-1:-1:-1;;;;16515:25:0;-1:-1:-1;;;16515:25:0;;;16567:12:::1;16551:13;:28:::0;16363:224::o;2068:104::-;2124:13;2157:7;2150:14;;;;;:::i;10488:410::-;314:10;10609:4;10658:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10658:34:0;;;;;;;;;;10711:35;;;;10703:85;;;;-1:-1:-1;;;10703:85:0;;7471:2:1;10703:85:0;;;7453:21:1;7510:2;7490:18;;;7483:30;7549:34;7529:18;;;7522:62;-1:-1:-1;;;7600:18:1;;;7593:35;7645:19;;10703:85:0;7269:401:1;10703:85:0;10799:67;314:10;10822:7;10831:34;10850:15;10831:16;:34;:::i;10799:67::-;-1:-1:-1;10886:4:0;;10488:410;-1:-1:-1;;;10488:410:0:o;10906:165::-;10984:4;11001:40;11011:10;11023:9;11034:6;11001:9;:40::i;16696:105::-;6536:6;;-1:-1:-1;;;;;6536:6:0;314:10;6598:23;6590:68;;;;-1:-1:-1;;;6590:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16767:19:0::1;;::::0;;;:9:::1;:19;::::0;;;;:26;;-1:-1:-1;;16767:26:0::1;16789:4;16767:26;::::0;;16696:105::o;16083:130::-;6536:6;;-1:-1:-1;;;;;6536:6:0;314:10;6598:23;6590:68;;;;-1:-1:-1;;;6590:68:0;;;;;;;:::i;:::-;16189:16:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;16181:5:::1;:24:::0;;;;;;16083:130::o;16809:109::-;6536:6;;-1:-1:-1;;;;;6536:6:0;314:10;6598:23;6590:68;;;;-1:-1:-1;;;6590:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16883:19:0::1;16905:5;16883:19:::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;16883:27:0::1;::::0;;16809:109::o;16221:135::-;6536:6;;-1:-1:-1;;;;;6536:6:0;314:10;6598:23;6590:68;;;;-1:-1:-1;;;6590:68:0;;;;;;;:::i;:::-;16332:16:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;16320:9:::1;:28:::0;;;;;;16221:135::o;6788:192::-;6536:6;;-1:-1:-1;;;;;6536:6:0;314:10;6598:23;6590:68;;;;-1:-1:-1;;;6590:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6877:22:0;::::1;6869:73;;;::::0;-1:-1:-1;;;6869:73:0;;7877:2:1;6869:73:0::1;::::0;::::1;7859:21:1::0;7916:2;7896:18;;;7889:30;7955:34;7935:18;;;7928:62;-1:-1:-1;;;8006:18:1;;;7999:36;8052:19;;6869:73:0::1;7675:402:1::0;6869:73:0::1;6953:19;6963:8;6953:9;:19::i;:::-;6788:192:::0;:::o;5357:380::-;-1:-1:-1;;;;;5493:19:0;;5485:68;;;;-1:-1:-1;;;5485:68:0;;8284:2:1;5485:68:0;;;8266:21:1;8323:2;8303:18;;;8296:30;8362:34;8342:18;;;8335:62;-1:-1:-1;;;8413:18:1;;;8406:34;8457:19;;5485:68:0;8082:400:1;5485:68:0;-1:-1:-1;;;;;5572:21:0;;5564:68;;;;-1:-1:-1;;;5564:68:0;;8689:2:1;5564:68:0;;;8671:21:1;8728:2;8708:18;;;8701:30;8767:34;8747:18;;;8740:62;-1:-1:-1;;;8818:18:1;;;8811:32;8860:19;;5564:68:0;8487:398:1;5564:68:0;-1:-1:-1;;;;;5645:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5697:32;;1613:25:1;;;5697:32:0;;1586:18:1;5697:32:0;;;;;;;5357:380;;;:::o;11079:2438::-;11229:1;11220:6;:10;11212:64;;;;-1:-1:-1;;;11212:64:0;;9092:2:1;11212:64:0;;;9074:21:1;9131:2;9111:18;;;9104:30;9170:34;9150:18;;;9143:62;-1:-1:-1;;;9221:18:1;;;9214:39;9270:19;;11212:64:0;8890:405:1;11212:64:0;-1:-1:-1;;;;;11294:17:0;;;;;;:9;:17;;;;;;;;11293:18;:43;;;;-1:-1:-1;;;;;;11316:20:0;;;;;;:9;:20;;;;;;;;11315:21;11293:43;11289:122;;;11361:14;;-1:-1:-1;;;11361:14:0;;;;11353:46;;;;-1:-1:-1;;;11353:46:0;;9502:2:1;11353:46:0;;;9484:21:1;9541:2;9521:18;;;9514:30;-1:-1:-1;;;9560:18:1;;;9553:49;9619:18;;11353:46:0;9300:343:1;11353:46:0;11437:4;;-1:-1:-1;;;;;11427:14:0;;;11437:4;;11427:14;:39;;;;-1:-1:-1;;;;;;11446:20:0;;;;;;:9;:20;;;;;;;;11445:21;11427:39;:59;;;;-1:-1:-1;11471:15:0;;-1:-1:-1;;;11471:15:0;;;;11470:16;11427:59;11423:215;;;11544:14;;11534:6;11511:20;11521:9;-1:-1:-1;;;;;2516:18:0;2489:7;2516:18;;;;;;;;;;;;2415:127;11511:20;:29;;;;:::i;:::-;:47;;11503:123;;;;-1:-1:-1;;;11503:123:0;;9850:2:1;11503:123:0;;;9832:21:1;;;9869:18;;;9862:30;9928:34;9908:18;;;9901:62;9980:18;;11503:123:0;9648:356:1;11503:123:0;11664:4;;-1:-1:-1;;;;;11654:14:0;;;11664:4;;11654:14;;;;:39;;-1:-1:-1;;;;;;11673:20:0;;;;;;:9;:20;;;;;;;;11672:21;11654:39;:61;;;;-1:-1:-1;;;;;;11698:17:0;;;;;;:9;:17;;;;;;;;11697:18;11654:61;:81;;;;-1:-1:-1;11720:15:0;;-1:-1:-1;;;11720:15:0;;;;11719:16;11654:81;11650:315;;;11782:4;;-1:-1:-1;;;;;11769:17:0;;;11782:4;;11769:17;11765:189;;11848:14;;11838:6;11815:20;11825:9;-1:-1:-1;;;;;2516:18:0;2489:7;2516:18;;;;;;;;;;;;2415:127;11815:20;:29;;;;:::i;:::-;:47;;11807:131;;;;-1:-1:-1;;;11807:131:0;;9850:2:1;11807:131:0;;;9832:21:1;;;9869:18;;;9862:30;9928:34;9908:18;;;9901:62;9980:18;;11807:131:0;9648:356:1;11807:131:0;11977:15;12003:14;12028:11;12050:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;12050:25:0;-1:-1:-1;;;;;12109:17:0;;12088;12109;;;:9;:17;;;;;;;;12108:18;:56;;;;-1:-1:-1;;;;;;12144:20:0;;;;;;:9;:20;;;;;;;;12143:21;12108:56;:112;;;;;12212:8;;12196:13;;:24;;;;:::i;:::-;12181:12;:39;12108:112;12308:15;;12088:132;;-1:-1:-1;;;;12308:15:0;;;;;:36;;-1:-1:-1;;;;;;12327:17:0;;;;;;:9;:17;;;;;;;;12308:36;:60;;;-1:-1:-1;;;;;;12348:20:0;;;;;;:9;:20;;;;;;;;12308:60;12304:629;;;12389:1;12383:7;;12304:629;;;12454:4;;-1:-1:-1;;;;;12441:17:0;;;12454:4;;12441:17;:34;;;;;12463:12;12462:13;12441:34;12437:496;;;12551:9;:13;12519:12;;:45;;12551:13;12519:45;:::i;:::-;12611:24;;;;;;;;;12626:9;12611:24;;;;;;;;;12492:72;;-1:-1:-1;12492:72:0;;-1:-1:-1;12611:24:0;-1:-1:-1;12437:496:0;;;12658:12;12653:280;;12742:5;:9;12714:8;;:37;;12742:9;12714:37;:::i;:::-;12798:20;;;;;;;;;12813:5;12798:20;;;;;;;;;12687:64;;-1:-1:-1;12687:64:0;;-1:-1:-1;12798:20:0;-1:-1:-1;12653:280:0;;;12840:12;12836:97;;;12879:9;;;-1:-1:-1;12879:9:0;;-1:-1:-1;12836:97:0;12971:3;12952:15;12961:6;12952;:15;:::i;:::-;12951:23;;;;:::i;:::-;13088:18;;12945:29;;-1:-1:-1;;;;13088:18:0;;;;:36;;;;-1:-1:-1;13120:4:0;;-1:-1:-1;;;;;13110:14:0;;;13120:4;;13110:14;;13088:36;13084:76;;;13126:34;13138:7;13147:12;13126:11;:34::i;:::-;13202:48;13218:6;13226:9;13237:12;13246:3;13237:6;:12;:::i;:::-;13202:15;:48::i;:::-;13265:7;;13261:249;;13337:11;;13333:164;;13369:17;13410:3;13390:16;13399:7;13390:6;:16;:::i;:::-;13389:24;;;;:::i;:::-;13369:44;;13432:49;13448:6;13464:4;13471:9;13432:15;:49::i;:::-;13350:147;13333:164;11201:2316;;;;;11079:2438;;;:::o;6988:173::-;7063:6;;;-1:-1:-1;;;;;7080:17:0;;;-1:-1:-1;;;;;;7080:17:0;;;;;;;7113:40;;7063:6;;;7080:17;7063:6;;7113:40;;7044:16;;7113:40;7033:128;6988:173;:::o;13525:1343::-;8921:15;;-1:-1:-1;;;8921:15:0;;;;8916:125;;8953:15;:22;;-1:-1:-1;;;;8953:22:0;-1:-1:-1;;;8953:22:0;;;13611:49;;13642:7:::1;13611:49;13717:4;13673:23;2516:18:::0;;;;;;;;;;;13757:16:::1;::::0;13738:35;::::1;13734:1127;;13813:1;13794:16;;:20;13790:95;;;-1:-1:-1::0;13853:16:0::1;::::0;13790:95:::1;13956:19;13978:11;:7:::0;13988:1:::1;13978:11;:::i;:::-;13956:33;;14004:32;14091:11;14058:9;:12;;;14040:15;:30;;;;:::i;:::-;14039:63;;;;:::i;:::-;14004:98:::0;-1:-1:-1;14117:14:0::1;14134:42;14004:98:::0;14134:15;:42:::1;:::i;:::-;14117:59:::0;-1:-1:-1;14218:21:0::1;14256:24;14117:59:::0;14256:16:::1;:24::i;:::-;14297:20;14320:38;14344:14:::0;14320:21:::1;:38;:::i;:::-;14297:61;;14373:19;14425:9;:12;;;14411:11;:26;;;;:::i;:::-;14395:43;::::0;:12;:43:::1;:::i;:::-;14373:65;;14453:29;14499:9;:12;;;14485:11;:26;;;;:::i;:::-;14453:58:::0;-1:-1:-1;14532:25:0;;14528:161:::1;;14612:61;14625:24;14651:21;14612:12;:61::i;:::-;14740:13:::0;;14705:14:::1;::::0;14722:15:::1;:11:::0;14736:1:::1;14722:15;:::i;:::-;:31;;;;:::i;:::-;14705:48:::0;-1:-1:-1;14772:10:0;;14768:80:::1;;14811:2;::::0;14803:29:::1;::::0;-1:-1:-1;;;;;14811:2:0::1;14825:6:::0;14803:21:::1;:29::i;:::-;13775:1086;;;;;;;;13734:1127;13605:1263;8990:1;9006:15:::0;:23;;-1:-1:-1;;;;9006:23:0;;;8916:125;13525:1343;;:::o;4338:638::-;-1:-1:-1;;;;;4478:20:0;;4470:70;;;;-1:-1:-1;;;4470:70:0;;10433:2:1;4470:70:0;;;10415:21:1;10472:2;10452:18;;;10445:30;10511:34;10491:18;;;10484:62;-1:-1:-1;;;10562:18:1;;;10555:35;10607:19;;4470:70:0;10231:401:1;4470:70:0;-1:-1:-1;;;;;4559:23:0;;4551:71;;;;-1:-1:-1;;;4551:71:0;;10839:2:1;4551:71:0;;;10821:21:1;10878:2;10858:18;;;10851:30;10917:34;10897:18;;;10890:62;-1:-1:-1;;;10968:18:1;;;10961:33;11011:19;;4551:71:0;10637:399:1;4551:71:0;-1:-1:-1;;;;;4719:17:0;;4695:21;4719:17;;;;;;;;;;;4755:23;;;;4747:74;;;;-1:-1:-1;;;4747:74:0;;11243:2:1;4747:74:0;;;11225:21:1;11282:2;11262:18;;;11255:30;11321:34;11301:18;;;11294:62;-1:-1:-1;;;11372:18:1;;;11365:36;11418:19;;4747:74:0;11041:402:1;4747:74:0;4852:22;4868:6;4852:13;:22;:::i;:::-;-1:-1:-1;;;;;4832:17:0;;;:9;:17;;;;;;;;;;;:42;;;;4885:20;;;;;;;;:30;;4909:6;;4832:9;4885:30;;4909:6;;4885:30;:::i;:::-;;;;;;;;4950:9;-1:-1:-1;;;;;4933:35:0;4942:6;-1:-1:-1;;;;;4933:35:0;;4961:6;4933:35;;;;1613:25:1;;1601:2;1586:18;;1467:177;4933:35:0;;;;;;;;4459:517;4338:638;;;:::o;14876:526::-;15018:16;;;15032:1;15018:16;;;;;;;;14994:21;;15018:16;;;;;;;;;;-1:-1:-1;15018:16:0;14994:40;;15063:4;15045;15050:1;15045:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15045:23:0;;;:7;;;;;;;;;;:23;;;;15089:6;;:13;;;-1:-1:-1;;;15089:13:0;;;;:6;;;;;:11;;:13;;;;;15045:7;;15089:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15079:4;15084:1;15079:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15079:23:0;;;:7;;;;;;;;;:23;15147:6;;15115:53;;15132:4;;15147:6;15156:11;15115:8;:53::i;:::-;15207:6;;:187;;-1:-1:-1;;;15207:187:0;;-1:-1:-1;;;;;15207:6:0;;;;:57;;:187;;15279:11;;15207:6;;15321:4;;15348;;15368:15;;15207:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14931:471;14876:526;:::o;15410:500::-;15590:6;;15558:53;;15575:4;;-1:-1:-1;;;;;15590:6:0;15599:11;15558:8;:53::i;:::-;15654:6;;:248;;-1:-1:-1;;;15654:248:0;;15719:4;15654:248;;;13294:34:1;13344:18;;;13337:34;;;15654:6:0;13387:18:1;;;13380:34;;;13430:18;;;13423:34;8625:42:0;13473:19:1;;;13466:44;15876:15:0;13526:19:1;;;13519:35;-1:-1:-1;;;;;15654:6:0;;;;:22;;15685:9;;13228:19:1;;15654:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15410:500;;:::o;5906:319::-;6021:6;5996:21;:31;;5988:73;;;;-1:-1:-1;;;5988:73:0;;14078:2:1;5988:73:0;;;14060:21:1;14117:2;14097:18;;;14090:30;14156:31;14136:18;;;14129:59;14205:18;;5988:73:0;13876:353:1;5988:73:0;6075:12;6093:9;-1:-1:-1;;;;;6093:14:0;6116:6;6093:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6074:54;;;6147:7;6139:78;;;;-1:-1:-1;;;6139:78:0;;14646:2:1;6139:78:0;;;14628:21:1;14685:2;14665:18;;;14658:30;14724:34;14704:18;;;14697:62;14795:28;14775:18;;;14768:56;14841:19;;6139:78:0;14444:422:1;6139:78:0;5977:248;5906:319;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;:::-;1451:5;1215:247;-1:-1:-1;;;1215:247:1:o;1649:180::-;1708:6;1761:2;1749:9;1740:7;1736:23;1732:32;1729:52;;;1777:1;1774;1767:12;1729:52;-1:-1:-1;1800:23:1;;1649:180;-1:-1:-1;1649:180:1:o;1834:456::-;1911:6;1919;1927;1980:2;1968:9;1959:7;1955:23;1951:32;1948:52;;;1996:1;1993;1986:12;1948:52;2035:9;2022:23;2054:31;2079:5;2054:31;:::i;:::-;2104:5;-1:-1:-1;2161:2:1;2146:18;;2133:32;2174:33;2133:32;2174:33;:::i;:::-;1834:456;;2226:7;;-1:-1:-1;;;2280:2:1;2265:18;;;;2252:32;;1834:456::o;2945:248::-;3013:6;3021;3074:2;3062:9;3053:7;3049:23;3045:32;3042:52;;;3090:1;3087;3080:12;3042:52;-1:-1:-1;;3113:23:1;;;3183:2;3168:18;;;3155:32;;-1:-1:-1;2945:248:1:o;3198:388::-;3266:6;3274;3327:2;3315:9;3306:7;3302:23;3298:32;3295:52;;;3343:1;3340;3333:12;3295:52;3382:9;3369:23;3401:31;3426:5;3401:31;:::i;:::-;3451:5;-1:-1:-1;3508:2:1;3493:18;;3480:32;3521:33;3480:32;3521:33;:::i;:::-;3573:7;3563:17;;;3198:388;;;;;:::o;3814:380::-;3893:1;3889:12;;;;3936;;;3957:61;;4011:4;4003:6;3999:17;3989:27;;3957:61;4064:2;4056:6;4053:14;4033:18;4030:38;4027:161;;4110:10;4105:3;4101:20;4098:1;4091:31;4145:4;4142:1;4135:15;4173:4;4170:1;4163:15;4027:161;;3814:380;;;:::o;4199:356::-;4401:2;4383:21;;;4420:18;;;4413:30;4479:34;4474:2;4459:18;;4452:62;4546:2;4531:18;;4199:356::o;4560:127::-;4621:10;4616:3;4612:20;4609:1;4602:31;4652:4;4649:1;4642:15;4676:4;4673:1;4666:15;4692:416;4781:1;4818:5;4781:1;4832:270;4853:7;4843:8;4840:21;4832:270;;;4912:4;4908:1;4904:6;4900:17;4894:4;4891:27;4888:53;;;4921:18;;:::i;:::-;4971:7;4961:8;4957:22;4954:55;;;4991:16;;;;4954:55;5070:22;;;;5030:15;;;;4832:270;;;4836:3;4692:416;;;;;:::o;5113:806::-;5162:5;5192:8;5182:80;;-1:-1:-1;5233:1:1;5247:5;;5182:80;5281:4;5271:76;;-1:-1:-1;5318:1:1;5332:5;;5271:76;5363:4;5381:1;5376:59;;;;5449:1;5444:130;;;;5356:218;;5376:59;5406:1;5397:10;;5420:5;;;5444:130;5481:3;5471:8;5468:17;5465:43;;;5488:18;;:::i;:::-;-1:-1:-1;;5544:1:1;5530:16;;5559:5;;5356:218;;5658:2;5648:8;5645:16;5639:3;5633:4;5630:13;5626:36;5620:2;5610:8;5607:16;5602:2;5596:4;5593:12;5589:35;5586:77;5583:159;;;-1:-1:-1;5695:19:1;;;5727:5;;5583:159;5774:34;5799:8;5793:4;5774:34;:::i;:::-;5844:6;5840:1;5836:6;5832:19;5823:7;5820:32;5817:58;;;5855:18;;:::i;:::-;5893:20;;5113:806;-1:-1:-1;;;5113:806:1:o;5924:140::-;5982:5;6011:47;6052:4;6042:8;6038:19;6032:4;6011:47;:::i;6069:168::-;6142:9;;;6173;;6190:15;;;6184:22;;6170:37;6160:71;;6211:18;;:::i;6651:128::-;6718:9;;;6739:11;;;6736:37;;;6753:18;;:::i;6784:125::-;6849:9;;;6870:10;;;6867:36;;;6883:18;;:::i;10009:217::-;10049:1;10075;10065:132;;10119:10;10114:3;10110:20;10107:1;10100:31;10154:4;10151:1;10144:15;10182:4;10179:1;10172:15;10065:132;-1:-1:-1;10211:9:1;;10009:217::o;11580:127::-;11641:10;11636:3;11632:20;11629:1;11622:31;11672:4;11669:1;11662:15;11696:4;11693:1;11686:15;11712:251;11782:6;11835:2;11823:9;11814:7;11810:23;11806:32;11803:52;;;11851:1;11848;11841:12;11803:52;11883:9;11877:16;11902:31;11927:5;11902:31;:::i;11968:980::-;12230:4;12278:3;12267:9;12263:19;12309:6;12298:9;12291:25;12335:2;12373:6;12368:2;12357:9;12353:18;12346:34;12416:3;12411:2;12400:9;12396:18;12389:31;12440:6;12475;12469:13;12506:6;12498;12491:22;12544:3;12533:9;12529:19;12522:26;;12583:2;12575:6;12571:15;12557:29;;12604:1;12614:195;12628:6;12625:1;12622:13;12614:195;;;12693:13;;-1:-1:-1;;;;;12689:39:1;12677:52;;12784:15;;;;12749:12;;;;12725:1;12643:9;12614:195;;;-1:-1:-1;;;;;;;12865:32:1;;;;12860:2;12845:18;;12838:60;-1:-1:-1;;;12929:3:1;12914:19;12907:35;12826:3;11968:980;-1:-1:-1;;;11968:980:1:o;13565:306::-;13653:6;13661;13669;13722:2;13710:9;13701:7;13697:23;13693:32;13690:52;;;13738:1;13735;13728:12;13690:52;13767:9;13761:16;13751:26;;13817:2;13806:9;13802:18;13796:25;13786:35;;13861:2;13850:9;13846:18;13840:25;13830:35;;13565:306;;;;;:::o

Swarm Source

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