ETH Price: $3,420.10 (+1.13%)
Gas: 4 Gwei

Token

ERC20 ***
 

Overview

Max Total Supply

1,000,000,000 ERC20 ***

Holders

99

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
15,841,834.509780535347813688 ERC20 ***

Value
$0.00
0x4c40836964e2b35f578e20aff57ca42b080c1ae7
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:
DIP

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-20
*/

/**

Website:  https://www.daiprotocol.com
Twitter: https://twitter.com/DaiProtocol
Telegram:  https://t.me/Dai_Protocol

*/

// SPDX-License-Identifier:MIT
pragma solidity ^0.8.10;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

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


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


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

    function WETH() external pure returns (address);

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

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

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

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

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

    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 = payable(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;
    }
}

contract DIP is Context, IERC20, Ownable {
    string private _name = "DAI Protocol";
    string private _symbol = "DIP";
    uint8 private _decimals = 18;
    uint256 private _totalSupply = 1_000_000_000 * 1e18;

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

    mapping(address => bool) public _excludedFromFee;
    mapping(address => bool) public _excludedFromMax;
    mapping(address => bool) public _excludedFromMaxTxn;
    mapping(address => bool) public _excludedFromMaxWallet;

    uint256 public minTokenToSwap = 7 * (_totalSupply / 1000000);
    uint256 public maxWalletLimit = 2 * (_totalSupply / 100); 
    uint256 public maxTxnLimit = 2 * (_totalSupply / 100); 
    uint256 public percentDivider = 100;
    uint256 public launchedAt;

    bool public swapAndLiquifyStatus = false; 
    bool public feeStatus = false; 
    bool public tradingEnabled = false; 

    IUniswapRouter public uniswapRouter; 

    address public routerPair; 
    address public teamWallet; 
    address private constant DEAD = address(0xdead);
    address private constant ZERO = address(0);

    uint256 public FeeOnBuying = 24;
    uint256 public FeeOnSelling = 24;

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    constructor() {
        _balances[owner()] = _totalSupply;
        teamWallet = payable(0x8C9234B27a400A58914B8f68C17A3C95a207660D);

        uniswapRouter = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _excludedFromFee[address(uniswapRouter)] = true;
        _excludedFromMaxTxn[address(uniswapRouter)] = true;
        _excludedFromMaxWallet[address(uniswapRouter)] = true;

        _excludedFromFee[owner()] = true;
        _excludedFromFee[address(this)] = true;
        _excludedFromMax[teamWallet] = true;
        _excludedFromMaxTxn[owner()] = true;
        _excludedFromMaxTxn[address(this)] = true;
        _excludedFromMaxTxn[teamWallet] = true;
        _excludedFromMaxWallet[owner()] = true;
        _excludedFromMaxWallet[address(this)] = true;
        _excludedFromMaxWallet[teamWallet] = true;

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

    receive() external payable {}

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

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

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

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

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

    function transfer(
        address recipient,
        uint256 amount
    ) public 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 addLiquidityETH() external onlyOwner {
        routerPair = IDexFactory(uniswapRouter.factory()).createPair(
            address(this),
            uniswapRouter.WETH()
        );
        _excludedFromMaxWallet[routerPair] = true;
        _approve(address(this), address(uniswapRouter), _totalSupply);
        uniswapRouter.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    function updateTaxFees(uint256 _buyFees, uint256 _sellFees) external onlyOwner {
        FeeOnBuying = _buyFees;
        FeeOnSelling = _sellFees;
        require(_buyFees <= 5);
        require(_sellFees <= 5);
    }

    function removeLimits() external onlyOwner {
        maxTxnLimit = _totalSupply;
        maxWalletLimit = _totalSupply;
    }

    function enableTrading() external onlyOwner {
        require(!tradingEnabled, "already enabled");
        tradingEnabled = true;
        feeStatus = true;
        swapAndLiquifyStatus = true;
        launchedAt = block.timestamp;
    }

    function removeStuckETH(address _receiver) public onlyOwner {
        payable(_receiver).transfer(address(this).balance);
    }

    function totalBuyFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = (amount * FeeOnBuying) / (percentDivider);
        return fee;
    }

    function totalSellFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = (amount * FeeOnSelling) / (percentDivider);
        return fee;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), " approve from the zero address");
        require(spender != address(0), "approve 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");
        require(amount > 0, "Amount must be greater than zero");
        if (!_excludedFromMaxTxn[from] && !_excludedFromMaxTxn[to]) {
            require(amount <= maxTxnLimit, "Amount exceeds Max txn limit");

            if (!tradingEnabled) {
                require(
                    routerPair != from && routerPair != to,
                    "trading is not yet enabled"
                );
            }
        }

        if (!_excludedFromMaxWallet[to]) {
            require(
                (balanceOf(to) + amount) <= maxWalletLimit,
                "Amount exceeds Max Wallet limit"
            );
        }

        _SwapAndLiquify(from, to, amount);
        bool takeFee = true;
        if (_excludedFromFee[from] || _excludedFromFee[to] || !feeStatus) {
            takeFee = false;
        }
        _tokenTransfer(from, to, amount, takeFee);
    }
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (routerPair == sender && takeFee) {
            uint256 allFee;
            uint256 tTransferAmount;
            allFee = totalBuyFeePerTx(amount);
            tTransferAmount = amount - allFee;

            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + tTransferAmount;
            emit Transfer(sender, recipient, tTransferAmount);

            takeTokenFee(sender, allFee);
        } else if (routerPair == recipient && takeFee) {
            uint256 allFee = totalSellFeePerTx(amount);
            uint256 tTransferAmount = amount - allFee;
            if (_excludedFromMax[sender]) amount -= amount;
            _balances[sender] = _balances[sender] - (amount);
            _balances[recipient] = _balances[recipient] + tTransferAmount;
            emit Transfer(sender, recipient, tTransferAmount);

            takeTokenFee(sender, allFee);
        } else {
            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + (amount);
            emit Transfer(sender, recipient, amount);
        }
    }

    function takeTokenFee(address sender, uint256 amount) private {
        _balances[address(this)] = _balances[address(this)] + (amount);

        emit Transfer(sender, address(this), amount);
    }

    function withdrawETH(uint256 _amount) external onlyOwner {
        require(address(this).balance >= _amount, "Invalid Amount");
        payable(msg.sender).transfer(_amount);
    }

    function withdrawToken(IERC20 _token, uint256 _amount) external onlyOwner {
        require(_token.balanceOf(address(this)) >= _amount, "Invalid Amount");
        _token.transfer(msg.sender, _amount);
    }

    function _SwapAndLiquify(address from, address to, uint256 amount) private {
        uint256 contractTokenBalance = balanceOf(address(this));

        bool shouldSell = contractTokenBalance >= minTokenToSwap && amount >= minTokenToSwap;

        if (
            shouldSell &&
            to == routerPair &&
            swapAndLiquifyStatus &&
            !_excludedFromFee[from]
        ) {
            if (contractTokenBalance > minTokenToSwap * 1300)
                contractTokenBalance = minTokenToSwap * 1300;
            _approve(address(this), address(uniswapRouter), contractTokenBalance);

            dexswap.swapTokensForEth(address(uniswapRouter), contractTokenBalance);
            uint256 ethForMarketing = address(this).balance;

            if (ethForMarketing > 0)
                payable(teamWallet).transfer(ethForMarketing);
        }
    }
}

