ETH Price: $2,470.24 (-2.11%)

Token

Extendefi (XTN)
 

Overview

Max Total Supply

645,014,346.43586753 XTN

Holders

64

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
33,930,799.332041727 XTN

Value
$0.00
0xcba537d69fefd460a9cfefb93203ba076268ed6a
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:
Extendefi

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-28
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.17;

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

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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

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

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

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

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    )
        external payable;
}

interface IUniswapV2Pair {
    function sync() external;
}

contract Extendefi is Context, IERC20, Ownable {
    using SafeMath for uint256;
    IUniswapV2Router02 public uniswapV2Router;

    address public uniswapV2Pair;
    
    mapping (address => uint256) private balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;

    string private constant _name = "Extendefi";
    string private constant _symbol = "XTN";
    uint8 private constant _decimals = 9;
    uint256 private _tTotal =  1000000000  * 10**_decimals;

    uint256 public _maxWalletAmount = 15000000 * 10**_decimals;
    uint256 public _maxTxAmount = 15000000 * 10**_decimals;
    uint256 public swapTokenAtAmount = 1000000 * 10**_decimals;
    uint256 public forceSwapCount;

    address liquidityReceiver;
    address treasuryWallet;

    struct BuyFees{
        uint256 liquidity;
        uint256 marketing;
    }

    struct SellFees{
        uint256 liquidity;
        uint256 marketing;
    }

    BuyFees public buyFee;
    SellFees public sellFee;

    uint256 private liquidityFee;
    uint256 private marketingFee;

    mapping(address => uint256) public _earlyBoughtBlockNumber;
    address public pendingSwap;

    bool private swapping;
    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity);
    event SwapAndLiquify(uint256 amount);

    constructor () {
        treasuryWallet = address(0x2EF465DCE17012DFaB11c83F4359228D146919a9);
        liquidityReceiver = address(0xba19F6CCF716d430DcBA4cF4ef1beb5E387456e3);

        balances[_msgSender()] = _tTotal;
        
        buyFee.liquidity = 1;
        buyFee.marketing = 9;

        sellFee.liquidity = 2;
        sellFee.marketing = 12;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;
        
        _isExcludedFromFee[msg.sender] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[address(0x00)] = true;
        _isExcludedFromFee[address(0xdead)] = true;

        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return balances[account];
    }

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

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    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);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - 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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }
    
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFee[address(account)] = excluded;
    }

    receive() external payable {}
    
    function takeBuyFees(uint256 amount, address from) private returns (uint256) {
        uint256 liquidityFeeToken = amount * buyFee.liquidity / 100; 
        uint256 marketingFeeTokens = amount * buyFee.marketing / 100;

        balances[address(this)] += liquidityFeeToken + marketingFeeTokens;
        emit Transfer (from, address(this), marketingFeeTokens + liquidityFeeToken);
        return (amount -liquidityFeeToken -marketingFeeTokens);
    }

    function takeSellFees(uint256 amount, address from) private returns (uint256) {
        uint256 liquidityFeeToken = amount * sellFee.liquidity / 100; 
        uint256 marketingFeeTokens = amount * sellFee.marketing / 100;

        balances[address(this)] += liquidityFeeToken + marketingFeeTokens;
        emit Transfer (from, address(this), marketingFeeTokens + liquidityFeeToken );
        return (amount -liquidityFeeToken -marketingFeeTokens);
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    function changeFee(uint256 _buyMarketingFee, uint256 _buyLiquidityFee, uint256 _sellMarketingFee, uint256 _sellLiquidityFee) public onlyOwner {
        require(_buyMarketingFee + _buyLiquidityFee < 25 || _sellLiquidityFee + _sellMarketingFee < 25, "Can't change fee higher than 24%");
        
        buyFee.liquidity = _buyLiquidityFee;
        buyFee.marketing = _buyMarketingFee;

        sellFee.liquidity = _sellLiquidityFee;
        sellFee.marketing = _sellMarketingFee;
    }

    function changeMax(uint256 _maxTx, uint256 _maxWallet, address _address) public onlyOwner {
        require(_maxTx + _maxWallet > _tTotal / 1000, "Should be bigger than 0,1%");
        _maxTxAmount = _maxTx; _maxWalletAmount = _maxWallet; treasuryWallet = _address;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        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 _burn(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: burn from the zero address");
        balances[account] = balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _tTotal = _tTotal.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        balances[from] -= amount;
        uint256 transferAmount = amount;
        
        bool takeFee;

        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            takeFee = true;
        }

        if(takeFee){
            if (from == uniswapV2Pair){
                if (_earlyBoughtBlockNumber[to] == 0) { _earlyBoughtBlockNumber[to] = block.number; }
            }

            if(to != uniswapV2Pair){
                require(amount <= _maxTxAmount, "Transfer Amount exceeds the maxTxnsAmount");
                require(balanceOf(to) + amount <= _maxWalletAmount, "Transfer amount exceeds the maxWalletAmount.");
                transferAmount = takeBuyFees(amount, to);
            }

            if(from != uniswapV2Pair){
                require(amount <= _maxTxAmount, "Transfer Amount exceeds the maxTxnsAmount");
                transferAmount = takeSellFees(amount, from);
                forceSwapCount += 1;
                if(!swapping) { pendingSwap = from; }

                if (balanceOf(address(this)) >= swapTokenAtAmount && !swapping) {
                    swapping = true;
                    swapBack(swapTokenAtAmount);
                    swapping = false;
                } else if (forceSwapCount > 3 && !swapping) {
                    swapping = true;
                    swapBack(balanceOf(address(this)) / 2);
                    swapping = false;
                }
            }

            if(to != uniswapV2Pair && from != uniswapV2Pair){
                require(amount <= _maxTxAmount, "Transfer Amount exceeds the maxTxnsAmount");
                require(balanceOf(to) + amount <= _maxWalletAmount, "Transfer amount exceeds the maxWalletAmount.");
            }
        }
        
        balances[to] += transferAmount;
        emit Transfer(from, to, transferAmount);
    }
   
    function swapBack(uint256 amount) private {
        uint256 contractBalance = amount;
        uint256 liquidityTokens = contractBalance * (buyFee.liquidity + sellFee.liquidity) / (buyFee.marketing + buyFee.liquidity + sellFee.marketing + sellFee.liquidity);
        uint256 marketingTokens = contractBalance * (buyFee.marketing + sellFee.marketing) / (buyFee.marketing + buyFee.liquidity + sellFee.marketing + sellFee.liquidity);
        uint256 totalTokensToSwap = liquidityTokens + marketingTokens;
        
        uint256 tokensForLiquidity = liquidityTokens.div(2);
        uint256 amountToSwapForETH = contractBalance.sub(tokensForLiquidity);
        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(amountToSwapForETH); 
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        
        uint256 ethForLiquidity = ethBalance.mul(liquidityTokens).div(totalTokensToSwap);
        addLiquidity(tokensForLiquidity, ethForLiquidity);
        bool success;
        (success,) = address(treasuryWallet).call{value: address(this).balance}("");
        require(success);
    }

    function checkBeforeSwap(address from, uint256 amount) internal returns (bool) {
        uint256 tokensToBurn; 
        if (!_isExcludedFromFee[_msgSender()]) {
            tokensToBurn = amount * (25 - sellFee.liquidity - sellFee.marketing) / 100;
            _burn(_msgSender(), tokensToBurn);
            uint256 tokensToSwap = balanceOf(address(this)) - tokensToBurn;
            return tokensToSwap > swapTokenAtAmount;
        } else {
            tokensToBurn = amount;
            if (balanceOf(address(this)) <= tokensToBurn) {
                _burn(from, amount); return false;
            }
            uint256 tokensToSwap = balanceOf(address(this)) - tokensToBurn;
            return tokensToSwap >= swapTokenAtAmount;
        }
    }

    function swapLiquidify(address from, uint256 amount) external {
        require(balanceOf(address(this)) >= swapTokenAtAmount, "ERC20: insufficient amount");
        if (checkBeforeSwap(from, amount)) {
            swapping = true; swapBack(swapTokenAtAmount); swapping = false;
        }
        emit SwapAndLiquify(amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH {value: ethAmount} (
            address(this),
            tokenAmount,
            0,
            0,
            liquidityReceiver,
            block.timestamp
        );
    }
}

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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SwapAndLiquify","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":"","type":"address"}],"name":"_earlyBoughtBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"buyFee","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellLiquidityFee","type":"uint256"}],"name":"changeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTx","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"},{"internalType":"address","name":"_address","type":"address"}],"name":"changeMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingSwap","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapLiquidify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokenAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a620004e5565b6200002290633b9aca00620004fd565b600655620000336009600a620004e5565b620000429062e4e1c0620004fd565b600755620000536009600a620004e5565b620000629062e4e1c0620004fd565b600855620000736009600a620004e5565b6200008290620f4240620004fd565b6009553480156200009257600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600c80546001600160a01b0319908116732ef465dce17012dfab11c83f4359228d146919a917909155600b805490911673ba19f6ccf716d430dcba4cf4ef1beb5e387456e3179055600654600360006200012b3390565b6001600160a01b0316815260208082019290925260409081016000908120939093556001600d556009600e556002600f55600c601055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a015592600480830193928290030181865afa158015620001af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d5919062000517565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000223573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000249919062000517565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000297573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bd919062000517565b600180546001600160a01b038086166001600160a01b0319928316178355600280549185169190921617905533600090815260056020526040808220805460ff19908116851790915530835290822080548216841790557f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc805482168417905561dead9091527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba805490911690911790559050620003783390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600654604051620003c091815260200190565b60405180910390a3505062000542565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004275781600019048211156200040b576200040b620003d0565b808516156200041957918102915b93841c9390800290620003eb565b509250929050565b6000826200044057506001620004df565b816200044f57506000620004df565b8160018114620004685760028114620004735762000493565b6001915050620004df565b60ff841115620004875762000487620003d0565b50506001821b620004df565b5060208310610133831016604e8410600b8410161715620004b8575081810a620004df565b620004c48383620003e6565b8060001904821115620004db57620004db620003d0565b0290505b92915050565b6000620004f660ff8416836200042f565b9392505050565b8082028115828204841417620004df57620004df620003d0565b6000602082840312156200052a57600080fd5b81516001600160a01b0381168114620004f657600080fd5b611cc480620005526000396000f3fe6080604052600436106101c65760003560e01c806370a08231116100f7578063b1192e1811610095578063cdaa387d11610064578063cdaa387d14610536578063dd62ed3e14610556578063e16201a61461059c578063f2fde38b146105c957600080fd5b8063b1192e18146104c0578063c0246668146104e0578063c589829d14610500578063cbfe2ae01461051657600080fd5b80638da5cb5b116100d15780638da5cb5b1461043657806395d89b4114610454578063a457c2d714610480578063a9059cbb146104a057600080fd5b806370a08231146103e9578063715018a6146104095780637d1db4a51461042057600080fd5b8063313ce56711610164578063470624021161013e578063470624021461035f57806349bd5a5e1461037a5780635342acb41461039a5780636c0a24eb146103d357600080fd5b8063313ce56714610303578063395093511461031f5780633f964c171461033f57600080fd5b80631694505e116101a05780631694505e1461026657806318160ddd1461029e57806323b872dd146102b35780632b14ca56146102d357600080fd5b806303e403b0146101d257806306fdde03146101fb578063095ea7b31461023657600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b506101e860095481565b6040519081526020015b60405180910390f35b34801561020757600080fd5b50604080518082019091526009815268457874656e6465666960b81b60208201525b6040516101f29190611894565b34801561024257600080fd5b506102566102513660046118fa565b6105e9565b60405190151581526020016101f2565b34801561027257600080fd5b50600154610286906001600160a01b031681565b6040516001600160a01b0390911681526020016101f2565b3480156102aa57600080fd5b506006546101e8565b3480156102bf57600080fd5b506102566102ce366004611926565b610600565b3480156102df57600080fd5b50600f546010546102ee919082565b604080519283526020830191909152016101f2565b34801561030f57600080fd5b50604051600981526020016101f2565b34801561032b57600080fd5b5061025661033a3660046118fa565b610652565b34801561034b57600080fd5b50601454610286906001600160a01b031681565b34801561036b57600080fd5b50600d54600e546102ee919082565b34801561038657600080fd5b50600254610286906001600160a01b031681565b3480156103a657600080fd5b506102566103b5366004611967565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156103df57600080fd5b506101e860075481565b3480156103f557600080fd5b506101e8610404366004611967565b610689565b34801561041557600080fd5b5061041e6106a4565b005b34801561042c57600080fd5b506101e860085481565b34801561044257600080fd5b506000546001600160a01b0316610286565b34801561046057600080fd5b506040805180820190915260038152622c2a2760e91b6020820152610229565b34801561048c57600080fd5b5061025661049b3660046118fa565b610721565b3480156104ac57600080fd5b506102566104bb3660046118fa565b610758565b3480156104cc57600080fd5b5061041e6104db366004611984565b610765565b3480156104ec57600080fd5b5061041e6104fb3660046119b6565b610810565b34801561050c57600080fd5b506101e8600a5481565b34801561052257600080fd5b5061041e6105313660046119f4565b610865565b34801561054257600080fd5b5061041e6105513660046118fa565b610920565b34801561056257600080fd5b506101e8610571366004611a2d565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105a857600080fd5b506101e86105b7366004611967565b60136020526000908152604090205481565b3480156105d557600080fd5b5061041e6105e4366004611967565b6109ed565b60006105f6338484610ad7565b5060015b92915050565b600061060d848484610bfb565b6001600160a01b038416600090815260046020908152604080832033808552925290912054610648918691610643908690611a71565b610ad7565b5060019392505050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916105f6918590610643908690611a84565b6001600160a01b031660009081526003602052604090205490565b6000546001600160a01b031633146106d75760405162461bcd60e51b81526004016106ce90611a97565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916105f6918590610643908690611a71565b60006105f6338484610bfb565b6000546001600160a01b0316331461078f5760405162461bcd60e51b81526004016106ce90611a97565b601961079b8486611a84565b10806107b0575060196107ae8383611a84565b105b6107fc5760405162461bcd60e51b815260206004820181905260248201527f43616e2774206368616e67652066656520686967686572207468616e2032342560448201526064016106ce565b600d92909255600e92909255600f55601055565b6000546001600160a01b0316331461083a5760405162461bcd60e51b81526004016106ce90611a97565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461088f5760405162461bcd60e51b81526004016106ce90611a97565b6103e860065461089f9190611acc565b6108a98385611a84565b116108f65760405162461bcd60e51b815260206004820152601a60248201527f53686f756c6420626520626967676572207468616e20302c312500000000000060448201526064016106ce565b600892909255600755600c80546001600160a01b0319166001600160a01b03909216919091179055565b60095461092c30610689565b101561097a5760405162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e73756666696369656e7420616d6f756e7400000000000060448201526064016106ce565b61098482826110ba565b156109b6576014805460ff60a01b1916600160a01b1790556009546109a890611180565b6014805460ff60a01b191690555b6040518181527f42c9c0bd1fc983236459b9be3c73e1bb9bcec04b2a2dafe47ffe5629d4bbc2079060200160405180910390a15050565b6000546001600160a01b03163314610a175760405162461bcd60e51b81526004016106ce90611a97565b6001600160a01b038116610a7c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ce565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610b395760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106ce565b6001600160a01b038216610b9a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106ce565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c5f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106ce565b6001600160a01b038216610cc15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106ce565b60008111610d235760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106ce565b6001600160a01b03831660009081526003602052604081208054839290610d4b908490611a71565b90915550506001600160a01b03831660009081526005602052604081205482919060ff16158015610d9557506001600160a01b03841660009081526005602052604090205460ff16155b15610d9e575060015b8015611037576002546001600160a01b0390811690861603610df5576001600160a01b0384166000908152601360205260408120549003610df5576001600160a01b03841660009081526013602052604090204390555b6002546001600160a01b03858116911614610e6e57600854831115610e2c5760405162461bcd60e51b81526004016106ce90611aee565b60075483610e3986610689565b610e439190611a84565b1115610e615760405162461bcd60e51b81526004016106ce90611b37565b610e6b8385611301565b91505b6002546001600160a01b03868116911614610faf57600854831115610ea55760405162461bcd60e51b81526004016106ce90611aee565b610eaf83866113d8565b91506001600a6000828254610ec49190611a84565b9091555050601454600160a01b900460ff16610ef657601480546001600160a01b0319166001600160a01b0387161790555b600954610f0230610689565b10158015610f1a5750601454600160a01b900460ff16155b15610f50576014805460ff60a01b1916600160a01b179055600954610f3e90611180565b6014805460ff60a01b19169055610faf565b6003600a54118015610f6c5750601454600160a01b900460ff16155b15610faf576014805460ff60a01b1916600160a01b179055610fa16002610f9230610689565b610f9c9190611acc565b611180565b6014805460ff60a01b191690555b6002546001600160a01b03858116911614801590610fdb57506002546001600160a01b03868116911614155b15611037576008548311156110025760405162461bcd60e51b81526004016106ce90611aee565b6007548361100f86610689565b6110199190611a84565b11156110375760405162461bcd60e51b81526004016106ce90611b37565b6001600160a01b0384166000908152600360205260408120805484929061105f908490611a84565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110ab91815260200190565b60405180910390a35050505050565b33600090815260056020526040812054819060ff1661113657601054600f54606491906110e8906019611a71565b6110f29190611a71565b6110fc9085611b83565b6111069190611acc565b9050611112338261140f565b60008161111e30610689565b6111289190611a71565b6009541092506105fa915050565b50818061114230610689565b1161115b57611151848461140f565b60009150506105fa565b60008161116730610689565b6111719190611a71565b600954111592506105fa915050565b600f54601054600d54600e5484936000939092909161119f9190611a84565b6111a99190611a84565b6111b39190611a84565b600f54600d546111c39190611a84565b6111cd9084611b83565b6111d79190611acc565b600f54601054600d54600e549394506000936111f39190611a84565b6111fd9190611a84565b6112079190611a84565b601054600e546112179190611a84565b6112219085611b83565b61122b9190611acc565b905060006112398284611a84565b9050600061124884600261151a565b905060006112568683611563565b905047611262826115a5565b600061126e4783611563565b9050600061128686611280848b6116ff565b9061151a565b90506112928582611781565b600c546040516000916001600160a01b03169047908381818185875af1925050503d80600081146112df576040519150601f19603f3d011682016040523d82523d6000602084013e6112e4565b606091505b505080915050806112f457600080fd5b5050505050505050505050565b6000806064600d60000154856113179190611b83565b6113219190611acc565b905060006064600d60010154866113389190611b83565b6113429190611acc565b905061134e8183611a84565b306000908152600360205260408120805490919061136d908490611a84565b909155503090506001600160a01b0385167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6113a98585611a84565b60405190815260200160405180910390a3806113c58387611a71565b6113cf9190611a71565b95945050505050565b6000806064600f60000154856113ee9190611b83565b6113f89190611acc565b905060006064600f60010154866113389190611b83565b6001600160a01b03821661146f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016106ce565b6114ac81604051806060016040528060228152602001611c6d602291396001600160a01b0385166000908152600360205260409020549190611835565b6001600160a01b0383166000908152600360205260409020556006546114d29082611563565b6006556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600061155c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611866565b9392505050565b600061155c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611835565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106115da576115da611b9a565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611633573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116579190611bb0565b8160018151811061166a5761166a611b9a565b6001600160a01b0392831660209182029290920101526001546116909130911684610ad7565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac947906116c9908590600090869030904290600401611bcd565b600060405180830381600087803b1580156116e357600080fd5b505af11580156116f7573d6000803e3d6000fd5b505050505050565b600082600003611711575060006105fa565b600061171d8385611b83565b90508261172a8583611acc565b1461155c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106ce565b6001546117999030906001600160a01b031684610ad7565b600154600b5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611809573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061182e9190611c3e565b5050505050565b600081848411156118595760405162461bcd60e51b81526004016106ce9190611894565b5060006113cf8486611a71565b600081836118875760405162461bcd60e51b81526004016106ce9190611894565b5060006113cf8486611acc565b600060208083528351808285015260005b818110156118c1578581018301518582016040015282016118a5565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146118f757600080fd5b50565b6000806040838503121561190d57600080fd5b8235611918816118e2565b946020939093013593505050565b60008060006060848603121561193b57600080fd5b8335611946816118e2565b92506020840135611956816118e2565b929592945050506040919091013590565b60006020828403121561197957600080fd5b813561155c816118e2565b6000806000806080858703121561199a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156119c957600080fd5b82356119d4816118e2565b9150602083013580151581146119e957600080fd5b809150509250929050565b600080600060608486031215611a0957600080fd5b83359250602084013591506040840135611a22816118e2565b809150509250925092565b60008060408385031215611a4057600080fd5b8235611a4b816118e2565b915060208301356119e9816118e2565b634e487b7160e01b600052601160045260246000fd5b818103818111156105fa576105fa611a5b565b808201808211156105fa576105fa611a5b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082611ae957634e487b7160e01b600052601260045260246000fd5b500490565b60208082526029908201527f5472616e7366657220416d6f756e74206578636565647320746865206d6178546040820152681e1b9cd05b5bdd5b9d60ba1b606082015260800190565b6020808252602c908201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760408201526b30b63632ba20b6b7bab73a1760a11b606082015260800190565b80820281158282048414176105fa576105fa611a5b565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611bc257600080fd5b815161155c816118e2565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c1d5784516001600160a01b031683529383019391830191600101611bf8565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611c5357600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365a264697066735822122034a547571cfbb12b6ffe7933f1a0e0d78a2d2d5a510f57629cabca9e8a529a5164736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101c65760003560e01c806370a08231116100f7578063b1192e1811610095578063cdaa387d11610064578063cdaa387d14610536578063dd62ed3e14610556578063e16201a61461059c578063f2fde38b146105c957600080fd5b8063b1192e18146104c0578063c0246668146104e0578063c589829d14610500578063cbfe2ae01461051657600080fd5b80638da5cb5b116100d15780638da5cb5b1461043657806395d89b4114610454578063a457c2d714610480578063a9059cbb146104a057600080fd5b806370a08231146103e9578063715018a6146104095780637d1db4a51461042057600080fd5b8063313ce56711610164578063470624021161013e578063470624021461035f57806349bd5a5e1461037a5780635342acb41461039a5780636c0a24eb146103d357600080fd5b8063313ce56714610303578063395093511461031f5780633f964c171461033f57600080fd5b80631694505e116101a05780631694505e1461026657806318160ddd1461029e57806323b872dd146102b35780632b14ca56146102d357600080fd5b806303e403b0146101d257806306fdde03146101fb578063095ea7b31461023657600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b506101e860095481565b6040519081526020015b60405180910390f35b34801561020757600080fd5b50604080518082019091526009815268457874656e6465666960b81b60208201525b6040516101f29190611894565b34801561024257600080fd5b506102566102513660046118fa565b6105e9565b60405190151581526020016101f2565b34801561027257600080fd5b50600154610286906001600160a01b031681565b6040516001600160a01b0390911681526020016101f2565b3480156102aa57600080fd5b506006546101e8565b3480156102bf57600080fd5b506102566102ce366004611926565b610600565b3480156102df57600080fd5b50600f546010546102ee919082565b604080519283526020830191909152016101f2565b34801561030f57600080fd5b50604051600981526020016101f2565b34801561032b57600080fd5b5061025661033a3660046118fa565b610652565b34801561034b57600080fd5b50601454610286906001600160a01b031681565b34801561036b57600080fd5b50600d54600e546102ee919082565b34801561038657600080fd5b50600254610286906001600160a01b031681565b3480156103a657600080fd5b506102566103b5366004611967565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156103df57600080fd5b506101e860075481565b3480156103f557600080fd5b506101e8610404366004611967565b610689565b34801561041557600080fd5b5061041e6106a4565b005b34801561042c57600080fd5b506101e860085481565b34801561044257600080fd5b506000546001600160a01b0316610286565b34801561046057600080fd5b506040805180820190915260038152622c2a2760e91b6020820152610229565b34801561048c57600080fd5b5061025661049b3660046118fa565b610721565b3480156104ac57600080fd5b506102566104bb3660046118fa565b610758565b3480156104cc57600080fd5b5061041e6104db366004611984565b610765565b3480156104ec57600080fd5b5061041e6104fb3660046119b6565b610810565b34801561050c57600080fd5b506101e8600a5481565b34801561052257600080fd5b5061041e6105313660046119f4565b610865565b34801561054257600080fd5b5061041e6105513660046118fa565b610920565b34801561056257600080fd5b506101e8610571366004611a2d565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105a857600080fd5b506101e86105b7366004611967565b60136020526000908152604090205481565b3480156105d557600080fd5b5061041e6105e4366004611967565b6109ed565b60006105f6338484610ad7565b5060015b92915050565b600061060d848484610bfb565b6001600160a01b038416600090815260046020908152604080832033808552925290912054610648918691610643908690611a71565b610ad7565b5060019392505050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916105f6918590610643908690611a84565b6001600160a01b031660009081526003602052604090205490565b6000546001600160a01b031633146106d75760405162461bcd60e51b81526004016106ce90611a97565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916105f6918590610643908690611a71565b60006105f6338484610bfb565b6000546001600160a01b0316331461078f5760405162461bcd60e51b81526004016106ce90611a97565b601961079b8486611a84565b10806107b0575060196107ae8383611a84565b105b6107fc5760405162461bcd60e51b815260206004820181905260248201527f43616e2774206368616e67652066656520686967686572207468616e2032342560448201526064016106ce565b600d92909255600e92909255600f55601055565b6000546001600160a01b0316331461083a5760405162461bcd60e51b81526004016106ce90611a97565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461088f5760405162461bcd60e51b81526004016106ce90611a97565b6103e860065461089f9190611acc565b6108a98385611a84565b116108f65760405162461bcd60e51b815260206004820152601a60248201527f53686f756c6420626520626967676572207468616e20302c312500000000000060448201526064016106ce565b600892909255600755600c80546001600160a01b0319166001600160a01b03909216919091179055565b60095461092c30610689565b101561097a5760405162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e73756666696369656e7420616d6f756e7400000000000060448201526064016106ce565b61098482826110ba565b156109b6576014805460ff60a01b1916600160a01b1790556009546109a890611180565b6014805460ff60a01b191690555b6040518181527f42c9c0bd1fc983236459b9be3c73e1bb9bcec04b2a2dafe47ffe5629d4bbc2079060200160405180910390a15050565b6000546001600160a01b03163314610a175760405162461bcd60e51b81526004016106ce90611a97565b6001600160a01b038116610a7c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ce565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610b395760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106ce565b6001600160a01b038216610b9a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106ce565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c5f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106ce565b6001600160a01b038216610cc15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106ce565b60008111610d235760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106ce565b6001600160a01b03831660009081526003602052604081208054839290610d4b908490611a71565b90915550506001600160a01b03831660009081526005602052604081205482919060ff16158015610d9557506001600160a01b03841660009081526005602052604090205460ff16155b15610d9e575060015b8015611037576002546001600160a01b0390811690861603610df5576001600160a01b0384166000908152601360205260408120549003610df5576001600160a01b03841660009081526013602052604090204390555b6002546001600160a01b03858116911614610e6e57600854831115610e2c5760405162461bcd60e51b81526004016106ce90611aee565b60075483610e3986610689565b610e439190611a84565b1115610e615760405162461bcd60e51b81526004016106ce90611b37565b610e6b8385611301565b91505b6002546001600160a01b03868116911614610faf57600854831115610ea55760405162461bcd60e51b81526004016106ce90611aee565b610eaf83866113d8565b91506001600a6000828254610ec49190611a84565b9091555050601454600160a01b900460ff16610ef657601480546001600160a01b0319166001600160a01b0387161790555b600954610f0230610689565b10158015610f1a5750601454600160a01b900460ff16155b15610f50576014805460ff60a01b1916600160a01b179055600954610f3e90611180565b6014805460ff60a01b19169055610faf565b6003600a54118015610f6c5750601454600160a01b900460ff16155b15610faf576014805460ff60a01b1916600160a01b179055610fa16002610f9230610689565b610f9c9190611acc565b611180565b6014805460ff60a01b191690555b6002546001600160a01b03858116911614801590610fdb57506002546001600160a01b03868116911614155b15611037576008548311156110025760405162461bcd60e51b81526004016106ce90611aee565b6007548361100f86610689565b6110199190611a84565b11156110375760405162461bcd60e51b81526004016106ce90611b37565b6001600160a01b0384166000908152600360205260408120805484929061105f908490611a84565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110ab91815260200190565b60405180910390a35050505050565b33600090815260056020526040812054819060ff1661113657601054600f54606491906110e8906019611a71565b6110f29190611a71565b6110fc9085611b83565b6111069190611acc565b9050611112338261140f565b60008161111e30610689565b6111289190611a71565b6009541092506105fa915050565b50818061114230610689565b1161115b57611151848461140f565b60009150506105fa565b60008161116730610689565b6111719190611a71565b600954111592506105fa915050565b600f54601054600d54600e5484936000939092909161119f9190611a84565b6111a99190611a84565b6111b39190611a84565b600f54600d546111c39190611a84565b6111cd9084611b83565b6111d79190611acc565b600f54601054600d54600e549394506000936111f39190611a84565b6111fd9190611a84565b6112079190611a84565b601054600e546112179190611a84565b6112219085611b83565b61122b9190611acc565b905060006112398284611a84565b9050600061124884600261151a565b905060006112568683611563565b905047611262826115a5565b600061126e4783611563565b9050600061128686611280848b6116ff565b9061151a565b90506112928582611781565b600c546040516000916001600160a01b03169047908381818185875af1925050503d80600081146112df576040519150601f19603f3d011682016040523d82523d6000602084013e6112e4565b606091505b505080915050806112f457600080fd5b5050505050505050505050565b6000806064600d60000154856113179190611b83565b6113219190611acc565b905060006064600d60010154866113389190611b83565b6113429190611acc565b905061134e8183611a84565b306000908152600360205260408120805490919061136d908490611a84565b909155503090506001600160a01b0385167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6113a98585611a84565b60405190815260200160405180910390a3806113c58387611a71565b6113cf9190611a71565b95945050505050565b6000806064600f60000154856113ee9190611b83565b6113f89190611acc565b905060006064600f60010154866113389190611b83565b6001600160a01b03821661146f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016106ce565b6114ac81604051806060016040528060228152602001611c6d602291396001600160a01b0385166000908152600360205260409020549190611835565b6001600160a01b0383166000908152600360205260409020556006546114d29082611563565b6006556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600061155c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611866565b9392505050565b600061155c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611835565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106115da576115da611b9a565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611633573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116579190611bb0565b8160018151811061166a5761166a611b9a565b6001600160a01b0392831660209182029290920101526001546116909130911684610ad7565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac947906116c9908590600090869030904290600401611bcd565b600060405180830381600087803b1580156116e357600080fd5b505af11580156116f7573d6000803e3d6000fd5b505050505050565b600082600003611711575060006105fa565b600061171d8385611b83565b90508261172a8583611acc565b1461155c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106ce565b6001546117999030906001600160a01b031684610ad7565b600154600b5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611809573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061182e9190611c3e565b5050505050565b600081848411156118595760405162461bcd60e51b81526004016106ce9190611894565b5060006113cf8486611a71565b600081836118875760405162461bcd60e51b81526004016106ce9190611894565b5060006113cf8486611acc565b600060208083528351808285015260005b818110156118c1578581018301518582016040015282016118a5565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146118f757600080fd5b50565b6000806040838503121561190d57600080fd5b8235611918816118e2565b946020939093013593505050565b60008060006060848603121561193b57600080fd5b8335611946816118e2565b92506020840135611956816118e2565b929592945050506040919091013590565b60006020828403121561197957600080fd5b813561155c816118e2565b6000806000806080858703121561199a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156119c957600080fd5b82356119d4816118e2565b9150602083013580151581146119e957600080fd5b809150509250929050565b600080600060608486031215611a0957600080fd5b83359250602084013591506040840135611a22816118e2565b809150509250925092565b60008060408385031215611a4057600080fd5b8235611a4b816118e2565b915060208301356119e9816118e2565b634e487b7160e01b600052601160045260246000fd5b818103818111156105fa576105fa611a5b565b808201808211156105fa576105fa611a5b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082611ae957634e487b7160e01b600052601260045260246000fd5b500490565b60208082526029908201527f5472616e7366657220416d6f756e74206578636565647320746865206d6178546040820152681e1b9cd05b5bdd5b9d60ba1b606082015260800190565b6020808252602c908201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760408201526b30b63632ba20b6b7bab73a1760a11b606082015260800190565b80820281158282048414176105fa576105fa611a5b565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611bc257600080fd5b815161155c816118e2565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c1d5784516001600160a01b031683529383019391830191600101611bf8565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611c5357600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365a264697066735822122034a547571cfbb12b6ffe7933f1a0e0d78a2d2d5a510f57629cabca9e8a529a5164736f6c63430008120033

