ETH Price: $3,188.76 (-2.29%)

Token

Mù dēng (MUDENG)
 

Overview

Max Total Supply

420,690,000,000 MUDENG

Holders

164

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,103,450,000 MUDENG

Value
$0.00
0xdDfE0b953E0c88aAa8f01f769FFEB8C856E80F51
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:
MUDENG

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-15
*/

// SPDX-License-Identifier: MIT

/*
https://t.me/MuDengCoinErc
https://MuDeng.Xyz
https://x.com/MuDengX
*/

pragma solidity ^0.8.22;

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

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

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 9;
    }

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

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

    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

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

        return true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

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

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract MUDENG is ERC20, Ownable {
    IUniswapV2Router02 private constant _router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    address public uniswapPair;
    address public immutable feeReceiver;

    uint256 private maxWalletSize = 4206900000 * 1e9;
    uint256 private contractSwapMax = 4206900000 * 1e9;
    uint256 private contractSwapMin = 210345000 * 1e9;  
    uint32 private _buyCount;
    uint32 private _sellCount;
    uint32 private _lastSellBlock;
    uint256 private _startBlock;
    uint32 private _preventSwapBefore = 80;
    uint32 private _lowerFeesAt = 80;
    uint32 private _finalBuyFee = 0;
    uint32 private _finalSellFee = 20;
    bool private _inSwap;

    uint256 public buyFeePercent;
    uint256 public sellFeePercent;

    mapping (address => bool) private excludedFromTxLimits;

    constructor() ERC20(unicode"Mù dēng", "MUDENG") payable {
        uint256 totalSupply = 420690000000 * 1e9; 

        feeReceiver = msg.sender;
        buyFeePercent = 10;
        sellFeePercent = 20;

        excludedFromTxLimits[feeReceiver] = true;
        excludedFromTxLimits[msg.sender] = true;
        excludedFromTxLimits[address(this)] = true;
        excludedFromTxLimits[address(0xdead)] = true;
        
        _approve(address(this), address(_router), totalSupply);
        _approve(msg.sender, address(_router), totalSupply);
        _mint(msg.sender, totalSupply);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "Transfer from the zero address not allowed.");
        require(to != address(0), "Transfer to the zero address not allowed.");
        require(amount > 0, 'Transfer amount must be greater than zero.');

        bool excluded = excludedFromTxLimits[from] || excludedFromTxLimits[to];
        require(uniswapPair != address(0) || excluded, "Liquidity pair not yet created.");

        bool isSell = to == uniswapPair;
        bool isBuy = from == uniswapPair;

        if(isBuy && !excluded){
            require(balanceOf(to) + amount <= maxWalletSize ||
                to == address(_router), "Max wallet exceeded");
            if (block.number == _startBlock) {
              require(_buyCount<=_lowerFeesAt);
            }
            if(_buyCount <= _lowerFeesAt)
                _buyCount++;
            if(_buyCount == _lowerFeesAt){
                buyFeePercent = _finalBuyFee;
                sellFeePercent = _finalSellFee;
            }
        }            

        uint256 contractTokenBalance = balanceOf(address(this));
        if (isSell && !_inSwap && contractTokenBalance >= contractSwapMin &&
          !excluded && _buyCount > _preventSwapBefore
        ) {
            if (block.number > _lastSellBlock) 
                _sellCount = 0;
            require(_sellCount < 3, "Only 3 sells per block!");
            _inSwap = true;
            swapTokensForEth(min(amount*15/10, min(contractTokenBalance, contractSwapMax)));
            _inSwap = false;
            uint256 contractETHBalance = address(this).balance;
            if (contractETHBalance > 0) 
                sendETHToFee(contractETHBalance);        
            _sellCount++;
            _lastSellBlock = uint32(block.number);
        }

        uint256 fee = isBuy ? buyFeePercent : sellFeePercent;

        if (fee > 0 && !excluded && !_inSwap && (isBuy || isSell)) {
            uint256 fees = amount * fee / 100;
            if (fees > 0){
                super._transfer(from, address(this), fees);
                amount-= fees;
            }
        }
        super._transfer(from, to, amount);
    }

    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

     function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _router.WETH();
        _approve(address(this), address(_router), tokenAmount);
        _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    } 

    function sendETHToFee(uint256 amount) private {
        payable(feeReceiver).transfer(amount);
    }

    function startTrading() external payable onlyOwner {
        super._transfer(msg.sender, address(this), totalSupply());
        _router.addLiquidityETH{value: msg.value}(address(this), 336552000000000000000, 0, 0, msg.sender, block.timestamp);
        uniswapPair = IUniswapV2Factory(_router.factory()).getPair(address(this), _router.WETH());
        _startBlock = block.number;
    }

    function setSwapFees(uint256 newBuyFee, uint256 newSellFee) external onlyOwner {
        require(newBuyFee <= 10 && newSellFee <= 10, 'New fee must be lower.'); 
        buyFeePercent = newBuyFee;
        sellFeePercent = newSellFee;
        _finalBuyFee = uint32(newBuyFee);
        _finalSellFee = uint32(newSellFee);
    }

    function removeLimits() external onlyOwner {                
        maxWalletSize = totalSupply();
    }

    function updateStructure(uint256 maxAmount, uint256 minAmount) external onlyOwner {                
        contractSwapMax = maxAmount;
        contractSwapMin = minAmount;
    }

    function sweepStuckETH() external onlyOwner {
        payable(feeReceiver).transfer(address(this).balance);
    }

    function transferStuckToken(IERC20 token) external onlyOwner {
        token.transfer(feeReceiver, token.balanceOf(address(this)));
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"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":"buyFeePercent","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":"feeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"setSwapFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"sweepStuckETH","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"transferStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxAmount","type":"uint256"},{"internalType":"uint256","name":"minAmount","type":"uint256"}],"name":"updateStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

673a61e942c997400060078190556008556702eb4ba9bd4790006009908155600c80546001600160801b0319166c1400000000000000500000005017905560a0908152684dc3b92064c4936e6760b81b60c052610120604052600660e0908152654d5544454e4760d01b6101005260036100798382610459565b5060046100868282610459565b50505061009f61009a61016460201b60201c565b610168565b336080819052600a600d556014600e555f908152600f60205260408082208054600160ff19918216811790925530808552928420805482168317905561dead9093527f99629f56119585bf27511b6b7d295dffb54757453fcc3dabcf51d92028301f108054909316179091556816ce3f1e16bf1500009061013590737a250d5630b4cf539739df2c5dacb4c659f2488d836101b9565b61015433737a250d5630b4cf539739df2c5dacb4c659f2488d836101b9565b61015e33826102e1565b50610538565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0383166102205760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b0382166102815760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610217565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382166103375760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610217565b8060025f8282546103489190610513565b90915550506001600160a01b0382165f9081526020819052604081208054839290610374908490610513565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806103ea57607f821691505b60208210810361040857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156103bd57805f5260205f20601f840160051c810160208510156104335750805b601f840160051c820191505b81811015610452575f815560010161043f565b5050505050565b81516001600160401b03811115610472576104726103c2565b6104868161048084546103d6565b8461040e565b6020601f8211600181146104b8575f83156104a15750848201515b5f19600385901b1c1916600184901b178455610452565b5f84815260208120601f198516915b828110156104e757878501518255602094850194600190920191016104c7565b508482101561050457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b8082018082111561053257634e487b7160e01b5f52601160045260245ffd5b92915050565b608051611ade6105655f395f818161037c01528181610a3101528181610b4f015261173e0152611ade5ff3fe60806040526004361061014a575f3560e01c80638da5cb5b116100b3578063c7003cd01161006d578063c7003cd01461039e578063c816841b146103b2578063cc3fdd4c146103d1578063dd62ed3e146103e6578063e0d30d9b1461042a578063f2fde38b1461043f575f80fd5b80638da5cb5b146102c957806395d89b41146102fa578063a457c2d71461030e578063a6ebb1331461032d578063a9059cbb1461034c578063b3f006741461036b575f80fd5b80633950935111610104578063395093511461021057806346bc42581461022f57806359acbe4e1461024e57806370a082311461026d578063715018a6146102a1578063751039fc146102b5575f80fd5b806306fdde0314610155578063095ea7b31461017f57806318160ddd146101ae57806323b872dd146101cc578063293230b8146101eb578063313ce567146101f5575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5061016961045e565b6040516101769190611784565b60405180910390f35b34801561018a575f80fd5b5061019e6101993660046117cd565b6104ee565b6040519015158152602001610176565b3480156101b9575f80fd5b506002545b604051908152602001610176565b3480156101d7575f80fd5b5061019e6101e63660046117f7565b610507565b6101f361052a565b005b348015610200575f80fd5b5060405160098152602001610176565b34801561021b575f80fd5b5061019e61022a3660046117cd565b61079a565b34801561023a575f80fd5b506101f3610249366004611835565b6107d8565b348015610259575f80fd5b506101f3610268366004611835565b61080d565b348015610278575f80fd5b506101be610287366004611855565b6001600160a01b03165f9081526020819052604090205490565b3480156102ac575f80fd5b506101f36108da565b3480156102c0575f80fd5b506101f361090f565b3480156102d4575f80fd5b506005546001600160a01b03165b6040516001600160a01b039091168152602001610176565b348015610305575f80fd5b50610169610941565b348015610319575f80fd5b5061019e6103283660046117cd565b610950565b348015610338575f80fd5b506101f3610347366004611855565b6109e1565b348015610357575f80fd5b5061019e6103663660046117cd565b610b0b565b348015610376575f80fd5b506102e27f000000000000000000000000000000000000000000000000000000000000000081565b3480156103a9575f80fd5b506101f3610b18565b3480156103bd575f80fd5b506006546102e2906001600160a01b031681565b3480156103dc575f80fd5b506101be600d5481565b3480156103f1575f80fd5b506101be610400366004611870565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610435575f80fd5b506101be600e5481565b34801561044a575f80fd5b506101f3610459366004611855565b610b97565b60606003805461046d906118a7565b80601f0160208091040260200160405190810160405280929190818152602001828054610499906118a7565b80156104e45780601f106104bb576101008083540402835291602001916104e4565b820191905f5260205f20905b8154815290600101906020018083116104c757829003601f168201915b5050505050905090565b5f336104fb818585610c2f565b60019150505b92915050565b5f33610514858285610d52565b61051f858585610de2565b506001949350505050565b6005546001600160a01b0316331461055d5760405162461bcd60e51b8152600401610554906118df565b60405180910390fd5b610570333061056b60025490565b611374565b60405163f305d71960e01b815230600482015268123e98e4deff44000060248201525f6044820181905260648201523360848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af11580156105e8573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061060d9190611914565b505050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610660573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610684919061193f565b6001600160a01b031663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106e3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610707919061193f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610750573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610774919061193f565b600680546001600160a01b0319166001600160a01b039290921691909117905543600b55565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091906104fb90829086906107d390879061196e565b610c2f565b6005546001600160a01b031633146108025760405162461bcd60e51b8152600401610554906118df565b600891909155600955565b6005546001600160a01b031633146108375760405162461bcd60e51b8152600401610554906118df565b600a82111580156108495750600a8111155b61088e5760405162461bcd60e51b81526020600482015260166024820152752732bb903332b29036bab9ba103132903637bbb2b91760511b6044820152606401610554565b600d829055600e819055600c80546fffffffffffffffff00000000000000001916600160401b63ffffffff9485160263ffffffff60601b191617600160601b9390921692909202179055565b6005546001600160a01b031633146109045760405162461bcd60e51b8152600401610554906118df565b61090d5f611540565b565b6005546001600160a01b031633146109395760405162461bcd60e51b8152600401610554906118df565b600254600755565b60606004805461046d906118a7565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909190838110156109d45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610554565b61051f8286868403610c2f565b6005546001600160a01b03163314610a0b5760405162461bcd60e51b8152600401610554906118df565b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb907f00000000000000000000000000000000000000000000000000000000000000009083906370a0823190602401602060405180830381865afa158015610a77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9b9190611981565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610ae3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b079190611998565b5050565b5f336104fb818585610de2565b6005546001600160a01b03163314610b425760405162461bcd60e51b8152600401610554906118df565b6040516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016904780156108fc02915f818181858888f19350505050158015610b94573d5f803e3d5ffd5b50565b6005546001600160a01b03163314610bc15760405162461bcd60e51b8152600401610554906118df565b6001600160a01b038116610c265760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610554565b610b9481611540565b6001600160a01b038316610c915760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610554565b6001600160a01b038216610cf25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610554565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198114610ddc5781811015610dcf5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610554565b610ddc8484848403610c2f565b50505050565b6001600160a01b038316610e4c5760405162461bcd60e51b815260206004820152602b60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373206e60448201526a37ba1030b63637bbb2b21760a91b6064820152608401610554565b6001600160a01b038216610eb45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220746f20746865207a65726f2061646472657373206e6f746044820152681030b63637bbb2b21760b91b6064820152608401610554565b5f8111610f165760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152693a3430b7103d32b9379760b11b6064820152608401610554565b6001600160a01b0383165f908152600f602052604081205460ff1680610f5357506001600160a01b0383165f908152600f602052604090205460ff165b6006549091506001600160a01b0316151580610f6c5750805b610fb85760405162461bcd60e51b815260206004820152601f60248201527f4c69717569646974792070616972206e6f742079657420637265617465642e006044820152606401610554565b6006546001600160a01b03908116848216811491861614808015610fda575082155b156111315760075484611001876001600160a01b03165f9081526020819052604090205490565b61100b919061196e565b11158061103457506001600160a01b038516737a250d5630b4cf539739df2c5dacb4c659f2488d145b6110765760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610554565b600b5443036110a157600c54600a5463ffffffff6401000000009092048216911611156110a1575f80fd5b600c54600a5463ffffffff64010000000090920482169116116110f357600a805463ffffffff16905f6110d3836119b7565b91906101000a81548163ffffffff021916908363ffffffff160217905550505b600c54600a5463ffffffff640100000000909204821691160361113157600c5463ffffffff600160401b82048116600d55600160601b90910416600e555b305f908152602081905260409020548280156111575750600c54600160801b900460ff16155b801561116557506009548110155b801561116f575083155b80156111885750600c54600a5463ffffffff9182169116115b156112da57600a54600160401b900463ffffffff164311156111b657600a805467ffffffff00000000191690555b600a54600364010000000090910463ffffffff16106112175760405162461bcd60e51b815260206004820152601760248201527f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000006044820152606401610554565b600c805460ff60801b1916600160801b17905561125d611258600a61123d88600f6119db565b61124791906119f2565b61125384600854611591565b611591565b6115a8565b600c805460ff60801b1916905547801561127a5761127a81611731565b600a8054640100000000900463ffffffff16906004611298836119b7565b91906101000a81548163ffffffff021916908363ffffffff1602179055505043600a60086101000a81548163ffffffff021916908363ffffffff160217905550505b5f826112e857600e546112ec565b600d545b90505f811180156112fb575084155b80156113115750600c54600160801b900460ff16155b8015611321575082806113215750835b1561135f575f606461133383896119db565b61133d91906119f2565b9050801561135d57611350893083611374565b61135a8188611a11565b96505b505b61136a888888611374565b5050505050505050565b6001600160a01b0383166113d85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610554565b6001600160a01b03821661143a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610554565b6001600160a01b0383165f90815260208190526040902054818110156114b15760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610554565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906114e790849061196e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161153391815260200190565b60405180910390a3610ddc565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f81831161159f57826115a1565b815b9392505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106115db576115db611a24565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561164b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166f919061193f565b8160018151811061168257611682611a24565b60200260200101906001600160a01b031690816001600160a01b0316815250506116c130737a250d5630b4cf539739df2c5dacb4c659f2488d84610c2f565b60405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906117009085905f90869030904290600401611a38565b5f604051808303815f87803b158015611717575f80fd5b505af1158015611729573d5f803e3d5ffd5b505050505050565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169082156108fc029083905f818181858888f19350505050158015610b07573d5f803e3d5ffd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610b94575f80fd5b5f80604083850312156117de575f80fd5b82356117e9816117b9565b946020939093013593505050565b5f805f60608486031215611809575f80fd5b8335611814816117b9565b92506020840135611824816117b9565b929592945050506040919091013590565b5f8060408385031215611846575f80fd5b50508035926020909101359150565b5f60208284031215611865575f80fd5b81356115a1816117b9565b5f8060408385031215611881575f80fd5b823561188c816117b9565b9150602083013561189c816117b9565b809150509250929050565b600181811c908216806118bb57607f821691505b6020821081036118d957634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f805f60608486031215611926575f80fd5b5050815160208301516040909301519094929350919050565b5f6020828403121561194f575f80fd5b81516115a1816117b9565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105015761050161195a565b5f60208284031215611991575f80fd5b5051919050565b5f602082840312156119a8575f80fd5b815180151581146115a1575f80fd5b5f63ffffffff821663ffffffff81036119d2576119d261195a565b60010192915050565b80820281158282048414176105015761050161195a565b5f82611a0c57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156105015761050161195a565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611a885783516001600160a01b0316835260209384019390920191600101611a61565b50506001600160a01b03959095166060840152505060800152939250505056fea264697066735822122032b469cc50c7db52ceb5e69d21f47dc89a92c84daa0bbb61ec292cc06c0686bc64736f6c634300081a0033

Deployed Bytecode

0x60806040526004361061014a575f3560e01c80638da5cb5b116100b3578063c7003cd01161006d578063c7003cd01461039e578063c816841b146103b2578063cc3fdd4c146103d1578063dd62ed3e146103e6578063e0d30d9b1461042a578063f2fde38b1461043f575f80fd5b80638da5cb5b146102c957806395d89b41146102fa578063a457c2d71461030e578063a6ebb1331461032d578063a9059cbb1461034c578063b3f006741461036b575f80fd5b80633950935111610104578063395093511461021057806346bc42581461022f57806359acbe4e1461024e57806370a082311461026d578063715018a6146102a1578063751039fc146102b5575f80fd5b806306fdde0314610155578063095ea7b31461017f57806318160ddd146101ae57806323b872dd146101cc578063293230b8146101eb578063313ce567146101f5575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5061016961045e565b6040516101769190611784565b60405180910390f35b34801561018a575f80fd5b5061019e6101993660046117cd565b6104ee565b6040519015158152602001610176565b3480156101b9575f80fd5b506002545b604051908152602001610176565b3480156101d7575f80fd5b5061019e6101e63660046117f7565b610507565b6101f361052a565b005b348015610200575f80fd5b5060405160098152602001610176565b34801561021b575f80fd5b5061019e61022a3660046117cd565b61079a565b34801561023a575f80fd5b506101f3610249366004611835565b6107d8565b348015610259575f80fd5b506101f3610268366004611835565b61080d565b348015610278575f80fd5b506101be610287366004611855565b6001600160a01b03165f9081526020819052604090205490565b3480156102ac575f80fd5b506101f36108da565b3480156102c0575f80fd5b506101f361090f565b3480156102d4575f80fd5b506005546001600160a01b03165b6040516001600160a01b039091168152602001610176565b348015610305575f80fd5b50610169610941565b348015610319575f80fd5b5061019e6103283660046117cd565b610950565b348015610338575f80fd5b506101f3610347366004611855565b6109e1565b348015610357575f80fd5b5061019e6103663660046117cd565b610b0b565b348015610376575f80fd5b506102e27f0000000000000000000000008773d9847403520f18fe73a8173a4fc6ce33b78c81565b3480156103a9575f80fd5b506101f3610b18565b3480156103bd575f80fd5b506006546102e2906001600160a01b031681565b3480156103dc575f80fd5b506101be600d5481565b3480156103f1575f80fd5b506101be610400366004611870565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610435575f80fd5b506101be600e5481565b34801561044a575f80fd5b506101f3610459366004611855565b610b97565b60606003805461046d906118a7565b80601f0160208091040260200160405190810160405280929190818152602001828054610499906118a7565b80156104e45780601f106104bb576101008083540402835291602001916104e4565b820191905f5260205f20905b8154815290600101906020018083116104c757829003601f168201915b5050505050905090565b5f336104fb818585610c2f565b60019150505b92915050565b5f33610514858285610d52565b61051f858585610de2565b506001949350505050565b6005546001600160a01b0316331461055d5760405162461bcd60e51b8152600401610554906118df565b60405180910390fd5b610570333061056b60025490565b611374565b60405163f305d71960e01b815230600482015268123e98e4deff44000060248201525f6044820181905260648201523360848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af11580156105e8573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061060d9190611914565b505050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610660573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610684919061193f565b6001600160a01b031663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106e3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610707919061193f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610750573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610774919061193f565b600680546001600160a01b0319166001600160a01b039290921691909117905543600b55565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091906104fb90829086906107d390879061196e565b610c2f565b6005546001600160a01b031633146108025760405162461bcd60e51b8152600401610554906118df565b600891909155600955565b6005546001600160a01b031633146108375760405162461bcd60e51b8152600401610554906118df565b600a82111580156108495750600a8111155b61088e5760405162461bcd60e51b81526020600482015260166024820152752732bb903332b29036bab9ba103132903637bbb2b91760511b6044820152606401610554565b600d829055600e819055600c80546fffffffffffffffff00000000000000001916600160401b63ffffffff9485160263ffffffff60601b191617600160601b9390921692909202179055565b6005546001600160a01b031633146109045760405162461bcd60e51b8152600401610554906118df565b61090d5f611540565b565b6005546001600160a01b031633146109395760405162461bcd60e51b8152600401610554906118df565b600254600755565b60606004805461046d906118a7565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909190838110156109d45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610554565b61051f8286868403610c2f565b6005546001600160a01b03163314610a0b5760405162461bcd60e51b8152600401610554906118df565b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb907f0000000000000000000000008773d9847403520f18fe73a8173a4fc6ce33b78c9083906370a0823190602401602060405180830381865afa158015610a77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9b9190611981565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610ae3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b079190611998565b5050565b5f336104fb818585610de2565b6005546001600160a01b03163314610b425760405162461bcd60e51b8152600401610554906118df565b6040516001600160a01b037f0000000000000000000000008773d9847403520f18fe73a8173a4fc6ce33b78c16904780156108fc02915f818181858888f19350505050158015610b94573d5f803e3d5ffd5b50565b6005546001600160a01b03163314610bc15760405162461bcd60e51b8152600401610554906118df565b6001600160a01b038116610c265760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610554565b610b9481611540565b6001600160a01b038316610c915760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610554565b6001600160a01b038216610cf25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610554565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198114610ddc5781811015610dcf5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610554565b610ddc8484848403610c2f565b50505050565b6001600160a01b038316610e4c5760405162461bcd60e51b815260206004820152602b60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373206e60448201526a37ba1030b63637bbb2b21760a91b6064820152608401610554565b6001600160a01b038216610eb45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220746f20746865207a65726f2061646472657373206e6f746044820152681030b63637bbb2b21760b91b6064820152608401610554565b5f8111610f165760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152693a3430b7103d32b9379760b11b6064820152608401610554565b6001600160a01b0383165f908152600f602052604081205460ff1680610f5357506001600160a01b0383165f908152600f602052604090205460ff165b6006549091506001600160a01b0316151580610f6c5750805b610fb85760405162461bcd60e51b815260206004820152601f60248201527f4c69717569646974792070616972206e6f742079657420637265617465642e006044820152606401610554565b6006546001600160a01b03908116848216811491861614808015610fda575082155b156111315760075484611001876001600160a01b03165f9081526020819052604090205490565b61100b919061196e565b11158061103457506001600160a01b038516737a250d5630b4cf539739df2c5dacb4c659f2488d145b6110765760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610554565b600b5443036110a157600c54600a5463ffffffff6401000000009092048216911611156110a1575f80fd5b600c54600a5463ffffffff64010000000090920482169116116110f357600a805463ffffffff16905f6110d3836119b7565b91906101000a81548163ffffffff021916908363ffffffff160217905550505b600c54600a5463ffffffff640100000000909204821691160361113157600c5463ffffffff600160401b82048116600d55600160601b90910416600e555b305f908152602081905260409020548280156111575750600c54600160801b900460ff16155b801561116557506009548110155b801561116f575083155b80156111885750600c54600a5463ffffffff9182169116115b156112da57600a54600160401b900463ffffffff164311156111b657600a805467ffffffff00000000191690555b600a54600364010000000090910463ffffffff16106112175760405162461bcd60e51b815260206004820152601760248201527f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000006044820152606401610554565b600c805460ff60801b1916600160801b17905561125d611258600a61123d88600f6119db565b61124791906119f2565b61125384600854611591565b611591565b6115a8565b600c805460ff60801b1916905547801561127a5761127a81611731565b600a8054640100000000900463ffffffff16906004611298836119b7565b91906101000a81548163ffffffff021916908363ffffffff1602179055505043600a60086101000a81548163ffffffff021916908363ffffffff160217905550505b5f826112e857600e546112ec565b600d545b90505f811180156112fb575084155b80156113115750600c54600160801b900460ff16155b8015611321575082806113215750835b1561135f575f606461133383896119db565b61133d91906119f2565b9050801561135d57611350893083611374565b61135a8188611a11565b96505b505b61136a888888611374565b5050505050505050565b6001600160a01b0383166113d85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610554565b6001600160a01b03821661143a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610554565b6001600160a01b0383165f90815260208190526040902054818110156114b15760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610554565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906114e790849061196e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161153391815260200190565b60405180910390a3610ddc565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f81831161159f57826115a1565b815b9392505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106115db576115db611a24565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561164b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166f919061193f565b8160018151811061168257611682611a24565b60200260200101906001600160a01b031690816001600160a01b0316815250506116c130737a250d5630b4cf539739df2c5dacb4c659f2488d84610c2f565b60405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906117009085905f90869030904290600401611a38565b5f604051808303815f87803b158015611717575f80fd5b505af1158015611729573d5f803e3d5ffd5b505050505050565b6040516001600160a01b037f0000000000000000000000008773d9847403520f18fe73a8173a4fc6ce33b78c169082156108fc029083905f818181858888f19350505050158015610b07573d5f803e3d5ffd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610b94575f80fd5b5f80604083850312156117de575f80fd5b82356117e9816117b9565b946020939093013593505050565b5f805f60608486031215611809575f80fd5b8335611814816117b9565b92506020840135611824816117b9565b929592945050506040919091013590565b5f8060408385031215611846575f80fd5b50508035926020909101359150565b5f60208284031215611865575f80fd5b81356115a1816117b9565b5f8060408385031215611881575f80fd5b823561188c816117b9565b9150602083013561189c816117b9565b809150509250929050565b600181811c908216806118bb57607f821691505b6020821081036118d957634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f805f60608486031215611926575f80fd5b5050815160208301516040909301519094929350919050565b5f6020828403121561194f575f80fd5b81516115a1816117b9565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105015761050161195a565b5f60208284031215611991575f80fd5b5051919050565b5f602082840312156119a8575f80fd5b815180151581146115a1575f80fd5b5f63ffffffff821663ffffffff81036119d2576119d261195a565b60010192915050565b80820281158282048414176105015761050161195a565b5f82611a0c57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156105015761050161195a565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611a885783516001600160a01b0316835260209384019390920191600101611a61565b50506001600160a01b03959095166060840152505060800152939250505056fea264697066735822122032b469cc50c7db52ceb5e69d21f47dc89a92c84daa0bbb61ec292cc06c0686bc64736f6c634300081a0033

Deployed Bytecode Sourcemap

8397:5799:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2481:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3412:201;;;;;;;;;;-1:-1:-1;3412:201:0;;;;;:::i;:::-;;:::i;:::-;;;1110:14:1;;1103:22;1085:41;;1073:2;1058:18;3412:201:0;945:187:1;2801:108:0;;;;;;;;;;-1:-1:-1;2889:12:0;;2801:108;;;1283:25:1;;;1271:2;1256:18;2801:108:0;1137:177:1;3621:295:0;;;;;;;;;;-1:-1:-1;3621:295:0;;;;;:::i;:::-;;:::i;12853:389::-;;;:::i;:::-;;2701:92;;;;;;;;;;-1:-1:-1;2701:92:0;;2784:1;1974:36:1;;1962:2;1947:18;2701:92:0;1832:184:1;3924:240:0;;;;;;;;;;-1:-1:-1;3924:240:0;;;;;:::i;:::-;;:::i;13704:182::-;;;;;;;;;;-1:-1:-1;13704:182:0;;;;;:::i;:::-;;:::i;13250:331::-;;;;;;;;;;-1:-1:-1;13250:331:0;;;;;:::i;:::-;;:::i;2917:127::-;;;;;;;;;;-1:-1:-1;2917:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3018:18:0;2991:7;3018:18;;;;;;;;;;;;2917:127;7879:103;;;;;;;;;;;;;:::i;13589:107::-;;;;;;;;;;;;;:::i;7656:87::-;;;;;;;;;;-1:-1:-1;7729:6:0;;-1:-1:-1;;;;;7729:6:0;7656:87;;;-1:-1:-1;;;;;2788:32:1;;;2770:51;;2758:2;2743:18;7656:87:0;2624:203:1;2589:104:0;;;;;;;;;;;;;:::i;4172:438::-;;;;;;;;;;-1:-1:-1;4172:438:0;;;;;:::i;:::-;;:::i;14017:139::-;;;;;;;;;;-1:-1:-1;14017:139:0;;;;;:::i;:::-;;:::i;3052:193::-;;;;;;;;;;-1:-1:-1;3052:193:0;;;;;:::i;:::-;;:::i;8588:36::-;;;;;;;;;;;;;;;13894:115;;;;;;;;;;;;;:::i;8555:26::-;;;;;;;;;;-1:-1:-1;8555:26:0;;;;-1:-1:-1;;;;;8555:26:0;;;9127:28;;;;;;;;;;;;;;;;3253:151;;;;;;;;;;-1:-1:-1;3253:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3369:18:0;;;3342:7;3369:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3253:151;9162:29;;;;;;;;;;;;;;;;7990:201;;;;;;;;;;-1:-1:-1;7990:201:0;;;;;:::i;:::-;;:::i;2481:100::-;2535:13;2568:5;2561:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2481:100;:::o;3412:201::-;3495:4;1025:10;3551:32;1025:10;3567:7;3576:6;3551:8;:32::i;:::-;3601:4;3594:11;;;3412:201;;;;;:::o;3621:295::-;3752:4;1025:10;3810:38;3826:4;1025:10;3841:6;3810:15;:38::i;:::-;3859:27;3869:4;3875:2;3879:6;3859:9;:27::i;:::-;-1:-1:-1;3904:4:0;;3621:295;-1:-1:-1;;;;3621:295:0:o;12853:389::-;7729:6;;-1:-1:-1;;;;;7729:6:0;1025:10;7791:23;7783:68;;;;-1:-1:-1;;;7783:68:0;;;;;;;:::i;:::-;;;;;;;;;12915:57:::1;12931:10;12951:4;12958:13;2889:12:::0;;;2801:108;12958:13:::1;12915:15;:57::i;:::-;12983:114;::::0;-1:-1:-1;;;12983:114:0;;13033:4:::1;12983:114;::::0;::::1;4568:51:1::0;13040:21:0::1;4635:18:1::0;;;4628:34;13063:1:0::1;4678:18:1::0;;;4671:34;;;4721:18;;;4714:34;13069:10:0::1;4764:19:1::0;;;4757:61;13081:15:0::1;4834:19:1::0;;;4827:35;8503:42:0::1;::::0;12983:23:::1;::::0;13014:9:::1;::::0;4540:19:1;;12983:114:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;8503:42;-1:-1:-1::0;;;;;13140:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13122:44:0::1;;13175:4;8503:42;-1:-1:-1::0;;;;;13182:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13122:75;::::0;-1:-1:-1;;;;;;13122:75:0::1;::::0;;;;;;-1:-1:-1;;;;;5782:32:1;;;13122:75:0::1;::::0;::::1;5764:51:1::0;5851:32;;5831:18;;;5824:60;5737:18;;13122:75:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13108:11;:89:::0;;-1:-1:-1;;;;;;13108:89:0::1;-1:-1:-1::0;;;;;13108:89:0;;;::::1;::::0;;;::::1;::::0;;13222:12:::1;13208:11;:26:::0;12853:389::o;3924:240::-;1025:10;4012:4;4093:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;4093:27:0;;;;;;;;;;4012:4;;1025:10;4068:66;;1025:10;;4093:27;;:40;;4123:10;;4093:40;:::i;:::-;4068:8;:66::i;13704:182::-;7729:6;;-1:-1:-1;;;;;7729:6:0;1025:10;7791:23;7783:68;;;;-1:-1:-1;;;7783:68:0;;;;;;;:::i;:::-;13813:15:::1;:27:::0;;;;13851:15:::1;:27:::0;13704:182::o;13250:331::-;7729:6;;-1:-1:-1;;;;;7729:6:0;1025:10;7791:23;7783:68;;;;-1:-1:-1;;;7783:68:0;;;;;;;:::i;:::-;13361:2:::1;13348:9;:15;;:35;;;;;13381:2;13367:10;:16;;13348:35;13340:70;;;::::0;-1:-1:-1;;;13340:70:0;;6359:2:1;13340:70:0::1;::::0;::::1;6341:21:1::0;6398:2;6378:18;;;6371:30;-1:-1:-1;;;6417:18:1;;;6410:52;6479:18;;13340:70:0::1;6157:346:1::0;13340:70:0::1;13422:13;:25:::0;;;13458:14:::1;:27:::0;;;13496:12:::1;:32:::0;;-1:-1:-1;;13539:34:0;-1:-1:-1;;;13496:32:0::1;::::0;;::::1;;-1:-1:-1::0;;;;13539:34:0;;-1:-1:-1;;;13539:34:0;;;::::1;::::0;;;::::1;;::::0;;13250:331::o;7879:103::-;7729:6;;-1:-1:-1;;;;;7729:6:0;1025:10;7791:23;7783:68;;;;-1:-1:-1;;;7783:68:0;;;;;;;:::i;:::-;7944:30:::1;7971:1;7944:18;:30::i;:::-;7879:103::o:0;13589:107::-;7729:6;;-1:-1:-1;;;;;7729:6:0;1025:10;7791:23;7783:68;;;;-1:-1:-1;;;7783:68:0;;;;;;;:::i;:::-;2889:12;;13659:13:::1;:29:::0;13589:107::o;2589:104::-;2645:13;2678:7;2671:14;;;;;:::i;4172:438::-;1025:10;4265:4;4348:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;4348:27:0;;;;;;;;;;4265:4;;1025:10;4394:35;;;;4386:85;;;;-1:-1:-1;;;4386:85:0;;6710:2:1;4386:85:0;;;6692:21:1;6749:2;6729:18;;;6722:30;6788:34;6768:18;;;6761:62;-1:-1:-1;;;6839:18:1;;;6832:35;6884:19;;4386:85:0;6508:401:1;4386:85:0;4507:60;4516:5;4523:7;4551:15;4532:16;:34;4507:8;:60::i;14017:139::-;7729:6;;-1:-1:-1;;;;;7729:6:0;1025:10;7791:23;7783:68;;;;-1:-1:-1;;;7783:68:0;;;;;;;:::i;:::-;14117:30:::1;::::0;-1:-1:-1;;;14117:30:0;;14141:4:::1;14117:30;::::0;::::1;2770:51:1::0;-1:-1:-1;;;;;14089:14:0;::::1;::::0;::::1;::::0;14104:11:::1;::::0;14089:14;;14117:15:::1;::::0;2743:18:1;;14117:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14089:59;::::0;-1:-1:-1;;;;;;14089:59:0::1;::::0;;;;;;-1:-1:-1;;;;;7341:32:1;;;14089:59:0::1;::::0;::::1;7323:51:1::0;7390:18;;;7383:34;7296:18;;14089:59:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14017:139:::0;:::o;3052:193::-;3131:4;1025:10;3187:28;1025:10;3204:2;3208:6;3187:9;:28::i;13894:115::-;7729:6;;-1:-1:-1;;;;;7729:6:0;1025:10;7791:23;7783:68;;;;-1:-1:-1;;;7783:68:0;;;;;;;:::i;:::-;13949:52:::1;::::0;-1:-1:-1;;;;;13957:11:0::1;13949:29;::::0;13979:21:::1;13949:52:::0;::::1;;;::::0;::::1;::::0;;;13979:21;13949:29;:52;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13894:115::o:0;7990:201::-;7729:6;;-1:-1:-1;;;;;7729:6:0;1025:10;7791:23;7783:68;;;;-1:-1:-1;;;7783:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8079:22:0;::::1;8071:73;;;::::0;-1:-1:-1;;;8071:73:0;;7912:2:1;8071:73:0::1;::::0;::::1;7894:21:1::0;7951:2;7931:18;;;7924:30;7990:34;7970:18;;;7963:62;-1:-1:-1;;;8041:18:1;;;8034:36;8087:19;;8071:73:0::1;7710:402:1::0;8071:73:0::1;8155:28;8174:8;8155:18;:28::i;6303:380::-:0;-1:-1:-1;;;;;6439:19:0;;6431:68;;;;-1:-1:-1;;;6431:68:0;;8319:2:1;6431:68:0;;;8301:21:1;8358:2;8338:18;;;8331:30;8397:34;8377:18;;;8370:62;-1:-1:-1;;;8448:18:1;;;8441:34;8492:19;;6431:68:0;8117:400:1;6431:68:0;-1:-1:-1;;;;;6518:21:0;;6510:68;;;;-1:-1:-1;;;6510:68:0;;8724:2:1;6510:68:0;;;8706:21:1;8763:2;8743:18;;;8736:30;8802:34;8782:18;;;8775:62;-1:-1:-1;;;8853:18:1;;;8846:32;8895:19;;6510:68:0;8522:398:1;6510:68:0;-1:-1:-1;;;;;6591:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6643:32;;1283:25:1;;;6643:32:0;;1256:18:1;6643:32:0;;;;;;;6303:380;;;:::o;6691:453::-;-1:-1:-1;;;;;3369:18:0;;;6826:24;3369:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;6893:37:0;;6889:248;;6975:6;6955:16;:26;;6947:68;;;;-1:-1:-1;;;6947:68:0;;9127:2:1;6947:68:0;;;9109:21:1;9166:2;9146:18;;;9139:30;9205:31;9185:18;;;9178:59;9254:18;;6947:68:0;8925:353:1;6947:68:0;7059:51;7068:5;7075:7;7103:6;7084:16;:25;7059:8;:51::i;:::-;6815:329;6691:453;;;:::o;9874:2298::-;-1:-1:-1;;;;;10006:18:0;;9998:74;;;;-1:-1:-1;;;9998:74:0;;9485:2:1;9998:74:0;;;9467:21:1;9524:2;9504:18;;;9497:30;9563:34;9543:18;;;9536:62;-1:-1:-1;;;9614:18:1;;;9607:41;9665:19;;9998:74:0;9283:407:1;9998:74:0;-1:-1:-1;;;;;10091:16:0;;10083:70;;;;-1:-1:-1;;;10083:70:0;;9897:2:1;10083:70:0;;;9879:21:1;9936:2;9916:18;;;9909:30;9975:34;9955:18;;;9948:62;-1:-1:-1;;;10026:18:1;;;10019:39;10075:19;;10083:70:0;9695:405:1;10083:70:0;10181:1;10172:6;:10;10164:65;;;;-1:-1:-1;;;10164:65:0;;10307:2:1;10164:65:0;;;10289:21:1;10346:2;10326:18;;;10319:30;10385:34;10365:18;;;10358:62;-1:-1:-1;;;10436:18:1;;;10429:40;10486:19;;10164:65:0;10105:406:1;10164:65:0;-1:-1:-1;;;;;10258:26:0;;10242:13;10258:26;;;:20;:26;;;;;;;;;:54;;-1:-1:-1;;;;;;10288:24:0;;;;;;:20;:24;;;;;;;;10258:54;10331:11;;10242:70;;-1:-1:-1;;;;;;10331:11:0;:25;;;:37;;;10360:8;10331:37;10323:81;;;;-1:-1:-1;;;10323:81:0;;10718:2:1;10323:81:0;;;10700:21:1;10757:2;10737:18;;;10730:30;10796:33;10776:18;;;10769:61;10847:18;;10323:81:0;10516:355:1;10323:81:0;10437:11;;-1:-1:-1;;;;;10437:11:0;;;10431:17;;;;;;10472:19;;;;10507:18;;;;;10517:8;10516:9;10507:18;10504:503;;;10575:13;;10565:6;10549:13;10559:2;-1:-1:-1;;;;;3018:18:0;2991:7;3018:18;;;;;;;;;;;;2917:127;10549:13;:22;;;;:::i;:::-;:39;;:82;;;-1:-1:-1;;;;;;10609:22:0;;8503:42;10609:22;10549:82;10541:114;;;;-1:-1:-1;;;10541:114:0;;11078:2:1;10541:114:0;;;11060:21:1;11117:2;11097:18;;;11090:30;-1:-1:-1;;;11136:18:1;;;11129:49;11195:18;;10541:114:0;10876:343:1;10541:114:0;10690:11;;10674:12;:27;10670:98;;10739:12;;10728:9;;10739:12;;;;;;;10728:9;;:23;;10720:32;;;;;;10798:12;;10785:9;;10798:12;;;;;;;10785:9;;:25;10782:58;;10829:9;:11;;;;;:9;:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;10782:58;10871:12;;10858:9;;10871:12;;;;;;;10858:9;;:25;10855:141;;10919:12;;;-1:-1:-1;;;10919:12:0;;;;10903:13;:28;-1:-1:-1;;;10967:13:0;;;;10950:14;:30;10855:141;11080:4;11031:28;3018:18;;;;;;;;;;;11101:6;:18;;;;-1:-1:-1;11112:7:0;;-1:-1:-1;;;11112:7:0;;;;11111:8;11101:18;:61;;;;;11147:15;;11123:20;:39;;11101:61;:85;;;;;11178:8;11177:9;11101:85;:119;;;;-1:-1:-1;11202:18:0;;11190:9;;11202:18;;;;11190:9;;:30;11101:119;11097:692;;;11266:14;;-1:-1:-1;;;11266:14:0;;;;11251:12;:29;11247:67;;;11300:10;:14;;-1:-1:-1;;11300:14:0;;;11247:67;11337:10;;11350:1;11337:10;;;;;;:14;11329:50;;;;-1:-1:-1;;;11329:50:0;;11619:2:1;11329:50:0;;;11601:21:1;11658:2;11638:18;;;11631:30;11697:25;11677:18;;;11670:53;11740:18;;11329:50:0;11417:347:1;11329:50:0;11394:7;:14;;-1:-1:-1;;;;11394:14:0;-1:-1:-1;;;11394:14:0;;;11423:79;11440:61;11454:2;11444:9;:6;11451:2;11444:9;:::i;:::-;:12;;;;:::i;:::-;11458:42;11462:20;11484:15;;11458:3;:42::i;:::-;11440:3;:61::i;:::-;11423:16;:79::i;:::-;11517:7;:15;;-1:-1:-1;;;;11517:15:0;;;11576:21;11616:22;;11612:78;;11658:32;11671:18;11658:12;:32::i;:::-;11713:10;:12;;;;;;;;:10;:12;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;11764;11740:14;;:37;;;;;;;;;;;;;;;;;;11232:557;11097:692;11801:11;11815:5;:38;;11839:14;;11815:38;;;11823:13;;11815:38;11801:52;;11876:1;11870:3;:7;:20;;;;;11882:8;11881:9;11870:20;:32;;;;-1:-1:-1;11895:7:0;;-1:-1:-1;;;11895:7:0;;;;11894:8;11870:32;:53;;;;;11907:5;:15;;;;11916:6;11907:15;11866:255;;;11940:12;11970:3;11955:12;11964:3;11955:6;:12;:::i;:::-;:18;;;;:::i;:::-;11940:33;-1:-1:-1;11992:8:0;;11988:122;;12020:42;12036:4;12050;12057;12020:15;:42::i;:::-;12081:13;12090:4;12081:13;;:::i;:::-;;;11988:122;11925:196;11866:255;12131:33;12147:4;12153:2;12157:6;12131:15;:33::i;:::-;9987:2185;;;;;9874:2298;;;:::o;4618:671::-;-1:-1:-1;;;;;4749:18:0;;4741:68;;;;-1:-1:-1;;;4741:68:0;;12499:2:1;4741:68:0;;;12481:21:1;12538:2;12518:18;;;12511:30;12577:34;12557:18;;;12550:62;-1:-1:-1;;;12628:18:1;;;12621:35;12673:19;;4741:68:0;12297:401:1;4741:68:0;-1:-1:-1;;;;;4828:16:0;;4820:64;;;;-1:-1:-1;;;4820:64:0;;12905:2:1;4820:64:0;;;12887:21:1;12944:2;12924:18;;;12917:30;12983:34;12963:18;;;12956:62;-1:-1:-1;;;13034:18:1;;;13027:33;13077:19;;4820:64:0;12703:399:1;4820:64:0;-1:-1:-1;;;;;4970:15:0;;4948:19;4970:15;;;;;;;;;;;5004:21;;;;4996:72;;;;-1:-1:-1;;;4996:72:0;;13309:2:1;4996:72:0;;;13291:21:1;13348:2;13328:18;;;13321:30;13387:34;13367:18;;;13360:62;-1:-1:-1;;;13438:18:1;;;13431:36;13484:19;;4996:72:0;13107:402:1;4996:72:0;-1:-1:-1;;;;;5104:15:0;;;:9;:15;;;;;;;;;;;5122:20;;;5104:38;;5164:13;;;;;;;;:23;;5136:6;;5104:9;5164:23;;5136:6;;5164:23;:::i;:::-;;;;;;;;5220:2;-1:-1:-1;;;;;5205:26:0;5214:4;-1:-1:-1;;;;;5205:26:0;;5224:6;5205:26;;;;1283:25:1;;1271:2;1256:18;;1137:177;5205:26:0;;;;;;;;5244:37;7152:125;8199:191;8292:6;;;-1:-1:-1;;;;;8309:17:0;;;-1:-1:-1;;;;;;8309:17:0;;;;;;;8342:40;;8292:6;;;8309:17;8292:6;;8342:40;;8273:16;;8342:40;8262:128;8199:191;:::o;12180:98::-;12237:7;12264:1;12262;:3;12261:9;;12269:1;12261:9;;;12267:1;12261:9;12254:16;12180:98;-1:-1:-1;;;12180:98:0:o;12287:447::-;12377:16;;;12391:1;12377:16;;;;;;;;12353:21;;12377:16;;;;;;;;;;-1:-1:-1;12377:16:0;12353:40;;12422:4;12404;12409:1;12404:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;12404:23:0;;;-1:-1:-1;;;;;12404:23:0;;;;;8503:42;-1:-1:-1;;;;;12448:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12438:4;12443:1;12438:7;;;;;;;;:::i;:::-;;;;;;:24;-1:-1:-1;;;;;12438:24:0;;;-1:-1:-1;;;;;12438:24:0;;;;;12473:54;12490:4;8503:42;12515:11;12473:8;:54::i;:::-;12538:188;;-1:-1:-1;;;12538:188:0;;8503:42;;12538:58;;:188;;12611:11;;12637:1;;12653:4;;12680;;12700:15;;12538:188;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12342:392;12287:447;:::o;12743:102::-;12800:37;;-1:-1:-1;;;;;12808:11:0;12800:29;;:37;;;;;12830:6;;12800:37;;;;12830:6;12800:29;:37;;;;;;;;;;;;;;;;;;;14:418:1;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;573:367;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;904:2;889:18;;;;876:32;;-1:-1:-1;;;573:367:1:o;1319:508::-;1396:6;1404;1412;1465:2;1453:9;1444:7;1440:23;1436:32;1433:52;;;1481:1;1478;1471:12;1433:52;1520:9;1507:23;1539:31;1564:5;1539:31;:::i;:::-;1589:5;-1:-1:-1;1646:2:1;1631:18;;1618:32;1659:33;1618:32;1659:33;:::i;:::-;1319:508;;1711:7;;-1:-1:-1;;;1791:2:1;1776:18;;;;1763:32;;1319:508::o;2021:346::-;2089:6;2097;2150:2;2138:9;2129:7;2125:23;2121:32;2118:52;;;2166:1;2163;2156:12;2118:52;-1:-1:-1;;2211:23:1;;;2331:2;2316:18;;;2303:32;;-1:-1:-1;2021:346:1:o;2372:247::-;2431:6;2484:2;2472:9;2463:7;2459:23;2455:32;2452:52;;;2500:1;2497;2490:12;2452:52;2539:9;2526:23;2558:31;2583:5;2558:31;:::i;3098:388::-;3166:6;3174;3227:2;3215:9;3206:7;3202:23;3198:32;3195:52;;;3243:1;3240;3233:12;3195:52;3282:9;3269:23;3301:31;3326:5;3301:31;:::i;:::-;3351:5;-1:-1:-1;3408:2:1;3393:18;;3380:32;3421:33;3380:32;3421:33;:::i;:::-;3473:7;3463:17;;;3098:388;;;;;:::o;3491:380::-;3570:1;3566:12;;;;3613;;;3634:61;;3688:4;3680:6;3676:17;3666:27;;3634:61;3741:2;3733:6;3730:14;3710:18;3707:38;3704:161;;3787:10;3782:3;3778:20;3775:1;3768:31;3822:4;3819:1;3812:15;3850:4;3847:1;3840:15;3704:161;;3491:380;;;:::o;3876:356::-;4078:2;4060:21;;;4097:18;;;4090:30;4156:34;4151:2;4136:18;;4129:62;4223:2;4208:18;;3876:356::o;4873:456::-;4961:6;4969;4977;5030:2;5018:9;5009:7;5005:23;5001:32;4998:52;;;5046:1;5043;5036:12;4998:52;-1:-1:-1;;5091:16:1;;5197:2;5182:18;;5176:25;5293:2;5278:18;;;5272:25;5091:16;;5176:25;;-1:-1:-1;5272:25:1;4873:456;-1:-1:-1;4873:456:1:o;5334:251::-;5404:6;5457:2;5445:9;5436:7;5432:23;5428:32;5425:52;;;5473:1;5470;5463:12;5425:52;5505:9;5499:16;5524:31;5549:5;5524:31;:::i;5895:127::-;5956:10;5951:3;5947:20;5944:1;5937:31;5987:4;5984:1;5977:15;6011:4;6008:1;6001:15;6027:125;6092:9;;;6113:10;;;6110:36;;;6126:18;;:::i;6914:230::-;6984:6;7037:2;7025:9;7016:7;7012:23;7008:32;7005:52;;;7053:1;7050;7043:12;7005:52;-1:-1:-1;7098:16:1;;6914:230;-1:-1:-1;6914:230:1:o;7428:277::-;7495:6;7548:2;7536:9;7527:7;7523:23;7519:32;7516:52;;;7564:1;7561;7554:12;7516:52;7596:9;7590:16;7649:5;7642:13;7635:21;7628:5;7625:32;7615:60;;7671:1;7668;7661:12;11224:188;11262:3;11306:10;11299:5;11295:22;11341:10;11332:7;11329:23;11326:49;;11355:18;;:::i;:::-;11404:1;11391:15;;11224:188;-1:-1:-1;;11224:188:1:o;11769:168::-;11842:9;;;11873;;11890:15;;;11884:22;;11870:37;11860:71;;11911:18;;:::i;11942:217::-;11982:1;12008;11998:132;;12052:10;12047:3;12043:20;12040:1;12033:31;12087:4;12084:1;12077:15;12115:4;12112:1;12105:15;11998:132;-1:-1:-1;12144:9:1;;11942:217::o;12164:128::-;12231:9;;;12252:11;;;12249:37;;;12266:18;;:::i;13646:127::-;13707:10;13702:3;13698:20;13695:1;13688:31;13738:4;13735:1;13728:15;13762:4;13759:1;13752:15;13778:959;14040:4;14088:3;14077:9;14073:19;14119:6;14108:9;14101:25;14162:6;14157:2;14146:9;14142:18;14135:34;14205:3;14200:2;14189:9;14185:18;14178:31;14229:6;14264;14258:13;14295:6;14287;14280:22;14333:3;14322:9;14318:19;14311:26;;14372:2;14364:6;14360:15;14346:29;;14393:1;14403:195;14417:6;14414:1;14411:13;14403:195;;;14482:13;;-1:-1:-1;;;;;14478:39:1;14466:52;;14547:2;14573:15;;;;14538:12;;;;14514:1;14432:9;14403:195;;;-1:-1:-1;;;;;;;14654:32:1;;;;14649:2;14634:18;;14627:60;-1:-1:-1;;14718:3:1;14703:19;14696:35;14615:3;13778:959;-1:-1:-1;;;13778:959:1:o

Swarm Source

ipfs://32b469cc50c7db52ceb5e69d21f47dc89a92c84daa0bbb61ec292cc06c0686bc
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.