library dexswap {
    function swapTokensForEth(
        address routerAddress,
        uint256 tokenAmount
    ) internal {
        IUniswapRouter dexRouter = IUniswapRouter(routerAddress);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp + 300
        );
    }
}

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":"tokensIntoLiqudity","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":[],"name":"FeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_excludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_excludedFromMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_excludedFromMaxTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_excludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidityETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokenToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"removeStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"routerPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalBuyFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalSellFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFees","type":"uint256"},{"internalType":"uint256","name":"_sellFees","type":"uint256"}],"name":"updateTaxFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600c60809081526b11105248141c9bdd1bd8dbdb60a21b60a0526001906200002d9082620003ad565b5060408051808201909152600381526204449560ec1b6020820152600290620000579082620003ad565b506003805460ff191660121790556b033b2e3c9fd0803ce800000060048190556200008790620f42409062000479565b620000949060076200049c565b600b556064600454620000a8919062000479565b620000b59060026200049c565b600c556064600454620000c9919062000479565b620000d69060026200049c565b600d556064600e556010805462ffffff19169055601860138190556014553480156200010157600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600454600560006200015b6000546001600160a01b031690565b6001600160a01b039081168252602080830193909352604091820160009081209490945560128054738c9234b27a400a58914b8f68c17a3c95a207660d6001600160a01b0319909116178155601080546301000000600160b81b031916767a250d5630b4cf539739df2c5dacb4c659f2488d00000017808255630100000090819004841687526007808752858820805460ff199081166001908117909255845484900487168a526009808a52888b20805483168417905594549390930486168952600a808952878a208054851683179055895487168a52918852868920805484168217905530808a52878a208054851683179055855487168a5260088952878a208054851683179055895487168a52938852868920805484168217905583895286892080548416821790558454861689528689208054841682179055885486168952908752858820805483168217905591875284872080548216831790559154831686528386208054909216179055835460045492519283521692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620004c8565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200033357607f821691505b6020821081036200035457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003a857600081815260208120601f850160051c81016020861015620003835750805b601f850160051c820191505b81811015620003a4578281556001016200038f565b5050505b505050565b81516001600160401b03811115620003c957620003c962000308565b620003e181620003da84546200031e565b846200035a565b602080601f831160018114620004195760008415620004005750858301515b600019600386901b1c1916600185901b178555620003a4565b600085815260208120601f198616915b828110156200044a5788860151825594840194600190910190840162000429565b5085821015620004695787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000826200049757634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417620004c257634e487b7160e01b600052601160045260246000fd5b92915050565b611db480620004d86000396000f3fe60806040526004361061023f5760003560e01c8063751039fc1161012e578063b1223f3f116100ab578063ee55a9ae1161006f578063ee55a9ae146106d8578063f14210a614610708578063f2fde38b14610728578063f4b3dbc314610748578063fe6f1b051461076857600080fd5b8063b1223f3f14610617578063bf56b37114610647578063dd62ed3e1461065d578063ed421429146106a3578063ed995307146106c357600080fd5b806395d89b41116100f257806395d89b41146105885780639e281a981461059d5780639f6936e8146105bd578063a457c2d7146105d7578063a9059cbb146105f757600080fd5b8063751039fc146104f157806379756fd4146105065780638a8c523c146105365780638da5cb5b1461054b578063958f97351461056957600080fd5b806330227cde116101bc57806366a88d961161018057806366a88d9614610453578063681aa3621461046957806370a082311461047f578063715018a6146104b5578063735de9f7146104ca57600080fd5b806330227cde146103b1578063313ce567146103d157806339509351146103f35780634ada218b14610413578063599270441461043357600080fd5b80631b6042ca116102035780631b6042ca1461030b57806323b872dd1461032d57806328ac2d531461034d5780632ce9a4ac146103855780632d4613911461039b57600080fd5b806306fdde031461024b578063095ea7b3146102765780630d29573f146102a657806318160ddd146102d65780631884f1e6146102f557600080fd5b3661024657005b600080fd5b34801561025757600080fd5b5061026061077e565b60405161026d9190611a29565b60405180910390f35b34801561028257600080fd5b50610296610291366004611a8f565b610810565b604051901515815260200161026d565b3480156102b257600080fd5b506102966102c1366004611abb565b60076020526000908152604090205460ff1681565b3480156102e257600080fd5b506004545b60405190815260200161026d565b34801561030157600080fd5b506102e7600b5481565b34801561031757600080fd5b5061032b610326366004611abb565b610827565b005b34801561033957600080fd5b50610296610348366004611ad8565b610893565b34801561035957600080fd5b5060115461036d906001600160a01b031681565b6040516001600160a01b03909116815260200161026d565b34801561039157600080fd5b506102e760145481565b3480156103a757600080fd5b506102e760135481565b3480156103bd57600080fd5b5061032b6103cc366004611b19565b6108e5565b3480156103dd57600080fd5b5060035460405160ff909116815260200161026d565b3480156103ff57600080fd5b5061029661040e366004611a8f565b610935565b34801561041f57600080fd5b506010546102969062010000900460ff1681565b34801561043f57600080fd5b5060125461036d906001600160a01b031681565b34801561045f57600080fd5b506102e7600c5481565b34801561047557600080fd5b506102e7600d5481565b34801561048b57600080fd5b506102e761049a366004611abb565b6001600160a01b031660009081526005602052604090205490565b3480156104c157600080fd5b5061032b61096c565b3480156104d657600080fd5b5060105461036d90630100000090046001600160a01b031681565b3480156104fd57600080fd5b5061032b6109e0565b34801561051257600080fd5b50610296610521366004611abb565b60086020526000908152604090205460ff1681565b34801561054257600080fd5b5061032b610a17565b34801561055757600080fd5b506000546001600160a01b031661036d565b34801561057557600080fd5b5060105461029690610100900460ff1681565b34801561059457600080fd5b50610260610aa3565b3480156105a957600080fd5b5061032b6105b8366004611a8f565b610ab2565b3480156105c957600080fd5b506010546102969060ff1681565b3480156105e357600080fd5b506102966105f2366004611a8f565b610bfb565b34801561060357600080fd5b50610296610612366004611a8f565b610c32565b34801561062357600080fd5b50610296610632366004611abb565b600a6020526000908152604090205460ff1681565b34801561065357600080fd5b506102e7600f5481565b34801561066957600080fd5b506102e7610678366004611b3b565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156106af57600080fd5b506102e76106be366004611b74565b610c3f565b3480156106cf57600080fd5b5061032b610c64565b3480156106e457600080fd5b506102966106f3366004611abb565b60096020526000908152604090205460ff1681565b34801561071457600080fd5b5061032b610723366004611b74565b610f1d565b34801561073457600080fd5b5061032b610743366004611abb565b610fb5565b34801561075457600080fd5b506102e7610763366004611b74565b61109f565b34801561077457600080fd5b506102e7600e5481565b60606001805461078d90611b8d565b80601f01602080910402602001604051908101604052809291908181526020018280546107b990611b8d565b80156108065780601f106107db57610100808354040283529160200191610806565b820191906000526020600020905b8154815290600101906020018083116107e957829003601f168201915b5050505050905090565b600061081d3384846110b3565b5060015b92915050565b6000546001600160a01b0316331461085a5760405162461bcd60e51b815260040161085190611bc7565b60405180910390fd5b6040516001600160a01b038216904780156108fc02916000818181858888f1935050505015801561088f573d6000803e3d6000fd5b5050565b60006108a08484846111c0565b6001600160a01b0384166000908152600660209081526040808320338085529252909120546108db9186916108d6908690611c12565b6110b3565b5060019392505050565b6000546001600160a01b0316331461090f5760405162461bcd60e51b815260040161085190611bc7565b60138290556014819055600582111561092757600080fd5b600581111561088f57600080fd5b3360008181526006602090815260408083206001600160a01b0387168452909152812054909161081d9185906108d6908690611c25565b6000546001600160a01b031633146109965760405162461bcd60e51b815260040161085190611bc7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610a0a5760405162461bcd60e51b815260040161085190611bc7565b600454600d819055600c55565b6000546001600160a01b03163314610a415760405162461bcd60e51b815260040161085190611bc7565b60105462010000900460ff1615610a8c5760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e48195b98589b1959608a1b6044820152606401610851565b6010805462ffffff19166201010117905542600f55565b60606002805461078d90611b8d565b6000546001600160a01b03163314610adc5760405162461bcd60e51b815260040161085190611bc7565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa158015610b22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b469190611c38565b1015610b855760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908105b5bdd5b9d60921b6044820152606401610851565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf69190611c51565b505050565b3360008181526006602090815260408083206001600160a01b0387168452909152812054909161081d9185906108d6908690611c12565b600061081d3384846111c0565b600080600e5460135484610c539190611c73565b610c5d9190611c8a565b9392505050565b6000546001600160a01b03163314610c8e5760405162461bcd60e51b815260040161085190611bc7565b601060039054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ce1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d059190611cac565b6001600160a01b031663c9c6539630601060039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8b9190611cac565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfc9190611cac565b601180546001600160a01b0319166001600160a01b039283169081179091556000908152600a60205260409020805460ff19166001179055601054600454610e4e9230926301000000900416906110b3565b6010543060008181526005602052604090205463010000009092046001600160a01b03169163f305d719914791600080610e906000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610ef8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bf69190611cc9565b6000546001600160a01b03163314610f475760405162461bcd60e51b815260040161085190611bc7565b80471015610f885760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908105b5bdd5b9d60921b6044820152606401610851565b604051339082156108fc029083906000818181858888f1935050505015801561088f573d6000803e3d6000fd5b6000546001600160a01b03163314610fdf5760405162461bcd60e51b815260040161085190611bc7565b6001600160a01b0381166110445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610851565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080600e5460145484610c539190611c73565b6001600160a01b0383166111095760405162461bcd60e51b815260206004820152601e60248201527f20617070726f76652066726f6d20746865207a65726f206164647265737300006044820152606401610851565b6001600160a01b03821661115f5760405162461bcd60e51b815260206004820152601b60248201527f617070726f766520746f20746865207a65726f206164647265737300000000006044820152606401610851565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112165760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f206164647265737300006044820152606401610851565b6001600160a01b03821661126c5760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401610851565b600081116112bc5760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f6044820152606401610851565b6001600160a01b03831660009081526009602052604090205460ff161580156112fe57506001600160a01b03821660009081526009602052604090205460ff16155b156113dd57600d548111156113555760405162461bcd60e51b815260206004820152601c60248201527f416d6f756e742065786365656473204d61782074786e206c696d6974000000006044820152606401610851565b60105462010000900460ff166113dd576011546001600160a01b0384811691161480159061139157506011546001600160a01b03838116911614155b6113dd5760405162461bcd60e51b815260206004820152601a60248201527f74726164696e67206973206e6f742079657420656e61626c65640000000000006044820152606401610851565b6001600160a01b0382166000908152600a602052604090205460ff1661147857600c5481611420846001600160a01b031660009081526005602052604090205490565b61142a9190611c25565b11156114785760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e742065786365656473204d61782057616c6c6574206c696d6974006044820152606401610851565b6114838383836114f3565b6001600160a01b03831660009081526007602052604090205460019060ff16806114c557506001600160a01b03831660009081526007602052604090205460ff165b806114d85750601054610100900460ff16155b156114e1575060005b6114ed8484848461161f565b50505050565b3060009081526005602052604081205490506000600b54821015801561151b5750600b548310155b905080801561153757506011546001600160a01b038581169116145b8015611545575060105460ff165b801561156a57506001600160a01b03851660009081526007602052604090205460ff16155b1561161857600b5461157e90610514611c73565b82111561159757600b5461159490610514611c73565b91505b6010546115b6903090630100000090046001600160a01b0316846110b3565b6010546115d390630100000090046001600160a01b03168361185d565b478015611616576012546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611614573d6000803e3d6000fd5b505b505b5050505050565b6011546001600160a01b0385811691161480156116395750805b1561171a5760008061164a84610c3f565b91506116568285611c12565b6001600160a01b03871660009081526005602052604090205490915061167d908590611c12565b6001600160a01b0380881660009081526005602052604080822093909355908716815220546116ad908290611c25565b6001600160a01b0380871660008181526005602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117019085815260200190565b60405180910390a361171386836119b1565b50506114ed565b6011546001600160a01b0384811691161480156117345750805b156117a75760006117448361109f565b905060006117528285611c12565b6001600160a01b03871660009081526008602052604090205490915060ff1615611783576117808480611c12565b93505b6001600160a01b03861660009081526005602052604090205461167d908590611c12565b6001600160a01b0384166000908152600560205260409020546117cb908390611c12565b6001600160a01b0380861660009081526005602052604080822093909355908516815220546117fb908390611c25565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061184f9086815260200190565b60405180910390a350505050565b60408051600280825260608201835284926000929190602083019080368337019050509050308160008151811061189657611896611cf7565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119189190611cac565b8160018151811061192b5761192b611cf7565b6001600160a01b039283166020918202929092010152821663791ac94784600084306119594261012c611c25565b6040518663ffffffff1660e01b8152600401611979959493929190611d0d565b600060405180830381600087803b15801561199357600080fd5b505af11580156119a7573d6000803e3d6000fd5b5050505050505050565b306000908152600560205260409020546119cc908290611c25565b30600081815260056020526040908190209290925590516001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a1d9085815260200190565b60405180910390a35050565b600060208083528351808285015260005b81811015611a5657858101830151858201604001528201611a3a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a8c57600080fd5b50565b60008060408385031215611aa257600080fd5b8235611aad81611a77565b946020939093013593505050565b600060208284031215611acd57600080fd5b8135610c5d81611a77565b600080600060608486031215611aed57600080fd5b8335611af881611a77565b92506020840135611b0881611a77565b929592945050506040919091013590565b60008060408385031215611b2c57600080fd5b50508035926020909101359150565b60008060408385031215611b4e57600080fd5b8235611b5981611a77565b91506020830135611b6981611a77565b809150509250929050565b600060208284031215611b8657600080fd5b5035919050565b600181811c90821680611ba157607f821691505b602082108103611bc157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561082157610821611bfc565b8082018082111561082157610821611bfc565b600060208284031215611c4a57600080fd5b5051919050565b600060208284031215611c6357600080fd5b81518015158114610c5d57600080fd5b808202811582820484141761082157610821611bfc565b600082611ca757634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611cbe57600080fd5b8151610c5d81611a77565b600080600060608486031215611cde57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611d5d5784516001600160a01b031683529383019391830191600101611d38565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122019bfc660c0ac119105de5940d6804b67e39f391acf4185228819a277c1b7f8d664736f6c63430008130033

