ETH Price: $3,467.46 (+1.65%)

Token

BitcoinSolanaCryptoPndcTeSoBitrockXCocoCPepeBtc20 (MATIC)
 

Overview

Max Total Supply

100,000,000,000 MATIC

Holders

26

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000015236998533 MATIC

Value
$0.00
0xf49fbe67a722f6dc86ca12640f48dffd4c487832
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:
BitcoinSolanaCryptoPndcTeSoBitrockXCocoCPepeBtc20

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**

*/

/**

*/

// SPDX-License-Identifier: MIT   

pragma solidity 0.8.19;

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

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

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

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    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;
    uint8 private _decimals;

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

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

    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 recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, 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) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        return true;
    }

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

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

        return true;
    }

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

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _createInitialSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, 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);
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IDexRouter {
    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 swapExactETHForTokensSupportingFeeOnTransferTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
    function addLiquidity(address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline) external returns (uint amountA, uint amountB, uint liquidity);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function removeLiquidity(address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline) external returns (uint amountA, uint amountB);
}

interface ILpPair {
    function sync() external;
}

contract BitcoinSolanaCryptoPndcTeSoBitrockXCocoCPepeBtc20 is ERC20, Ownable {

    IDexRouter public immutable dexRouter;
    address public immutable lpPair;

    bool private swapping;

    address public operationsWallet;
    
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
    
    uint256 public liquidityActiveBlock = 0; // 0 means liquidity is not active yet
    uint256 public tradingActiveBlock = 0; // 0 means trading is not active
    uint256 public earlyBuyPenaltyEnd; // determines when snipers/bots can sell without extra penalty
    
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;
    
     // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;
    
    uint256 public constant feeDivisor = 10000;

    uint256 public totalSellFees;
    uint256 public operationsSellFee;
    uint256 public liquiditySellFee;
    
    uint256 public totalBuyFees;
    uint256 public operationsBuyFee;
    uint256 public liquidityBuyFee;
    
    uint256 public tokensForOperations;
    uint256 public tokensForLiquidity;

    /******************/

    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;

    address[] private earlyBuyers;
    uint256 private deadBlocks;
    mapping (address => bool) public _isBot;

    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded);
    event ExcludedMaxTransactionAmount(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event OperationsWalletUpdated(address indexed newWallet, address indexed oldWallet);

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

    constructor() ERC20("BitcoinSolanaCryptoPndcTeSoBitrockXCocoCPepeBtc20", "MATIC", 18) {

        address _dexRouter;

        if(block.chainid == 1){
            _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // Uni V2 Router
        } else if(block.chainid == 5){
            _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // Goerli Router
        } else if(block.chainid == 56){
            _dexRouter = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // Pancake V2 Router
        } else {
            revert("Chain not configured");
        }

        dexRouter = IDexRouter(_dexRouter);

        lpPair = IDexFactory(dexRouter.factory()).createPair(address(this), dexRouter.WETH());
        _setAutomatedMarketMakerPair(address(lpPair), true);

        uint256 totalSupply = 100 * 1e9 * (10 ** decimals());
        
        maxTransactionAmount = totalSupply * 20 / 1000; // 2% maxTransactionAmountTxn
        swapTokensAtAmount = totalSupply * 5 / 10000; // 0.05% swap tokens amount
        maxWallet = totalSupply * 2 / 100; // 2% Max wallet

        operationsBuyFee = 2000; // 100 = 1%
        liquidityBuyFee = 500;
        totalBuyFees = operationsBuyFee + liquidityBuyFee;
        
        operationsSellFee = 2000;
        liquiditySellFee = 500;
        totalSellFees = operationsSellFee + liquiditySellFee;
    	
    	operationsWallet = address(msg.sender); // set as operations wallet
        
        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(_dexRouter), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(_dexRouter), true);
        excludeFromMaxTransaction(address(0xdead), true);

        _createInitialSupply(address(owner()), totalSupply);

        _approve(address(this), address(dexRouter), type(uint256).max);
        _approve(owner(), address(dexRouter), totalSupply);
    }

    receive() external payable {}

    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }
    
    // once enabled, can never be turned off
    function enableTrading(uint256 _deadBlocks) external onlyOwner {
        require(!tradingActive, "Cannot re-enable trading");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        deadBlocks = _deadBlocks;
    }
    
    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }

    function updateMaxAmount(uint256 newNum) external onlyOwner {
        require(newNum > (totalSupply() * 1 / 1000) / (10 ** decimals()), "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * (10 ** decimals());
    }
    
    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum > (totalSupply() * 1 / 100)/(10 ** decimals()), "Cannot set maxWallet lower than 1%");
        maxWallet = newNum * (10 ** decimals());
    }
    
    function updateBuyFees(uint256 _operationsFee, uint256 _liquidityFee) external onlyOwner {
        operationsBuyFee = _operationsFee;
        liquidityBuyFee = _liquidityFee;
        totalBuyFees = operationsBuyFee + liquidityBuyFee;
        require(totalBuyFees <= 4000, "Must keep fees at 40% or less");
    }
    
    function updateSellFees(uint256 _operationsFee, uint256 _liquidityFee) external onlyOwner {
        operationsSellFee = _operationsFee;
        liquiditySellFee = _liquidityFee;
        totalSellFees = operationsSellFee + liquiditySellFee;
        require(totalSellFees <= 4000, "Must keep fees at 40% or less");
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
        emit ExcludedMaxTransactionAmount(updAds, isEx);
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) external onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFees[accounts[i]] = excluded;
        }

        emit ExcludeMultipleAccountsFromFees(accounts, excluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
        require(pair != lpPair, "The PancakeSwap pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        excludeFromMaxTransaction(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateOperationsWallet(address newOperationsWallet) external onlyOwner {
        require(newOperationsWallet != address(0), "may not set to 0 address");
        excludeFromFees(newOperationsWallet, true);
        emit OperationsWalletUpdated(newOperationsWallet, operationsWallet);
        operationsWallet = newOperationsWallet;
    }

    function isExcludedFromFees(address account) external view returns(bool) {
        return _isExcludedFromFees[account];
    }
    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool){
        limitsInEffect = false;
        transferDelayEnabled = false;
        return true;
    }
    
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!_isBot[to] && !_isBot[from], "No bots");

         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        
        if(!tradingActive){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active yet.");
        }
        
        if(limitsInEffect){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ){

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    require(_holderLastTransferTimestamp[tx.origin] + 15 < block.number, "Transfer Delay enabled.");
                    if (to != address(dexRouter) && to != address(lpPair)){
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
                }
                
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                    require(amount + balanceOf(to) <= maxWallet, "Unable to exceed Max Wallet");
                } 
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_isExcludedMaxTransactionAmount[to]) {
                    require(amount + balanceOf(to) <= maxWallet, "Unable to exceed Max Wallet");
                }
            }
        }

		uint256 contractTokenBalance = balanceOf(address(this));
        
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if( 
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        
        uint256 fees = 0;
        
        // no taxes on transfers (non buys/sells)
        if(takeFee){
            if(tradingActiveBlock + deadBlocks >= block.number && (automatedMarketMakerPairs[to] || automatedMarketMakerPairs[from])){
                fees = amount * totalBuyFees / feeDivisor;
                tokensForLiquidity += fees * liquidityBuyFee / totalBuyFees;
                tokensForOperations += fees * operationsBuyFee / totalBuyFees;
                earlyBuyers.push(to);
            }

            // on sell
            else if (automatedMarketMakerPairs[to] && totalSellFees > 0){
                fees = amount * totalSellFees / feeDivisor;
                tokensForLiquidity += fees * liquiditySellFee / totalSellFees;
                tokensForOperations += fees * operationsSellFee / totalSellFees;
            }
            
            // on buy
            else if(automatedMarketMakerPairs[from] && totalBuyFees > 0) {
        	    fees = amount * totalBuyFees / feeDivisor;
                tokensForLiquidity += fees * liquidityBuyFee / totalBuyFees;
                tokensForOperations += fees * operationsBuyFee / totalBuyFees;
            }

            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
        	
        	amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(operationsWallet),
            block.timestamp
        );     
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}


        if(tokensForLiquidity > 0){
            uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap;
            super._transfer(address(this), lpPair, liquidityTokens);
            try ILpPair(lpPair).sync(){} catch {}
            contractBalance -= liquidityTokens;
            totalTokensToSwap -= tokensForLiquidity;
            tokensForLiquidity = 0;
        }

        if(contractBalance > 0){
            swapTokensForEth(contractBalance);
        }
    }

    function TrendingTime() external onlyOwner {
        require(earlyBuyers.length > 0, "No bots to block");

        for(uint256 i = 0; i < earlyBuyers.length; i++){
            if(!_isBot[earlyBuyers[i]]){
                _isBot[earlyBuyers[i]] = true;
            }
        }

        delete earlyBuyers;
    }

    function freeToTrend(address[] memory _addresses) external onlyOwner {
        for(uint256 i = 0; i < _addresses.length; i++){
            _isBot[_addresses[i]] = false;
        }
    }

    function addNAGAMOTO(address[] memory _addresses) external onlyOwner {
        for(uint256 i = 0; i < _addresses.length; i++){
            _isBot[_addresses[i]] = true;
        }
    }

    function sendToWallets(address[] memory wallets, uint256[] memory amountsInWei) external onlyOwner {
        require(wallets.length == amountsInWei.length, "arrays must be the same length");
        require(wallets.length < 600, "Can only airdrop 600 wallets per txn due to gas limits");
        for(uint256 i = 0; i < wallets.length; i++){
            super._transfer(msg.sender, wallets[i], amountsInWei[i]);
        }

    }


}

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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedMaxTransactionAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"OperationsWalletUpdated","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"TrendingTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"addNAGAMOTO","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"freeToTrend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquiditySellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":"operationsBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInWei","type":"uint256[]"}],"name":"sendToWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperationsWallet","type":"address"}],"name":"updateOperationsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600a819055600b55600d805462ffffff19166001908117909155600f805460ff191690911790553480156200003a57600080fd5b5060405180606001604052806031815260200162003e23603191396040805180820190915260058152644d4154494360d81b60208201526012600362000081848262000990565b50600462000090838262000990565b506005805460ff191660ff929092169190911790555060009050620000b23390565b60058054610100600160a81b0319166101006001600160a01b03841690810291909117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000466001036200012f5750737a250d5630b4cf539739df2c5dacb4c659f2488d620001c6565b46600503620001545750737a250d5630b4cf539739df2c5dacb4c659f2488d620001c6565b466038036200017957507310ed43c718714eb63d5aa57b78b54704e256024e620001c6565b60405162461bcd60e51b815260206004820152601460248201527f436861696e206e6f7420636f6e6669677572656400000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000211573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000237919062000a5c565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000287573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ad919062000a5c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000321919062000a5c565b6001600160a01b031660a08190526200033c90600162000517565b60006200034b60055460ff1690565b6200035890600a62000ba3565b620003699064174876e80062000bb4565b90506103e86200037b82601462000bb4565b62000387919062000bce565b6007556127106200039a82600562000bb4565b620003a6919062000bce565b6008556064620003b882600262000bb4565b620003c4919062000bce565b6009556107d060148190556101f46015819055620003e29162000bf1565b6013556107d060118190556101f46012819055620004009162000bf1565b601055600680546001600160a01b03191633179055620004396200043160055461010090046001600160a01b031690565b600162000583565b6200044630600162000583565b6200045561dead600162000583565b6200046282600162000583565b620004866200047e60055461010090046001600160a01b031690565b600162000634565b6200049330600162000634565b620004a082600162000634565b620004af61dead600162000634565b620004d2620004cb60055461010090046001600160a01b031690565b82620006de565b620004e930608051600019620007c360201b60201c565b6200050f6200050560055461010090046001600160a01b031690565b60805183620007c3565b505062000c07565b6001600160a01b0382166000908152601d60205260409020805460ff191682151517905562000547828262000634565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03610100909104163314620005d45760405162461bcd60e51b8152602060048201819052602482015260008051602062003e548339815191526044820152606401620001bd565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791015b60405180910390a25050565b6005546001600160a01b03610100909104163314620006855760405162461bcd60e51b8152602060048201819052602482015260008051602062003e548339815191526044820152606401620001bd565b6001600160a01b0382166000818152601c6020908152604091829020805460ff191685151590811790915591519182527f575f9d01836c9206322151b9e9ec3f2b77b87e71176933b9b44d2d732f768d95910162000628565b6001600160a01b038216620007365760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620001bd565b80600260008282546200074a919062000bf1565b90915550506001600160a01b038216600090815260208190526040812080548392906200077990849062000bf1565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038316620008275760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401620001bd565b6001600160a01b0382166200088a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620001bd565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200091657607f821691505b6020821081036200093757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200098b57600081815260208120601f850160051c81016020861015620009665750805b601f850160051c820191505b81811015620009875782815560010162000972565b5050505b505050565b81516001600160401b03811115620009ac57620009ac620008eb565b620009c481620009bd845462000901565b846200093d565b602080601f831160018114620009fc5760008415620009e35750858301515b600019600386901b1c1916600185901b17855562000987565b600085815260208120601f198616915b8281101562000a2d5788860151825594840194600190910190840162000a0c565b508582101562000a4c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000a6f57600080fd5b81516001600160a01b038116811462000a8757600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000ae557816000190482111562000ac95762000ac962000a8e565b8085161562000ad757918102915b93841c939080029062000aa9565b509250929050565b60008262000afe5750600162000b9d565b8162000b0d5750600062000b9d565b816001811462000b26576002811462000b315762000b51565b600191505062000b9d565b60ff84111562000b455762000b4562000a8e565b50506001821b62000b9d565b5060208310610133831016604e8410600b841016171562000b76575081810a62000b9d565b62000b82838362000aa4565b806000190482111562000b995762000b9962000a8e565b0290505b92915050565b600062000a8760ff84168362000aed565b808202811582820484141762000b9d5762000b9d62000a8e565b60008262000bec57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000b9d5762000b9d62000a8e565b60805160a0516131c562000c5e600039600081816106030152818161151901528181611fc80152818161276d01526127940152600081816103e501528181611f8b01528181612887015261294201526131c56000f3fe60806040526004361061037a5760003560e01c806382aa7c68116101d1578063c492f04611610102578063e884f260116100a0578063f2fde38b1161006f578063f2fde38b14610a4a578063f8b45b0514610a6a578063fb002c9714610a80578063fd72e22a14610a9657600080fd5b8063e884f260146109e9578063ee40166e146109fe578063ef1c9eb814610a14578063efcc1b2f14610a3457600080fd5b8063ccb61358116100dc578063ccb6135814610961578063d0a3981414610977578063dd62ed3e1461098d578063e2f45605146109d357600080fd5b8063c492f04614610911578063c876d0b914610931578063c8c8ebe41461094b57600080fd5b8063a9059cbb1161016f578063b9e9370011610149578063b9e937001461089c578063bbc0c742146108b2578063c0246668146108d1578063c18bc195146108f157600080fd5b8063a9059cbb1461081c578063abb810521461083c578063b62496f51461086c57600080fd5b806395d89b41116101ab57806395d89b41146107b15780639a36f932146107c65780639a7a23d6146107dc578063a457c2d7146107fc57600080fd5b806382aa7c681461074e5780638da5cb5b1461076e578063924de9b71461079157600080fd5b806323b872dd116102ab57806366ca9b8311610249578063715018a611610223578063715018a6146106ee5780637506cbd814610703578063751039fc146107195780637571336a1461072e57600080fd5b806366ca9b83146106785780636ddd17131461069857806370a08231146106b857600080fd5b8063395093511161028557806339509351146105d1578063452ed4f1146105f15780634a62bb65146106255780634fbee1931461063f57600080fd5b806323b872dd1461056f57806330d5d18d1461058f578063313ce567146105af57600080fd5b8063106b5da1116103185780631795edae116102f25780631795edae1461051957806318160ddd1461052e5780631a8145bb146105435780631fc851bd1461055957600080fd5b8063106b5da1146104a957806310c1622e146104c957806310d5de53146104e957600080fd5b8063095ea7b311610354578063095ea7b31461041f578063099d0d301461044f5780630edae99d146104735780630f4432e31461049357600080fd5b806302dbd8f81461038657806306fdde03146103a85780630758d924146103d357600080fd5b3661038157005b600080fd5b34801561039257600080fd5b506103a66103a13660046129f2565b610ab6565b005b3480156103b457600080fd5b506103bd610b5d565b6040516103ca9190612a14565b60405180910390f35b3480156103df57600080fd5b506104077f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103ca565b34801561042b57600080fd5b5061043f61043a366004612a77565b610bef565b60405190151581526020016103ca565b34801561045b57600080fd5b5061046560125481565b6040519081526020016103ca565b34801561047f57600080fd5b506103a661048e366004612b82565b610c06565b34801561049f57600080fd5b50610465600a5481565b3480156104b557600080fd5b506103a66104c4366004612bbf565b610c9e565b3480156104d557600080fd5b506103a66104e4366004612bd8565b610d91565b3480156104f557600080fd5b5061043f610504366004612c93565b601c6020526000908152604090205460ff1681565b34801561052557600080fd5b506103a6610ee3565b34801561053a57600080fd5b50600254610465565b34801561054f57600080fd5b5061046560175481565b34801561056557600080fd5b50610465600c5481565b34801561057b57600080fd5b5061043f61058a366004612cb7565b611014565b34801561059b57600080fd5b506103a66105aa366004612c93565b6110c7565b3480156105bb57600080fd5b5060055460405160ff90911681526020016103ca565b3480156105dd57600080fd5b5061043f6105ec366004612a77565b6111b5565b3480156105fd57600080fd5b506104077f000000000000000000000000000000000000000000000000000000000000000081565b34801561063157600080fd5b50600d5461043f9060ff1681565b34801561064b57600080fd5b5061043f61065a366004612c93565b6001600160a01b031660009081526018602052604090205460ff1690565b34801561068457600080fd5b506103a66106933660046129f2565b6111f1565b3480156106a457600080fd5b50600d5461043f9062010000900460ff1681565b3480156106c457600080fd5b506104656106d3366004612c93565b6001600160a01b031660009081526020819052604090205490565b3480156106fa57600080fd5b506103a661128b565b34801561070f57600080fd5b5061046560115481565b34801561072557600080fd5b5061043f61130b565b34801561073a57600080fd5b506103a6610749366004612d0d565b61135a565b34801561075a57600080fd5b506103a6610769366004612bbf565b6113ea565b34801561077a57600080fd5b5060055461010090046001600160a01b0316610407565b34801561079d57600080fd5b506103a66107ac366004612d42565b61148c565b3480156107bd57600080fd5b506103bd6114d8565b3480156107d257600080fd5b5061046561271081565b3480156107e857600080fd5b506103a66107f7366004612d0d565b6114e7565b34801561080857600080fd5b5061043f610817366004612a77565b6115d6565b34801561082857600080fd5b5061043f610837366004612a77565b61166f565b34801561084857600080fd5b5061043f610857366004612c93565b601b6020526000908152604090205460ff1681565b34801561087857600080fd5b5061043f610887366004612c93565b601d6020526000908152604090205460ff1681565b3480156108a857600080fd5b5061046560135481565b3480156108be57600080fd5b50600d5461043f90610100900460ff1681565b3480156108dd57600080fd5b506103a66108ec366004612d0d565b61167c565b3480156108fd57600080fd5b506103a661090c366004612bbf565b611704565b34801561091d57600080fd5b506103a661092c366004612d5d565b6117e9565b34801561093d57600080fd5b50600f5461043f9060ff1681565b34801561095757600080fd5b5061046560075481565b34801561096d57600080fd5b5061046560155481565b34801561098357600080fd5b5061046560105481565b34801561099957600080fd5b506104656109a8366004612de1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156109df57600080fd5b5061046560085481565b3480156109f557600080fd5b5061043f6118cb565b348015610a0a57600080fd5b50610465600b5481565b348015610a2057600080fd5b506103a6610a2f366004612b82565b61190e565b348015610a4057600080fd5b5061046560145481565b348015610a5657600080fd5b506103a6610a65366004612c93565b6119a6565b348015610a7657600080fd5b5061046560095481565b348015610a8c57600080fd5b5061046560165481565b348015610aa257600080fd5b50600654610407906001600160a01b031681565b6005546001600160a01b03610100909104163314610aef5760405162461bcd60e51b8152600401610ae690612e1a565b60405180910390fd5b60118290556012819055610b038183612e65565b6010819055610fa01015610b595760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420343025206f72206c6573730000006044820152606401610ae6565b5050565b606060038054610b6c90612e78565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9890612e78565b8015610be55780601f10610bba57610100808354040283529160200191610be5565b820191906000526020600020905b815481529060010190602001808311610bc857829003601f168201915b5050505050905090565b6000610bfc338484611aa2565b5060015b92915050565b6005546001600160a01b03610100909104163314610c365760405162461bcd60e51b8152600401610ae690612e1a565b60005b8151811015610b59576001601b6000848481518110610c5a57610c5a612eb2565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610c9681612ec8565b915050610c39565b6005546001600160a01b03610100909104163314610cce5760405162461bcd60e51b8152600401610ae690612e1a565b60055460ff16610cdf90600a612fc5565b6103e8610ceb60025490565b610cf6906001612fd4565b610d009190612feb565b610d0a9190612feb565b8111610d705760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610ae6565b60055460ff16610d8190600a612fc5565b610d8b9082612fd4565b60075550565b6005546001600160a01b03610100909104163314610dc15760405162461bcd60e51b8152600401610ae690612e1a565b8051825114610e125760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e67746800006044820152606401610ae6565b610258825110610e835760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203630302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610ae6565b60005b8251811015610ede57610ecc33848381518110610ea557610ea5612eb2565b6020026020010151848481518110610ebf57610ebf612eb2565b6020026020010151611bc6565b80610ed681612ec8565b915050610e86565b505050565b6005546001600160a01b03610100909104163314610f135760405162461bcd60e51b8152600401610ae690612e1a565b601954610f555760405162461bcd60e51b815260206004820152601060248201526f4e6f20626f747320746f20626c6f636b60801b6044820152606401610ae6565b60005b60195481101561100557601b600060198381548110610f7957610f79612eb2565b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16610ff3576001601b600060198481548110610fbe57610fbe612eb2565b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790555b80610ffd81612ec8565b915050610f58565b50611012601960006129b8565b565b6000611021848484611d1b565b6001600160a01b038416600090815260016020908152604080832033845290915290205460001981146110bc57828110156110af5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ae6565b6110bc8533858403611aa2565b506001949350505050565b6005546001600160a01b036101009091041633146110f75760405162461bcd60e51b8152600401610ae690612e1a565b6001600160a01b03811661114d5760405162461bcd60e51b815260206004820152601860248201527f6d6179206e6f742073657420746f2030206164647265737300000000000000006044820152606401610ae6565b61115881600161167c565b6006546040516001600160a01b03918216918316907f086aa05ff00214e2d0c7c02b8a46b2614ad955732e6b43aa8afca69ed1ad76f890600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610bfc9185906111ec908690612e65565b611aa2565b6005546001600160a01b036101009091041633146112215760405162461bcd60e51b8152600401610ae690612e1a565b601482905560158190556112358183612e65565b6013819055610fa01015610b595760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420343025206f72206c6573730000006044820152606401610ae6565b6005546001600160a01b036101009091041633146112bb5760405162461bcd60e51b8152600401610ae690612e1a565b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b6005546000906001600160a01b0361010090910416331461133e5760405162461bcd60e51b8152600401610ae690612e1a565b50600d805460ff19908116909155600f80549091169055600190565b6005546001600160a01b0361010090910416331461138a5760405162461bcd60e51b8152600401610ae690612e1a565b6001600160a01b0382166000818152601c6020908152604091829020805460ff191685151590811790915591519182527f575f9d01836c9206322151b9e9ec3f2b77b87e71176933b9b44d2d732f768d9591015b60405180910390a25050565b6005546001600160a01b0361010090910416331461141a5760405162461bcd60e51b8152600401610ae690612e1a565b600d54610100900460ff16156114725760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e6700000000000000006044820152606401610ae6565b600d805462ffff0019166201010017905543600b55601a55565b6005546001600160a01b036101009091041633146114bc5760405162461bcd60e51b8152600401610ae690612e1a565b600d8054911515620100000262ff000019909216919091179055565b606060048054610b6c90612e78565b6005546001600160a01b036101009091041633146115175760405162461bcd60e51b8152600401610ae690612e1a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036115cc5760405162461bcd60e51b815260206004820152604560248201527f5468652050616e63616b655377617020706169722063616e6e6f74206265207260448201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572606482015264506169727360d81b608482015260a401610ae6565b610b59828261269e565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156116585760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ae6565b6116653385858403611aa2565b5060019392505050565b6000610bfc338484611d1b565b6005546001600160a01b036101009091041633146116ac5760405162461bcd60e51b8152600401610ae690612e1a565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791016113de565b6005546001600160a01b036101009091041633146117345760405162461bcd60e51b8152600401610ae690612e1a565b60055460ff1661174590600a612fc5565b606461175060025490565b61175b906001612fd4565b6117659190612feb565b61176f9190612feb565b81116117c85760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015261312560f01b6064820152608401610ae6565b60055460ff166117d990600a612fc5565b6117e39082612fd4565b60095550565b6005546001600160a01b036101009091041633146118195760405162461bcd60e51b8152600401610ae690612e1a565b60005b8281101561188a57816018600086868581811061183b5761183b612eb2565b90506020020160208101906118509190612c93565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061188281612ec8565b91505061181c565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b358383836040516118be9392919061300d565b60405180910390a1505050565b6005546000906001600160a01b036101009091041633146118fe5760405162461bcd60e51b8152600401610ae690612e1a565b50600f805460ff19169055600190565b6005546001600160a01b0361010090910416331461193e5760405162461bcd60e51b8152600401610ae690612e1a565b60005b8151811015610b59576000601b600084848151811061196257611962612eb2565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061199e81612ec8565b915050611941565b6005546001600160a01b036101009091041633146119d65760405162461bcd60e51b8152600401610ae690612e1a565b6001600160a01b038116611a3b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ae6565b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b038316611b045760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ae6565b6001600160a01b038216611b655760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ae6565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611bec5760405162461bcd60e51b8152600401610ae690613066565b6001600160a01b038216611c125760405162461bcd60e51b8152600401610ae6906130ab565b6001600160a01b03831660009081526020819052604090205481811015611c8a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ae6565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611cc1908490612e65565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d0d91815260200190565b60405180910390a350505050565b6001600160a01b038316611d415760405162461bcd60e51b8152600401610ae690613066565b6001600160a01b038216611d675760405162461bcd60e51b8152600401610ae6906130ab565b6001600160a01b0382166000908152601b602052604090205460ff16158015611da957506001600160a01b0383166000908152601b602052604090205460ff16155b611ddf5760405162461bcd60e51b81526020600482015260076024820152664e6f20626f747360c81b6044820152606401610ae6565b80600003611df357610ede83836000611bc6565b600d54610100900460ff16611e8d576001600160a01b03831660009081526018602052604090205460ff1680611e4157506001600160a01b03821660009081526018602052604090205460ff165b611e8d5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420616374697665207965742e0000000000006044820152606401610ae6565b600d5460ff16156122a1576005546001600160a01b038481166101009092041614801590611ece57506005546001600160a01b038381166101009092041614155b8015611ee257506001600160a01b03821615155b8015611ef957506001600160a01b03821661dead14155b8015611f0f5750600554600160a81b900460ff16155b156122a157600f5460ff161561202757326000908152600e60205260409020544390611f3c90600f612e65565b10611f895760405162461bcd60e51b815260206004820152601760248201527f5472616e736665722044656c617920656e61626c65642e0000000000000000006044820152606401610ae6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614158015611ffd57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b1561202757326000908152600e602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383166000908152601d602052604090205460ff16801561206857506001600160a01b0382166000908152601c602052604090205460ff16155b15612156576007548111156120dd5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610ae6565b6009546001600160a01b0383166000908152602081905260409020546121039083612e65565b11156121515760405162461bcd60e51b815260206004820152601b60248201527f556e61626c6520746f20657863656564204d61782057616c6c657400000000006044820152606401610ae6565b6122a1565b6001600160a01b0382166000908152601d602052604090205460ff16801561219757506001600160a01b0383166000908152601c602052604090205460ff16155b1561220d576007548111156121515760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610ae6565b6001600160a01b0382166000908152601c602052604090205460ff166122a1576009546001600160a01b0383166000908152602081905260409020546122539083612e65565b11156122a15760405162461bcd60e51b815260206004820152601b60248201527f556e61626c6520746f20657863656564204d61782057616c6c657400000000006044820152606401610ae6565b30600090815260208190526040902054600854811080159081906122cd5750600d5462010000900460ff165b80156122e35750600554600160a81b900460ff16155b801561230857506001600160a01b0385166000908152601d602052604090205460ff16155b801561232d57506001600160a01b03851660009081526018602052604090205460ff16155b801561235257506001600160a01b03841660009081526018602052604090205460ff16155b15612380576005805460ff60a81b1916600160a81b179055612372612708565b6005805460ff60a81b191690555b6005546001600160a01b03861660009081526018602052604090205460ff600160a81b9092048216159116806123ce57506001600160a01b03851660009081526018602052604090205460ff165b156123d7575060005b6000811561268a5743601a54600b546123f09190612e65565b1015801561243857506001600160a01b0386166000908152601d602052604090205460ff168061243857506001600160a01b0387166000908152601d602052604090205460ff165b1561250b576127106013548661244e9190612fd4565b6124589190612feb565b90506013546015548261246b9190612fd4565b6124759190612feb565b601760008282546124869190612e65565b909155505060135460145461249b9083612fd4565b6124a59190612feb565b601660008282546124b69190612e65565b9091555050601980546001810182556000919091527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96950180546001600160a01b0319166001600160a01b03881617905561266c565b6001600160a01b0386166000908152601d602052604090205460ff16801561253557506000601054115b156125be576127106010548661254b9190612fd4565b6125559190612feb565b9050601054601254826125689190612fd4565b6125729190612feb565b601760008282546125839190612e65565b90915550506010546011546125989083612fd4565b6125a29190612feb565b601660008282546125b39190612e65565b9091555061266c9050565b6001600160a01b0387166000908152601d602052604090205460ff1680156125e857506000601354115b1561266c57612710601354866125fe9190612fd4565b6126089190612feb565b90506013546015548261261b9190612fd4565b6126259190612feb565b601760008282546126369190612e65565b909155505060135460145461264b9083612fd4565b6126559190612feb565b601660008282546126669190612e65565b90915550505b801561267d5761267d873083611bc6565b61268781866130ee565b94505b612695878787611bc6565b50505050505050565b6001600160a01b0382166000908152601d60205260409020805460ff19168215151790556126cc828261135a565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b306000908152602081905260408120549050600060165460175461272c9190612e65565b9050811580612739575080155b15612742575050565b60175415612822576000816017548461275b9190612fd4565b6127659190612feb565b9050612792307f000000000000000000000000000000000000000000000000000000000000000083611bc6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156127ed57600080fd5b505af19250505080156127fe575060015b5061280981846130ee565b92506017548261281991906130ee565b60006017559150505b8115610b5957604080516002808252606082018352610b599285926000929091602083019080368337019050509050308160008151811061286557612865612eb2565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129079190613101565b8160018151811061291a5761291a612eb2565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b81527f000000000000000000000000000000000000000000000000000000000000000083169263791ac947926129829287926000928892911690429060040161311e565b600060405180830381600087803b15801561299c57600080fd5b505af11580156129b0573d6000803e3d6000fd5b505050505050565b50805460008255906000526020600020908101906129d691906129d9565b50565b5b808211156129ee57600081556001016129da565b5090565b60008060408385031215612a0557600080fd5b50508035926020909101359150565b600060208083528351808285015260005b81811015612a4157858101830151858201604001528201612a25565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146129d657600080fd5b60008060408385031215612a8a57600080fd5b8235612a9581612a62565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612ae257612ae2612aa3565b604052919050565b600067ffffffffffffffff821115612b0457612b04612aa3565b5060051b60200190565b600082601f830112612b1f57600080fd5b81356020612b34612b2f83612aea565b612ab9565b82815260059290921b84018101918181019086841115612b5357600080fd5b8286015b84811015612b77578035612b6a81612a62565b8352918301918301612b57565b509695505050505050565b600060208284031215612b9457600080fd5b813567ffffffffffffffff811115612bab57600080fd5b612bb784828501612b0e565b949350505050565b600060208284031215612bd157600080fd5b5035919050565b60008060408385031215612beb57600080fd5b823567ffffffffffffffff80821115612c0357600080fd5b612c0f86838701612b0e565b9350602091508185013581811115612c2657600080fd5b85019050601f81018613612c3957600080fd5b8035612c47612b2f82612aea565b81815260059190911b82018301908381019088831115612c6657600080fd5b928401925b82841015612c8457833582529284019290840190612c6b565b80955050505050509250929050565b600060208284031215612ca557600080fd5b8135612cb081612a62565b9392505050565b600080600060608486031215612ccc57600080fd5b8335612cd781612a62565b92506020840135612ce781612a62565b929592945050506040919091013590565b80358015158114612d0857600080fd5b919050565b60008060408385031215612d2057600080fd5b8235612d2b81612a62565b9150612d3960208401612cf8565b90509250929050565b600060208284031215612d5457600080fd5b612cb082612cf8565b600080600060408486031215612d7257600080fd5b833567ffffffffffffffff80821115612d8a57600080fd5b818601915086601f830112612d9e57600080fd5b813581811115612dad57600080fd5b8760208260051b8501011115612dc257600080fd5b602092830195509350612dd89186019050612cf8565b90509250925092565b60008060408385031215612df457600080fd5b8235612dff81612a62565b91506020830135612e0f81612a62565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c0057610c00612e4f565b600181811c90821680612e8c57607f821691505b602082108103612eac57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b600060018201612eda57612eda612e4f565b5060010190565b600181815b80851115612f1c578160001904821115612f0257612f02612e4f565b80851615612f0f57918102915b93841c9390800290612ee6565b509250929050565b600082612f3357506001610c00565b81612f4057506000610c00565b8160018114612f565760028114612f6057612f7c565b6001915050610c00565b60ff841115612f7157612f71612e4f565b50506001821b610c00565b5060208310610133831016604e8410600b8410161715612f9f575081810a610c00565b612fa98383612ee1565b8060001904821115612fbd57612fbd612e4f565b029392505050565b6000612cb060ff841683612f24565b8082028115828204841417610c0057610c00612e4f565b60008261300857634e487b7160e01b600052601260045260246000fd5b500490565b6040808252810183905260008460608301825b8681101561305057823561303381612a62565b6001600160a01b0316825260209283019290910190600101613020565b5080925050508215156020830152949350505050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610c0057610c00612e4f565b60006020828403121561311357600080fd5b8151612cb081612a62565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561316e5784516001600160a01b031683529383019391830191600101613149565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e7ba8c8a2458e5a46d029e6f5559e03450f52e4749dd7c4a2405ba0e33d2478564736f6c63430008130033426974636f696e536f6c616e6143727970746f506e64635465536f426974726f636b58436f636f435065706542746332304f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x60806040526004361061037a5760003560e01c806382aa7c68116101d1578063c492f04611610102578063e884f260116100a0578063f2fde38b1161006f578063f2fde38b14610a4a578063f8b45b0514610a6a578063fb002c9714610a80578063fd72e22a14610a9657600080fd5b8063e884f260146109e9578063ee40166e146109fe578063ef1c9eb814610a14578063efcc1b2f14610a3457600080fd5b8063ccb61358116100dc578063ccb6135814610961578063d0a3981414610977578063dd62ed3e1461098d578063e2f45605146109d357600080fd5b8063c492f04614610911578063c876d0b914610931578063c8c8ebe41461094b57600080fd5b8063a9059cbb1161016f578063b9e9370011610149578063b9e937001461089c578063bbc0c742146108b2578063c0246668146108d1578063c18bc195146108f157600080fd5b8063a9059cbb1461081c578063abb810521461083c578063b62496f51461086c57600080fd5b806395d89b41116101ab57806395d89b41146107b15780639a36f932146107c65780639a7a23d6146107dc578063a457c2d7146107fc57600080fd5b806382aa7c681461074e5780638da5cb5b1461076e578063924de9b71461079157600080fd5b806323b872dd116102ab57806366ca9b8311610249578063715018a611610223578063715018a6146106ee5780637506cbd814610703578063751039fc146107195780637571336a1461072e57600080fd5b806366ca9b83146106785780636ddd17131461069857806370a08231146106b857600080fd5b8063395093511161028557806339509351146105d1578063452ed4f1146105f15780634a62bb65146106255780634fbee1931461063f57600080fd5b806323b872dd1461056f57806330d5d18d1461058f578063313ce567146105af57600080fd5b8063106b5da1116103185780631795edae116102f25780631795edae1461051957806318160ddd1461052e5780631a8145bb146105435780631fc851bd1461055957600080fd5b8063106b5da1146104a957806310c1622e146104c957806310d5de53146104e957600080fd5b8063095ea7b311610354578063095ea7b31461041f578063099d0d301461044f5780630edae99d146104735780630f4432e31461049357600080fd5b806302dbd8f81461038657806306fdde03146103a85780630758d924146103d357600080fd5b3661038157005b600080fd5b34801561039257600080fd5b506103a66103a13660046129f2565b610ab6565b005b3480156103b457600080fd5b506103bd610b5d565b6040516103ca9190612a14565b60405180910390f35b3480156103df57600080fd5b506104077f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016103ca565b34801561042b57600080fd5b5061043f61043a366004612a77565b610bef565b60405190151581526020016103ca565b34801561045b57600080fd5b5061046560125481565b6040519081526020016103ca565b34801561047f57600080fd5b506103a661048e366004612b82565b610c06565b34801561049f57600080fd5b50610465600a5481565b3480156104b557600080fd5b506103a66104c4366004612bbf565b610c9e565b3480156104d557600080fd5b506103a66104e4366004612bd8565b610d91565b3480156104f557600080fd5b5061043f610504366004612c93565b601c6020526000908152604090205460ff1681565b34801561052557600080fd5b506103a6610ee3565b34801561053a57600080fd5b50600254610465565b34801561054f57600080fd5b5061046560175481565b34801561056557600080fd5b50610465600c5481565b34801561057b57600080fd5b5061043f61058a366004612cb7565b611014565b34801561059b57600080fd5b506103a66105aa366004612c93565b6110c7565b3480156105bb57600080fd5b5060055460405160ff90911681526020016103ca565b3480156105dd57600080fd5b5061043f6105ec366004612a77565b6111b5565b3480156105fd57600080fd5b506104077f000000000000000000000000e46b472d9384e48848c1f9c6cec548026ea33d2681565b34801561063157600080fd5b50600d5461043f9060ff1681565b34801561064b57600080fd5b5061043f61065a366004612c93565b6001600160a01b031660009081526018602052604090205460ff1690565b34801561068457600080fd5b506103a66106933660046129f2565b6111f1565b3480156106a457600080fd5b50600d5461043f9062010000900460ff1681565b3480156106c457600080fd5b506104656106d3366004612c93565b6001600160a01b031660009081526020819052604090205490565b3480156106fa57600080fd5b506103a661128b565b34801561070f57600080fd5b5061046560115481565b34801561072557600080fd5b5061043f61130b565b34801561073a57600080fd5b506103a6610749366004612d0d565b61135a565b34801561075a57600080fd5b506103a6610769366004612bbf565b6113ea565b34801561077a57600080fd5b5060055461010090046001600160a01b0316610407565b34801561079d57600080fd5b506103a66107ac366004612d42565b61148c565b3480156107bd57600080fd5b506103bd6114d8565b3480156107d257600080fd5b5061046561271081565b3480156107e857600080fd5b506103a66107f7366004612d0d565b6114e7565b34801561080857600080fd5b5061043f610817366004612a77565b6115d6565b34801561082857600080fd5b5061043f610837366004612a77565b61166f565b34801561084857600080fd5b5061043f610857366004612c93565b601b6020526000908152604090205460ff1681565b34801561087857600080fd5b5061043f610887366004612c93565b601d6020526000908152604090205460ff1681565b3480156108a857600080fd5b5061046560135481565b3480156108be57600080fd5b50600d5461043f90610100900460ff1681565b3480156108dd57600080fd5b506103a66108ec366004612d0d565b61167c565b3480156108fd57600080fd5b506103a661090c366004612bbf565b611704565b34801561091d57600080fd5b506103a661092c366004612d5d565b6117e9565b34801561093d57600080fd5b50600f5461043f9060ff1681565b34801561095757600080fd5b5061046560075481565b34801561096d57600080fd5b5061046560155481565b34801561098357600080fd5b5061046560105481565b34801561099957600080fd5b506104656109a8366004612de1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156109df57600080fd5b5061046560085481565b3480156109f557600080fd5b5061043f6118cb565b348015610a0a57600080fd5b50610465600b5481565b348015610a2057600080fd5b506103a6610a2f366004612b82565b61190e565b348015610a4057600080fd5b5061046560145481565b348015610a5657600080fd5b506103a6610a65366004612c93565b6119a6565b348015610a7657600080fd5b5061046560095481565b348015610a8c57600080fd5b5061046560165481565b348015610aa257600080fd5b50600654610407906001600160a01b031681565b6005546001600160a01b03610100909104163314610aef5760405162461bcd60e51b8152600401610ae690612e1a565b60405180910390fd5b60118290556012819055610b038183612e65565b6010819055610fa01015610b595760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420343025206f72206c6573730000006044820152606401610ae6565b5050565b606060038054610b6c90612e78565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9890612e78565b8015610be55780601f10610bba57610100808354040283529160200191610be5565b820191906000526020600020905b815481529060010190602001808311610bc857829003601f168201915b5050505050905090565b6000610bfc338484611aa2565b5060015b92915050565b6005546001600160a01b03610100909104163314610c365760405162461bcd60e51b8152600401610ae690612e1a565b60005b8151811015610b59576001601b6000848481518110610c5a57610c5a612eb2565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610c9681612ec8565b915050610c39565b6005546001600160a01b03610100909104163314610cce5760405162461bcd60e51b8152600401610ae690612e1a565b60055460ff16610cdf90600a612fc5565b6103e8610ceb60025490565b610cf6906001612fd4565b610d009190612feb565b610d0a9190612feb565b8111610d705760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610ae6565b60055460ff16610d8190600a612fc5565b610d8b9082612fd4565b60075550565b6005546001600160a01b03610100909104163314610dc15760405162461bcd60e51b8152600401610ae690612e1a565b8051825114610e125760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e67746800006044820152606401610ae6565b610258825110610e835760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203630302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610ae6565b60005b8251811015610ede57610ecc33848381518110610ea557610ea5612eb2565b6020026020010151848481518110610ebf57610ebf612eb2565b6020026020010151611bc6565b80610ed681612ec8565b915050610e86565b505050565b6005546001600160a01b03610100909104163314610f135760405162461bcd60e51b8152600401610ae690612e1a565b601954610f555760405162461bcd60e51b815260206004820152601060248201526f4e6f20626f747320746f20626c6f636b60801b6044820152606401610ae6565b60005b60195481101561100557601b600060198381548110610f7957610f79612eb2565b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16610ff3576001601b600060198481548110610fbe57610fbe612eb2565b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790555b80610ffd81612ec8565b915050610f58565b50611012601960006129b8565b565b6000611021848484611d1b565b6001600160a01b038416600090815260016020908152604080832033845290915290205460001981146110bc57828110156110af5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ae6565b6110bc8533858403611aa2565b506001949350505050565b6005546001600160a01b036101009091041633146110f75760405162461bcd60e51b8152600401610ae690612e1a565b6001600160a01b03811661114d5760405162461bcd60e51b815260206004820152601860248201527f6d6179206e6f742073657420746f2030206164647265737300000000000000006044820152606401610ae6565b61115881600161167c565b6006546040516001600160a01b03918216918316907f086aa05ff00214e2d0c7c02b8a46b2614ad955732e6b43aa8afca69ed1ad76f890600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610bfc9185906111ec908690612e65565b611aa2565b6005546001600160a01b036101009091041633146112215760405162461bcd60e51b8152600401610ae690612e1a565b601482905560158190556112358183612e65565b6013819055610fa01015610b595760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420343025206f72206c6573730000006044820152606401610ae6565b6005546001600160a01b036101009091041633146112bb5760405162461bcd60e51b8152600401610ae690612e1a565b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b6005546000906001600160a01b0361010090910416331461133e5760405162461bcd60e51b8152600401610ae690612e1a565b50600d805460ff19908116909155600f80549091169055600190565b6005546001600160a01b0361010090910416331461138a5760405162461bcd60e51b8152600401610ae690612e1a565b6001600160a01b0382166000818152601c6020908152604091829020805460ff191685151590811790915591519182527f575f9d01836c9206322151b9e9ec3f2b77b87e71176933b9b44d2d732f768d9591015b60405180910390a25050565b6005546001600160a01b0361010090910416331461141a5760405162461bcd60e51b8152600401610ae690612e1a565b600d54610100900460ff16156114725760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e6700000000000000006044820152606401610ae6565b600d805462ffff0019166201010017905543600b55601a55565b6005546001600160a01b036101009091041633146114bc5760405162461bcd60e51b8152600401610ae690612e1a565b600d8054911515620100000262ff000019909216919091179055565b606060048054610b6c90612e78565b6005546001600160a01b036101009091041633146115175760405162461bcd60e51b8152600401610ae690612e1a565b7f000000000000000000000000e46b472d9384e48848c1f9c6cec548026ea33d266001600160a01b0316826001600160a01b0316036115cc5760405162461bcd60e51b815260206004820152604560248201527f5468652050616e63616b655377617020706169722063616e6e6f74206265207260448201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572606482015264506169727360d81b608482015260a401610ae6565b610b59828261269e565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156116585760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ae6565b6116653385858403611aa2565b5060019392505050565b6000610bfc338484611d1b565b6005546001600160a01b036101009091041633146116ac5760405162461bcd60e51b8152600401610ae690612e1a565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791016113de565b6005546001600160a01b036101009091041633146117345760405162461bcd60e51b8152600401610ae690612e1a565b60055460ff1661174590600a612fc5565b606461175060025490565b61175b906001612fd4565b6117659190612feb565b61176f9190612feb565b81116117c85760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015261312560f01b6064820152608401610ae6565b60055460ff166117d990600a612fc5565b6117e39082612fd4565b60095550565b6005546001600160a01b036101009091041633146118195760405162461bcd60e51b8152600401610ae690612e1a565b60005b8281101561188a57816018600086868581811061183b5761183b612eb2565b90506020020160208101906118509190612c93565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061188281612ec8565b91505061181c565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b358383836040516118be9392919061300d565b60405180910390a1505050565b6005546000906001600160a01b036101009091041633146118fe5760405162461bcd60e51b8152600401610ae690612e1a565b50600f805460ff19169055600190565b6005546001600160a01b0361010090910416331461193e5760405162461bcd60e51b8152600401610ae690612e1a565b60005b8151811015610b59576000601b600084848151811061196257611962612eb2565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061199e81612ec8565b915050611941565b6005546001600160a01b036101009091041633146119d65760405162461bcd60e51b8152600401610ae690612e1a565b6001600160a01b038116611a3b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ae6565b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b038316611b045760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ae6565b6001600160a01b038216611b655760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ae6565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611bec5760405162461bcd60e51b8152600401610ae690613066565b6001600160a01b038216611c125760405162461bcd60e51b8152600401610ae6906130ab565b6001600160a01b03831660009081526020819052604090205481811015611c8a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ae6565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611cc1908490612e65565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d0d91815260200190565b60405180910390a350505050565b6001600160a01b038316611d415760405162461bcd60e51b8152600401610ae690613066565b6001600160a01b038216611d675760405162461bcd60e51b8152600401610ae6906130ab565b6001600160a01b0382166000908152601b602052604090205460ff16158015611da957506001600160a01b0383166000908152601b602052604090205460ff16155b611ddf5760405162461bcd60e51b81526020600482015260076024820152664e6f20626f747360c81b6044820152606401610ae6565b80600003611df357610ede83836000611bc6565b600d54610100900460ff16611e8d576001600160a01b03831660009081526018602052604090205460ff1680611e4157506001600160a01b03821660009081526018602052604090205460ff165b611e8d5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420616374697665207965742e0000000000006044820152606401610ae6565b600d5460ff16156122a1576005546001600160a01b038481166101009092041614801590611ece57506005546001600160a01b038381166101009092041614155b8015611ee257506001600160a01b03821615155b8015611ef957506001600160a01b03821661dead14155b8015611f0f5750600554600160a81b900460ff16155b156122a157600f5460ff161561202757326000908152600e60205260409020544390611f3c90600f612e65565b10611f895760405162461bcd60e51b815260206004820152601760248201527f5472616e736665722044656c617920656e61626c65642e0000000000000000006044820152606401610ae6565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614158015611ffd57507f000000000000000000000000e46b472d9384e48848c1f9c6cec548026ea33d266001600160a01b0316826001600160a01b031614155b1561202757326000908152600e602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383166000908152601d602052604090205460ff16801561206857506001600160a01b0382166000908152601c602052604090205460ff16155b15612156576007548111156120dd5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610ae6565b6009546001600160a01b0383166000908152602081905260409020546121039083612e65565b11156121515760405162461bcd60e51b815260206004820152601b60248201527f556e61626c6520746f20657863656564204d61782057616c6c657400000000006044820152606401610ae6565b6122a1565b6001600160a01b0382166000908152601d602052604090205460ff16801561219757506001600160a01b0383166000908152601c602052604090205460ff16155b1561220d576007548111156121515760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610ae6565b6001600160a01b0382166000908152601c602052604090205460ff166122a1576009546001600160a01b0383166000908152602081905260409020546122539083612e65565b11156122a15760405162461bcd60e51b815260206004820152601b60248201527f556e61626c6520746f20657863656564204d61782057616c6c657400000000006044820152606401610ae6565b30600090815260208190526040902054600854811080159081906122cd5750600d5462010000900460ff165b80156122e35750600554600160a81b900460ff16155b801561230857506001600160a01b0385166000908152601d602052604090205460ff16155b801561232d57506001600160a01b03851660009081526018602052604090205460ff16155b801561235257506001600160a01b03841660009081526018602052604090205460ff16155b15612380576005805460ff60a81b1916600160a81b179055612372612708565b6005805460ff60a81b191690555b6005546001600160a01b03861660009081526018602052604090205460ff600160a81b9092048216159116806123ce57506001600160a01b03851660009081526018602052604090205460ff165b156123d7575060005b6000811561268a5743601a54600b546123f09190612e65565b1015801561243857506001600160a01b0386166000908152601d602052604090205460ff168061243857506001600160a01b0387166000908152601d602052604090205460ff165b1561250b576127106013548661244e9190612fd4565b6124589190612feb565b90506013546015548261246b9190612fd4565b6124759190612feb565b601760008282546124869190612e65565b909155505060135460145461249b9083612fd4565b6124a59190612feb565b601660008282546124b69190612e65565b9091555050601980546001810182556000919091527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96950180546001600160a01b0319166001600160a01b03881617905561266c565b6001600160a01b0386166000908152601d602052604090205460ff16801561253557506000601054115b156125be576127106010548661254b9190612fd4565b6125559190612feb565b9050601054601254826125689190612fd4565b6125729190612feb565b601760008282546125839190612e65565b90915550506010546011546125989083612fd4565b6125a29190612feb565b601660008282546125b39190612e65565b9091555061266c9050565b6001600160a01b0387166000908152601d602052604090205460ff1680156125e857506000601354115b1561266c57612710601354866125fe9190612fd4565b6126089190612feb565b90506013546015548261261b9190612fd4565b6126259190612feb565b601760008282546126369190612e65565b909155505060135460145461264b9083612fd4565b6126559190612feb565b601660008282546126669190612e65565b90915550505b801561267d5761267d873083611bc6565b61268781866130ee565b94505b612695878787611bc6565b50505050505050565b6001600160a01b0382166000908152601d60205260409020805460ff19168215151790556126cc828261135a565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b306000908152602081905260408120549050600060165460175461272c9190612e65565b9050811580612739575080155b15612742575050565b60175415612822576000816017548461275b9190612fd4565b6127659190612feb565b9050612792307f000000000000000000000000e46b472d9384e48848c1f9c6cec548026ea33d2683611bc6565b7f000000000000000000000000e46b472d9384e48848c1f9c6cec548026ea33d266001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156127ed57600080fd5b505af19250505080156127fe575060015b5061280981846130ee565b92506017548261281991906130ee565b60006017559150505b8115610b5957604080516002808252606082018352610b599285926000929091602083019080368337019050509050308160008151811061286557612865612eb2565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129079190613101565b8160018151811061291a5761291a612eb2565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b81527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d83169263791ac947926129829287926000928892911690429060040161311e565b600060405180830381600087803b15801561299c57600080fd5b505af11580156129b0573d6000803e3d6000fd5b505050505050565b50805460008255906000526020600020908101906129d691906129d9565b50565b5b808211156129ee57600081556001016129da565b5090565b60008060408385031215612a0557600080fd5b50508035926020909101359150565b600060208083528351808285015260005b81811015612a4157858101830151858201604001528201612a25565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146129d657600080fd5b60008060408385031215612a8a57600080fd5b8235612a9581612a62565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612ae257612ae2612aa3565b604052919050565b600067ffffffffffffffff821115612b0457612b04612aa3565b5060051b60200190565b600082601f830112612b1f57600080fd5b81356020612b34612b2f83612aea565b612ab9565b82815260059290921b84018101918181019086841115612b5357600080fd5b8286015b84811015612b77578035612b6a81612a62565b8352918301918301612b57565b509695505050505050565b600060208284031215612b9457600080fd5b813567ffffffffffffffff811115612bab57600080fd5b612bb784828501612b0e565b949350505050565b600060208284031215612bd157600080fd5b5035919050565b60008060408385031215612beb57600080fd5b823567ffffffffffffffff80821115612c0357600080fd5b612c0f86838701612b0e565b9350602091508185013581811115612c2657600080fd5b85019050601f81018613612c3957600080fd5b8035612c47612b2f82612aea565b81815260059190911b82018301908381019088831115612c6657600080fd5b928401925b82841015612c8457833582529284019290840190612c6b565b80955050505050509250929050565b600060208284031215612ca557600080fd5b8135612cb081612a62565b9392505050565b600080600060608486031215612ccc57600080fd5b8335612cd781612a62565b92506020840135612ce781612a62565b929592945050506040919091013590565b80358015158114612d0857600080fd5b919050565b60008060408385031215612d2057600080fd5b8235612d2b81612a62565b9150612d3960208401612cf8565b90509250929050565b600060208284031215612d5457600080fd5b612cb082612cf8565b600080600060408486031215612d7257600080fd5b833567ffffffffffffffff80821115612d8a57600080fd5b818601915086601f830112612d9e57600080fd5b813581811115612dad57600080fd5b8760208260051b8501011115612dc257600080fd5b602092830195509350612dd89186019050612cf8565b90509250925092565b60008060408385031215612df457600080fd5b8235612dff81612a62565b91506020830135612e0f81612a62565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c0057610c00612e4f565b600181811c90821680612e8c57607f821691505b602082108103612eac57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b600060018201612eda57612eda612e4f565b5060010190565b600181815b80851115612f1c578160001904821115612f0257612f02612e4f565b80851615612f0f57918102915b93841c9390800290612ee6565b509250929050565b600082612f3357506001610c00565b81612f4057506000610c00565b8160018114612f565760028114612f6057612f7c565b6001915050610c00565b60ff841115612f7157612f71612e4f565b50506001821b610c00565b5060208310610133831016604e8410600b8410161715612f9f575081810a610c00565b612fa98383612ee1565b8060001904821115612fbd57612fbd612e4f565b029392505050565b6000612cb060ff841683612f24565b8082028115828204841417610c0057610c00612e4f565b60008261300857634e487b7160e01b600052601260045260246000fd5b500490565b6040808252810183905260008460608301825b8681101561305057823561303381612a62565b6001600160a01b0316825260209283019290910190600101613020565b5080925050508215156020830152949350505050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610c0057610c00612e4f565b60006020828403121561311357600080fd5b8151612cb081612a62565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561316e5784516001600160a01b031683529383019391830191600101613149565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e7ba8c8a2458e5a46d029e6f5559e03450f52e4749dd7c4a2405ba0e33d2478564736f6c63430008130033