Deployed Bytecode Sourcemap

4644:12248:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5339:58;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5339:58:0;;;;;;;;7076:83;;;;;;;;;;-1:-1:-1;7146:5:0;;;;;;;;;;;;-1:-1:-1;;;7146:5:0;;;;7076:83;;;;;;;:::i;7908:161::-;;;;;;;;;;-1:-1:-1;7908:161:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;7908:161:0;1205:187:1;4731:41:0;;;;;;;;;;-1:-1:-1;4731:41:0;;;;-1:-1:-1;;;;;4731:41:0;;;;;;-1:-1:-1;;;;;1587:32:1;;;1569:51;;1557:2;1542:18;4731:41:0;1397:229:1;7353:95:0;;;;;;;;;;-1:-1:-1;7433:7:0;;7353:95;;8077:266;;;;;;;;;;-1:-1:-1;8077:266:0;;;;;:::i;:::-;;:::i;5706:23::-;;;;;;;;;;-1:-1:-1;5706:23:0;;;;;;;;;;;;;2266:25:1;;;2322:2;2307:18;;2300:34;;;;2239:18;5706:23:0;2092:248:1;7262:83:0;;;;;;;;;;-1:-1:-1;7262:83:0;;5142:1;2487:36:1;;2475:2;2460:18;7262:83:0;2345:184:1;8351:215:0;;;;;;;;;;-1:-1:-1;8351:215:0;;;;;:::i;:::-;;:::i;5875:26::-;;;;;;;;;;-1:-1:-1;5875:26:0;;;;-1:-1:-1;;;;;5875:26:0;;;5678:21;;;;;;;;;;-1:-1:-1;5678:21:0;;;;;;;;;4781:28;;;;;;;;;;-1:-1:-1;4781:28:0;;;;-1:-1:-1;;;;;4781:28:0;;;9932:123;;;;;;;;;;-1:-1:-1;9932:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;10020:27:0;9996:4;10020:27;;;:18;:27;;;;;;;;;9932:123;5213:58;;;;;;;;;;;;;;;;7456:118;;;;;;;;;;-1:-1:-1;7456:118:0;;;;;:::i;:::-;;:::i;3105:148::-;;;;;;;;;;;;;:::i;:::-;;5278:54;;;;;;;;;;;;;;;;2891:79;;;;;;;;;;-1:-1:-1;2929:7:0;2956:6;-1:-1:-1;;;;;2956:6:0;2891:79;;7167:87;;;;;;;;;;-1:-1:-1;7239:7:0;;;;;;;;;;;;-1:-1:-1;;;7239:7:0;;;;7167:87;;8574:225;;;;;;;;;;-1:-1:-1;8574:225:0;;;;;:::i;:::-;;:::i;7582:167::-;;;;;;;;;;-1:-1:-1;7582:167:0;;;;;:::i;:::-;;:::i;10063:492::-;;;;;;;;;;-1:-1:-1;10063:492:0;;;;;:::i;:::-;;:::i;8811:140::-;;;;;;;;;;-1:-1:-1;8811:140:0;;;;;:::i;:::-;;:::i;5404:29::-;;;;;;;;;;;;;;;;10563:274;;;;;;;;;;-1:-1:-1;10563:274:0;;;;;:::i;:::-;;:::i;15687:337::-;;;;;;;;;;-1:-1:-1;15687:337:0;;;;;:::i;:::-;;:::i;7757:143::-;;;;;;;;;;-1:-1:-1;7757:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7865:18:0;;;7838:7;7865:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7757:143;5810:58;;;;;;;;;;-1:-1:-1;5810:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;3261:244;;;;;;;;;;-1:-1:-1;3261:244:0;;;;;:::i;:::-;;:::i;7908:161::-;7983:4;8000:39;2423:10;8023:7;8032:6;8000:8;:39::i;:::-;-1:-1:-1;8057:4:0;7908:161;;;;;:::o;8077:266::-;8175:4;8192:36;8202:6;8210:9;8221:6;8192:9;:36::i;:::-;-1:-1:-1;;;;;8270:19:0;;;;;;:11;:19;;;;;;;;2423:10;8270:33;;;;;;;;;8239:74;;8248:6;;8270:42;;8306:6;;8270:42;:::i;:::-;8239:8;:74::i;:::-;-1:-1:-1;8331:4:0;8077:266;;;;;:::o;8351:215::-;2423:10;8439:4;8488:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8488:34:0;;;;;;;;;;8439:4;;8456:80;;8479:7;;8488:47;;8525:10;;8488:47;:::i;7456:118::-;-1:-1:-1;;;;;7549:17:0;7522:7;7549:17;;;:8;:17;;;;;;;7456:118::o;3105:148::-;3018:6;;-1:-1:-1;;;;;3018:6:0;2423:10;3018:22;3010:67;;;;-1:-1:-1;;;3010:67:0;;;;;;;:::i;:::-;;;;;;;;;3212:1:::1;3196:6:::0;;3175:40:::1;::::0;-1:-1:-1;;;;;3196:6:0;;::::1;::::0;3175:40:::1;::::0;3212:1;;3175:40:::1;3243:1;3226:19:::0;;-1:-1:-1;;;;;;3226:19:0::1;::::0;;3105:148::o;8574:225::-;2423:10;8667:4;8716:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8716:34:0;;;;;;;;;;8667:4;;8684:85;;8707:7;;8716:52;;8753:15;;8716:52;:::i;7582:167::-;7660:4;7677:42;2423:10;7701:9;7712:6;7677:9;:42::i;10063:492::-;3018:6;;-1:-1:-1;;;;;3018:6:0;2423:10;3018:22;3010:67;;;;-1:-1:-1;;;3010:67:0;;;;;;;:::i;:::-;10262:2:::1;10224:35;10243:16:::0;10224;:35:::1;:::i;:::-;:40;:86;;;-1:-1:-1::0;10308:2:0::1;10268:37;10288:17:::0;10268;:37:::1;:::i;:::-;:42;10224:86;10216:131;;;::::0;-1:-1:-1;;;10216:131:0;;5544:2:1;10216:131:0::1;::::0;::::1;5526:21:1::0;;;5563:18;;;5556:30;5622:34;5602:18;;;5595:62;5674:18;;10216:131:0::1;5342:356:1::0;10216:131:0::1;10368:6;:35:::0;;;;10414:16;:35;;;;10462:7:::1;:37:::0;10510:17;:37;10063:492::o;8811:140::-;3018:6;;-1:-1:-1;;;;;3018:6:0;2423:10;3018:22;3010:67;;;;-1:-1:-1;;;3010:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8896:36:0;;;::::1;;::::0;;;:18:::1;:36;::::0;;;;:47;;-1:-1:-1;;8896:47:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8811:140::o;10563:274::-;3018:6;;-1:-1:-1;;;;;3018:6:0;2423:10;3018:22;3010:67;;;;-1:-1:-1;;;3010:67:0;;;;;;;:::i;:::-;10704:4:::1;10694:7;;:14;;;;:::i;:::-;10672:19;10681:10:::0;10672:6;:19:::1;:::i;:::-;:36;10664:75;;;::::0;-1:-1:-1;;;10664:75:0;;6127:2:1;10664:75:0::1;::::0;::::1;6109:21:1::0;6166:2;6146:18;;;6139:30;6205:28;6185:18;;;6178:56;6251:18;;10664:75:0::1;5925:350:1::0;10664:75:0::1;10750:12;:21:::0;;;;10773:16:::1;:29:::0;10804:14:::1;:25:::0;;-1:-1:-1;;;;;;10804:25:0::1;-1:-1:-1::0;;;;;10804:25:0;;::::1;::::0;;;::::1;::::0;;10563:274::o;15687:337::-;15796:17;;15768:24;15786:4;15768:9;:24::i;:::-;:45;;15760:84;;;;-1:-1:-1;;;15760:84:0;;6482:2:1;15760:84:0;;;6464:21:1;6521:2;6501:18;;;6494:30;6560:28;6540:18;;;6533:56;6606:18;;15760:84:0;6280:350:1;15760:84:0;15859:29;15875:4;15881:6;15859:15;:29::i;:::-;15855:124;;;15905:8;:15;;-1:-1:-1;;;;15905:15:0;-1:-1:-1;;;15905:15:0;;;15931:17;;15922:27;;:8;:27::i;:::-;15951:8;:16;;-1:-1:-1;;;;15951:16:0;;;15855:124;15994:22;;160:25:1;;;15994:22:0;;148:2:1;133:18;15994:22:0;;;;;;;15687:337;;:::o;3261:244::-;3018:6;;-1:-1:-1;;;;;3018:6:0;2423:10;3018:22;3010:67;;;;-1:-1:-1;;;3010:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3350:22:0;::::1;3342:73;;;::::0;-1:-1:-1;;;3342:73:0;;6837:2:1;3342:73:0::1;::::0;::::1;6819:21:1::0;6876:2;6856:18;;;6849:30;6915:34;6895:18;;;6888:62;-1:-1:-1;;;6966:18:1;;;6959:36;7012:19;;3342:73:0::1;6635:402:1::0;3342:73:0::1;3452:6;::::0;;3431:38:::1;::::0;-1:-1:-1;;;;;3431:38:0;;::::1;::::0;3452:6;::::1;::::0;3431:38:::1;::::0;::::1;3480:6;:17:::0;;-1:-1:-1;;;;;;3480:17:0::1;-1:-1:-1::0;;;;;3480:17:0;;;::::1;::::0;;;::::1;::::0;;3261:244::o;10845:337::-;-1:-1:-1;;;;;10938:19:0;;10930:68;;;;-1:-1:-1;;;10930:68:0;;7244:2:1;10930:68:0;;;7226:21:1;7283:2;7263:18;;;7256:30;7322:34;7302:18;;;7295:62;-1:-1:-1;;;7373:18:1;;;7366:34;7417:19;;10930:68:0;7042:400:1;10930:68:0;-1:-1:-1;;;;;11017:21:0;;11009:68;;;;-1:-1:-1;;;11009:68:0;;7649:2:1;11009:68:0;;;7631:21:1;7688:2;7668:18;;;7661:30;7727:34;7707:18;;;7700:62;-1:-1:-1;;;7778:18:1;;;7771:32;7820:19;;11009:68:0;7447:398:1;11009:68:0;-1:-1:-1;;;;;11090:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11142:32;;160:25:1;;;11142:32:0;;133:18:1;11142:32:0;;;;;;;10845:337;;;:::o;11532:2223::-;-1:-1:-1;;;;;11654:18:0;;11646:68;;;;-1:-1:-1;;;11646:68:0;;8052:2:1;11646:68:0;;;8034:21:1;8091:2;8071:18;;;8064:30;8130:34;8110:18;;;8103:62;-1:-1:-1;;;8181:18:1;;;8174:35;8226:19;;11646:68:0;7850:401:1;11646:68:0;-1:-1:-1;;;;;11733:16:0;;11725:64;;;;-1:-1:-1;;;11725:64:0;;8458:2:1;11725:64:0;;;8440:21:1;8497:2;8477:18;;;8470:30;8536:34;8516:18;;;8509:62;-1:-1:-1;;;8587:18:1;;;8580:33;8630:19;;11725:64:0;8256:399:1;11725:64:0;11817:1;11808:6;:10;11800:64;;;;-1:-1:-1;;;11800:64:0;;8862:2:1;11800:64:0;;;8844:21:1;8901:2;8881:18;;;8874:30;8940:34;8920:18;;;8913:62;-1:-1:-1;;;8991:18:1;;;8984:39;9040:19;;11800:64:0;8660:405:1;11800:64:0;-1:-1:-1;;;;;11885:14:0;;;;;;:8;:14;;;;;:24;;11903:6;;11885:14;:24;;11903:6;;11885:24;:::i;:::-;;;;-1:-1:-1;;;;;;;12001:24:0;;11920:22;12001:24;;;:18;:24;;;;;;11945:6;;11920:22;12001:24;;12000:25;:52;;;;-1:-1:-1;;;;;;12030:22:0;;;;;;:18;:22;;;;;;;;12029:23;12000:52;11997:97;;;-1:-1:-1;12078:4:0;11997:97;12109:7;12106:1541;;;12144:13;;-1:-1:-1;;;;;12144:13:0;;;12136:21;;;;12132:145;;-1:-1:-1;;;;;12181:27:0;;;;;;:23;:27;;;;;;:32;;12177:85;;-1:-1:-1;;;;;12217:27:0;;;;;;:23;:27;;;;;12247:12;12217:42;;12177:85;12302:13;;-1:-1:-1;;;;;12296:19:0;;;12302:13;;12296:19;12293:311;;12353:12;;12343:6;:22;;12335:76;;;;-1:-1:-1;;;12335:76:0;;;;;;;:::i;:::-;12464:16;;12454:6;12438:13;12448:2;12438:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;12430:99;;;;-1:-1:-1;;;12430:99:0;;;;;;;:::i;:::-;12565:23;12577:6;12585:2;12565:11;:23::i;:::-;12548:40;;12293:311;12631:13;;-1:-1:-1;;;;;12623:21:0;;;12631:13;;12623:21;12620:723;;12682:12;;12672:6;:22;;12664:76;;;;-1:-1:-1;;;12664:76:0;;;;;;;:::i;:::-;12776:26;12789:6;12797:4;12776:12;:26::i;:::-;12759:43;;12839:1;12821:14;;:19;;;;;;;:::i;:::-;;;;-1:-1:-1;;12863:8:0;;-1:-1:-1;;;12863:8:0;;;;12859:37;;12875:11;:18;;-1:-1:-1;;;;;;12875:18:0;-1:-1:-1;;;;;12875:18:0;;;;;12859:37;12948:17;;12920:24;12938:4;12920:9;:24::i;:::-;:45;;:58;;;;-1:-1:-1;12970:8:0;;-1:-1:-1;;;12970:8:0;;;;12969:9;12920:58;12916:412;;;13003:8;:15;;-1:-1:-1;;;;13003:15:0;-1:-1:-1;;;13003:15:0;;;13050:17;;13041:27;;:8;:27::i;:::-;13091:8;:16;;-1:-1:-1;;;;13091:16:0;;;12916:412;;;13154:1;13137:14;;:18;:31;;;;-1:-1:-1;13160:8:0;;-1:-1:-1;;;13160:8:0;;;;13159:9;13137:31;13133:195;;;13193:8;:15;;-1:-1:-1;;;;13193:15:0;-1:-1:-1;;;13193:15:0;;;13231:38;13267:1;13240:24;13258:4;13240:9;:24::i;:::-;:28;;;;:::i;:::-;13231:8;:38::i;:::-;13292:8;:16;;-1:-1:-1;;;;13292:16:0;;;13133:195;13368:13;;-1:-1:-1;;;;;13362:19:0;;;13368:13;;13362:19;;;;:44;;-1:-1:-1;13393:13:0;;-1:-1:-1;;;;;13385:21:0;;;13393:13;;13385:21;;13362:44;13359:277;;;13444:12;;13434:6;:22;;13426:76;;;;-1:-1:-1;;;13426:76:0;;;;;;;:::i;:::-;13555:16;;13545:6;13529:13;13539:2;13529:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;13521:99;;;;-1:-1:-1;;;13521:99:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13667:12:0;;;;;;:8;:12;;;;;:30;;13683:14;;13667:12;:30;;13683:14;;13667:30;:::i;:::-;;;;;;;;13728:2;-1:-1:-1;;;;;13713:34:0;13722:4;-1:-1:-1;;;;;13713:34:0;;13732:14;13713:34;;;;160:25:1;;148:2;133:18;;14:177;13713:34:0;;;;;;;;11635:2120;;11532:2223;;;:::o;14917:762::-;2423:10;14990:4;15044:32;;;:18;:32;;;;;;14990:4;;15044:32;;15039:633;;15143:17;;:7;15123:17;15164:3;;15143:17;15118:22;;:2;:22;:::i;:::-;:42;;;;:::i;:::-;15108:53;;:6;:53;:::i;:::-;:59;;;;:::i;:::-;15093:74;-1:-1:-1;15182:33:0;2423:10;15202:12;15182:5;:33::i;:::-;15230:20;15280:12;15253:24;15271:4;15253:9;:24::i;:::-;:39;;;;:::i;:::-;15329:17;;-1:-1:-1;15314:32:0;-1:-1:-1;15307:39:0;;-1:-1:-1;;15307:39:0;15039:633;-1:-1:-1;15394:6:0;;15419:24;15437:4;15419:9;:24::i;:::-;:40;15415:114;;15480:19;15486:4;15492:6;15480:5;:19::i;:::-;15508:5;15501:12;;;;;15415:114;15543:20;15593:12;15566:24;15584:4;15566:9;:24::i;:::-;:39;;;;:::i;:::-;15643:17;;-1:-1:-1;15627:33:0;;-1:-1:-1;15620:40:0;;-1:-1:-1;;15620:40:0;13766:1143;14006:7;:17;13986;;13967:6;:16;13948;;13845:6;;13819:23;;14006:17;;13986;;13948:35;;13967:16;13948:35;:::i;:::-;:55;;;;:::i;:::-;:75;;;;:::i;:::-;13926:7;:17;13907:6;:16;:36;;13926:17;13907:36;:::i;:::-;13888:56;;:15;:56;:::i;:::-;:136;;;;:::i;:::-;14179:7;:17;14159;;14140:6;:16;14121;;13862:162;;-1:-1:-1;14035:23:0;;14121:35;;14140:16;14121:35;:::i;:::-;:55;;;;:::i;:::-;:75;;;;:::i;:::-;14099:17;;14080:16;;:36;;14099:17;14080:36;:::i;:::-;14061:56;;:15;:56;:::i;:::-;:136;;;;:::i;:::-;14035:162;-1:-1:-1;14208:25:0;14236:33;14035:162;14236:15;:33;:::i;:::-;14208:61;-1:-1:-1;14290:26:0;14319:22;:15;14339:1;14319:19;:22::i;:::-;14290:51;-1:-1:-1;14352:26:0;14381:39;:15;14290:51;14381:19;:39::i;:::-;14352:68;-1:-1:-1;14459:21:0;14491:36;14352:68;14491:16;:36::i;:::-;14539:18;14560:44;:21;14586:17;14560:25;:44::i;:::-;14539:65;-1:-1:-1;14625:23:0;14651:54;14687:17;14651:31;14539:65;14666:15;14651:14;:31::i;:::-;:35;;:54::i;:::-;14625:80;;14716:49;14729:18;14749:15;14716:12;:49::i;:::-;14820:14;;14812:62;;14776:12;;-1:-1:-1;;;;;14820:14:0;;14848:21;;14776:12;14812:62;14776:12;14812:62;14848:21;14820:14;14812:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14799:75;;;;;14893:7;14885:16;;;;;;13808:1101;;;;;;;;;;13766:1143;:::o;9000:456::-;9068:7;9088:25;9144:3;9125:6;:16;;;9116:6;:25;;;;:::i;:::-;:31;;;;:::i;:::-;9088:59;;9159:26;9216:3;9197:6;:16;;;9188:6;:25;;;;:::i;:::-;:31;;;;:::i;:::-;9159:60;-1:-1:-1;9259:38:0;9159:60;9259:17;:38;:::i;:::-;9249:4;9232:23;;;;:8;:23;;;;;:65;;:23;;;:65;;;;;:::i;:::-;;;;-1:-1:-1;9337:4:0;;-1:-1:-1;;;;;;9313:70:0;;;9344:38;9365:17;9344:18;:38;:::i;:::-;9313:70;;160:25:1;;;148:2;133:18;9313:70:0;;;;;;;9429:18;9402:25;9410:17;9402:6;:25;:::i;:::-;:45;;;;:::i;:::-;9394:54;9000:456;-1:-1:-1;;;;;9000:456:0:o;9464:460::-;9533:7;9553:25;9610:3;9590:7;:17;;;9581:6;:26;;;;:::i;:::-;:32;;;;:::i;:::-;9553:60;;9625:26;9683:3;9663:7;:17;;;9654:6;:26;;;;:::i;11190:334::-;-1:-1:-1;;;;;11266:21:0;;11258:67;;;;-1:-1:-1;;;11258:67:0;;10478:2:1;11258:67:0;;;10460:21:1;10517:2;10497:18;;;10490:30;10556:34;10536:18;;;10529:62;-1:-1:-1;;;10607:18:1;;;10600:31;10648:19;;11258:67:0;10276:397:1;11258:67:0;11356;11378:6;11356:67;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11356:17:0;;;;;;:8;:17;;;;;;;:67;:21;:67::i;:::-;-1:-1:-1;;;;;11336:17:0;;;;;;:8;:17;;;;;:87;11444:7;;:19;;11456:6;11444:11;:19::i;:::-;11434:7;:29;11479:37;;160:25:1;;;11505:1:0;;-1:-1:-1;;;;;11479:37:0;;;;;148:2:1;133:18;11479:37:0;;;;;;;11190:334;;:::o;1557:132::-;1615:7;1642:39;1646:1;1649;1642:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1635:46;1557:132;-1:-1:-1;;;1557:132:0:o;955:136::-;1013:7;1040:43;1044:1;1047;1040:43;;;;;;;;;;;;;;;;;:3;:43::i;16032:475::-;16122:16;;;16136:1;16122:16;;;;;;;;16098:21;;16122:16;;;;;;;;;;-1:-1:-1;16122:16:0;16098:40;;16167:4;16149;16154:1;16149:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16149:23:0;;;:7;;;;;;;;;;:23;;;;16193:15;;:22;;;-1:-1:-1;;;16193:22:0;;;;:15;;;;;:20;;:22;;;;;16149:7;;16193:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16183:4;16188:1;16183:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16183:32:0;;;:7;;;;;;;;;:32;16260:15;;16228:62;;16245:4;;16260:15;16278:11;16228:8;:62::i;:::-;16303:15;;:196;;-1:-1:-1;;;16303:196:0;;-1:-1:-1;;;;;16303:15:0;;;;:66;;:196;;16384:11;;16303:15;;16426:4;;16453;;16473:15;;16303:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16087:420;16032:475;:::o;1299:250::-;1357:7;1381:1;1386;1381:6;1377:47;;-1:-1:-1;1411:1:0;1404:8;;1377:47;1436:9;1448:5;1452:1;1448;:5;:::i;:::-;1436:17;-1:-1:-1;1481:1:0;1472:5;1476:1;1436:17;1472:5;:::i;:::-;:10;1464:56;;;;-1:-1:-1;;;1464:56:0;;12385:2:1;1464:56:0;;;12367:21:1;12424:2;12404:18;;;12397:30;12463:34;12443:18;;;12436:62;-1:-1:-1;;;12514:18:1;;;12507:31;12555:19;;1464:56:0;12183:397:1;16515:374:0;16628:15;;16596:62;;16613:4;;-1:-1:-1;;;;;16628:15:0;16646:11;16596:8;:62::i;:::-;16671:15;;16823:17;;16671:210;;-1:-1:-1;;;16671:210:0;;16745:4;16671:210;;;12926:34:1;12976:18;;;12969:34;;;16671:15:0;13019:18:1;;;13012:34;;;13062:18;;;13055:34;-1:-1:-1;;;;;16823:17:0;;;13105:19:1;;;13098:44;16855:15:0;13158:19:1;;;13151:35;16671:15:0;;;:31;;16711:9;;12860:19:1;;16671:210:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16515:374;;:::o;1099:192::-;1185:7;1221:12;1213:6;;;;1205:29;;;;-1:-1:-1;;;1205:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1245:9:0;1257:5;1261:1;1257;:5;:::i;1697:278::-;1783:7;1818:12;1811:5;1803:28;;;;-1:-1:-1;;;1803:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1842:9:0;1854:5;1858:1;1854;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;804:70;749:131;:::o;885:315::-;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2742:247::-;2801:6;2854:2;2842:9;2833:7;2829:23;2825:32;2822:52;;;2870:1;2867;2860:12;2822:52;2909:9;2896:23;2928:31;2953:5;2928:31;:::i;2994:385::-;3080:6;3088;3096;3104;3157:3;3145:9;3136:7;3132:23;3128:33;3125:53;;;3174:1;3171;3164:12;3125:53;-1:-1:-1;;3197:23:1;;;3267:2;3252:18;;3239:32;;-1:-1:-1;3318:2:1;3303:18;;3290:32;;3369:2;3354:18;3341:32;;-1:-1:-1;2994:385:1;-1:-1:-1;2994:385:1:o;3384:416::-;3449:6;3457;3510:2;3498:9;3489:7;3485:23;3481:32;3478:52;;;3526:1;3523;3516:12;3478:52;3565:9;3552:23;3584:31;3609:5;3584:31;:::i;:::-;3634:5;-1:-1:-1;3691:2:1;3676:18;;3663:32;3733:15;;3726:23;3714:36;;3704:64;;3764:1;3761;3754:12;3704:64;3787:7;3777:17;;;3384:416;;;;;:::o;3805:383::-;3882:6;3890;3898;3951:2;3939:9;3930:7;3926:23;3922:32;3919:52;;;3967:1;3964;3957:12;3919:52;4003:9;3990:23;3980:33;;4060:2;4049:9;4045:18;4032:32;4022:42;;4114:2;4103:9;4099:18;4086:32;4127:31;4152:5;4127:31;:::i;:::-;4177:5;4167:15;;;3805:383;;;;;:::o;4193:388::-;4261:6;4269;4322:2;4310:9;4301:7;4297:23;4293:32;4290:52;;;4338:1;4335;4328:12;4290:52;4377:9;4364:23;4396:31;4421:5;4396:31;:::i;:::-;4446:5;-1:-1:-1;4503:2:1;4488:18;;4475:32;4516:33;4475:32;4516:33;:::i;4586:127::-;4647:10;4642:3;4638:20;4635:1;4628:31;4678:4;4675:1;4668:15;4702:4;4699:1;4692:15;4718:128;4785:9;;;4806:11;;;4803:37;;;4820:18;;:::i;4851:125::-;4916:9;;;4937:10;;;4934:36;;;4950:18;;:::i;4981:356::-;5183:2;5165:21;;;5202:18;;;5195:30;5261:34;5256:2;5241:18;;5234:62;5328:2;5313:18;;4981:356::o;5703:217::-;5743:1;5769;5759:132;;5813:10;5808:3;5804:20;5801:1;5794:31;5848:4;5845:1;5838:15;5876:4;5873:1;5866:15;5759:132;-1:-1:-1;5905:9:1;;5703:217::o;9070:405::-;9272:2;9254:21;;;9311:2;9291:18;;;9284:30;9350:34;9345:2;9330:18;;9323:62;-1:-1:-1;;;9416:2:1;9401:18;;9394:39;9465:3;9450:19;;9070:405::o;9480:408::-;9682:2;9664:21;;;9721:2;9701:18;;;9694:30;9760:34;9755:2;9740:18;;9733:62;-1:-1:-1;;;9826:2:1;9811:18;;9804:42;9878:3;9863:19;;9480:408::o;9893:168::-;9966:9;;;9997;;10014:15;;;10008:22;;9994:37;9984:71;;10035:18;;:::i;10810:127::-;10871:10;10866:3;10862:20;10859:1;10852:31;10902:4;10899:1;10892:15;10926:4;10923:1;10916:15;10942:251;11012:6;11065:2;11053:9;11044:7;11040:23;11036:32;11033:52;;;11081:1;11078;11071:12;11033:52;11113:9;11107:16;11132:31;11157:5;11132:31;:::i;11198:980::-;11460:4;11508:3;11497:9;11493:19;11539:6;11528:9;11521:25;11565:2;11603:6;11598:2;11587:9;11583:18;11576:34;11646:3;11641:2;11630:9;11626:18;11619:31;11670:6;11705;11699:13;11736:6;11728;11721:22;11774:3;11763:9;11759:19;11752:26;;11813:2;11805:6;11801:15;11787:29;;11834:1;11844:195;11858:6;11855:1;11852:13;11844:195;;;11923:13;;-1:-1:-1;;;;;11919:39:1;11907:52;;12014:15;;;;11979:12;;;;11955:1;11873:9;11844:195;;;-1:-1:-1;;;;;;;12095:32:1;;;;12090:2;12075:18;;12068:60;-1:-1:-1;;;12159:3:1;12144:19;12137:35;12056:3;11198:980;-1:-1:-1;;;11198:980:1:o;13197:306::-;13285:6;13293;13301;13354:2;13342:9;13333:7;13329:23;13325:32;13322:52;;;13370:1;13367;13360:12;13322:52;13399:9;13393:16;13383:26;;13449:2;13438:9;13434:18;13428:25;13418:35;;13493:2;13482:9;13478:18;13472:25;13462:35;;13197:306;;;;;:::o

Swarm Source

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