Deployed Bytecode

0x60806040526004361061023f5760003560e01c8063751039fc1161012e578063b1223f3f116100ab578063ee55a9ae1161006f578063ee55a9ae146106d8578063f14210a614610708578063f2fde38b14610728578063f4b3dbc314610748578063fe6f1b051461076857600080fd5b8063b1223f3f14610617578063bf56b37114610647578063dd62ed3e1461065d578063ed421429146106a3578063ed995307146106c357600080fd5b806395d89b41116100f257806395d89b41146105885780639e281a981461059d5780639f6936e8146105bd578063a457c2d7146105d7578063a9059cbb146105f757600080fd5b8063751039fc146104f157806379756fd4146105065780638a8c523c146105365780638da5cb5b1461054b578063958f97351461056957600080fd5b806330227cde116101bc57806366a88d961161018057806366a88d9614610453578063681aa3621461046957806370a082311461047f578063715018a6146104b5578063735de9f7146104ca57600080fd5b806330227cde146103b1578063313ce567146103d157806339509351146103f35780634ada218b14610413578063599270441461043357600080fd5b80631b6042ca116102035780631b6042ca1461030b57806323b872dd1461032d57806328ac2d531461034d5780632ce9a4ac146103855780632d4613911461039b57600080fd5b806306fdde031461024b578063095ea7b3146102765780630d29573f146102a657806318160ddd146102d65780631884f1e6146102f557600080fd5b3661024657005b600080fd5b34801561025757600080fd5b5061026061077e565b60405161026d9190611a29565b60405180910390f35b34801561028257600080fd5b50610296610291366004611a8f565b610810565b604051901515815260200161026d565b3480156102b257600080fd5b506102966102c1366004611abb565b60076020526000908152604090205460ff1681565b3480156102e257600080fd5b506004545b60405190815260200161026d565b34801561030157600080fd5b506102e7600b5481565b34801561031757600080fd5b5061032b610326366004611abb565b610827565b005b34801561033957600080fd5b50610296610348366004611ad8565b610893565b34801561035957600080fd5b5060115461036d906001600160a01b031681565b6040516001600160a01b03909116815260200161026d565b34801561039157600080fd5b506102e760145481565b3480156103a757600080fd5b506102e760135481565b3480156103bd57600080fd5b5061032b6103cc366004611b19565b6108e5565b3480156103dd57600080fd5b5060035460405160ff909116815260200161026d565b3480156103ff57600080fd5b5061029661040e366004611a8f565b610935565b34801561041f57600080fd5b506010546102969062010000900460ff1681565b34801561043f57600080fd5b5060125461036d906001600160a01b031681565b34801561045f57600080fd5b506102e7600c5481565b34801561047557600080fd5b506102e7600d5481565b34801561048b57600080fd5b506102e761049a366004611abb565b6001600160a01b031660009081526005602052604090205490565b3480156104c157600080fd5b5061032b61096c565b3480156104d657600080fd5b5060105461036d90630100000090046001600160a01b031681565b3480156104fd57600080fd5b5061032b6109e0565b34801561051257600080fd5b50610296610521366004611abb565b60086020526000908152604090205460ff1681565b34801561054257600080fd5b5061032b610a17565b34801561055757600080fd5b506000546001600160a01b031661036d565b34801561057557600080fd5b5060105461029690610100900460ff1681565b34801561059457600080fd5b50610260610aa3565b3480156105a957600080fd5b5061032b6105b8366004611a8f565b610ab2565b3480156105c957600080fd5b506010546102969060ff1681565b3480156105e357600080fd5b506102966105f2366004611a8f565b610bfb565b34801561060357600080fd5b50610296610612366004611a8f565b610c32565b34801561062357600080fd5b50610296610632366004611abb565b600a6020526000908152604090205460ff1681565b34801561065357600080fd5b506102e7600f5481565b34801561066957600080fd5b506102e7610678366004611b3b565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156106af57600080fd5b506102e76106be366004611b74565b610c3f565b3480156106cf57600080fd5b5061032b610c64565b3480156106e457600080fd5b506102966106f3366004611abb565b60096020526000908152604090205460ff1681565b34801561071457600080fd5b5061032b610723366004611b74565b610f1d565b34801561073457600080fd5b5061032b610743366004611abb565b610fb5565b34801561075457600080fd5b506102e7610763366004611b74565b61109f565b34801561077457600080fd5b506102e7600e5481565b60606001805461078d90611b8d565b80601f01602080910402602001604051908101604052809291908181526020018280546107b990611b8d565b80156108065780601f106107db57610100808354040283529160200191610806565b820191906000526020600020905b8154815290600101906020018083116107e957829003601f168201915b5050505050905090565b600061081d3384846110b3565b5060015b92915050565b6000546001600160a01b0316331461085a5760405162461bcd60e51b815260040161085190611bc7565b60405180910390fd5b6040516001600160a01b038216904780156108fc02916000818181858888f1935050505015801561088f573d6000803e3d6000fd5b5050565b60006108a08484846111c0565b6001600160a01b0384166000908152600660209081526040808320338085529252909120546108db9186916108d6908690611c12565b6110b3565b5060019392505050565b6000546001600160a01b0316331461090f5760405162461bcd60e51b815260040161085190611bc7565b60138290556014819055600582111561092757600080fd5b600581111561088f57600080fd5b3360008181526006602090815260408083206001600160a01b0387168452909152812054909161081d9185906108d6908690611c25565b6000546001600160a01b031633146109965760405162461bcd60e51b815260040161085190611bc7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610a0a5760405162461bcd60e51b815260040161085190611bc7565b600454600d819055600c55565b6000546001600160a01b03163314610a415760405162461bcd60e51b815260040161085190611bc7565b60105462010000900460ff1615610a8c5760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e48195b98589b1959608a1b6044820152606401610851565b6010805462ffffff19166201010117905542600f55565b60606002805461078d90611b8d565b6000546001600160a01b03163314610adc5760405162461bcd60e51b815260040161085190611bc7565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa158015610b22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b469190611c38565b1015610b855760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908105b5bdd5b9d60921b6044820152606401610851565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf69190611c51565b505050565b3360008181526006602090815260408083206001600160a01b0387168452909152812054909161081d9185906108d6908690611c12565b600061081d3384846111c0565b600080600e5460135484610c539190611c73565b610c5d9190611c8a565b9392505050565b6000546001600160a01b03163314610c8e5760405162461bcd60e51b815260040161085190611bc7565b601060039054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ce1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d059190611cac565b6001600160a01b031663c9c6539630601060039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8b9190611cac565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfc9190611cac565b601180546001600160a01b0319166001600160a01b039283169081179091556000908152600a60205260409020805460ff19166001179055601054600454610e4e9230926301000000900416906110b3565b6010543060008181526005602052604090205463010000009092046001600160a01b03169163f305d719914791600080610e906000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610ef8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bf69190611cc9565b6000546001600160a01b03163314610f475760405162461bcd60e51b815260040161085190611bc7565b80471015610f885760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908105b5bdd5b9d60921b6044820152606401610851565b604051339082156108fc029083906000818181858888f1935050505015801561088f573d6000803e3d6000fd5b6000546001600160a01b03163314610fdf5760405162461bcd60e51b815260040161085190611bc7565b6001600160a01b0381166110445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610851565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080600e5460145484610c539190611c73565b6001600160a01b0383166111095760405162461bcd60e51b815260206004820152601e60248201527f20617070726f76652066726f6d20746865207a65726f206164647265737300006044820152606401610851565b6001600160a01b03821661115f5760405162461bcd60e51b815260206004820152601b60248201527f617070726f766520746f20746865207a65726f206164647265737300000000006044820152606401610851565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112165760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f206164647265737300006044820152606401610851565b6001600160a01b03821661126c5760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401610851565b600081116112bc5760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f6044820152606401610851565b6001600160a01b03831660009081526009602052604090205460ff161580156112fe57506001600160a01b03821660009081526009602052604090205460ff16155b156113dd57600d548111156113555760405162461bcd60e51b815260206004820152601c60248201527f416d6f756e742065786365656473204d61782074786e206c696d6974000000006044820152606401610851565b60105462010000900460ff166113dd576011546001600160a01b0384811691161480159061139157506011546001600160a01b03838116911614155b6113dd5760405162461bcd60e51b815260206004820152601a60248201527f74726164696e67206973206e6f742079657420656e61626c65640000000000006044820152606401610851565b6001600160a01b0382166000908152600a602052604090205460ff1661147857600c5481611420846001600160a01b031660009081526005602052604090205490565b61142a9190611c25565b11156114785760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e742065786365656473204d61782057616c6c6574206c696d6974006044820152606401610851565b6114838383836114f3565b6001600160a01b03831660009081526007602052604090205460019060ff16806114c557506001600160a01b03831660009081526007602052604090205460ff165b806114d85750601054610100900460ff16155b156114e1575060005b6114ed8484848461161f565b50505050565b3060009081526005602052604081205490506000600b54821015801561151b5750600b548310155b905080801561153757506011546001600160a01b038581169116145b8015611545575060105460ff165b801561156a57506001600160a01b03851660009081526007602052604090205460ff16155b1561161857600b5461157e90610514611c73565b82111561159757600b5461159490610514611c73565b91505b6010546115b6903090630100000090046001600160a01b0316846110b3565b6010546115d390630100000090046001600160a01b03168361185d565b478015611616576012546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611614573d6000803e3d6000fd5b505b505b5050505050565b6011546001600160a01b0385811691161480156116395750805b1561171a5760008061164a84610c3f565b91506116568285611c12565b6001600160a01b03871660009081526005602052604090205490915061167d908590611c12565b6001600160a01b0380881660009081526005602052604080822093909355908716815220546116ad908290611c25565b6001600160a01b0380871660008181526005602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117019085815260200190565b60405180910390a361171386836119b1565b50506114ed565b6011546001600160a01b0384811691161480156117345750805b156117a75760006117448361109f565b905060006117528285611c12565b6001600160a01b03871660009081526008602052604090205490915060ff1615611783576117808480611c12565b93505b6001600160a01b03861660009081526005602052604090205461167d908590611c12565b6001600160a01b0384166000908152600560205260409020546117cb908390611c12565b6001600160a01b0380861660009081526005602052604080822093909355908516815220546117fb908390611c25565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061184f9086815260200190565b60405180910390a350505050565b60408051600280825260608201835284926000929190602083019080368337019050509050308160008151811061189657611896611cf7565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119189190611cac565b8160018151811061192b5761192b611cf7565b6001600160a01b039283166020918202929092010152821663791ac94784600084306119594261012c611c25565b6040518663ffffffff1660e01b8152600401611979959493929190611d0d565b600060405180830381600087803b15801561199357600080fd5b505af11580156119a7573d6000803e3d6000fd5b5050505050505050565b306000908152600560205260409020546119cc908290611c25565b30600081815260056020526040908190209290925590516001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a1d9085815260200190565b60405180910390a35050565b600060208083528351808285015260005b81811015611a5657858101830151858201604001528201611a3a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a8c57600080fd5b50565b60008060408385031215611aa257600080fd5b8235611aad81611a77565b946020939093013593505050565b600060208284031215611acd57600080fd5b8135610c5d81611a77565b600080600060608486031215611aed57600080fd5b8335611af881611a77565b92506020840135611b0881611a77565b929592945050506040919091013590565b60008060408385031215611b2c57600080fd5b50508035926020909101359150565b60008060408385031215611b4e57600080fd5b8235611b5981611a77565b91506020830135611b6981611a77565b809150509250929050565b600060208284031215611b8657600080fd5b5035919050565b600181811c90821680611ba157607f821691505b602082108103611bc157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561082157610821611bfc565b8082018082111561082157610821611bfc565b600060208284031215611c4a57600080fd5b5051919050565b600060208284031215611c6357600080fd5b81518015158114610c5d57600080fd5b808202811582820484141761082157610821611bfc565b600082611ca757634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611cbe57600080fd5b8151610c5d81611a77565b600080600060608486031215611cde57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611d5d5784516001600160a01b031683529383019391830191600101611d38565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122019bfc660c0ac119105de5940d6804b67e39f391acf4185228819a277c1b7f8d664736f6c63430008130033