Deployed Bytecode Sourcemap

10934:15339:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17157:323;;;;;;;;;;-1:-1:-1;17157:323:0;;;;;:::i;:::-;;:::i;:::-;;4176:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11020:37;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1002:32:1;;;984:51;;972:2;957:18;11020:37:0;820:221:1;5097:169:0;;;;;;;;;;-1:-1:-1;5097:169:0;;;;;:::i;:::-;;:::i;:::-;;;1667:14:1;;1660:22;1642:41;;1630:2;1615:18;5097:169:0;1502:187:1;12048:31:0;;;;;;;;;;;;;;;;;;;1840:25:1;;;1828:2;1813:18;12048:31:0;1694:177:1;25636:188:0;;;;;;;;;;-1:-1:-1;25636:188:0;;;;;:::i;:::-;;:::i;11297:39::-;;;;;;;;;;;;;;;;16314:256;;;;;;;;;;-1:-1:-1;16314:256:0;;;;;:::i;:::-;;:::i;25832:434::-;;;;;;;;;;-1:-1:-1;25832:434:0;;;;;:::i;:::-;;:::i;12550:64::-;;;;;;;;;;-1:-1:-1;12550:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25111:320;;;;;;;;;;;;;:::i;4504:108::-;;;;;;;;;;-1:-1:-1;4592:12:0;;4504:108;;12248:33;;;;;;;;;;;;;;;;11459;;;;;;;;;;;;;;;;5274:573;;;;;;;;;;-1:-1:-1;5274:573:0;;;;;:::i;:::-;;:::i;18708:349::-;;;;;;;;;;-1:-1:-1;18708:349:0;;;;;:::i;:::-;;:::i;4396:100::-;;;;;;;;;;-1:-1:-1;4479:9:0;;4396:100;;4479:9;;;;5754:36:1;;5742:2;5727:18;4396:100:0;5612:184:1;5855:215:0;;;;;;;;;;-1:-1:-1;5855:215:0;;;;;:::i;:::-;;:::i;11064:31::-;;;;;;;;;;;;;;;11568:33;;;;;;;;;;-1:-1:-1;11568:33:0;;;;;;;;19065:127;;;;;;;;;;-1:-1:-1;19065:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;19156:28:0;19132:4;19156:28;;;:19;:28;;;;;;;;;19065:127;16829:316;;;;;;;;;;-1:-1:-1;16829:316:0;;;;;:::i;:::-;;:::i;11648:31::-;;;;;;;;;;-1:-1:-1;11648:31:0;;;;;;;;;;;4620:127;;;;;;;;;;-1:-1:-1;4620:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4721:18:0;4694:7;4721:18;;;;;;;;;;;;4620:127;8943:148;;;;;;;;;;;;;:::i;12009:32::-;;;;;;;;;;;;;;;;19242:159;;;;;;;;;;;;;:::i;17488:202::-;;;;;;;;;;-1:-1:-1;17488:202:0;;;;;:::i;:::-;;:::i;15833:272::-;;;;;;;;;;-1:-1:-1;15833:272:0;;;;;:::i;:::-;;:::i;8301:79::-;;;;;;;;;;-1:-1:-1;8366:6:0;;;;;-1:-1:-1;;;;;8366:6:0;8301:79;;16205:101;;;;;;;;;;-1:-1:-1;16205:101:0;;;;;:::i;:::-;;:::i;4284:104::-;;;;;;;;;;;;;:::i;11923:42::-;;;;;;;;;;;;11960:5;11923:42;;18204:251;;;;;;;;;;-1:-1:-1;18204:251:0;;;;;:::i;:::-;;:::i;6078:413::-;;;;;;;;;;-1:-1:-1;6078:413:0;;;;;:::i;:::-;;:::i;4755:175::-;;;;;;;;;;-1:-1:-1;4755:175:0;;;;;:::i;:::-;;:::i;12502:39::-;;;;;;;;;;-1:-1:-1;12502:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12772:58;;;;;;;;;;-1:-1:-1;12772:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12092:27;;;;;;;;;;;;;;;;11608:33;;;;;;;;;;-1:-1:-1;11608:33:0;;;;;;;;;;;17698:184;;;;;;;;;;-1:-1:-1;17698:184:0;;;;;:::i;:::-;;:::i;16582:235::-;;;;;;;;;;-1:-1:-1;16582:235:0;;;;;:::i;:::-;;:::i;17890:306::-;;;;;;;;;;-1:-1:-1;17890:306:0;;;;;:::i;:::-;;:::i;11871:39::-;;;;;;;;;;-1:-1:-1;11871:39:0;;;;;;;;11178:35;;;;;;;;;;;;;;;;12164:30;;;;;;;;;;;;;;;;11974:28;;;;;;;;;;;;;;;;4938:151;;;;;;;;;;-1:-1:-1;4938:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;5054:18:0;;;5027:7;5054:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4938:151;11220:33;;;;;;;;;;;;;;;;15641:134;;;;;;;;;;;;;:::i;11382:37::-;;;;;;;;;;;;;;;;25439:189;;;;;;;;;;-1:-1:-1;25439:189:0;;;;;:::i;:::-;;:::i;12126:31::-;;;;;;;;;;;;;;;;9246:244;;;;;;;;;;-1:-1:-1;9246:244:0;;;;;:::i;:::-;;:::i;11260:24::-;;;;;;;;;;;;;;;;12207:34;;;;;;;;;;;;;;;;11134:31;;;;;;;;;;-1:-1:-1;11134:31:0;;;;-1:-1:-1;;;;;11134:31:0;;;17157:323;8513:6;;-1:-1:-1;;;;;8513:6:0;;;;;204:10;8513:22;8505:67;;;;-1:-1:-1;;;8505:67:0;;;;;;;:::i;:::-;;;;;;;;;17258:17:::1;:34:::0;;;17303:16:::1;:32:::0;;;17362:36:::1;17322:13:::0;17278:14;17362:36:::1;:::i;:::-;17346:13;:52:::0;;;17434:4:::1;-1:-1:-1::0;17417:21:0::1;17409:63;;;::::0;-1:-1:-1;;;17409:63:0;;8591:2:1;17409:63:0::1;::::0;::::1;8573:21:1::0;8630:2;8610:18;;;8603:30;8669:31;8649:18;;;8642:59;8718:18;;17409:63:0::1;8389:353:1::0;17409:63:0::1;17157:323:::0;;:::o;4176:100::-;4230:13;4263:5;4256:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4176:100;:::o;5097:169::-;5180:4;5197:39;204:10;5220:7;5229:6;5197:8;:39::i;:::-;-1:-1:-1;5254:4:0;5097:169;;;;;:::o;25636:188::-;8513:6;;-1:-1:-1;;;;;8513:6:0;;;;;204:10;8513:22;8505:67;;;;-1:-1:-1;;;8505:67:0;;;;;;;:::i;:::-;25720:9:::1;25716:101;25739:10;:17;25735:1;:21;25716:101;;;25801:4;25777:6;:21;25784:10;25795:1;25784:13;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;25777:21:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;25777:21:0;:28;;-1:-1:-1;;25777:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25758:3;::::1;::::0;::::1;:::i;:::-;;;;25716:101;;16314:256:::0;8513:6;;-1:-1:-1;;;;;8513:6:0;;;;;204:10;8513:22;8505:67;;;;-1:-1:-1;;;8505:67:0;;;;;;;:::i;:::-;4479:9;;;;16432:16:::1;::::0;:2:::1;:16;:::i;:::-;16423:4;16403:13;4592:12:::0;;;4504:108;16403:13:::1;:17;::::0;16419:1:::1;16403:17;:::i;:::-;:24;;;;:::i;:::-;16402:47;;;;:::i;:::-;16393:6;:56;16385:116;;;::::0;-1:-1:-1;;;16385:116:0;;11384:2:1;16385:116:0::1;::::0;::::1;11366:21:1::0;11423:2;11403:18;;;11396:30;11462:34;11442:18;;;11435:62;-1:-1:-1;;;11513:18:1;;;11506:45;11568:19;;16385:116:0::1;11182:411:1::0;16385:116:0::1;4479:9:::0;;;;16545:16:::1;::::0;:2:::1;:16;:::i;:::-;16535:27;::::0;:6;:27:::1;:::i;:::-;16512:20;:50:::0;-1:-1:-1;16314:256:0:o;25832:434::-;8513:6;;-1:-1:-1;;;;;8513:6:0;;;;;204:10;8513:22;8505:67;;;;-1:-1:-1;;;8505:67:0;;;;;;;:::i;:::-;25968:12:::1;:19;25950:7;:14;:37;25942:80;;;::::0;-1:-1:-1;;;25942:80:0;;11800:2:1;25942:80:0::1;::::0;::::1;11782:21:1::0;11839:2;11819:18;;;11812:30;11878:32;11858:18;;;11851:60;11928:18;;25942:80:0::1;11598:354:1::0;25942:80:0::1;26058:3;26041:7;:14;:20;26033:87;;;::::0;-1:-1:-1;;;26033:87:0;;12159:2:1;26033:87:0::1;::::0;::::1;12141:21:1::0;12198:2;12178:18;;;12171:30;12237:34;12217:18;;;12210:62;-1:-1:-1;;;12288:18:1;;;12281:52;12350:19;;26033:87:0::1;11957:418:1::0;26033:87:0::1;26135:9;26131:126;26154:7;:14;26150:1;:18;26131:126;;;26189:56;26205:10;26217:7;26225:1;26217:10;;;;;;;;:::i;:::-;;;;;;;26229:12;26242:1;26229:15;;;;;;;;:::i;:::-;;;;;;;26189;:56::i;:::-;26170:3:::0;::::1;::::0;::::1;:::i;:::-;;;;26131:126;;;;25832:434:::0;;:::o;25111:320::-;8513:6;;-1:-1:-1;;;;;8513:6:0;;;;;204:10;8513:22;8505:67;;;;-1:-1:-1;;;8505:67:0;;;;;;;:::i;:::-;25173:11:::1;:18:::0;25165:51:::1;;;::::0;-1:-1:-1;;;25165:51:0;;12582:2:1;25165:51:0::1;::::0;::::1;12564:21:1::0;12621:2;12601:18;;;12594:30;-1:-1:-1;;;12640:18:1;;;12633:46;12696:18;;25165:51:0::1;12380:340:1::0;25165:51:0::1;25233:9;25229:164;25252:11;:18:::0;25248:22;::::1;25229:164;;;25295:6;:22;25302:11;25314:1;25302:14;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;25302:14:0::1;25295:22:::0;;;::::1;::::0;;;;;;;;;::::1;;25291:91;;25362:4;25337:6;:22;25344:11;25356:1;25344:14;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;::::0;-1:-1:-1;;;;;25344:14:0::1;25337:22:::0;;;::::1;::::0;;;;;;;;:29;;-1:-1:-1;;25337:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25291:91:::1;25272:3:::0;::::1;::::0;::::1;:::i;:::-;;;;25229:164;;;-1:-1:-1::0;25405:18:0::1;25412:11;;25405:18;:::i;:::-;25111:320::o:0;5274:573::-;5414:4;5431:36;5441:6;5449:9;5460:6;5431:9;:36::i;:::-;-1:-1:-1;;;;;5507:19:0;;5480:24;5507:19;;;:11;:19;;;;;;;;204:10;5507:33;;;;;;;;-1:-1:-1;;5555:37:0;;5551:265;;5637:6;5617:16;:26;;5609:79;;;;-1:-1:-1;;;5609:79:0;;12927:2:1;5609:79:0;;;12909:21:1;12966:2;12946:18;;;12939:30;13005:34;12985:18;;;12978:62;-1:-1:-1;;;13056:18:1;;;13049:38;13104:19;;5609:79:0;12725:404:1;5609:79:0;5732:57;5741:6;204:10;5782:6;5763:16;:25;5732:8;:57::i;:::-;-1:-1:-1;5835:4:0;;5274:573;-1:-1:-1;;;;5274:573:0:o;18708:349::-;8513:6;;-1:-1:-1;;;;;8513:6:0;;;;;204:10;8513:22;8505:67;;;;-1:-1:-1;;;8505:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18807:33:0;::::1;18799:70;;;::::0;-1:-1:-1;;;18799:70:0;;13336:2:1;18799:70:0::1;::::0;::::1;13318:21:1::0;13375:2;13355:18;;;13348:30;13414:26;13394:18;;;13387:54;13458:18;;18799:70:0::1;13134:348:1::0;18799:70:0::1;18880:42;18896:19;18917:4;18880:15;:42::i;:::-;18983:16;::::0;18938:62:::1;::::0;-1:-1:-1;;;;;18983:16:0;;::::1;::::0;18938:62;::::1;::::0;::::1;::::0;18983:16:::1;::::0;18938:62:::1;19011:16;:38:::0;;-1:-1:-1;;;;;;19011:38:0::1;-1:-1:-1::0;;;;;19011:38:0;;;::::1;::::0;;;::::1;::::0;;18708:349::o;5855:215::-;204:10;5943:4;5992:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5992:34:0;;;;;;;;;;5943:4;;5960:80;;5983:7;;5992:47;;6029:10;;5992:47;:::i;:::-;5960:8;:80::i;16829:316::-;8513:6;;-1:-1:-1;;;;;8513:6:0;;;;;204:10;8513:22;8505:67;;;;-1:-1:-1;;;8505:67:0;;;;;;;:::i;:::-;16929:16:::1;:33:::0;;;16973:15:::1;:31:::0;;;17030:34:::1;16991:13:::0;16948:14;17030:34:::1;:::i;:::-;17015:12;:49:::0;;;17099:4:::1;-1:-1:-1::0;17083:20:0::1;17075:62;;;::::0;-1:-1:-1;;;17075:62:0;;8591:2:1;17075:62:0::1;::::0;::::1;8573:21:1::0;8630:2;8610:18;;;8603:30;8669:31;8649:18;;;8642:59;8718:18;;17075:62:0::1;8389:353:1::0;8943:148:0;8513:6;;-1:-1:-1;;;;;8513:6:0;;;;;204:10;8513:22;8505:67;;;;-1:-1:-1;;;8505:67:0;;;;;;;:::i;:::-;9034:6:::1;::::0;9013:40:::1;::::0;9050:1:::1;::::0;9034:6:::1;::::0;::::1;-1:-1:-1::0;;;;;9034:6:0::1;::::0;9013:40:::1;::::0;9050:1;;9013:40:::1;9064:6;:19:::0;;-1:-1:-1;;;;;;9064:19:0::1;::::0;;8943:148::o;19242:159::-;8513:6;;19294:4;;-1:-1:-1;;;;;8513:6:0;;;;;204:10;8513:22;8505:67;;;;-1:-1:-1;;;8505:67:0;;;;;;;:::i;:::-;-1:-1:-1;19310:14:0::1;:22:::0;;-1:-1:-1;;19310:22:0;;::::1;::::0;;;19343:20:::1;:28:::0;;;;::::1;::::0;;19310:22;19242:159;:::o;17488:202::-;8513:6;;-1:-1:-1;;;;;8513:6:0;;;;;204:10;8513:22;8505:67;;;;-1:-1:-1;;;8505:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17578:39:0;::::1;;::::0;;;:31:::1;:39;::::0;;;;;;;;:46;;-1:-1:-1;;17578:46:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17640:42;;1642:41:1;;;17640:42:0::1;::::0;1615:18:1;17640:42:0::1;;;;;;;;17488:202:::0;;:::o;15833:272::-;8513:6;;-1:-1:-1;;;;;8513:6:0;;;;;204:10;8513:22;8505:67;;;;-1:-1:-1;;;8505:67:0;;;;;;;:::i;:::-;15916:13:::1;::::0;::::1;::::0;::::1;;;15915:14;15907:51;;;::::0;-1:-1:-1;;;15907:51:0;;13689:2:1;15907:51:0::1;::::0;::::1;13671:21:1::0;13728:2;13708:18;;;13701:30;13767:26;13747:18;;;13740:54;13811:18;;15907:51:0::1;13487:348:1::0;15907:51:0::1;15969:13;:20:::0;;-1:-1:-1;;16000:18:0;;;;;16050:12:::1;16029:18;:33:::0;16073:10:::1;:24:::0;15833:272::o;16205:101::-;8513:6;;-1:-1:-1;;;;;8513:6:0;;;;;204:10;8513:22;8505:67;;;;-1:-1:-1;;;8505:67:0;;;;;;;:::i;:::-;16277:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;16277:21:0;;::::1;::::0;;;::::1;::::0;;16205:101::o;4284:104::-;4340:13;4373:7;4366:14;;;;;:::i;18204:251::-;8513:6;;-1:-1:-1;;;;;8513:6:0;;;;;204:10;8513:22;8505:67;;;;-1:-1:-1;;;8505:67:0;;;;;;;:::i;:::-;18313:6:::1;-1:-1:-1::0;;;;;18305:14:0::1;:4;-1:-1:-1::0;;;;;18305:14:0::1;::::0;18297:96:::1;;;::::0;-1:-1:-1;;;18297:96:0;;14042:2:1;18297:96:0::1;::::0;::::1;14024:21:1::0;14081:2;14061:18;;;14054:30;14120:34;14100:18;;;14093:62;14191:34;14171:18;;;14164:62;-1:-1:-1;;;14242:19:1;;;14235:36;14288:19;;18297:96:0::1;13840:473:1::0;18297:96:0::1;18406:41;18435:4;18441:5;18406:28;:41::i;6078:413::-:0;204:10;6171:4;6215:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6215:34:0;;;;;;;;;;6268:35;;;;6260:85;;;;-1:-1:-1;;;6260:85:0;;14520:2:1;6260:85:0;;;14502:21:1;14559:2;14539:18;;;14532:30;14598:34;14578:18;;;14571:62;-1:-1:-1;;;14649:18:1;;;14642:35;14694:19;;6260:85:0;14318:401:1;6260:85:0;6381:67;204:10;6404:7;6432:15;6413:16;:34;6381:8;:67::i;:::-;-1:-1:-1;6479:4:0;;6078:413;-1:-1:-1;;;6078:413:0:o;4755:175::-;4841:4;4858:42;204:10;4882:9;4893:6;4858:9;:42::i;17698:184::-;8513:6;;-1:-1:-1;;;;;8513:6:0;;;;;204:10;8513:22;8505:67;;;;-1:-1:-1;;;8505:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17783:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;17783:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17840:34;;1642:41:1;;;17840:34:0::1;::::0;1615:18:1;17840:34:0::1;1502:187:1::0;16582:235:0;8513:6;;-1:-1:-1;;;;;8513:6:0;;;;;204:10;8513:22;8505:67;;;;-1:-1:-1;;;8505:67:0;;;;;;;:::i;:::-;4479:9;;;;16703:16:::1;::::0;:2:::1;:16;:::i;:::-;16697:3;16677:13;4592:12:::0;;;4504:108;16677:13:::1;:17;::::0;16693:1:::1;16677:17;:::i;:::-;:23;;;;:::i;:::-;16676:44;;;;:::i;:::-;16667:6;:53;16659:100;;;::::0;-1:-1:-1;;;16659:100:0;;14926:2:1;16659:100:0::1;::::0;::::1;14908:21:1::0;14965:2;14945:18;;;14938:30;15004:34;14984:18;;;14977:62;-1:-1:-1;;;15055:18:1;;;15048:32;15097:19;;16659:100:0::1;14724:398:1::0;16659:100:0::1;4479:9:::0;;;;16792:16:::1;::::0;:2:::1;:16;:::i;:::-;16782:27;::::0;:6;:27:::1;:::i;:::-;16770:9;:39:::0;-1:-1:-1;16582:235:0:o;17890:306::-;8513:6;;-1:-1:-1;;;;;8513:6:0;;;;;204:10;8513:22;8505:67;;;;-1:-1:-1;;;8505:67:0;;;;;;;:::i;:::-;18009:9:::1;18005:115;18024:19:::0;;::::1;18005:115;;;18100:8;18065:19;:32;18085:8;;18094:1;18085:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18065:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18065:32:0;:43;;-1:-1:-1;;18065:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18045:3;::::1;::::0;::::1;:::i;:::-;;;;18005:115;;;;18137:51;18169:8;;18179;18137:51;;;;;;;;:::i;:::-;;;;;;;;17890:306:::0;;;:::o;15641:134::-;8513:6;;15701:4;;-1:-1:-1;;;;;8513:6:0;;;;;204:10;8513:22;8505:67;;;;-1:-1:-1;;;8505:67:0;;;;;;;:::i;:::-;-1:-1:-1;15717:20:0::1;:28:::0;;-1:-1:-1;;15717:28:0::1;::::0;;;15641:134;:::o;25439:189::-;8513:6;;-1:-1:-1;;;;;8513:6:0;;;;;204:10;8513:22;8505:67;;;;-1:-1:-1;;;8505:67:0;;;;;;;:::i;:::-;25523:9:::1;25519:102;25542:10;:17;25538:1;:21;25519:102;;;25604:5;25580:6;:21;25587:10;25598:1;25587:13;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;25580:21:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;25580:21:0;:29;;-1:-1:-1;;25580:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25561:3;::::1;::::0;::::1;:::i;:::-;;;;25519:102;;9246:244:::0;8513:6;;-1:-1:-1;;;;;8513:6:0;;;;;204:10;8513:22;8505:67;;;;-1:-1:-1;;;8505:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9335:22:0;::::1;9327:73;;;::::0;-1:-1:-1;;;9327:73:0;;16128:2:1;9327:73:0::1;::::0;::::1;16110:21:1::0;16167:2;16147:18;;;16140:30;16206:34;16186:18;;;16179:62;-1:-1:-1;;;16257:18:1;;;16250:36;16303:19;;9327:73:0::1;15926:402:1::0;9327:73:0::1;9437:6;::::0;9416:38:::1;::::0;-1:-1:-1;;;;;9416:38:0;;::::1;::::0;9437:6:::1;::::0;::::1;;::::0;9416:38:::1;::::0;;;::::1;9465:6;:17:::0;;-1:-1:-1;;;;;9465:17:0;;::::1;;;-1:-1:-1::0;;;;;;9465:17:0;;::::1;::::0;;;::::1;::::0;;9246:244::o;7418:380::-;-1:-1:-1;;;;;7554:19:0;;7546:68;;;;-1:-1:-1;;;7546:68:0;;16535:2:1;7546:68:0;;;16517:21:1;16574:2;16554:18;;;16547:30;16613:34;16593:18;;;16586:62;-1:-1:-1;;;16664:18:1;;;16657:34;16708:19;;7546:68:0;16333:400:1;7546:68:0;-1:-1:-1;;;;;7633:21:0;;7625:68;;;;-1:-1:-1;;;7625:68:0;;16940:2:1;7625:68:0;;;16922:21:1;16979:2;16959:18;;;16952:30;17018:34;16998:18;;;16991:62;-1:-1:-1;;;17069:18:1;;;17062:32;17111:19;;7625:68:0;16738:398:1;7625:68:0;-1:-1:-1;;;;;7706:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7758:32;;1840:25:1;;;7758:32:0;;1813:18:1;7758:32:0;;;;;;;7418:380;;;:::o;6499:614::-;-1:-1:-1;;;;;6639:20:0;;6631:70;;;;-1:-1:-1;;;6631:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6720:23:0;;6712:71;;;;-1:-1:-1;;;6712:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6820:17:0;;6796:21;6820:17;;;;;;;;;;;6856:23;;;;6848:74;;;;-1:-1:-1;;;6848:74:0;;18153:2:1;6848:74:0;;;18135:21:1;18192:2;18172:18;;;18165:30;18231:34;18211:18;;;18204:62;-1:-1:-1;;;18282:18:1;;;18275:36;18328:19;;6848:74:0;17951:402:1;6848:74:0;-1:-1:-1;;;;;6958:17:0;;;:9;:17;;;;;;;;;;;6978:22;;;6958:42;;7022:20;;;;;;;;:30;;6994:6;;6958:9;7022:30;;6994:6;;7022:30;:::i;:::-;;;;;;;;7087:9;-1:-1:-1;;;;;7070:35:0;7079:6;-1:-1:-1;;;;;7070:35:0;;7098:6;7070:35;;;;1840:25:1;;1828:2;1813:18;;1694:177;7070:35:0;;;;;;;;6620:493;6499:614;;;:::o;19413:4392::-;-1:-1:-1;;;;;19545:18:0;;19537:68;;;;-1:-1:-1;;;19537:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19624:16:0;;19616:64;;;;-1:-1:-1;;;19616:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19700:10:0;;;;;;:6;:10;;;;;;;;19699:11;:28;;;;-1:-1:-1;;;;;;19715:12:0;;;;;;:6;:12;;;;;;;;19714:13;19699:28;19691:48;;;;-1:-1:-1;;;19691:48:0;;18560:2:1;19691:48:0;;;18542:21:1;18599:1;18579:18;;;18572:29;-1:-1:-1;;;18617:18:1;;;18610:37;18664:18;;19691:48:0;18358:330:1;19691:48:0;19756:6;19766:1;19756:11;19753:92;;19784:28;19800:4;19806:2;19810:1;19784:15;:28::i;19753:92::-;19869:13;;;;;;;19865:136;;-1:-1:-1;;;;;19906:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;19935:23:0;;;;;;:19;:23;;;;;;;;19906:52;19898:91;;;;-1:-1:-1;;;19898:91:0;;18895:2:1;19898:91:0;;;18877:21:1;18934:2;18914:18;;;18907:30;18973:28;18953:18;;;18946:56;19019:18;;19898:91:0;18693:350:1;19898:91:0;20024:14;;;;20021:1657;;;8366:6;;-1:-1:-1;;;;;20076:15:0;;;8366:6;;;;;20076:15;;;;:49;;-1:-1:-1;8366:6:0;;-1:-1:-1;;;;;20112:13:0;;;8366:6;;;;;20112:13;;20076:49;:86;;;;-1:-1:-1;;;;;;20146:16:0;;;;20076:86;:128;;;;-1:-1:-1;;;;;;20183:21:0;;20197:6;20183:21;;20076:128;:158;;;;-1:-1:-1;20226:8:0;;-1:-1:-1;;;20226:8:0;;;;20225:9;20076:158;20054:1613;;;20408:20;;;;20404:418;;;20489:9;20460:39;;;;:28;:39;;;;;;20507:12;;20460:44;;20502:2;20460:44;:::i;:::-;:59;20452:95;;;;-1:-1:-1;;;20452:95:0;;19250:2:1;20452:95:0;;;19232:21:1;19289:2;19269:18;;;19262:30;19328:25;19308:18;;;19301:53;19371:18;;20452:95:0;19048:347:1;20452:95:0;20588:9;-1:-1:-1;;;;;20574:24:0;:2;-1:-1:-1;;;;;20574:24:0;;;:49;;;;;20616:6;-1:-1:-1;;;;;20602:21:0;:2;-1:-1:-1;;;;;20602:21:0;;;20574:49;20570:233;;;20680:9;20651:39;;;;:28;:39;;;;;;20693:12;20651:54;;;;-1:-1:-1;;;;;20732:32:0;;;;;;:47;20570:233;-1:-1:-1;;;;;20890:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;20926:35:0;;;;;;:31;:35;;;;;;;;20925:36;20890:71;20886:766;;;21004:20;;20994:6;:30;;20986:96;;;;-1:-1:-1;;;20986:96:0;;19602:2:1;20986:96:0;;;19584:21:1;19641:2;19621:18;;;19614:30;19680:34;19660:18;;;19653:62;-1:-1:-1;;;19731:18:1;;;19724:51;19792:19;;20986:96:0;19400:417:1;20986:96:0;21139:9;;-1:-1:-1;;;;;4721:18:0;;4694:7;4721:18;;;;;;;;;;;21113:22;;:6;:22;:::i;:::-;:35;;21105:75;;;;-1:-1:-1;;;21105:75:0;;20024:2:1;21105:75:0;;;20006:21:1;20063:2;20043:18;;;20036:30;20102:29;20082:18;;;20075:57;20149:18;;21105:75:0;19822:351:1;21105:75:0;20886:766;;;-1:-1:-1;;;;;21257:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;21291:37:0;;;;;;:31;:37;;;;;;;;21290:38;21257:71;21253:399;;;21371:20;;21361:6;:30;;21353:97;;;;-1:-1:-1;;;21353:97:0;;20380:2:1;21353:97:0;;;20362:21:1;20419:2;20399:18;;;20392:30;20458:34;20438:18;;;20431:62;-1:-1:-1;;;20509:18:1;;;20502:52;20571:19;;21353:97:0;20178:418:1;21253:399:0;-1:-1:-1;;;;;21497:35:0;;;;;;:31;:35;;;;;;;;21493:159;;21591:9;;-1:-1:-1;;;;;4721:18:0;;4694:7;4721:18;;;;;;;;;;;21565:22;;:6;:22;:::i;:::-;:35;;21557:75;;;;-1:-1:-1;;;21557:75:0;;20024:2:1;21557:75:0;;;20006:21:1;20063:2;20043:18;;;20036:30;20102:29;20082:18;;;20075:57;20149:18;;21557:75:0;19822:351:1;21557:75:0;21733:4;21684:28;4721:18;;;;;;;;;;;21799;;21775:42;;;;;;;21848:35;;-1:-1:-1;21872:11:0;;;;;;;21848:35;:61;;;;-1:-1:-1;21901:8:0;;-1:-1:-1;;;21901:8:0;;;;21900:9;21848:61;:110;;;;-1:-1:-1;;;;;;21927:31:0;;;;;;:25;:31;;;;;;;;21926:32;21848:110;:153;;;;-1:-1:-1;;;;;;21976:25:0;;;;;;:19;:25;;;;;;;;21975:26;21848:153;:194;;;;-1:-1:-1;;;;;;22019:23:0;;;;;;:19;:23;;;;;;;;22018:24;21848:194;21830:322;;;22069:8;:15;;-1:-1:-1;;;;22069:15:0;-1:-1:-1;;;22069:15:0;;;22099:10;:8;:10::i;:::-;22124:8;:16;;-1:-1:-1;;;;22124:16:0;;;21830:322;22180:8;;-1:-1:-1;;;;;22289:25:0;;22164:12;22289:25;;;:19;:25;;;;;;22180:8;-1:-1:-1;;;22180:8:0;;;;;22179:9;;22289:25;;:52;;-1:-1:-1;;;;;;22318:23:0;;;;;;:19;:23;;;;;;;;22289:52;22286:99;;;-1:-1:-1;22368:5:0;22286:99;22405:12;22496:7;22493:1259;;;22557:12;22543:10;;22522:18;;:31;;;;:::i;:::-;:47;;:117;;;;-1:-1:-1;;;;;;22574:29:0;;;;;;:25;:29;;;;;;;;;:64;;-1:-1:-1;;;;;;22607:31:0;;;;;;:25;:31;;;;;;;;22574:64;22519:1076;;;11960:5;22675:12;;22666:6;:21;;;;:::i;:::-;:34;;;;:::i;:::-;22659:41;;22766:12;;22748:15;;22741:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;22719:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;22846:12:0;;22827:16;;22820:23;;:4;:23;:::i;:::-;:38;;;;:::i;:::-;22797:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;22877:11:0;:20;;;;;;;-1:-1:-1;22877:20:0;;;;;;;;-1:-1:-1;;;;;;22877:20:0;-1:-1:-1;;;;;22877:20:0;;;;;22519:1076;;;-1:-1:-1;;;;;22962:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;23011:1;22995:13;;:17;22962:50;22958:637;;;11960:5;23048:13;;23039:6;:22;;;;:::i;:::-;:35;;;;:::i;:::-;23032:42;;23141:13;;23122:16;;23115:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;23093:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;23223:13:0;;23203:17;;23196:24;;:4;:24;:::i;:::-;:40;;;;:::i;:::-;23173:19;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;22958:637:0;;-1:-1:-1;22958:637:0;;-1:-1:-1;;;;;23311:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;23361:1;23346:12;;:16;23311:51;23308:287;;;11960:5;23396:12;;23387:6;:21;;;;:::i;:::-;:34;;;;:::i;:::-;23380:41;;23487:12;;23469:15;;23462:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;23440:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;23567:12:0;;23548:16;;23541:23;;:4;:23;:::i;:::-;:38;;;;:::i;:::-;23518:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;23308:287:0;23614:8;;23611:93;;23646:42;23662:4;23676;23683;23646:15;:42::i;:::-;23726:14;23736:4;23726:14;;:::i;:::-;;;22493:1259;23764:33;23780:4;23786:2;23790:6;23764:15;:33::i;:::-;19526:4279;;;;19413:4392;;;:::o;18463:237::-;-1:-1:-1;;;;;18546:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;18546:39:0;;;;;;;18598:38;18546:31;:39;18598:25;:38::i;:::-;18652:40;;;;;;-1:-1:-1;;;;;18652:40:0;;;;;;;;18463:237;;:::o;24342:761::-;24425:4;24381:23;4721:18;;;;;;;;;;;24381:50;;24442:25;24491:19;;24470:18;;:40;;;;:::i;:::-;24442:68;-1:-1:-1;24534:20:0;;;:46;;-1:-1:-1;24558:22:0;;24534:46;24531:60;;;24583:7;;24342:761::o;24531:60::-;24608:18;;:22;24605:396;;24646:23;24711:17;24690:18;;24672:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;24646:82;;24743:55;24767:4;24774:6;24782:15;24743;:55::i;:::-;24825:6;-1:-1:-1;;;;;24817:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24813:37;24864:34;24883:15;24864:34;;:::i;:::-;;;24934:18;;24913:39;;;;;:::i;:::-;24988:1;24967:18;:22;24913:39;-1:-1:-1;;24605:396:0;25016:19;;25013:83;;23965:16;;;23979:1;23965:16;;;;;;;;25051:33;;25068:15;;23941:21;;23965:16;;;;;;;;;;;;-1:-1:-1;23965:16:0;23941:40;;24010:4;23992;23997:1;23992:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;23992:23:0;;;-1:-1:-1;;;;;23992:23:0;;;;;24036:9;-1:-1:-1;;;;;24036:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24026:4;24031:1;24026:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24026:26:0;;;:7;;;;;;;;;:26;24263:16;;24091:230;;-1:-1:-1;;;24091:230:0;;:9;:60;;;;;:230;;24166:11;;24192:1;;24236:4;;24263:16;;;24295:15;;24091:230;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23868:466;23813:521;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:548::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;551:3;736:1;731:2;722:6;711:9;707:22;703:31;696:42;806:2;799;795:7;790:2;782:6;778:15;774:29;763:9;759:45;755:54;747:62;;;;267:548;;;;:::o;1046:131::-;-1:-1:-1;;;;;1121:31:1;;1111:42;;1101:70;;1167:1;1164;1157:12;1182:315;1250:6;1258;1311:2;1299:9;1290:7;1286:23;1282:32;1279:52;;;1327:1;1324;1317:12;1279:52;1366:9;1353:23;1385:31;1410:5;1385:31;:::i;:::-;1435:5;1487:2;1472:18;;;;1459:32;;-1:-1:-1;;;1182:315:1:o;1876:127::-;1937:10;1932:3;1928:20;1925:1;1918:31;1968:4;1965:1;1958:15;1992:4;1989:1;1982:15;2008:275;2079:2;2073:9;2144:2;2125:13;;-1:-1:-1;;2121:27:1;2109:40;;2179:18;2164:34;;2200:22;;;2161:62;2158:88;;;2226:18;;:::i;:::-;2262:2;2255:22;2008:275;;-1:-1:-1;2008:275:1:o;2288:183::-;2348:4;2381:18;2373:6;2370:30;2367:56;;;2403:18;;:::i;:::-;-1:-1:-1;2448:1:1;2444:14;2460:4;2440:25;;2288:183::o;2476:737::-;2530:5;2583:3;2576:4;2568:6;2564:17;2560:27;2550:55;;2601:1;2598;2591:12;2550:55;2637:6;2624:20;2663:4;2687:60;2703:43;2743:2;2703:43;:::i;:::-;2687:60;:::i;:::-;2781:15;;;2867:1;2863:10;;;;2851:23;;2847:32;;;2812:12;;;;2891:15;;;2888:35;;;2919:1;2916;2909:12;2888:35;2955:2;2947:6;2943:15;2967:217;2983:6;2978:3;2975:15;2967:217;;;3063:3;3050:17;3080:31;3105:5;3080:31;:::i;:::-;3124:18;;3162:12;;;;3000;;2967:217;;;-1:-1:-1;3202:5:1;2476:737;-1:-1:-1;;;;;;2476:737:1:o;3218:348::-;3302:6;3355:2;3343:9;3334:7;3330:23;3326:32;3323:52;;;3371:1;3368;3361:12;3323:52;3411:9;3398:23;3444:18;3436:6;3433:30;3430:50;;;3476:1;3473;3466:12;3430:50;3499:61;3552:7;3543:6;3532:9;3528:22;3499:61;:::i;:::-;3489:71;3218:348;-1:-1:-1;;;;3218:348:1:o;3571:180::-;3630:6;3683:2;3671:9;3662:7;3658:23;3654:32;3651:52;;;3699:1;3696;3689:12;3651:52;-1:-1:-1;3722:23:1;;3571:180;-1:-1:-1;3571:180:1:o;3756:1138::-;3874:6;3882;3935:2;3923:9;3914:7;3910:23;3906:32;3903:52;;;3951:1;3948;3941:12;3903:52;3991:9;3978:23;4020:18;4061:2;4053:6;4050:14;4047:34;;;4077:1;4074;4067:12;4047:34;4100:61;4153:7;4144:6;4133:9;4129:22;4100:61;:::i;:::-;4090:71;;4180:2;4170:12;;4235:2;4224:9;4220:18;4207:32;4264:2;4254:8;4251:16;4248:36;;;4280:1;4277;4270:12;4248:36;4303:24;;;-1:-1:-1;4358:4:1;4350:13;;4346:27;-1:-1:-1;4336:55:1;;4387:1;4384;4377:12;4336:55;4423:2;4410:16;4446:60;4462:43;4502:2;4462:43;:::i;4446:60::-;4540:15;;;4622:1;4618:10;;;;4610:19;;4606:28;;;4571:12;;;;4646:19;;;4643:39;;;4678:1;4675;4668:12;4643:39;4702:11;;;;4722:142;4738:6;4733:3;4730:15;4722:142;;;4804:17;;4792:30;;4755:12;;;;4842;;;;4722:142;;;4883:5;4873:15;;;;;;;3756:1138;;;;;:::o;4899:247::-;4958:6;5011:2;4999:9;4990:7;4986:23;4982:32;4979:52;;;5027:1;5024;5017:12;4979:52;5066:9;5053:23;5085:31;5110:5;5085:31;:::i;:::-;5135:5;4899:247;-1:-1:-1;;;4899:247:1:o;5151:456::-;5228:6;5236;5244;5297:2;5285:9;5276:7;5272:23;5268:32;5265:52;;;5313:1;5310;5303:12;5265:52;5352:9;5339:23;5371:31;5396:5;5371:31;:::i;:::-;5421:5;-1:-1:-1;5478:2:1;5463:18;;5450:32;5491:33;5450:32;5491:33;:::i;:::-;5151:456;;5543:7;;-1:-1:-1;;;5597:2:1;5582:18;;;;5569:32;;5151:456::o;6009:160::-;6074:20;;6130:13;;6123:21;6113:32;;6103:60;;6159:1;6156;6149:12;6103:60;6009:160;;;:::o;6174:315::-;6239:6;6247;6300:2;6288:9;6279:7;6275:23;6271:32;6268:52;;;6316:1;6313;6306:12;6268:52;6355:9;6342:23;6374:31;6399:5;6374:31;:::i;:::-;6424:5;-1:-1:-1;6448:35:1;6479:2;6464:18;;6448:35;:::i;:::-;6438:45;;6174:315;;;;;:::o;6494:180::-;6550:6;6603:2;6591:9;6582:7;6578:23;6574:32;6571:52;;;6619:1;6616;6609:12;6571:52;6642:26;6658:9;6642:26;:::i;6679:689::-;6771:6;6779;6787;6840:2;6828:9;6819:7;6815:23;6811:32;6808:52;;;6856:1;6853;6846:12;6808:52;6896:9;6883:23;6925:18;6966:2;6958:6;6955:14;6952:34;;;6982:1;6979;6972:12;6952:34;7020:6;7009:9;7005:22;6995:32;;7065:7;7058:4;7054:2;7050:13;7046:27;7036:55;;7087:1;7084;7077:12;7036:55;7127:2;7114:16;7153:2;7145:6;7142:14;7139:34;;;7169:1;7166;7159:12;7139:34;7224:7;7217:4;7207:6;7204:1;7200:14;7196:2;7192:23;7188:34;7185:47;7182:67;;;7245:1;7242;7235:12;7182:67;7276:4;7268:13;;;;-1:-1:-1;7300:6:1;-1:-1:-1;7325:37:1;;7341:20;;;-1:-1:-1;7325:37:1;:::i;:::-;7315:47;;6679:689;;;;;:::o;7373:388::-;7441:6;7449;7502:2;7490:9;7481:7;7477:23;7473:32;7470:52;;;7518:1;7515;7508:12;7470:52;7557:9;7544:23;7576:31;7601:5;7576:31;:::i;:::-;7626:5;-1:-1:-1;7683:2:1;7668:18;;7655:32;7696:33;7655:32;7696:33;:::i;:::-;7748:7;7738:17;;;7373:388;;;;;:::o;7766:356::-;7968:2;7950:21;;;7987:18;;;7980:30;8046:34;8041:2;8026:18;;8019:62;8113:2;8098:18;;7766:356::o;8127:127::-;8188:10;8183:3;8179:20;8176:1;8169:31;8219:4;8216:1;8209:15;8243:4;8240:1;8233:15;8259:125;8324:9;;;8345:10;;;8342:36;;;8358:18;;:::i;8747:380::-;8826:1;8822:12;;;;8869;;;8890:61;;8944:4;8936:6;8932:17;8922:27;;8890:61;8997:2;8989:6;8986:14;8966:18;8963:38;8960:161;;9043:10;9038:3;9034:20;9031:1;9024:31;9078:4;9075:1;9068:15;9106:4;9103:1;9096:15;8960:161;;8747:380;;;:::o;9132:127::-;9193:10;9188:3;9184:20;9181:1;9174:31;9224:4;9221:1;9214:15;9248:4;9245:1;9238:15;9264:135;9303:3;9324:17;;;9321:43;;9344:18;;:::i;:::-;-1:-1:-1;9391:1:1;9380:13;;9264:135::o;9404:422::-;9493:1;9536:5;9493:1;9550:270;9571:7;9561:8;9558:21;9550:270;;;9630:4;9626:1;9622:6;9618:17;9612:4;9609:27;9606:53;;;9639:18;;:::i;:::-;9689:7;9679:8;9675:22;9672:55;;;9709:16;;;;9672:55;9788:22;;;;9748:15;;;;9550:270;;;9554:3;9404:422;;;;;:::o;9831:806::-;9880:5;9910:8;9900:80;;-1:-1:-1;9951:1:1;9965:5;;9900:80;9999:4;9989:76;;-1:-1:-1;10036:1:1;10050:5;;9989:76;10081:4;10099:1;10094:59;;;;10167:1;10162:130;;;;10074:218;;10094:59;10124:1;10115:10;;10138:5;;;10162:130;10199:3;10189:8;10186:17;10183:43;;;10206:18;;:::i;:::-;-1:-1:-1;;10262:1:1;10248:16;;10277:5;;10074:218;;10376:2;10366:8;10363:16;10357:3;10351:4;10348:13;10344:36;10338:2;10328:8;10325:16;10320:2;10314:4;10311:12;10307:35;10304:77;10301:159;;;-1:-1:-1;10413:19:1;;;10445:5;;10301:159;10492:34;10517:8;10511:4;10492:34;:::i;:::-;10562:6;10558:1;10554:6;10550:19;10541:7;10538:32;10535:58;;;10573:18;;:::i;:::-;10611:20;;9831:806;-1:-1:-1;;;9831:806:1:o;10642:140::-;10700:5;10729:47;10770:4;10760:8;10756:19;10750:4;10729:47;:::i;10787:168::-;10860:9;;;10891;;10908:15;;;10902:22;;10888:37;10878:71;;10929:18;;:::i;10960:217::-;11000:1;11026;11016:132;;11070:10;11065:3;11061:20;11058:1;11051:31;11105:4;11102:1;11095:15;11133:4;11130:1;11123:15;11016:132;-1:-1:-1;11162:9:1;;10960:217::o;15127:794::-;15349:2;15361:21;;;15334:18;;15417:22;;;15301:4;15496:6;15470:2;15455:18;;15301:4;15530:304;15544:6;15541:1;15538:13;15530:304;;;15619:6;15606:20;15639:31;15664:5;15639:31;:::i;:::-;-1:-1:-1;;;;;15695:31:1;15683:44;;15750:4;15809:15;;;;15774:12;;;;15723:1;15559:9;15530:304;;;15534:3;15851;15843:11;;;;15906:6;15899:14;15892:22;15885:4;15874:9;15870:20;15863:52;15127:794;;;;;;:::o;17141:401::-;17343:2;17325:21;;;17382:2;17362:18;;;17355:30;17421:34;17416:2;17401:18;;17394:62;-1:-1:-1;;;17487:2:1;17472:18;;17465:35;17532:3;17517:19;;17141:401::o;17547:399::-;17749:2;17731:21;;;17788:2;17768:18;;;17761:30;17827:34;17822:2;17807:18;;17800:62;-1:-1:-1;;;17893:2:1;17878:18;;17871:33;17936:3;17921:19;;17547:399::o;20601:128::-;20668:9;;;20689:11;;;20686:37;;;20703:18;;:::i;20734:251::-;20804:6;20857:2;20845:9;20836:7;20832:23;20828:32;20825:52;;;20873:1;20870;20863:12;20825:52;20905:9;20899:16;20924:31;20949:5;20924:31;:::i;20990:980::-;21252:4;21300:3;21289:9;21285:19;21331:6;21320:9;21313:25;21357:2;21395:6;21390:2;21379:9;21375:18;21368:34;21438:3;21433:2;21422:9;21418:18;21411:31;21462:6;21497;21491:13;21528:6;21520;21513:22;21566:3;21555:9;21551:19;21544:26;;21605:2;21597:6;21593:15;21579:29;;21626:1;21636:195;21650:6;21647:1;21644:13;21636:195;;;21715:13;;-1:-1:-1;;;;;21711:39:1;21699:52;;21806:15;;;;21771:12;;;;21747:1;21665:9;21636:195;;;-1:-1:-1;;;;;;;21887:32:1;;;;21882:2;21867:18;;21860:60;-1:-1:-1;;;21951:3:1;21936:19;21929:35;21848:3;20990:980;-1:-1:-1;;;20990:980:1:o

Swarm Source

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