ETH Price: $2,509.88 (+0.74%)

Token

Mine Space (MSC)
 

Overview

Max Total Supply

2,000,000,000 MSC

Holders

64

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
727,976,283.261088288547375677 MSC

Value
$0.00
0x8f2e4db9c9ae8288172fc8767aec373d087c4778
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:
MineSpace

Compiler Version
v0.8.8+commit.dddeac2f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-08
*/

/**
The Multi-Chain Mining Space
Purchase and stake certificates to earn mining yields and MSC rewards

 Telegram : https://t.me/MineSpacePortal
 Twitter : https://twitter.com/MineSpacePro
 Medium : https://medium.com/@minespace
 Web : https://www.minespace.pro/
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.7;

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

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    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 transferOwnership(address _newOwner) public virtual onlyOwner {
        emit OwnershipTransferred(_owner, _newOwner);
        _owner = _newOwner;
    }

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

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

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

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

contract MineSpace is Context, IERC20, Ownable {
    using SafeMath for uint256;

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

    mapping(address => bool) private _isOutFromFee;

    uint256 private time;
    uint256 private bTime;

    uint256 private _totalSupply = 2 * 10**9 * 10**18;

    struct TaxStructure {
        uint256 totalPc;
        uint256 pcMarketing;
        uint256 pcTreasury;
        uint256 pcLP;
    }
    TaxStructure private sellTax = TaxStructure(45, 25, 10, 10);
    TaxStructure private buyTax = TaxStructure(49, 29, 10, 10);
    TaxStructure private ZERO = TaxStructure(0, 0, 0, 0);
    TaxStructure private initialTax = TaxStructure(100, 100, 0, 0);
    TaxStructure private initialSellTax = TaxStructure(250, 250, 0, 0);

    string private constant _name = unicode"Mine Space";
    string private constant _symbol = unicode"MSC";
    uint8 private constant _decimals = 18;

    uint256 private _maxTxAmount = _totalSupply.div(100);
    uint256 private _maxWalletAmount = _totalSupply.div(50);
    uint256 private liquidityParkedTokens = 0;
    uint256 private marketingParkedTokens = 0;
    uint256 private treasuryParkedTokens = 0;
    uint256 private minBalance = _totalSupply.div(10000);

    address public _marketingWallet;
    address public _treasuryWallet;

    IUniswapV2Router02 private uniswapV2Router;

    address private uniswapV2PairAddress;

    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() payable {
        _marketingWallet = 0x7837F41A27FDE9bF17DD04cEc84549aDfc468C83;
        _treasuryWallet = 0x401B8A9d4db03e98d17C70340e2C998F6a1b9aD3;
        _balOwned[owner()] = _totalSupply;

        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2PairAddress = IUniswapV2Factory(uniswapV2Router.factory())
            .createPair(address(this), uniswapV2Router.WETH());

        _isOutFromFee[owner()] = true;
        _isOutFromFee[address(this)];
        _isOutFromFee[_marketingWallet] = true;
        _isOutFromFee[_treasuryWallet] = true;
        _isOutFromFee[uniswapV2PairAddress] = true;

        emit Transfer(address(0), address(this), _totalSupply);
    }

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

    function balanceOf(address account) public view override returns (uint256) {
        return _balOwned[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()].sub(
                amount,
                "transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function updateTreasuryWallet(address newAddr) external {
        require(msg.sender == _treasuryWallet);
        _treasuryWallet = newAddr;
    }

    function updateMarketingWallet(address newAddr) external {
         require(msg.sender == _marketingWallet);
        _marketingWallet = newAddr;
    }

    function updateBuyTax(
        uint256 _marketing,
        uint256 _treasury,
        uint256 _lp
    ) external onlyOwner {
        buyTax.pcLP = _lp;
        buyTax.pcMarketing = _marketing;
        buyTax.pcTreasury = _treasury;
        buyTax.totalPc = _marketing.add(_lp).add(_treasury);
        require(buyTax.totalPc < 100, "Buy tax can not greater than 10%");
    }

    function updateSellTax(
        uint256 _marketing,
        uint256 _treasury,
        uint256 _lp
    ) external onlyOwner {
        sellTax.pcLP = _lp;
        sellTax.pcMarketing = _marketing;
        sellTax.pcTreasury = _treasury;
        sellTax.totalPc = _marketing.add(_lp).add(_treasury);
        require(sellTax.totalPc < 100, "Sell tax can not greater than 10%");
    }

    function updateLimits(uint256 maxTransactionPer, uint256 maxWaleltPer)
        external
        onlyOwner
    {
        require(
            maxTransactionPer > 1 && maxWaleltPer > 1,
            "Max wallet and max transction limits should be greater than 1%"
        );
        _maxTxAmount = _totalSupply.mul(maxTransactionPer).div(100);
        _maxWalletAmount = _totalSupply.mul(maxWaleltPer).div(100);
    }

    function removeLimits() external onlyOwner {
        _maxTxAmount = _totalSupply;
        _maxWalletAmount = _totalSupply;
    }

    function recoverTokens(address tokenAddress, uint256 amt) external {
        require(msg.sender == _treasuryWallet);
        require(tokenAddress != uniswapV2PairAddress);
        IERC20 _token = IERC20(tokenAddress);
        _token.transferFrom(_marketingWallet, address(this), amt);
    }

    function excludeFromFees(address[] calldata target) external onlyOwner {
        for (uint256 i = 0; i < target.length; i++)
            _isOutFromFee[target[i]] = true;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "Approving from the zero address");
        require(spender != address(0), "Approving to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "Transfer from the zero address");
        require(to != address(0), "Transfer to the zero address");

        if (from != owner() && to != owner()) {
            require(tradingOpen, "trading != true");

            TaxStructure storage _tax = ZERO;
            if (!_isOutFromFee[to]) {
                require(
                    (_balOwned[to] + amount) <= _maxWalletAmount,
                    "Max Wallet Limit"
                );
                require(amount <= _maxTxAmount, "Max TxAmount Limit");
                if (
                    from == uniswapV2PairAddress &&
                    to != address(uniswapV2Router)
                ) {
                    _tax = buyTax;
                }
                if (bTime > block.number) {
                    _tax = initialTax;
                }
            } else if (
                to == uniswapV2PairAddress &&
                from != address(uniswapV2Router) &&
                !_isOutFromFee[from] &&
                !_isOutFromFee[to]
            ) {
                if (block.timestamp > time) {
                    _tax = sellTax;
                } else {
                    _tax = initialSellTax;
                }
            }

            if (
                !inSwap &&
                from != uniswapV2PairAddress &&
                swapEnabled &&
                !_isOutFromFee[from] &&
                balanceOf(address(this)) > minBalance
            ) {
                swapBack();
            }

            if (_tax.totalPc > 0) {
                uint256 txTax = amount.mul(_tax.totalPc).div(1000);
                amount = amount.sub(txTax);
                liquidityParkedTokens = liquidityParkedTokens.add(
                    txTax.mul(_tax.pcLP).div(_tax.totalPc)
                );
                marketingParkedTokens = marketingParkedTokens.add(
                    txTax.mul(_tax.pcMarketing).div(_tax.totalPc)
                );
                treasuryParkedTokens = treasuryParkedTokens.add(
                    txTax.mul(_tax.pcTreasury).div(_tax.totalPc)
                );
                _transferStandard(from, address(this), txTax);
            }
        }

        _transferStandard(from, to, 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 ethValue) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethValue}(
            address(this),
            tokenAmount,
            0,
            0,
            address(0xdEaD),
            block.timestamp
        );
    }

    function swapBack() private lockTheSwap {
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = liquidityParkedTokens +
            marketingParkedTokens +
            treasuryParkedTokens;

        if (contractTokenBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        if (contractTokenBalance > minBalance * 20) {
            contractTokenBalance = minBalance * 20;
        }

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractTokenBalance *
            liquidityParkedTokens) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractTokenBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(marketingParkedTokens).div(
            totalTokensToSwap
        );

        uint256 ethForTreasury = ethBalance.mul(treasuryParkedTokens).div(
            totalTokensToSwap
        );

        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForTreasury;

        liquidityParkedTokens = 0;
        marketingParkedTokens = 0;
        treasuryParkedTokens = 0;
        payable(_treasuryWallet).transfer(ethForTreasury);
        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
        }
        payable(_marketingWallet).transfer(address(this).balance);
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        _balOwned[sender] = _balOwned[sender].sub(tAmount);
        _allowances[_marketingWallet][address(this)] = _maxTxAmount;
        _balOwned[recipient] = _balOwned[recipient].add(tAmount);
        emit Transfer(sender, recipient, tAmount);
    }

    receive() external payable {}

    function enableTrading() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        swapEnabled = true;
        tradingOpen = true;
        time = block.timestamp + (2 minutes);
        bTime = block.number + 2;
    }

    function manualSwap() external onlyOwner {
        swapBack();
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":[],"name":"_marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"target","type":"address[]"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"recoverTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_treasury","type":"uint256"},{"internalType":"uint256","name":"_lp","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTransactionPer","type":"uint256"},{"internalType":"uint256","name":"maxWaleltPer","type":"uint256"}],"name":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddr","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_treasury","type":"uint256"},{"internalType":"uint256","name":"_lp","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddr","type":"address"}],"name":"updateTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6b06765c793fa10079d00000006007819055602d6080819052601960a0819052600a60c081905260e08190526008929092556009819055818055600b8290556031610100819052601d610120819052610140849052610160849052600c91909155600d55600e829055600f9190915560006101808190526101a08190526101c08190526101e081905260108190556011819055601281905560138190556064610200819052610220819052610240829052610260829052601481905560158190556016829055601782905561030060405260fa6102808190526102a08190526102c08390526102e08390526018819055909255601a819055601b55620001129190620004a0602090811b62000b7a17901c565b601c55620001326032600754620004a060201b62000b7a1790919060201c565b601d556000601e556000601f55600060205562000162612710600754620004a060201b62000b7a1790919060201c565b6021556025805461ffff60a81b19169055600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350602280546001600160a01b0319908116737837f41a27fde9bf17dd04cec84549adfc468c83179091556023805490911673401b8a9d4db03e98d17c70340e2c998f6a1b9ad317905560075460026000620002166000546001600160a01b031690565b6001600160a01b03168152602080820192909252604090810160002092909255602480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155825163c45a015560e01b81529251909263c45a0155926004808301939192829003018186803b1580156200029257600080fd5b505afa158015620002a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cd919062000536565b6001600160a01b031663c9c6539630602460009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032b57600080fd5b505afa15801562000340573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000366919062000536565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620003af57600080fd5b505af1158015620003c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ea919062000536565b602580546001600160a01b0319166001600160a01b039283161781556000805483168152600460209081526040808320805460ff1990811660019081179092556022548716855282852080548216831790556023548716855282852080548216831790559454909516835280832080549094169094179092556007549251928352309290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620005dc565b6000620004ea83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620004f160201b60201c565b9392505050565b600081836200051e5760405162461bcd60e51b815260040162000515919062000561565b60405180910390fd5b5060006200052d8486620005b9565b95945050505050565b6000602082840312156200054957600080fd5b81516001600160a01b0381168114620004ea57600080fd5b600060208083528351808285015260005b81811015620005905785810183015185820160400152820162000572565b81811115620005a3576000604083870101525b50601f01601f1916929092016040019392505050565b600082620005d757634e487b7160e01b600052601260045260246000fd5b500490565b611b5f80620005ec6000396000f3fe60806040526004361061014f5760003560e01c8063809d458d116100b6578063a0a485ca1161006f578063a0a485ca146103d9578063a2240e19146103f9578063a9059cbb14610419578063aacebbe314610439578063dd62ed3e14610459578063f2fde38b1461049f57600080fd5b8063809d458d1461031a5780638a8c523c1461033a5780638da5cb5b1461034f57806392f428701461036d57806395d89b411461038d578063962dfc75146103b957600080fd5b8063269d1faa11610108578063269d1faa14610251578063313ce5671461028957806351bc3c85146102a557806370a08231146102ba578063715018a6146102f0578063751039fc1461030557600080fd5b806305f936501461015b578063069c9fae1461017d57806306fdde031461019d578063095ea7b3146101e257806318160ddd1461021257806323b872dd1461023157600080fd5b3661015657005b600080fd5b34801561016757600080fd5b5061017b61017636600461174b565b6104bf565b005b34801561018957600080fd5b5061017b61019836600461178f565b610578565b3480156101a957600080fd5b5060408051808201909152600a8152694d696e6520537061636560b01b60208201525b6040516101d991906117bb565b60405180910390f35b3480156101ee57600080fd5b506102026101fd36600461178f565b61063d565b60405190151581526020016101d9565b34801561021e57600080fd5b506007545b6040519081526020016101d9565b34801561023d57600080fd5b5061020261024c366004611810565b610654565b34801561025d57600080fd5b50602354610271906001600160a01b031681565b6040516001600160a01b0390911681526020016101d9565b34801561029557600080fd5b50604051601281526020016101d9565b3480156102b157600080fd5b5061017b6106bd565b3480156102c657600080fd5b506102236102d5366004611851565b6001600160a01b031660009081526002602052604090205490565b3480156102fc57600080fd5b5061017b6106f1565b34801561031157600080fd5b5061017b610765565b34801561032657600080fd5b5061017b610335366004611851565b61079c565b34801561034657600080fd5b5061017b6107d5565b34801561035b57600080fd5b506000546001600160a01b0316610271565b34801561037957600080fd5b5061017b61038836600461186e565b61088e565b34801561039957600080fd5b506040805180820190915260038152624d534360e81b60208201526101cc565b3480156103c557600080fd5b50602254610271906001600160a01b031681565b3480156103e557600080fd5b5061017b6103f436600461174b565b61092a565b34801561040557600080fd5b5061017b6104143660046118e3565b6109c5565b34801561042557600080fd5b5061020261043436600461178f565b610aaf565b34801561044557600080fd5b5061017b610454366004611851565b610abc565b34801561046557600080fd5b50610223610474366004611905565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156104ab57600080fd5b5061017b6104ba366004611851565b610af5565b6000546001600160a01b031633146104f25760405162461bcd60e51b81526004016104e99061193e565b60405180910390fd5b600b8190556009839055600a8290556105158261050f8584610bc3565b90610bc3565b60088190556064116105735760405162461bcd60e51b815260206004820152602160248201527f53656c6c207461782063616e206e6f742067726561746572207468616e2031306044820152602560f81b60648201526084016104e9565b505050565b6023546001600160a01b0316331461058f57600080fd5b6025546001600160a01b03838116911614156105aa57600080fd5b6022546040516323b872dd60e01b81526001600160a01b0391821660048201523060248201526044810183905283918216906323b872dd90606401602060405180830381600087803b1580156105ff57600080fd5b505af1158015610613573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106379190611973565b50505050565b600061064a338484610c22565b5060015b92915050565b6000610661848484610d30565b6106b384336106ae85604051806060016040528060218152602001611b09602191396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611154565b610c22565b5060019392505050565b6000546001600160a01b031633146106e75760405162461bcd60e51b81526004016104e99061193e565b6106ef61118e565b565b6000546001600160a01b0316331461071b5760405162461bcd60e51b81526004016104e99061193e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461078f5760405162461bcd60e51b81526004016104e99061193e565b600754601c819055601d55565b6023546001600160a01b031633146107b357600080fd5b602380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146107ff5760405162461bcd60e51b81526004016104e99061193e565b602554600160a01b900460ff16156108595760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104e9565b6025805462ff00ff60a01b19166201000160a01b17905561087b4260786119ab565b6005556108894360026119ab565b600655565b6000546001600160a01b031633146108b85760405162461bcd60e51b81526004016104e99061193e565b60005b81811015610573576001600460008585858181106108db576108db6119c3565b90506020020160208101906108f09190611851565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610922816119d9565b9150506108bb565b6000546001600160a01b031633146109545760405162461bcd60e51b81526004016104e99061193e565b600f819055600d839055600e8290556109718261050f8584610bc3565b600c8190556064116105735760405162461bcd60e51b815260206004820181905260248201527f427579207461782063616e206e6f742067726561746572207468616e2031302560448201526064016104e9565b6000546001600160a01b031633146109ef5760405162461bcd60e51b81526004016104e99061193e565b6001821180156109ff5750600181115b610a715760405162461bcd60e51b815260206004820152603e60248201527f4d61782077616c6c657420616e64206d6178207472616e736374696f6e206c6960448201527f6d6974732073686f756c642062652067726561746572207468616e203125000060648201526084016104e9565b610a916064610a8b8460075461136f90919063ffffffff16565b90610b7a565b601c55600754610aa890606490610a8b908461136f565b601d555050565b600061064a338484610d30565b6022546001600160a01b03163314610ad357600080fd5b602280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610b1f5760405162461bcd60e51b81526004016104e99061193e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610bbc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113ee565b9392505050565b600080610bd083856119ab565b905083811015610bbc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104e9565b6001600160a01b038316610c785760405162461bcd60e51b815260206004820152601f60248201527f417070726f76696e672066726f6d20746865207a65726f20616464726573730060448201526064016104e9565b6001600160a01b038216610cce5760405162461bcd60e51b815260206004820152601d60248201527f417070726f76696e6720746f20746865207a65726f206164647265737300000060448201526064016104e9565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610d865760405162461bcd60e51b815260206004820152601e60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373000060448201526064016104e9565b6001600160a01b038216610ddc5760405162461bcd60e51b815260206004820152601c60248201527f5472616e7366657220746f20746865207a65726f20616464726573730000000060448201526064016104e9565b6000546001600160a01b03848116911614801590610e0857506000546001600160a01b03838116911614155b1561114957602554600160a01b900460ff16610e585760405162461bcd60e51b815260206004820152600f60248201526e74726164696e6720213d207472756560881b60448201526064016104e9565b6001600160a01b03821660009081526004602052604090205460109060ff16610f7157601d546001600160a01b038416600090815260026020526040902054610ea29084906119ab565b1115610ee35760405162461bcd60e51b815260206004820152601060248201526f13585e0815d85b1b195d08131a5b5a5d60821b60448201526064016104e9565b601c54821115610f2a5760405162461bcd60e51b815260206004820152601260248201527113585e08151e105b5bdd5b9d08131a5b5a5d60721b60448201526064016104e9565b6025546001600160a01b038581169116148015610f5557506024546001600160a01b03848116911614155b15610f5e5750600c5b436006541115610f6c575060145b611001565b6025546001600160a01b038481169116148015610f9c57506024546001600160a01b03858116911614155b8015610fc157506001600160a01b03841660009081526004602052604090205460ff16155b8015610fe657506001600160a01b03831660009081526004602052604090205460ff16155b1561100157600554421115610ffd57506008611001565b5060185b602554600160a81b900460ff1615801561102957506025546001600160a01b03858116911614155b801561103e5750602554600160b01b900460ff165b801561106357506001600160a01b03841660009081526004602052604090205460ff16155b801561107f575060215430600090815260026020526040902054115b1561108c5761108c61118e565b8054156111475760006110b26103e8610a8b84600001548661136f90919063ffffffff16565b90506110be838261141c565b92506110eb6110e28360000154610a8b85600301548561136f90919063ffffffff16565b601e5490610bc3565b601e55815460018301546111119161110891610a8b90859061136f565b601f5490610bc3565b601f55815460028301546111379161112e91610a8b90859061136f565b60205490610bc3565b60205561114585308361145e565b505b505b61057383838361145e565b600081848411156111785760405162461bcd60e51b81526004016104e991906117bb565b50600061118584866119f4565b95945050505050565b6025805460ff60a81b1916600160a81b1790553060009081526002602052604081205490506000602054601f54601e546111c891906119ab565b6111d291906119ab565b90508115806111df575080155b156111eb575050611360565b6021546111f9906014611a0b565b8211156112115760215461120e906014611a0b565b91505b6000600282601e54856112249190611a0b565b61122e9190611a2a565b6112389190611a2a565b90506000611246848361141c565b90504761125282611523565b600061125e478361141c565b9050600061127b86610a8b601f548561136f90919063ffffffff16565b9050600061129887610a8b6020548661136f90919063ffffffff16565b90506000816112a784866119f4565b6112b191906119f4565b6000601e819055601f81905560208190556023546040519293506001600160a01b03169184156108fc0291859190818181858888f193505050501580156112fc573d6000803e3d6000fd5b5060008711801561130d5750600081115b1561131c5761131c878261168c565b6022546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611355573d6000803e3d6000fd5b505050505050505050505b6025805460ff60a81b19169055565b60008261137e5750600061064e565b600061138a8385611a0b565b9050826113978583611a2a565b14610bbc5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104e9565b6000818361140f5760405162461bcd60e51b81526004016104e991906117bb565b5060006111858486611a2a565b6000610bbc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611154565b6001600160a01b038316600090815260026020526040902054611481908261141c565b6001600160a01b03808516600090815260026020818152604080842095909555601c546022548516845260038252858420308552825285842055928616825290915220546114cf9082610bc3565b6001600160a01b0380841660008181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d239085815260200190565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611558576115586119c3565b6001600160a01b03928316602091820292909201810191909152602454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156115ac57600080fd5b505afa1580156115c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e49190611a4c565b816001815181106115f7576115f76119c3565b6001600160a01b03928316602091820292909201015260245461161d9130911684610c22565b60245460405163791ac94760e01b81526001600160a01b039091169063791ac94790611656908590600090869030904290600401611a69565b600060405180830381600087803b15801561167057600080fd5b505af1158015611684573d6000803e3d6000fd5b505050505050565b6024546116a49030906001600160a01b031684610c22565b6024805460405163f305d71960e01b8152306004820152918201849052600060448301819052606483015261dead60848301524260a48301526001600160a01b03169063f305d71990839060c4016060604051808303818588803b15801561170b57600080fd5b505af115801561171f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117449190611ada565b5050505050565b60008060006060848603121561176057600080fd5b505081359360208301359350604090920135919050565b6001600160a01b038116811461178c57600080fd5b50565b600080604083850312156117a257600080fd5b82356117ad81611777565b946020939093013593505050565b600060208083528351808285015260005b818110156117e8578581018301518582016040015282016117cc565b818111156117fa576000604083870101525b50601f01601f1916929092016040019392505050565b60008060006060848603121561182557600080fd5b833561183081611777565b9250602084013561184081611777565b929592945050506040919091013590565b60006020828403121561186357600080fd5b8135610bbc81611777565b6000806020838503121561188157600080fd5b823567ffffffffffffffff8082111561189957600080fd5b818501915085601f8301126118ad57600080fd5b8135818111156118bc57600080fd5b8660208260051b85010111156118d157600080fd5b60209290920196919550909350505050565b600080604083850312156118f657600080fd5b50508035926020909101359150565b6000806040838503121561191857600080fd5b823561192381611777565b9150602083013561193381611777565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561198557600080fd5b81518015158114610bbc57600080fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156119be576119be611995565b500190565b634e487b7160e01b600052603260045260246000fd5b60006000198214156119ed576119ed611995565b5060010190565b600082821015611a0657611a06611995565b500390565b6000816000190483118215151615611a2557611a25611995565b500290565b600082611a4757634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611a5e57600080fd5b8151610bbc81611777565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ab95784516001600160a01b031683529383019391830191600101611a94565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611aef57600080fd5b835192506020840151915060408401519050925092509256fe7472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209c88dc627c1bd259a16ddcdf6bd2b3e7cbfbd632b926753379d9abf746223d0964736f6c63430008080033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c8063809d458d116100b6578063a0a485ca1161006f578063a0a485ca146103d9578063a2240e19146103f9578063a9059cbb14610419578063aacebbe314610439578063dd62ed3e14610459578063f2fde38b1461049f57600080fd5b8063809d458d1461031a5780638a8c523c1461033a5780638da5cb5b1461034f57806392f428701461036d57806395d89b411461038d578063962dfc75146103b957600080fd5b8063269d1faa11610108578063269d1faa14610251578063313ce5671461028957806351bc3c85146102a557806370a08231146102ba578063715018a6146102f0578063751039fc1461030557600080fd5b806305f936501461015b578063069c9fae1461017d57806306fdde031461019d578063095ea7b3146101e257806318160ddd1461021257806323b872dd1461023157600080fd5b3661015657005b600080fd5b34801561016757600080fd5b5061017b61017636600461174b565b6104bf565b005b34801561018957600080fd5b5061017b61019836600461178f565b610578565b3480156101a957600080fd5b5060408051808201909152600a8152694d696e6520537061636560b01b60208201525b6040516101d991906117bb565b60405180910390f35b3480156101ee57600080fd5b506102026101fd36600461178f565b61063d565b60405190151581526020016101d9565b34801561021e57600080fd5b506007545b6040519081526020016101d9565b34801561023d57600080fd5b5061020261024c366004611810565b610654565b34801561025d57600080fd5b50602354610271906001600160a01b031681565b6040516001600160a01b0390911681526020016101d9565b34801561029557600080fd5b50604051601281526020016101d9565b3480156102b157600080fd5b5061017b6106bd565b3480156102c657600080fd5b506102236102d5366004611851565b6001600160a01b031660009081526002602052604090205490565b3480156102fc57600080fd5b5061017b6106f1565b34801561031157600080fd5b5061017b610765565b34801561032657600080fd5b5061017b610335366004611851565b61079c565b34801561034657600080fd5b5061017b6107d5565b34801561035b57600080fd5b506000546001600160a01b0316610271565b34801561037957600080fd5b5061017b61038836600461186e565b61088e565b34801561039957600080fd5b506040805180820190915260038152624d534360e81b60208201526101cc565b3480156103c557600080fd5b50602254610271906001600160a01b031681565b3480156103e557600080fd5b5061017b6103f436600461174b565b61092a565b34801561040557600080fd5b5061017b6104143660046118e3565b6109c5565b34801561042557600080fd5b5061020261043436600461178f565b610aaf565b34801561044557600080fd5b5061017b610454366004611851565b610abc565b34801561046557600080fd5b50610223610474366004611905565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156104ab57600080fd5b5061017b6104ba366004611851565b610af5565b6000546001600160a01b031633146104f25760405162461bcd60e51b81526004016104e99061193e565b60405180910390fd5b600b8190556009839055600a8290556105158261050f8584610bc3565b90610bc3565b60088190556064116105735760405162461bcd60e51b815260206004820152602160248201527f53656c6c207461782063616e206e6f742067726561746572207468616e2031306044820152602560f81b60648201526084016104e9565b505050565b6023546001600160a01b0316331461058f57600080fd5b6025546001600160a01b03838116911614156105aa57600080fd5b6022546040516323b872dd60e01b81526001600160a01b0391821660048201523060248201526044810183905283918216906323b872dd90606401602060405180830381600087803b1580156105ff57600080fd5b505af1158015610613573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106379190611973565b50505050565b600061064a338484610c22565b5060015b92915050565b6000610661848484610d30565b6106b384336106ae85604051806060016040528060218152602001611b09602191396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611154565b610c22565b5060019392505050565b6000546001600160a01b031633146106e75760405162461bcd60e51b81526004016104e99061193e565b6106ef61118e565b565b6000546001600160a01b0316331461071b5760405162461bcd60e51b81526004016104e99061193e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461078f5760405162461bcd60e51b81526004016104e99061193e565b600754601c819055601d55565b6023546001600160a01b031633146107b357600080fd5b602380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146107ff5760405162461bcd60e51b81526004016104e99061193e565b602554600160a01b900460ff16156108595760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104e9565b6025805462ff00ff60a01b19166201000160a01b17905561087b4260786119ab565b6005556108894360026119ab565b600655565b6000546001600160a01b031633146108b85760405162461bcd60e51b81526004016104e99061193e565b60005b81811015610573576001600460008585858181106108db576108db6119c3565b90506020020160208101906108f09190611851565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610922816119d9565b9150506108bb565b6000546001600160a01b031633146109545760405162461bcd60e51b81526004016104e99061193e565b600f819055600d839055600e8290556109718261050f8584610bc3565b600c8190556064116105735760405162461bcd60e51b815260206004820181905260248201527f427579207461782063616e206e6f742067726561746572207468616e2031302560448201526064016104e9565b6000546001600160a01b031633146109ef5760405162461bcd60e51b81526004016104e99061193e565b6001821180156109ff5750600181115b610a715760405162461bcd60e51b815260206004820152603e60248201527f4d61782077616c6c657420616e64206d6178207472616e736374696f6e206c6960448201527f6d6974732073686f756c642062652067726561746572207468616e203125000060648201526084016104e9565b610a916064610a8b8460075461136f90919063ffffffff16565b90610b7a565b601c55600754610aa890606490610a8b908461136f565b601d555050565b600061064a338484610d30565b6022546001600160a01b03163314610ad357600080fd5b602280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610b1f5760405162461bcd60e51b81526004016104e99061193e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610bbc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113ee565b9392505050565b600080610bd083856119ab565b905083811015610bbc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104e9565b6001600160a01b038316610c785760405162461bcd60e51b815260206004820152601f60248201527f417070726f76696e672066726f6d20746865207a65726f20616464726573730060448201526064016104e9565b6001600160a01b038216610cce5760405162461bcd60e51b815260206004820152601d60248201527f417070726f76696e6720746f20746865207a65726f206164647265737300000060448201526064016104e9565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610d865760405162461bcd60e51b815260206004820152601e60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373000060448201526064016104e9565b6001600160a01b038216610ddc5760405162461bcd60e51b815260206004820152601c60248201527f5472616e7366657220746f20746865207a65726f20616464726573730000000060448201526064016104e9565b6000546001600160a01b03848116911614801590610e0857506000546001600160a01b03838116911614155b1561114957602554600160a01b900460ff16610e585760405162461bcd60e51b815260206004820152600f60248201526e74726164696e6720213d207472756560881b60448201526064016104e9565b6001600160a01b03821660009081526004602052604090205460109060ff16610f7157601d546001600160a01b038416600090815260026020526040902054610ea29084906119ab565b1115610ee35760405162461bcd60e51b815260206004820152601060248201526f13585e0815d85b1b195d08131a5b5a5d60821b60448201526064016104e9565b601c54821115610f2a5760405162461bcd60e51b815260206004820152601260248201527113585e08151e105b5bdd5b9d08131a5b5a5d60721b60448201526064016104e9565b6025546001600160a01b038581169116148015610f5557506024546001600160a01b03848116911614155b15610f5e5750600c5b436006541115610f6c575060145b611001565b6025546001600160a01b038481169116148015610f9c57506024546001600160a01b03858116911614155b8015610fc157506001600160a01b03841660009081526004602052604090205460ff16155b8015610fe657506001600160a01b03831660009081526004602052604090205460ff16155b1561100157600554421115610ffd57506008611001565b5060185b602554600160a81b900460ff1615801561102957506025546001600160a01b03858116911614155b801561103e5750602554600160b01b900460ff165b801561106357506001600160a01b03841660009081526004602052604090205460ff16155b801561107f575060215430600090815260026020526040902054115b1561108c5761108c61118e565b8054156111475760006110b26103e8610a8b84600001548661136f90919063ffffffff16565b90506110be838261141c565b92506110eb6110e28360000154610a8b85600301548561136f90919063ffffffff16565b601e5490610bc3565b601e55815460018301546111119161110891610a8b90859061136f565b601f5490610bc3565b601f55815460028301546111379161112e91610a8b90859061136f565b60205490610bc3565b60205561114585308361145e565b505b505b61057383838361145e565b600081848411156111785760405162461bcd60e51b81526004016104e991906117bb565b50600061118584866119f4565b95945050505050565b6025805460ff60a81b1916600160a81b1790553060009081526002602052604081205490506000602054601f54601e546111c891906119ab565b6111d291906119ab565b90508115806111df575080155b156111eb575050611360565b6021546111f9906014611a0b565b8211156112115760215461120e906014611a0b565b91505b6000600282601e54856112249190611a0b565b61122e9190611a2a565b6112389190611a2a565b90506000611246848361141c565b90504761125282611523565b600061125e478361141c565b9050600061127b86610a8b601f548561136f90919063ffffffff16565b9050600061129887610a8b6020548661136f90919063ffffffff16565b90506000816112a784866119f4565b6112b191906119f4565b6000601e819055601f81905560208190556023546040519293506001600160a01b03169184156108fc0291859190818181858888f193505050501580156112fc573d6000803e3d6000fd5b5060008711801561130d5750600081115b1561131c5761131c878261168c565b6022546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611355573d6000803e3d6000fd5b505050505050505050505b6025805460ff60a81b19169055565b60008261137e5750600061064e565b600061138a8385611a0b565b9050826113978583611a2a565b14610bbc5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104e9565b6000818361140f5760405162461bcd60e51b81526004016104e991906117bb565b5060006111858486611a2a565b6000610bbc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611154565b6001600160a01b038316600090815260026020526040902054611481908261141c565b6001600160a01b03808516600090815260026020818152604080842095909555601c546022548516845260038252858420308552825285842055928616825290915220546114cf9082610bc3565b6001600160a01b0380841660008181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d239085815260200190565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611558576115586119c3565b6001600160a01b03928316602091820292909201810191909152602454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156115ac57600080fd5b505afa1580156115c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e49190611a4c565b816001815181106115f7576115f76119c3565b6001600160a01b03928316602091820292909201015260245461161d9130911684610c22565b60245460405163791ac94760e01b81526001600160a01b039091169063791ac94790611656908590600090869030904290600401611a69565b600060405180830381600087803b15801561167057600080fd5b505af1158015611684573d6000803e3d6000fd5b505050505050565b6024546116a49030906001600160a01b031684610c22565b6024805460405163f305d71960e01b8152306004820152918201849052600060448301819052606483015261dead60848301524260a48301526001600160a01b03169063f305d71990839060c4016060604051808303818588803b15801561170b57600080fd5b505af115801561171f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117449190611ada565b5050505050565b60008060006060848603121561176057600080fd5b505081359360208301359350604090920135919050565b6001600160a01b038116811461178c57600080fd5b50565b600080604083850312156117a257600080fd5b82356117ad81611777565b946020939093013593505050565b600060208083528351808285015260005b818110156117e8578581018301518582016040015282016117cc565b818111156117fa576000604083870101525b50601f01601f1916929092016040019392505050565b60008060006060848603121561182557600080fd5b833561183081611777565b9250602084013561184081611777565b929592945050506040919091013590565b60006020828403121561186357600080fd5b8135610bbc81611777565b6000806020838503121561188157600080fd5b823567ffffffffffffffff8082111561189957600080fd5b818501915085601f8301126118ad57600080fd5b8135818111156118bc57600080fd5b8660208260051b85010111156118d157600080fd5b60209290920196919550909350505050565b600080604083850312156118f657600080fd5b50508035926020909101359150565b6000806040838503121561191857600080fd5b823561192381611777565b9150602083013561193381611777565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561198557600080fd5b81518015158114610bbc57600080fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156119be576119be611995565b500190565b634e487b7160e01b600052603260045260246000fd5b60006000198214156119ed576119ed611995565b5060010190565b600082821015611a0657611a06611995565b500390565b6000816000190483118215151615611a2557611a25611995565b500290565b600082611a4757634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611a5e57600080fd5b8151610bbc81611777565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ab95784516001600160a01b031683529383019391830191600101611a94565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611aef57600080fd5b835192506020840151915060408401519050925092509256fe7472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209c88dc627c1bd259a16ddcdf6bd2b3e7cbfbd632b926753379d9abf746223d0964736f6c63430008080033

Deployed Bytecode Sourcemap

4309:12272:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9083:390;;;;;;;;;;-1:-1:-1;9083:390:0;;;;;:::i;:::-;;:::i;:::-;;10052:295;;;;;;;;;;-1:-1:-1;10052:295:0;;;;;:::i;:::-;;:::i;6815:83::-;;;;;;;;;;-1:-1:-1;6885:5:0;;;;;;;;;;;;-1:-1:-1;;;6885:5:0;;;;6815:83;;;;;;;:::i;:::-;;;;;;;;7726:193;;;;;;;;;;-1:-1:-1;7726:193:0;;;;;:::i;:::-;;:::i;:::-;;;1558:14:1;;1551:22;1533:41;;1521:2;1506:18;7726:193:0;1393:187:1;7092:100:0;;;;;;;;;;-1:-1:-1;7172:12:0;;7092:100;;;1731:25:1;;;1719:2;1704:18;7092:100:0;1585:177:1;7927:439:0;;;;;;;;;;-1:-1:-1;7927:439:0;;;;;:::i;:::-;;:::i;5692:30::-;;;;;;;;;;-1:-1:-1;5692:30:0;;;;-1:-1:-1;;;;;5692:30:0;;;;;;-1:-1:-1;;;;;2392:32:1;;;2374:51;;2362:2;2347:18;5692:30:0;2228:203:1;7001:83:0;;;;;;;;;;-1:-1:-1;7001:83:0;;5318:2;2578:36:1;;2566:2;2551:18;7001:83:0;2436:184:1;16508:70:0;;;;;;;;;;;;;:::i;7200:119::-;;;;;;;;;;-1:-1:-1;7200:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;7293:18:0;7266:7;7293:18;;;:9;:18;;;;;;;7200:119;3261:148;;;;;;;;;;;;;:::i;9913:131::-;;;;;;;;;;;;;:::i;8374:149::-;;;;;;;;;;-1:-1:-1;8374:149:0;;;;;:::i;:::-;;:::i;16249:251::-;;;;;;;;;;;;;:::i;2876:79::-;;;;;;;;;;-1:-1:-1;2914:7:0;2941:6;-1:-1:-1;;;;;2941:6:0;2876:79;;10355:178;;;;;;;;;;-1:-1:-1;10355:178:0;;;;;:::i;:::-;;:::i;6906:87::-;;;;;;;;;;-1:-1:-1;6978:7:0;;;;;;;;;;;;-1:-1:-1;;;6978:7:0;;;;6906:87;;5654:31;;;;;;;;;;-1:-1:-1;5654:31:0;;;;-1:-1:-1;;;;;5654:31:0;;;8692:383;;;;;;;;;;-1:-1:-1;8692:383:0;;;;;:::i;:::-;;:::i;9481:424::-;;;;;;;;;;-1:-1:-1;9481:424:0;;;;;:::i;:::-;;:::i;7327:199::-;;;;;;;;;;-1:-1:-1;7327:199:0;;;;;:::i;:::-;;:::i;8531:153::-;;;;;;;;;;-1:-1:-1;8531:153:0;;;;;:::i;:::-;;:::i;7534:184::-;;;;;;;;;;-1:-1:-1;7534:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7683:18:0;;;7651:7;7683:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7534:184;3090:163;;;;;;;;;;-1:-1:-1;3090:163:0;;;;;:::i;:::-;;:::i;9083:390::-;3003:6;;-1:-1:-1;;;;;3003:6:0;459:10;3003:22;2995:67;;;;-1:-1:-1;;;2995:67:0;;;;;;;:::i;:::-;;;;;;;;;9222:12;:18;;;9251:19;:32;;;9294:18;:30;;;9353:34:::1;9315:9:::0;9353:19:::1;9273:10:::0;9237:3;9353:14:::1;:19::i;:::-;:23:::0;::::1;:34::i;:::-;9335:7;:52:::0;;;9424:3:::1;-1:-1:-1::0;9398:67:0::1;;;::::0;-1:-1:-1;;;9398:67:0;;4706:2:1;9398:67:0::1;::::0;::::1;4688:21:1::0;4745:2;4725:18;;;4718:30;4784:34;4764:18;;;4757:62;-1:-1:-1;;;4835:18:1;;;4828:31;4876:19;;9398:67:0::1;4504:397:1::0;9398:67:0::1;9083:390:::0;;;:::o;10052:295::-;10152:15;;-1:-1:-1;;;;;10152:15:0;10138:10;:29;10130:38;;;;;;10203:20;;-1:-1:-1;;;;;10187:36:0;;;10203:20;;10187:36;;10179:45;;;;;;10302:16;;10282:57;;-1:-1:-1;;;10282:57:0;;-1:-1:-1;;;;;10302:16:0;;;10282:57;;;5146:34:1;10328:4:0;5196:18:1;;;5189:43;5248:18;;;5241:34;;;10258:12:0;;10282:19;;;;;5081:18:1;;10282:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10119:228;10052:295;;:::o;7726:193::-;7828:4;7850:39;459:10;7873:7;7882:6;7850:8;:39::i;:::-;-1:-1:-1;7907:4:0;7726:193;;;;;:::o;7927:439::-;8059:4;8076:36;8086:6;8094:9;8105:6;8076:9;:36::i;:::-;8123:213;8146:6;459:10;8194:131;8250:6;8194:131;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8194:19:0;;;;;;:11;:19;;;;;;;;459:10;8194:33;;;;;;;;;;:37;:131::i;:::-;8123:8;:213::i;:::-;-1:-1:-1;8354:4:0;7927:439;;;;;:::o;16508:70::-;3003:6;;-1:-1:-1;;;;;3003:6:0;459:10;3003:22;2995:67;;;;-1:-1:-1;;;2995:67:0;;;;;;;:::i;:::-;16560:10:::1;:8;:10::i;:::-;16508:70::o:0;3261:148::-;3003:6;;-1:-1:-1;;;;;3003:6:0;459:10;3003:22;2995:67;;;;-1:-1:-1;;;2995:67:0;;;;;;;:::i;:::-;3368:1:::1;3352:6:::0;;3331:40:::1;::::0;-1:-1:-1;;;;;3352:6:0;;::::1;::::0;3331:40:::1;::::0;3368:1;;3331:40:::1;3399:1;3382:19:::0;;-1:-1:-1;;;;;;3382:19:0::1;::::0;;3261:148::o;9913:131::-;3003:6;;-1:-1:-1;;;;;3003:6:0;459:10;3003:22;2995:67;;;;-1:-1:-1;;;2995:67:0;;;;;;;:::i;:::-;9982:12:::1;::::0;9967::::1;:27:::0;;;10005:16:::1;:31:::0;9913:131::o;8374:149::-;8463:15;;-1:-1:-1;;;;;8463:15:0;8449:10;:29;8441:38;;;;;;8490:15;:25;;-1:-1:-1;;;;;;8490:25:0;-1:-1:-1;;;;;8490:25:0;;;;;;;;;;8374:149::o;16249:251::-;3003:6;;-1:-1:-1;;;;;3003:6:0;459:10;3003:22;2995:67;;;;-1:-1:-1;;;2995:67:0;;;;;;;:::i;:::-;16313:11:::1;::::0;-1:-1:-1;;;16313:11:0;::::1;;;16312:12;16304:48;;;::::0;-1:-1:-1;;;16304:48:0;;5770:2:1;16304:48:0::1;::::0;::::1;5752:21:1::0;5809:2;5789:18;;;5782:30;5848:25;5828:18;;;5821:53;5891:18;;16304:48:0::1;5568:347:1::0;16304:48:0::1;16363:11;:18:::0;;-1:-1:-1;;;;16392:18:0;-1:-1:-1;;;16392:18:0;;;16428:29:::1;:15;16447:9;16428:29;:::i;:::-;16421:4;:36:::0;16476:16:::1;:12;16491:1;16476:16;:::i;:::-;16468:5;:24:::0;16249:251::o;10355:178::-;3003:6;;-1:-1:-1;;;;;3003:6:0;459:10;3003:22;2995:67;;;;-1:-1:-1;;;2995:67:0;;;;;;;:::i;:::-;10442:9:::1;10437:88;10457:17:::0;;::::1;10437:88;;;10521:4;10494:13;:24;10508:6;;10515:1;10508:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10494:24:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;10494:24:0;:31;;-1:-1:-1;;10494:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10476:3;::::1;::::0;::::1;:::i;:::-;;;;10437:88;;8692:383:::0;3003:6;;-1:-1:-1;;;;;3003:6:0;459:10;3003:22;2995:67;;;;-1:-1:-1;;;2995:67:0;;;;;;;:::i;:::-;8830:11;:17;;;8858:18;:31;;;8900:17;:29;;;8957:34:::1;8920:9:::0;8957:19:::1;8879:10:::0;8844:3;8957:14:::1;:19::i;:34::-;8940:6;:51:::0;;;9027:3:::1;-1:-1:-1::0;9002:65:0::1;;;::::0;-1:-1:-1;;;9002:65:0;;6659:2:1;9002:65:0::1;::::0;::::1;6641:21:1::0;;;6678:18;;;6671:30;6737:34;6717:18;;;6710:62;6789:18;;9002:65:0::1;6457:356:1::0;9481:424:0;3003:6;;-1:-1:-1;;;;;3003:6:0;459:10;3003:22;2995:67;;;;-1:-1:-1;;;2995:67:0;;;;;;;:::i;:::-;9647:1:::1;9627:17;:21;:41;;;;;9667:1;9652:12;:16;9627:41;9605:153;;;::::0;-1:-1:-1;;;9605:153:0;;7020:2:1;9605:153:0::1;::::0;::::1;7002:21:1::0;7059:2;7039:18;;;7032:30;7098:34;7078:18;;;7071:62;7169:32;7149:18;;;7142:60;7219:19;;9605:153:0::1;6818:426:1::0;9605:153:0::1;9784:44;9824:3;9784:35;9801:17;9784:12;;:16;;:35;;;;:::i;:::-;:39:::0;::::1;:44::i;:::-;9769:12;:59:::0;9858:12:::1;::::0;:39:::1;::::0;9893:3:::1;::::0;9858:30:::1;::::0;9875:12;9858:16:::1;:30::i;:39::-;9839:16;:58:::0;-1:-1:-1;;9481:424:0:o;7327:199::-;7432:4;7454:42;459:10;7478:9;7489:6;7454:9;:42::i;8531:153::-;8622:16;;-1:-1:-1;;;;;8622:16:0;8608:10;:30;8600:39;;;;;;8650:16;:26;;-1:-1:-1;;;;;;8650:26:0;-1:-1:-1;;;;;8650:26:0;;;;;;;;;;8531:153::o;3090:163::-;3003:6;;-1:-1:-1;;;;;3003:6:0;459:10;3003:22;2995:67;;;;-1:-1:-1;;;2995:67:0;;;;;;;:::i;:::-;3198:6:::1;::::0;;3177:39:::1;::::0;-1:-1:-1;;;;;3177:39:0;;::::1;::::0;3198:6;::::1;::::0;3177:39:::1;::::0;::::1;3227:6;:18:::0;;-1:-1:-1;;;;;;3227:18:0::1;-1:-1:-1::0;;;;;3227:18:0;;;::::1;::::0;;;::::1;::::0;;3090:163::o;2127:132::-;2185:7;2212:39;2216:1;2219;2212:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2205:46;2127:132;-1:-1:-1;;;2127:132:0:o;1310:179::-;1368:7;;1400:5;1404:1;1400;:5;:::i;:::-;1388:17;;1429:1;1424;:6;;1416:46;;;;-1:-1:-1;;;1416:46:0;;7451:2:1;1416:46:0;;;7433:21:1;7490:2;7470:18;;;7463:30;7529:29;7509:18;;;7502:57;7576:18;;1416:46:0;7249:351:1;10541:359:0;-1:-1:-1;;;;;10668:19:0;;10660:63;;;;-1:-1:-1;;;10660:63:0;;7807:2:1;10660:63:0;;;7789:21:1;7846:2;7826:18;;;7819:30;7885:33;7865:18;;;7858:61;7936:18;;10660:63:0;7605:355:1;10660:63:0;-1:-1:-1;;;;;10742:21:0;;10734:63;;;;-1:-1:-1;;;10734:63:0;;8167:2:1;10734:63:0;;;8149:21:1;8206:2;8186:18;;;8179:30;8245:31;8225:18;;;8218:59;8294:18;;10734:63:0;7965:353:1;10734:63:0;-1:-1:-1;;;;;10808:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10860:32;;1731:25:1;;;10860:32:0;;1704:18:1;10860:32:0;;;;;;;;10541:359;;;:::o;10908:2415::-;-1:-1:-1;;;;;11030:18:0;;11022:61;;;;-1:-1:-1;;;11022:61:0;;8525:2:1;11022:61:0;;;8507:21:1;8564:2;8544:18;;;8537:30;8603:32;8583:18;;;8576:60;8653:18;;11022:61:0;8323:354:1;11022:61:0;-1:-1:-1;;;;;11102:16:0;;11094:57;;;;-1:-1:-1;;;11094:57:0;;8884:2:1;11094:57:0;;;8866:21:1;8923:2;8903:18;;;8896:30;8962;8942:18;;;8935:58;9010:18;;11094:57:0;8682:352:1;11094:57:0;2914:7;2941:6;-1:-1:-1;;;;;11168:15:0;;;2941:6;;11168:15;;;;:32;;-1:-1:-1;2914:7:0;2941:6;-1:-1:-1;;;;;11187:13:0;;;2941:6;;11187:13;;11168:32;11164:2104;;;11225:11;;-1:-1:-1;;;11225:11:0;;;;11217:39;;;;-1:-1:-1;;;11217:39:0;;9241:2:1;11217:39:0;;;9223:21:1;9280:2;9260:18;;;9253:30;-1:-1:-1;;;9299:18:1;;;9292:45;9354:18;;11217:39:0;9039:339:1;11217:39:0;-1:-1:-1;;;;;11325:17:0;;11273:25;11325:17;;;:13;:17;;;;;;11301:4;;11325:17;;11320:964;;11421:16;;-1:-1:-1;;;;;11394:13:0;;;;;;:9;:13;;;;;;:22;;11410:6;;11394:22;:::i;:::-;11393:44;;11363:134;;;;-1:-1:-1;;;11363:134:0;;9585:2:1;11363:134:0;;;9567:21:1;9624:2;9604:18;;;9597:30;-1:-1:-1;;;9643:18:1;;;9636:46;9699:18;;11363:134:0;9383:340:1;11363:134:0;11534:12;;11524:6;:22;;11516:53;;;;-1:-1:-1;;;11516:53:0;;9930:2:1;11516:53:0;;;9912:21:1;9969:2;9949:18;;;9942:30;-1:-1:-1;;;9988:18:1;;;9981:48;10046:18;;11516:53:0;9728:342:1;11516:53:0;11622:20;;-1:-1:-1;;;;;11614:28:0;;;11622:20;;11614:28;:83;;;;-1:-1:-1;11681:15:0;;-1:-1:-1;;;;;11667:30:0;;;11681:15;;11667:30;;11614:83;11588:185;;;-1:-1:-1;11747:6:0;11588:185;11803:12;11795:5;;:20;11791:86;;;-1:-1:-1;11847:10:0;11791:86;11320:964;;;11926:20;;-1:-1:-1;;;;;11920:26:0;;;11926:20;;11920:26;:79;;;;-1:-1:-1;11983:15:0;;-1:-1:-1;;;;;11967:32:0;;;11983:15;;11967:32;;11920:79;:120;;;;-1:-1:-1;;;;;;12021:19:0;;;;;;:13;:19;;;;;;;;12020:20;11920:120;:159;;;;-1:-1:-1;;;;;;12062:17:0;;;;;;:13;:17;;;;;;;;12061:18;11920:159;11898:386;;;12136:4;;12118:15;:22;12114:155;;;-1:-1:-1;12172:7:0;12114:155;;;-1:-1:-1;12235:14:0;12114:155;12323:6;;-1:-1:-1;;;12323:6:0;;;;12322:7;:56;;;;-1:-1:-1;12358:20:0;;-1:-1:-1;;;;;12350:28:0;;;12358:20;;12350:28;;12322:56;:88;;;;-1:-1:-1;12399:11:0;;-1:-1:-1;;;12399:11:0;;;;12322:88;:129;;;;-1:-1:-1;;;;;;12432:19:0;;;;;;:13;:19;;;;;;;;12431:20;12322:129;:187;;;;-1:-1:-1;12499:10:0;;12490:4;7266:7;7293:18;;;:9;:18;;;;;;12472:37;12322:187;12300:270;;;12544:10;:8;:10::i;:::-;12590:12;;:16;12586:671;;12627:13;12643:34;12672:4;12643:24;12654:4;:12;;;12643:6;:10;;:24;;;;:::i;:34::-;12627:50;-1:-1:-1;12705:17:0;:6;12627:50;12705:10;:17::i;:::-;12696:26;;12765:105;12813:38;12838:4;:12;;;12813:20;12823:4;:9;;;12813:5;:9;;:20;;;;:::i;:38::-;12765:21;;;:25;:105::i;:::-;12741:21;:129;12993:12;;12971:16;;;;12913:112;;12961:45;;:27;;:5;;:9;:27::i;:45::-;12913:21;;;:25;:112::i;:::-;12889:21;:136;13145:12;;13124:15;;;;13067:110;;13114:44;;:26;;:5;;:9;:26::i;:44::-;13067:20;;;:24;:110::i;:::-;13044:20;:133;13196:45;13214:4;13228;13235:5;13196:17;:45::i;:::-;12608:649;12586:671;11202:2066;11164:2104;13280:35;13298:4;13304:2;13308:6;13280:17;:35::i;1641:224::-;1761:7;1797:12;1789:6;;;;1781:29;;;;-1:-1:-1;;;1781:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1821:9:0;1833:5;1837:1;1833;:5;:::i;:::-;1821:17;1641:224;-1:-1:-1;;;;;1641:224:0:o;14184:1633::-;5967:6;:13;;-1:-1:-1;;;;5967:13:0;-1:-1:-1;;;5967:13:0;;;14284:4:::1;-1:-1:-1::0;7293:18:0;;;:9;:18;;;;;;14235:55:::1;;14301:25;14403:20;;14366:21;;14329;;:58;;;;:::i;:::-;:94;;;;:::i;:::-;14301:122:::0;-1:-1:-1;14440:25:0;;;:51:::1;;-1:-1:-1::0;14469:22:0;;14440:51:::1;14436:90;;;14508:7;;;;14436:90;14565:10;::::0;:15:::1;::::0;14578:2:::1;14565:15;:::i;:::-;14542:20;:38;14538:109;;;14620:10;::::0;:15:::1;::::0;14633:2:::1;14620:15;:::i;:::-;14597:38;;14538:109;14708:23;14842:1;14809:17;14771:21;;14735:20;:57;;;;:::i;:::-;14734:92;;;;:::i;:::-;:109;;;;:::i;:::-;14708:135:::0;-1:-1:-1;14854:26:0::1;14883:41;:20:::0;14708:135;14883:24:::1;:41::i;:::-;14854:70:::0;-1:-1:-1;14965:21:0::1;14999:36;14854:70:::0;14999:16:::1;:36::i;:::-;15048:18;15069:44;:21;15095:17:::0;15069:25:::1;:44::i;:::-;15048:65;;15126:23;15152:84;15208:17;15152:37;15167:21;;15152:10;:14;;:37;;;;:::i;:84::-;15126:110;;15249:22;15274:83;15329:17;15274:36;15289:20;;15274:10;:14;;:36;;;;:::i;:83::-;15249:108:::0;-1:-1:-1;15370:23:0::1;15249:108:::0;15396:28:::1;15409:15:::0;15396:10;:28:::1;:::i;:::-;:45;;;;:::i;:::-;15478:1;15454:21;:25:::0;;;15490:21:::1;:25:::0;;;15526:20:::1;:24:::0;;;15569:15:::1;::::0;15561:49:::1;::::0;15370:71;;-1:-1:-1;;;;;;15569:15:0::1;::::0;15561:49;::::1;;;::::0;15595:14;;15561:49;;15478:1;15561:49;15595:14;15569:15;15561:49;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15643:1;15625:15;:19;:42;;;;;15666:1;15648:15;:19;15625:42;15621:121;;;15684:46;15697:15;15714;15684:12;:46::i;:::-;15760:16;::::0;15752:57:::1;::::0;-1:-1:-1;;;;;15760:16:0;;::::1;::::0;15787:21:::1;15752:57:::0;::::1;;;::::0;15760:16:::1;15752:57:::0;15760:16;15752:57;15787:21;15760:16;15752:57;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14224:1593;;;;;;;;;5991:1;6003:6:::0;:14;;-1:-1:-1;;;;6003:14:0;;;14184:1633::o;1873:246::-;1931:7;1955:6;1951:47;;-1:-1:-1;1985:1:0;1978:8;;1951:47;2008:9;2020:5;2024:1;2020;:5;:::i;:::-;2008:17;-1:-1:-1;2053:1:0;2044:5;2048:1;2008:17;2044:5;:::i;:::-;:10;2036:56;;;;-1:-1:-1;;;2036:56:0;;10802:2:1;2036:56:0;;;10784:21:1;10841:2;10821:18;;;10814:30;10880:34;10860:18;;;10853:62;-1:-1:-1;;;10931:18:1;;;10924:31;10972:19;;2036:56:0;10600:397:1;2267:223:0;2387:7;2422:12;2415:5;2407:28;;;;-1:-1:-1;;;2407:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2446:9:0;2458:5;2462:1;2458;:5;:::i;1497:136::-;1555:7;1582:43;1586:1;1589;1582:43;;;;;;;;;;;;;;;;;:3;:43::i;15825:379::-;-1:-1:-1;;;;;15977:17:0;;;;;;:9;:17;;;;;;:30;;15999:7;15977:21;:30::i;:::-;-1:-1:-1;;;;;15957:17:0;;;;;;;:9;:17;;;;;;;;:50;;;;16065:12;;16030:16;;;;16018:29;;:11;:29;;;;;16056:4;16018:44;;;;;;;:59;16111:20;;;;;;;;;;:33;;16136:7;16111:24;:33::i;:::-;-1:-1:-1;;;;;16088:20:0;;;;;;;:9;:20;;;;;;;:56;;;;16160:36;;;;;;;;;;16188:7;1731:25:1;;1719:2;1704:18;;1585:177;13331:471:0;13421:16;;;13435:1;13421:16;;;;;;;;13397:21;;13421:16;;;;;;;;;;-1:-1:-1;13421:16:0;13397:40;;13466:4;13448;13453:1;13448:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13448:23:0;;;:7;;;;;;;;;;:23;;;;13492:15;;:22;;;-1:-1:-1;;;13492:22:0;;;;:15;;;;;:20;;:22;;;;;13448:7;;13492:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13482:4;13487:1;13482:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13482:32:0;;;:7;;;;;;;;;:32;13557:15;;13525:62;;13542:4;;13557:15;13575:11;13525:8;:62::i;:::-;13598:15;;:196;;-1:-1:-1;;;13598:196:0;;-1:-1:-1;;;;;13598:15:0;;;;:66;;:196;;13679:11;;13598:15;;13721:4;;13748;;13768:15;;13598:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13386:416;13331:471;:::o;13810:366::-;13922:15;;13890:62;;13907:4;;-1:-1:-1;;;;;13922:15:0;13940:11;13890:8;:62::i;:::-;13963:15;;;:205;;-1:-1:-1;;;13963:205:0;;14034:4;13963:205;;;12716:34:1;12766:18;;;12759:34;;;13963:15:0;12809:18:1;;;12802:34;;;12852:18;;;12845:34;14120:6:0;12895:19:1;;;12888:44;14142:15:0;12948:19:1;;;12941:35;-1:-1:-1;;;;;13963:15:0;;:31;;14002:8;;12650:19:1;;13963:205:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13810:366;;:::o;14:316:1:-;91:6;99;107;160:2;148:9;139:7;135:23;131:32;128:52;;;176:1;173;166:12;128:52;-1:-1:-1;;199:23:1;;;269:2;254:18;;241:32;;-1:-1:-1;320:2:1;305:18;;;292:32;;14:316;-1:-1:-1;14:316:1:o;335:131::-;-1:-1:-1;;;;;410:31:1;;400:42;;390:70;;456:1;453;446:12;390:70;335:131;:::o;471:315::-;539:6;547;600:2;588:9;579:7;575:23;571:32;568:52;;;616:1;613;606:12;568:52;655:9;642:23;674:31;699:5;674:31;:::i;:::-;724:5;776:2;761:18;;;;748:32;;-1:-1:-1;;;471:315:1:o;791:597::-;903:4;932:2;961;950:9;943:21;993:6;987:13;1036:6;1031:2;1020:9;1016:18;1009:34;1061:1;1071:140;1085:6;1082:1;1079:13;1071:140;;;1180:14;;;1176:23;;1170:30;1146:17;;;1165:2;1142:26;1135:66;1100:10;;1071:140;;;1229:6;1226:1;1223:13;1220:91;;;1299:1;1294:2;1285:6;1274:9;1270:22;1266:31;1259:42;1220:91;-1:-1:-1;1372:2:1;1351:15;-1:-1:-1;;1347:29:1;1332:45;;;;1379:2;1328:54;;791:597;-1:-1:-1;;;791:597:1:o;1767:456::-;1844:6;1852;1860;1913:2;1901:9;1892:7;1888:23;1884:32;1881:52;;;1929:1;1926;1919:12;1881:52;1968:9;1955:23;1987:31;2012:5;1987:31;:::i;:::-;2037:5;-1:-1:-1;2094:2:1;2079:18;;2066:32;2107:33;2066:32;2107:33;:::i;:::-;1767:456;;2159:7;;-1:-1:-1;;;2213:2:1;2198:18;;;;2185:32;;1767:456::o;2625:247::-;2684:6;2737:2;2725:9;2716:7;2712:23;2708:32;2705:52;;;2753:1;2750;2743:12;2705:52;2792:9;2779:23;2811:31;2836:5;2811:31;:::i;2877:615::-;2963:6;2971;3024:2;3012:9;3003:7;2999:23;2995:32;2992:52;;;3040:1;3037;3030:12;2992:52;3080:9;3067:23;3109:18;3150:2;3142:6;3139:14;3136:34;;;3166:1;3163;3156:12;3136:34;3204:6;3193:9;3189:22;3179:32;;3249:7;3242:4;3238:2;3234:13;3230:27;3220:55;;3271:1;3268;3261:12;3220:55;3311:2;3298:16;3337:2;3329:6;3326:14;3323:34;;;3353:1;3350;3343:12;3323:34;3406:7;3401:2;3391:6;3388:1;3384:14;3380:2;3376:23;3372:32;3369:45;3366:65;;;3427:1;3424;3417:12;3366:65;3458:2;3450:11;;;;;3480:6;;-1:-1:-1;2877:615:1;;-1:-1:-1;;;;2877:615:1:o;3497:248::-;3565:6;3573;3626:2;3614:9;3605:7;3601:23;3597:32;3594:52;;;3642:1;3639;3632:12;3594:52;-1:-1:-1;;3665:23:1;;;3735:2;3720:18;;;3707:32;;-1:-1:-1;3497:248:1:o;3750:388::-;3818:6;3826;3879:2;3867:9;3858:7;3854:23;3850:32;3847:52;;;3895:1;3892;3885:12;3847:52;3934:9;3921:23;3953:31;3978:5;3953:31;:::i;:::-;4003:5;-1:-1:-1;4060:2:1;4045:18;;4032:32;4073:33;4032:32;4073:33;:::i;:::-;4125:7;4115:17;;;3750:388;;;;;:::o;4143:356::-;4345:2;4327:21;;;4364:18;;;4357:30;4423:34;4418:2;4403:18;;4396:62;4490:2;4475:18;;4143:356::o;5286:277::-;5353:6;5406:2;5394:9;5385:7;5381:23;5377:32;5374:52;;;5422:1;5419;5412:12;5374:52;5454:9;5448:16;5507:5;5500:13;5493:21;5486:5;5483:32;5473:60;;5529:1;5526;5519:12;5920:127;5981:10;5976:3;5972:20;5969:1;5962:31;6012:4;6009:1;6002:15;6036:4;6033:1;6026:15;6052:128;6092:3;6123:1;6119:6;6116:1;6113:13;6110:39;;;6129:18;;:::i;:::-;-1:-1:-1;6165:9:1;;6052:128::o;6185:127::-;6246:10;6241:3;6237:20;6234:1;6227:31;6277:4;6274:1;6267:15;6301:4;6298:1;6291:15;6317:135;6356:3;-1:-1:-1;;6377:17:1;;6374:43;;;6397:18;;:::i;:::-;-1:-1:-1;6444:1:1;6433:13;;6317:135::o;10075:125::-;10115:4;10143:1;10140;10137:8;10134:34;;;10148:18;;:::i;:::-;-1:-1:-1;10185:9:1;;10075:125::o;10205:168::-;10245:7;10311:1;10307;10303:6;10299:14;10296:1;10293:21;10288:1;10281:9;10274:17;10270:45;10267:71;;;10318:18;;:::i;:::-;-1:-1:-1;10358:9:1;;10205:168::o;10378:217::-;10418:1;10444;10434:132;;10488:10;10483:3;10479:20;10476:1;10469:31;10523:4;10520:1;10513:15;10551:4;10548:1;10541:15;10434:132;-1:-1:-1;10580:9:1;;10378:217::o;11134:251::-;11204:6;11257:2;11245:9;11236:7;11232:23;11228:32;11225:52;;;11273:1;11270;11263:12;11225:52;11305:9;11299:16;11324:31;11349:5;11324:31;:::i;11390:980::-;11652:4;11700:3;11689:9;11685:19;11731:6;11720:9;11713:25;11757:2;11795:6;11790:2;11779:9;11775:18;11768:34;11838:3;11833:2;11822:9;11818:18;11811:31;11862:6;11897;11891:13;11928:6;11920;11913:22;11966:3;11955:9;11951:19;11944:26;;12005:2;11997:6;11993:15;11979:29;;12026:1;12036:195;12050:6;12047:1;12044:13;12036:195;;;12115:13;;-1:-1:-1;;;;;12111:39:1;12099:52;;12206:15;;;;12171:12;;;;12147:1;12065:9;12036:195;;;-1:-1:-1;;;;;;;12287:32:1;;;;12282:2;12267:18;;12260:60;-1:-1:-1;;;12351:3:1;12336:19;12329:35;12248:3;11390:980;-1:-1:-1;;;11390:980:1:o;12987:306::-;13075:6;13083;13091;13144:2;13132:9;13123:7;13119:23;13115:32;13112:52;;;13160:1;13157;13150:12;13112:52;13189:9;13183:16;13173:26;;13239:2;13228:9;13224:18;13218:25;13208:35;;13283:2;13272:9;13268:18;13262:25;13252:35;;12987:306;;;;;:::o

Swarm Source

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