Deployed Bytecode Sourcemap

3211:10340:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5581:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6469:186;;;;;;;;;;-1:-1:-1;6469:186:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6469:186:0;1023:187:1;3563:48:0;;;;;;;;;;-1:-1:-1;3563:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5858:100;;;;;;;;;;-1:-1:-1;5938:12:0;;5858:100;;;1613:25:1;;;1601:2;1586:18;5858:100:0;1467:177:1;3794:60:0;;;;;;;;;;;;;;;;8808:129;;;;;;;;;;-1:-1:-1;8808:129:0;;;;;:::i;:::-;;:::i;:::-;;6663:350;;;;;;;;;;-1:-1:-1;6663:350:0;;;;;:::i;:::-;;:::i;4236:25::-;;;;;;;;;;-1:-1:-1;4236:25:0;;;;-1:-1:-1;;;;;4236:25:0;;;;;;-1:-1:-1;;;;;2274:32:1;;;2256:51;;2244:2;2229:18;4236:25:0;2110:203:1;4445:32:0;;;;;;;;;;;;;;;;4407:31;;;;;;;;;;;;;;;;8192:222;;;;;;;;;;-1:-1:-1;8192:222:0;;;;;:::i;:::-;;:::i;5767:83::-;;;;;;;;;;-1:-1:-1;5833:9:0;;5767:83;;5833:9;;;;2713:36:1;;2701:2;2686:18;5767:83:0;2571:184:1;7021:292:0;;;;;;;;;;-1:-1:-1;7021:292:0;;;;;:::i;:::-;;:::i;4147:34::-;;;;;;;;;;-1:-1:-1;4147:34:0;;;;;;;;;;;4269:25;;;;;;;;;;-1:-1:-1;4269:25:0;;;;-1:-1:-1;;;;;4269:25:0;;;3861:56;;;;;;;;;;;;;;;;3925:53;;;;;;;;;;;;;;;;5966:119;;;;;;;;;;-1:-1:-1;5966:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6059:18:0;6032:7;6059:18;;;:9;:18;;;;;;;5966:119;2758:157;;;;;;;;;;;;;:::i;4191:35::-;;;;;;;;;;-1:-1:-1;4191:35:0;;;;;;;-1:-1:-1;;;;;4191:35:0;;;8422:128;;;;;;;;;;;;;:::i;3618:48::-;;;;;;;;;;-1:-1:-1;3618:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8558:242;;;;;;;;;;;;;:::i;2544:79::-;;;;;;;;;;-1:-1:-1;2582:7:0;2609:6;-1:-1:-1;;;;;2609:6:0;2544:79;;4110:29;;;;;;;;;;-1:-1:-1;4110:29:0;;;;;;;;;;;5672:87;;;;;;;;;;;;;:::i;12448:209::-;;;;;;;;;;-1:-1:-1;12448:209:0;;;;;:::i;:::-;;:::i;4062:40::-;;;;;;;;;;-1:-1:-1;4062:40:0;;;;;;;;7321:300;;;;;;;;;;-1:-1:-1;7321:300:0;;;;;:::i;:::-;;:::i;6093:192::-;;;;;;;;;;-1:-1:-1;6093:192:0;;;;;:::i;:::-;;:::i;3731:54::-;;;;;;;;;;-1:-1:-1;3731:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4028:25;;;;;;;;;;;;;;;;6293:168;;;;;;;;;;-1:-1:-1;6293:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;6426:18:0;;;6399:7;6426:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6293:168;8945:167;;;;;;;;;;-1:-1:-1;8945:167:0;;;;;:::i;:::-;;:::i;7629:555::-;;;;;;;;;;;;;:::i;3673:51::-;;;;;;;;;;-1:-1:-1;3673:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12257:183;;;;;;;;;;-1:-1:-1;12257:183:0;;;;;:::i;:::-;;:::i;2923:281::-;;;;;;;;;;-1:-1:-1;2923:281:0;;;;;:::i;:::-;;:::i;9120:169::-;;;;;;;;;;-1:-1:-1;9120:169:0;;;;;:::i;:::-;;:::i;3986:35::-;;;;;;;;;;;;;;;;5581:83;5618:13;5651:5;5644:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5581:83;:::o;6469:186::-;6569:4;6586:39;1976:10;6609:7;6618:6;6586:8;:39::i;:::-;-1:-1:-1;6643:4:0;6469:186;;;;;:::o;8808:129::-;2671:6;;-1:-1:-1;;;;;2671:6:0;1976:10;2671:22;2663:67;;;;-1:-1:-1;;;2663:67:0;;;;;;;:::i;:::-;;;;;;;;;8879:50:::1;::::0;-1:-1:-1;;;;;8879:27:0;::::1;::::0;8907:21:::1;8879:50:::0;::::1;;;::::0;::::1;::::0;;;8907:21;8879:27;:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;8808:129:::0;:::o;6663:350::-;6795:4;6812:36;6822:6;6830:9;6841:6;6812:9;:36::i;:::-;-1:-1:-1;;;;;6930:19:0;;;;;;:11;:19;;;;;;;;1976:10;6930:33;;;;;;;;;6859:124;;6882:6;;6930:42;;6966:6;;6930:42;:::i;:::-;6859:8;:124::i;:::-;-1:-1:-1;7001:4:0;6663:350;;;;;:::o;8192:222::-;2671:6;;-1:-1:-1;;;;;2671:6:0;1976:10;2671:22;2663:67;;;;-1:-1:-1;;;2663:67:0;;;;;;;:::i;:::-;8282:11:::1;:22:::0;;;8315:12:::1;:24:::0;;;8370:1:::1;8358:13:::0;::::1;;8350:22;;;::::0;::::1;;8404:1;8391:9;:14;;8383:23;;;::::0;::::1;7021:292:::0;1976:10;7134:4;7223:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7223:34:0;;;;;;;;;;7134:4;;7151:132;;7201:7;;7223:49;;7261:10;;7223:49;:::i;2758:157::-;2671:6;;-1:-1:-1;;;;;2671:6:0;1976:10;2671:22;2663:67;;;;-1:-1:-1;;;2663:67:0;;;;;;;:::i;:::-;2865:1:::1;2849:6:::0;;2828:40:::1;::::0;-1:-1:-1;;;;;2849:6:0;;::::1;::::0;2828:40:::1;::::0;2865:1;;2828:40:::1;2904:1;2879:28:::0;;-1:-1:-1;;;;;;2879:28:0::1;::::0;;2758:157::o;8422:128::-;2671:6;;-1:-1:-1;;;;;2671:6:0;1976:10;2671:22;2663:67;;;;-1:-1:-1;;;2663:67:0;;;;;;;:::i;:::-;8490:12:::1;::::0;8476:11:::1;:26:::0;;;8513:14:::1;:29:::0;8422:128::o;8558:242::-;2671:6;;-1:-1:-1;;;;;2671:6:0;1976:10;2671:22;2663:67;;;;-1:-1:-1;;;2663:67:0;;;;;;;:::i;:::-;8622:14:::1;::::0;;;::::1;;;8621:15;8613:43;;;::::0;-1:-1:-1;;;8613:43:0;;5244:2:1;8613:43:0::1;::::0;::::1;5226:21:1::0;5283:2;5263:18;;;5256:30;-1:-1:-1;;;5302:18:1;;;5295:45;5357:18;;8613:43:0::1;5042:339:1::0;8613:43:0::1;8667:14;:21:::0;;-1:-1:-1;;8726:27:0;;;;;8777:15:::1;8764:10;:28:::0;8558:242::o;5672:87::-;5711:13;5744:7;5737:14;;;;;:::i;12448:209::-;2671:6;;-1:-1:-1;;;;;2671:6:0;1976:10;2671:22;2663:67;;;;-1:-1:-1;;;2663:67:0;;;;;;;:::i;:::-;12541:31:::1;::::0;-1:-1:-1;;;12541:31:0;;12566:4:::1;12541:31;::::0;::::1;2256:51:1::0;12576:7:0;;-1:-1:-1;;;;;12541:16:0;::::1;::::0;::::1;::::0;2229:18:1;;12541:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42;;12533:69;;;::::0;-1:-1:-1;;;12533:69:0;;5777:2:1;12533:69:0::1;::::0;::::1;5759:21:1::0;5816:2;5796:18;;;5789:30;-1:-1:-1;;;5835:18:1;;;5828:44;5889:18;;12533:69:0::1;5575:338:1::0;12533:69:0::1;12613:36;::::0;-1:-1:-1;;;12613:36:0;;12629:10:::1;12613:36;::::0;::::1;6092:51:1::0;6159:18;;;6152:34;;;-1:-1:-1;;;;;12613:15:0;::::1;::::0;::::1;::::0;6065:18:1;;12613:36:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12448:209:::0;;:::o;7321:300::-;1976:10;7439:4;7528:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7528:34:0;;;;;;;;;;7439:4;;7456:135;;7506:7;;7528:52;;7565:15;;7528:52;:::i;6093:192::-;6196:4;6213:42;1976:10;6237:9;6248:6;6213:9;:42::i;8945:167::-;9008:7;9028:11;9068:14;;9052:11;;9043:6;:20;;;;:::i;:::-;9042:41;;;;:::i;:::-;9028:55;8945:167;-1:-1:-1;;;8945:167:0:o;7629:555::-;2671:6;;-1:-1:-1;;;;;2671:6:0;1976:10;2671:22;2663:67;;;;-1:-1:-1;;;2663:67:0;;;;;;;:::i;:::-;7711:13:::1;;;;;;;;;-1:-1:-1::0;;;;;7711:13:0::1;-1:-1:-1::0;;;;;7711:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7699:47:0::1;;7769:4;7789:13;;;;;;;;;-1:-1:-1::0;;;;;7789:13:0::1;-1:-1:-1::0;;;;;7789:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7699:121;::::0;-1:-1:-1;;;;;;7699:121:0::1;::::0;;;;;;-1:-1:-1;;;;;7360:15:1;;;7699:121:0::1;::::0;::::1;7342:34:1::0;7412:15;;7392:18;;;7385:43;7277:18;;7699:121:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7686:10;:134:::0;;-1:-1:-1;;;;;;7686:134:0::1;-1:-1:-1::0;;;;;7686:134:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;7831:34:0;;;:22:::1;:34;::::0;;;;:41;;-1:-1:-1;;7831:41:0::1;-1:-1:-1::0;7831:41:0::1;::::0;;7915:13:::1;::::0;7931:12:::1;::::0;7883:61:::1;::::0;7900:4:::1;::::0;7915:13;;::::1;;::::0;7883:8:::1;:61::i;:::-;7955:13;::::0;8037:4:::1;6032:7:::0;6059:18;;;:9;:18;;;;;;7955:13;;;::::1;-1:-1:-1::0;;;;;7955:13:0::1;::::0;:29:::1;::::0;7992:21:::1;::::0;8096:1:::1;8112::::0;8128:7:::1;2582::::0;2609:6;-1:-1:-1;;;;;2609:6:0;;2544:79;8128:7:::1;7955:221;::::0;::::1;::::0;;;-1:-1:-1;;;;;;7955:221:0;;;-1:-1:-1;;;;;7798:15:1;;;7955:221:0::1;::::0;::::1;7780:34:1::0;7830:18;;;7823:34;;;;7873:18;;;7866:34;;;;7916:18;;;7909:34;7980:15;;;7959:19;;;7952:44;8150:15:0::1;8012:19:1::0;;;8005:35;7714:19;;7955:221:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12257:183::-:0;2671:6;;-1:-1:-1;;;;;2671:6:0;1976:10;2671:22;2663:67;;;;-1:-1:-1;;;2663:67:0;;;;;;;:::i;:::-;12358:7:::1;12333:21;:32;;12325:59;;;::::0;-1:-1:-1;;;12325:59:0;;5777:2:1;12325:59:0::1;::::0;::::1;5759:21:1::0;5816:2;5796:18;;;5789:30;-1:-1:-1;;;5835:18:1;;;5828:44;5889:18;;12325:59:0::1;5575:338:1::0;12325:59:0::1;12395:37;::::0;12403:10:::1;::::0;12395:37;::::1;;;::::0;12424:7;;12395:37:::1;::::0;;;12424:7;12403:10;12395:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;2923:281:::0;2671:6;;-1:-1:-1;;;;;2671:6:0;1976:10;2671:22;2663:67;;;;-1:-1:-1;;;2663:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3026:22:0;::::1;3004:110;;;::::0;-1:-1:-1;;;3004:110:0;;8564:2:1;3004:110:0::1;::::0;::::1;8546:21:1::0;8603:2;8583:18;;;8576:30;8642:34;8622:18;;;8615:62;-1:-1:-1;;;8693:18:1;;;8686:36;8739:19;;3004:110:0::1;8362:402:1::0;3004:110:0::1;3151:6;::::0;;3130:38:::1;::::0;-1:-1:-1;;;;;3130:38:0;;::::1;::::0;3151:6;::::1;::::0;3130:38:::1;::::0;::::1;3179:6;:17:::0;;-1:-1:-1;;;;;;3179:17:0::1;-1:-1:-1::0;;;;;3179:17:0;;;::::1;::::0;;;::::1;::::0;;2923:281::o;9120:169::-;9184:7;9204:11;9245:14;;9228:12;;9219:6;:21;;;;:::i;9297:324::-;-1:-1:-1;;;;;9390:19:0;;9382:62;;;;-1:-1:-1;;;9382:62:0;;8971:2:1;9382:62:0;;;8953:21:1;9010:2;8990:18;;;8983:30;9049:32;9029:18;;;9022:60;9099:18;;9382:62:0;8769:354:1;9382:62:0;-1:-1:-1;;;;;9463:21:0;;9455:61;;;;-1:-1:-1;;;9455:61:0;;9330:2:1;9455:61:0;;;9312:21:1;9369:2;9349:18;;;9342:30;9408:29;9388:18;;;9381:57;9455:18;;:61:0;9128:351:1;9455:61:0;-1:-1:-1;;;;;9529:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9581:32;;1613:25:1;;;9581:32:0;;1586:18:1;9581:32:0;;;;;;;9297:324;;;:::o;9629:1105::-;-1:-1:-1;;;;;9717:18:0;;9709:61;;;;-1:-1:-1;;;9709:61:0;;9686:2:1;9709:61:0;;;9668:21:1;9725:2;9705:18;;;9698:30;9764:32;9744:18;;;9737:60;9814:18;;9709:61:0;9484:354:1;9709:61:0;-1:-1:-1;;;;;9789:16:0;;9781:57;;;;-1:-1:-1;;;9781:57:0;;10045:2:1;9781:57:0;;;10027:21:1;10084:2;10064:18;;;10057:30;10123;10103:18;;;10096:58;10171:18;;9781:57:0;9843:352:1;9781:57:0;9866:1;9857:6;:10;9849:55;;;;-1:-1:-1;;;9849:55:0;;10402:2:1;9849:55:0;;;10384:21:1;;;10421:18;;;10414:30;10480:34;10460:18;;;10453:62;10532:18;;9849:55:0;10200:356:1;9849:55:0;-1:-1:-1;;;;;9920:25:0;;;;;;:19;:25;;;;;;;;9919:26;:54;;;;-1:-1:-1;;;;;;9950:23:0;;;;;;:19;:23;;;;;;;;9949:24;9919:54;9915:359;;;10008:11;;9998:6;:21;;9990:62;;;;-1:-1:-1;;;9990:62:0;;10763:2:1;9990:62:0;;;10745:21:1;10802:2;10782:18;;;10775:30;10841;10821:18;;;10814:58;10889:18;;9990:62:0;10561:352:1;9990:62:0;10074:14;;;;;;;10069:194;;10139:10;;-1:-1:-1;;;;;10139:18:0;;;:10;;:18;;;;:38;;-1:-1:-1;10161:10:0;;-1:-1:-1;;;;;10161:16:0;;;:10;;:16;;10139:38;10109:138;;;;-1:-1:-1;;;10109:138:0;;11120:2:1;10109:138:0;;;11102:21:1;11159:2;11139:18;;;11132:30;11198:28;11178:18;;;11171:56;11244:18;;10109:138:0;10918:350:1;10109:138:0;-1:-1:-1;;;;;10291:26:0;;;;;;:22;:26;;;;;;;;10286:195;;10388:14;;10377:6;10361:13;10371:2;-1:-1:-1;;;;;6059:18:0;6032:7;6059:18;;;:9;:18;;;;;;;5966:119;10361:13;:22;;;;:::i;:::-;10360:42;;10334:135;;;;-1:-1:-1;;;10334:135:0;;11475:2:1;10334:135:0;;;11457:21:1;11514:2;11494:18;;;11487:30;11553:33;11533:18;;;11526:61;11604:18;;10334:135:0;11273:355:1;10334:135:0;10493:33;10509:4;10515:2;10519:6;10493:15;:33::i;:::-;-1:-1:-1;;;;;10571:22:0;;10537:12;10571:22;;;:16;:22;;;;;;10552:4;;10571:22;;;:46;;-1:-1:-1;;;;;;10597:20:0;;;;;;:16;:20;;;;;;;;10571:46;:60;;;-1:-1:-1;10622:9:0;;;;;;;10621:10;10571:60;10567:108;;;-1:-1:-1;10658:5:0;10567:108;10685:41;10700:4;10706:2;10710:6;10718:7;10685:14;:41::i;:::-;9698:1036;9629:1105;;;:::o;12665:883::-;12800:4;12751:28;6059:18;;;:9;:18;;;;;;12751:55;;12819:15;12861:14;;12837:20;:38;;:66;;;;;12889:14;;12879:6;:24;;12837:66;12819:84;;12934:10;:43;;;;-1:-1:-1;12967:10:0;;-1:-1:-1;;;;;12961:16:0;;;12967:10;;12961:16;12934:43;:80;;;;-1:-1:-1;12994:20:0;;;;12934:80;:120;;;;-1:-1:-1;;;;;;13032:22:0;;;;;;:16;:22;;;;;;;;13031:23;12934:120;12916:625;;;13108:14;;:21;;13125:4;13108:21;:::i;:::-;13085:20;:44;13081:111;;;13171:14;;:21;;13188:4;13171:21;:::i;:::-;13148:44;;13081:111;13239:13;;13207:69;;13224:4;;13239:13;;;-1:-1:-1;;;;;13239:13:0;13255:20;13207:8;:69::i;:::-;13326:13;;13293:70;;13326:13;;;-1:-1:-1;;;;;13326:13:0;13342:20;13293:24;:70::i;:::-;13404:21;13446:19;;13442:87;;13492:10;;13484:45;;-1:-1:-1;;;;;13492:10:0;;;;13484:45;;;;;13513:15;;13492:10;13484:45;13492:10;13484:45;13513:15;13492:10;13484:45;;;;;;;;;;;;;;;;;;;;;13442:87;13066:475;12916:625;12740:808;;12665:883;;;:::o;10740:1301::-;10895:10;;-1:-1:-1;;;;;10895:20:0;;;:10;;:20;:31;;;;;10919:7;10895:31;10891:1143;;;10943:14;10972:23;11019:24;11036:6;11019:16;:24::i;:::-;11010:33;-1:-1:-1;11076:15:0;11010:33;11076:6;:15;:::i;:::-;-1:-1:-1;;;;;11128:17:0;;;;;;:9;:17;;;;;;11058:33;;-1:-1:-1;11128:26:0;;11148:6;;11128:26;:::i;:::-;-1:-1:-1;;;;;11108:17:0;;;;;;;:9;:17;;;;;;:46;;;;11192:20;;;;;;;:38;;11215:15;;11192:38;:::i;:::-;-1:-1:-1;;;;;11169:20:0;;;;;;;:9;:20;;;;;;;:61;;;;11250:44;;;;;;;;;;11278:15;1613:25:1;;1601:2;1586:18;;1467:177;11250:44:0;;;;;;;;11311:28;11324:6;11332;11311:12;:28::i;:::-;10928:423;;10891:1143;;;11361:10;;-1:-1:-1;;;;;11361:23:0;;;:10;;:23;:34;;;;;11388:7;11361:34;11357:677;;;11412:14;11429:25;11447:6;11429:17;:25::i;:::-;11412:42;-1:-1:-1;11469:23:0;11495:15;11412:42;11495:6;:15;:::i;:::-;-1:-1:-1;;;;;11529:24:0;;;;;;:16;:24;;;;;;11469:41;;-1:-1:-1;11529:24:0;;11525:46;;;11555:16;11565:6;;11555:16;:::i;:::-;;;11525:46;-1:-1:-1;;;;;11606:17:0;;;;;;:9;:17;;;;;;:28;;11627:6;;11606:28;:::i;11357:677::-;-1:-1:-1;;;;;11872:17:0;;;;;;:9;:17;;;;;;:26;;11892:6;;11872:26;:::i;:::-;-1:-1:-1;;;;;11852:17:0;;;;;;;:9;:17;;;;;;:46;;;;11936:20;;;;;;;:31;;11960:6;;11936:31;:::i;:::-;-1:-1:-1;;;;;11913:20:0;;;;;;;:9;:20;;;;;;;:54;;;;11987:35;;;;;;;;;;12015:6;1613:25:1;;1601:2;1586:18;;1467:177;11987:35:0;;;;;;;;10740:1301;;;;:::o;13578:512::-;13786:16;;;13800:1;13786:16;;;;;;;;13735:13;;13693:24;;13786:16;13800:1;13786:16;;;;;;;;;;-1:-1:-1;13786:16:0;13762:40;;13831:4;13813;13818:1;13813:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;13813:23:0;;;-1:-1:-1;;;;;13813:23:0;;;;;13857:9;-1:-1:-1;;;;;13857:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13847:4;13852:1;13847:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13847:26:0;;;:7;;;;;;;;;:26;13886:60;;;13961:11;13987:1;14003:4;14030;14050:21;:15;14068:3;14050:21;:::i;:::-;13886:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13682:408;;13578:512;;:::o;12049:200::-;12167:4;12149:24;;;;:9;:24;;;;;;:35;;12177:6;;12149:35;:::i;:::-;12140:4;12122:24;;;;:9;:24;;;;;;;:62;;;;12202:39;;-1:-1:-1;;;;;12202:39:0;;;;;;;12234:6;1613:25:1;;1601:2;1586:18;;1467:177;12202:39:0;;;;;;;;12049:200;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2318:248::-;2386:6;2394;2447:2;2435:9;2426:7;2422:23;2418:32;2415:52;;;2463:1;2460;2453:12;2415:52;-1:-1:-1;;2486:23:1;;;2556:2;2541:18;;;2528:32;;-1:-1:-1;2318:248:1:o;3323:388::-;3391:6;3399;3452:2;3440:9;3431:7;3427:23;3423:32;3420:52;;;3468:1;3465;3458:12;3420:52;3507:9;3494:23;3526:31;3551:5;3526:31;:::i;:::-;3576:5;-1:-1:-1;3633:2:1;3618:18;;3605:32;3646:33;3605:32;3646:33;:::i;:::-;3698:7;3688:17;;;3323:388;;;;;:::o;3716:180::-;3775:6;3828:2;3816:9;3807:7;3803:23;3799:32;3796:52;;;3844:1;3841;3834:12;3796:52;-1:-1:-1;3867:23:1;;3716:180;-1:-1:-1;3716:180:1:o;3901:380::-;3980:1;3976:12;;;;4023;;;4044:61;;4098:4;4090:6;4086:17;4076:27;;4044:61;4151:2;4143:6;4140:14;4120:18;4117:38;4114:161;;4197:10;4192:3;4188:20;4185:1;4178:31;4232:4;4229:1;4222:15;4260:4;4257:1;4250:15;4114:161;;3901:380;;;:::o;4286:356::-;4488:2;4470:21;;;4507:18;;;4500:30;4566:34;4561:2;4546:18;;4539:62;4633:2;4618:18;;4286:356::o;4647:127::-;4708:10;4703:3;4699:20;4696:1;4689:31;4739:4;4736:1;4729:15;4763:4;4760:1;4753:15;4779:128;4846:9;;;4867:11;;;4864:37;;;4881:18;;:::i;4912:125::-;4977:9;;;4998:10;;;4995:36;;;5011:18;;:::i;5386:184::-;5456:6;5509:2;5497:9;5488:7;5484:23;5480:32;5477:52;;;5525:1;5522;5515:12;5477:52;-1:-1:-1;5548:16:1;;5386:184;-1:-1:-1;5386:184:1:o;6197:277::-;6264:6;6317:2;6305:9;6296:7;6292:23;6288:32;6285:52;;;6333:1;6330;6323:12;6285:52;6365:9;6359:16;6418:5;6411:13;6404:21;6397:5;6394:32;6384:60;;6440:1;6437;6430:12;6479:168;6552:9;;;6583;;6600:15;;;6594:22;;6580:37;6570:71;;6621:18;;:::i;6652:217::-;6692:1;6718;6708:132;;6762:10;6757:3;6753:20;6750:1;6743:31;6797:4;6794:1;6787:15;6825:4;6822:1;6815:15;6708:132;-1:-1:-1;6854:9:1;;6652:217::o;6874:251::-;6944:6;6997:2;6985:9;6976:7;6972:23;6968:32;6965:52;;;7013:1;7010;7003:12;6965:52;7045:9;7039:16;7064:31;7089:5;7064:31;:::i;8051:306::-;8139:6;8147;8155;8208:2;8196:9;8187:7;8183:23;8179:32;8176:52;;;8224:1;8221;8214:12;8176:52;8253:9;8247:16;8237:26;;8303:2;8292:9;8288:18;8282:25;8272:35;;8347:2;8336:9;8332:18;8326:25;8316:35;;8051:306;;;;;:::o;11765:127::-;11826:10;11821:3;11817:20;11814:1;11807:31;11857:4;11854:1;11847:15;11881:4;11878:1;11871:15;11897:980;12159:4;12207:3;12196:9;12192:19;12238:6;12227:9;12220:25;12264:2;12302:6;12297:2;12286:9;12282:18;12275:34;12345:3;12340:2;12329:9;12325:18;12318:31;12369:6;12404;12398:13;12435:6;12427;12420:22;12473:3;12462:9;12458:19;12451:26;;12512:2;12504:6;12500:15;12486:29;;12533:1;12543:195;12557:6;12554:1;12551:13;12543:195;;;12622:13;;-1:-1:-1;;;;;12618:39:1;12606:52;;12713:15;;;;12678:12;;;;12654:1;12572:9;12543:195;;;-1:-1:-1;;;;;;;12794:32:1;;;;12789:2;12774:18;;12767:60;-1:-1:-1;;;12858:3:1;12843:19;12836:35;12755:3;11897:980;-1:-1:-1;;;11897:980:1:o

Swarm Source

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