ETH Price: $2,522.90 (+0.24%)

Token

DoubleEspresso (DESP)
 

Overview

Max Total Supply

1,000,000,000 DESP

Holders

102

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000000001 DESP

Value
$0.00
0x38d671409156608fe1dd66c2d1ac9936ff973ef3
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:
DoubleEspresso

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-31
*/

//SPDX-License-Identifier: MIT
pragma solidity 0.8.18;

/*
    DoubleEspresso - a bot to build your website and deploy your token in a few minutes!
    (token factory at the bottom of the contract)

    Why just one espresso if you can take two?
    
    tg: https://t.me/DespressoToken
    twitter: @DEspressotoken
    website: https://despresso.eth.limo/

*/

library TransferHelper {
    function safeTransferFrom(
        address token,
        address from,
        address to,
        uint256 value
    ) internal {
        (bool success, bytes memory data) = token.call(
            abi.encodeWithSelector(0x23b872dd, from, to, value)
        );
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            "TransferHelper: TRANSFER_FROM_FAILED"
        );
    }
}

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

interface IERC20 {
    function approve(address spender, uint256 value) external returns (bool);
    function balanceOf(address account) external view returns (uint256);
}

interface IpinkSale {
    function lock(
        address owner,
        address token,
        bool isLpToken,
        uint256 amount,
        uint256 unlockDate,
        string memory description
    ) external returns (uint256 id);

}

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

    function WETH() external pure returns (address);

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

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

abstract contract Ownable {
    address private _owner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        _transferOwnership(msg.sender);
    }

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

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Invalid owner");
        _transferOwnership(newOwner);
    }

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

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

contract tokenTemplate is Ownable {
    IDEXRouter public constant router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    IpinkSale constant locker = IpinkSale(0x71B5759d73262FBb223956913ecF4ecC51057641);
    address public pair;

    // ERC20 defaults
    string _name;
    string _ticker;
    uint8 constant _decimals = 18;
    uint256 _totalSupply = 1 * (10**9) * (10**_decimals); // default 1 billion

    // ERC20 mappings
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) _allowances;

    uint256 constant divisor = 1_000;

    // Limits
    bool public limitsEnabled = true;
    mapping(address => bool) _isTxLimitExempt;
    uint256 public maxTxAmount = (_totalSupply * 10) / divisor; //1 %
    uint256 public maxWalletAmount = (_totalSupply * 10) / divisor; // 1%

    // Fees
    bool public feesEnabled;
    mapping(address => bool) _isFeeExempt;
    uint256 private sniperTaxTillBlock;
    uint256 private tokensForMarketing;
    uint256 private tokensForLp;
    uint256 private tokensForDev;
    address public lpWallet;
    address public marketingWallet;
    address public devWallet;
    uint256 marketingBuyFee = 20;
    uint256 liquidityBuyFee = 20;
    uint256 developmentBuyFee = 20;
    uint256 public totalBuyFee = marketingBuyFee + liquidityBuyFee + developmentBuyFee;
    uint256 marketingSellFee = 30;
    uint256 liquiditySellFee = 30;
    uint256 developmentSellFee = 20;
    uint256 public totalSellFee = marketingSellFee + liquiditySellFee + developmentSellFee;

    // Lp locker
    uint256 public lpLockId;

    // Swapback
    bool public swapEnabled = true;
    uint256 public swapThreshold = (_totalSupply * 10) / 100_000; // 0.01%
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
    bool inSwap;
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    // Trade block
    bool tradingAllowed;
    uint256 sniperTaxTill;

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

    constructor(
        string memory __name,
        string memory __ticker,
        address __owner,
        bool __hasFees,
        uint256 __marketingTax,
        address __marketing,
        uint256 __devTax,
        address __dev,
        uint256 __lpTax,
        address __lp
    ) {
        _name = __name;
        _ticker = __ticker;
        transferOwnership(__owner);      

        // Arrange fee and tx exempts
        _isFeeExempt[address(this)] = true;
        _isTxLimitExempt[address(this)] = true;
        _isFeeExempt[__owner] = true;
        _isTxLimitExempt[__owner] = true;
        _isTxLimitExempt[address(router)] = true;

        // Take care of the approvals for the owner and the token itself
        _allowances[address(this)][address(router)] = _totalSupply;
        
        // If fees are disabled entirely we can totally skip them in the transfer
        // to save tx costs.
        feesEnabled = __hasFees;
        swapEnabled = __hasFees; // only need to enable swap in case of fees

        // Set fee wallets
        lpWallet = __lp;
        marketingWallet = __marketing;
        devWallet = __dev;

        // Set taxes
        // - Buy taxes
        require(__marketingTax + __lpTax + __devTax <= 150); // note divisor = 1000
        marketingBuyFee = __marketingTax;
        liquidityBuyFee = __lpTax;
        developmentBuyFee = __devTax;
        totalBuyFee  = marketingBuyFee + liquidityBuyFee + developmentBuyFee;

        // - Sell taxes
        marketingSellFee = __marketingTax;
        liquiditySellFee = __lpTax;
        developmentSellFee = __devTax;
        totalSellFee  = marketingSellFee + liquiditySellFee + developmentSellFee;

        // Mint the tokens to the contract
        _balances[address(this)] = _totalSupply;
        emit Transfer(address(0), address(this), _totalSupply);
    }


    // Basic ERC20 functions
    function totalSupply() external view returns (uint256) {
        return _totalSupply;
    }

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

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

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

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

    function allowance(address holder, address spender)
        external
        view
        returns (uint256)
    {
        return _allowances[holder][spender];
    }

    function approve(address spender, uint256 amount) public returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    // Basic transfer is a transfer without tax - for wallets excluded from fees/limits
    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "Insufficient Balance");
        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    // To configure the buy fees with a limit of 15%
    function setBuyFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _developFee
    ) external onlyOwner {
        require(_marketingFee + _liquidityFee + _developFee <= 150); // note divisor = 1000
        marketingBuyFee = _marketingFee;
        liquidityBuyFee = _liquidityFee;
        developmentBuyFee = _developFee;
        totalBuyFee = _marketingFee + _liquidityFee + _developFee;
    }

    // To configure the sell fees with a limit of 15%
    function setSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _developFee
    ) external onlyOwner {
        require(_marketingFee + _liquidityFee + _developFee <= 150); // max 15%
        marketingSellFee = _marketingFee;
        liquiditySellFee = _liquidityFee;
        developmentSellFee = _developFee;
        totalSellFee = _marketingFee + _liquidityFee + _developFee;
    }

    // Update tax wallet if necessary
    function updateWallets(
        address _marketingWallet,
        address _lpWallet,
        address _devWallet
    ) external onlyOwner {
        marketingWallet = _marketingWallet;
        lpWallet = _lpWallet;
        devWallet = _devWallet;
    }

    // We can change the max wallet but only to be at least 1% of the supply
    function setMaxWallet(uint256 percent) external onlyOwner {
        require(percent >= 10); // Note divisor = 1000
        maxWalletAmount = (_totalSupply * percent) / divisor;
    }

    // We can change the max tx limit but it should be at least 1% of the supply
    function setTxLimit(uint256 percent) external onlyOwner {
        require(percent >= 10); // Note divisor = 1000
        maxTxAmount = (_totalSupply * percent) / divisor;
    }

    // Check restrictions, mainly to just after launch limit wallets taking up large portions of
    // the supply
    function checkLimits(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        // return if sender and recipient are excluded
        if (_isTxLimitExempt[sender] && _isTxLimitExempt[recipient]) {
            return;
        }

        // Buy
        if (sender == pair && !_isTxLimitExempt[recipient]) {
            require(amount <= maxTxAmount, "Max tx limit");

        // Sell
        } else if (recipient == pair && !_isTxLimitExempt[sender]) {
            require(amount <= maxTxAmount, "Max tx limit");
        }

        // Max wallet
        if (!_isTxLimitExempt[recipient]) {
            require(
                amount + balanceOf(recipient) <= maxWalletAmount,
                "Max wallet"
            );
        }
    }

    // Permanently lift the limits, this can't be reversed
    // limits can also just be loosened instead
    function permanent_lift_limits() external onlyOwner {
        limitsEnabled = false;
    }

    // Let the trading begin! 
    // This will automatically lock the lp for at least 1 month with 
    // the msg.sender (=owner) becoming the owner of the lp tokens that
    // can be withdraw after at least a month or locks can just be extended
    // in the pinksale GUI
    function startTrading(uint256 lock_lp_months) external payable onlyOwner {
        require(!tradingAllowed, "Trading already enabled");
        require(lock_lp_months >= 1, "Lock < 1 month");
        require(msg.value > 0, "No ETH supplied");

        // Create the pair contract 
        pair = IDEXFactory(router.factory()).createPair(
            router.WETH(),
            address(this)
        );

        // Exclude the pair from tx limit and approve owner
        _isTxLimitExempt[address(pair)] = true;
        _allowances[owner()][address(pair)] = _totalSupply;

        // Add the lp and send the lp tokens back to the token contract
        inSwap = true;
        addLiquidity(balanceOf(address(this)), msg.value, address(this));
        tradingAllowed = true;
        inSwap = false;

        // Transfer LP tokens to pinksale locker
        uint256 lp_tokens = IERC20(pair).balanceOf(address(this));
        IERC20(pair).approve(address(locker), lp_tokens);
        uint256 unlock_date = block.timestamp + lock_lp_months * 30 days;

        // Lock and assign ownership of the lock to the sender i.e. dev
        lpLockId = locker.lock(
            msg.sender,
            pair,
            true,
            lp_tokens,
            unlock_date,
            "lp lock"
        );

        // Set sniper block
        sniperTaxTill = block.number + 2;
    }

    // To change whether tokens in the contract should be swapped for for ETH
    // and at what threshold
    function setTokenSwapSettings(bool _enabled, uint256 _threshold)
        external
        onlyOwner
    {
        swapEnabled = _enabled;
        swapThreshold = _threshold * (10**_decimals);
    }

    // Check if tokens in the contract should be swapped, only on sells
    function shouldTokenSwap(address recipient) internal view returns (bool) {
        return
            recipient == pair &&
            !inSwap &&
            swapEnabled &&
            _balances[address(this)] >= swapThreshold;
    }

    function takeFee(
        address from,
        address to,
        uint256 amount
    ) internal returns (uint256) {
        // Exempt from fees so return
        if (_isFeeExempt[from] || _isFeeExempt[to]) {
            return amount;
        }

        uint256 fees;

        // Sniper tax, only first two blocks after lp
        if (block.number <= sniperTaxTill) {
            fees = (amount * 98) / 100; // 98% tax
            tokensForLp += (fees * 50) / 98;
            tokensForMarketing += (fees * 48) / 98;
        }
        // On sell
        else if (to == pair && totalSellFee > 0) {
            fees = (amount * totalSellFee) / divisor;
            tokensForLp += (fees * liquiditySellFee) / totalSellFee;
            tokensForDev += (fees * developmentSellFee) / totalSellFee;
            tokensForMarketing += (fees * marketingSellFee) / totalSellFee;
        }
        // On buy
        else if (from == pair && totalBuyFee > 0) {
            fees = (amount * totalBuyFee) / divisor;
            tokensForLp += (fees * liquidityBuyFee) / totalBuyFee;
            tokensForDev += (fees * developmentBuyFee) / totalBuyFee;
            tokensForMarketing += (fees * marketingBuyFee) / totalBuyFee;
        }

        // Send collected fees
        if (fees > 0) {
            _basicTransfer(from, address(this), fees);
            emit Transfer(from, address(this), fees);
        }

        // Taxed amount
        return amount -= fees;
    }

    function swapBack() internal swapping {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLp +
            tokensForMarketing +
            tokensForDev;

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

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractBalance * tokensForLp) / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance - liquidityTokens;

        uint256 initialETHBalance = address(this).balance;

        // Swap the tokens for ETH
        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance - initialETHBalance;
        uint256 ethForMarketing = (ethBalance * tokensForMarketing) / totalTokensToSwap;
        uint256 ethForDev = (ethBalance * tokensForDev) / totalTokensToSwap;
        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;

        // Reset token fee counts
        tokensForLp = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;

        // Send Dev fees
        payable(devWallet).transfer(ethForDev);

        // Add liquidty
        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity, lpWallet);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLp
            );
        }

        // Hand out the marketing ETH
        payable(marketingWallet).transfer(address(this).balance);
    }

    function transfer(address recipient, uint256 amount)
        external
        returns (bool)
    {
        if (owner() == msg.sender) {
            return _basicTransfer(msg.sender, recipient, amount);
        } else {
            return _transferFrom(msg.sender, recipient, amount);
        }
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if (_allowances[sender][msg.sender] != _totalSupply) {
            // Get the current allowance
            uint256 curAllowance = _allowances[sender][msg.sender];
            require(curAllowance >= amount, "Insufficient Allowance");
            _allowances[sender][msg.sender] -= amount;
        }
        return _transferFrom(sender, recipient, amount);
    }

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

        // Excluded from limits and fees
        if (sender == owner() || recipient == owner() || inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        // In any other case, check if trading is open already and whether limits/fees should be applied
        require(tradingAllowed, "Trading not open yet");
        if (limitsEnabled) {
            checkLimits(sender, recipient, amount);
        }
        if (shouldTokenSwap(recipient)) {
            swapBack();
        }
        if (feesEnabled) {
            amount = (recipient == pair || sender == pair)
                ? takeFee(sender, recipient, amount)
                : amount;
        }
        _basicTransfer(sender, recipient, amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

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

    function addLiquidity(
        uint256 tokenAmount,
        uint256 ethAmount,
        address sendTo
    ) private {
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            sendTo,
            block.timestamp
        );
    }

    function clearStuckWETH(uint256 perc) external {
        require(msg.sender == marketingWallet);
        uint256 amountWETH = address(this).balance;
        payable(marketingWallet).transfer((amountWETH * perc) / 100);
    }

    receive() external payable {}
}

contract DoubleEspresso is tokenTemplate {
    mapping(address => address) public token_owners; // token -> owner
    mapping(address => address[]) public tokens_owned; // owner -> token(s)
    bool factory_enabled;
    uint256 public tokens_created;
    uint256 burnCreationFee = 1_000;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;

    event TokenCreated(address creator, address token);

    constructor()
        tokenTemplate(
            "DoubleEspresso",
            "DESP",
            msg.sender, //owner
            true,
            20,
            0x76B2c08407133B36F3Fd38fD362DfBd5ed836384, // marketing
            20,
            0x37F60ceA0892B7f1a39811Df4415034f723a54d7, // dev
            10,
            0xcEB53721d782367d9CD11F3aA443418d615C7a26  // lp
        )
    {
        factory_enabled = true;
    }

    function update_burn_creation_fee(uint256 fee) external onlyOwner {
        burnCreationFee = fee;
    }

    // Could also just use regular approve
    function easy_approve_creation_fee() external {
        _allowances[msg.sender][address(this)] = burnCreationFee;
        emit Approval(msg.sender, address(this), burnCreationFee);
    }

    function createToken(
        string memory _name,
        string memory _ticker,
        address owner,
        bool enableFees,
        uint256 marketingTax,
        address marketing,
        uint256 devTax,
        address dev,
        uint256 lpTax,
        address lp
    ) external {
        require(factory_enabled, "Factory is disabled");

        // Check if the sender has enough tokens to burn 
        require(_balances[msg.sender] >= burnCreationFee, "Not enough tokens");

        // Burn tokens to create a token using safeTransfer
        TransferHelper.safeTransferFrom(
            address(this), 
            msg.sender, // Get the tokens from the msg sender
            DEAD,
            burnCreationFee
        );

        tokenTemplate token_clone = new tokenTemplate(
            _name,
            _ticker,
            owner, // Use the "owner" as token owner (usually just the same as msg.sender)
            enableFees,
            marketingTax,
            marketing,
            devTax,
            dev,
            lpTax,
            lp
        );

        address token_address = address(token_clone);

        // Store the creator to verify adjustments later on
        token_owners[token_address] = owner;
        tokens_owned[owner].push(token_address);

        tokens_created++;
        emit TokenCreated(owner, token_address);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"}],"name":"TokenCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"perc","type":"uint256"}],"name":"clearStuckWETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_ticker","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bool","name":"enableFees","type":"bool"},{"internalType":"uint256","name":"marketingTax","type":"uint256"},{"internalType":"address","name":"marketing","type":"address"},{"internalType":"uint256","name":"devTax","type":"uint256"},{"internalType":"address","name":"dev","type":"address"},{"internalType":"uint256","name":"lpTax","type":"uint256"},{"internalType":"address","name":"lp","type":"address"}],"name":"createToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"easy_approve_creation_fee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpLockId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"permanent_lift_limits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developFee","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setTokenSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"lock_lp_months","type":"uint256"}],"name":"startTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"token_owners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokens_created","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokens_owned","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_lpWallet","type":"address"},{"internalType":"address","name":"_devWallet","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"update_burn_creation_fee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a62000748565b6200002290633b9aca0062000760565b60048190556007805460ff191660011790556103e8906200004590600a62000760565b6200005191906200077a565b6009556103e8600454600a62000068919062000760565b6200007491906200077a565b600a556014808055601581905560168190556200009281806200079d565b6200009e91906200079d565b601755601e601855601e6019556014601a55601a54601954601854620000c591906200079d565b620000d191906200079d565b601b55601d805460ff19166001179055600454620186a090620000f690600a62000760565b6200010291906200077a565b601e556103e86025553480156200011857600080fd5b506040518060400160405280600e81526020016d446f75626c65457370726573736f60901b815250604051806040016040528060048152602001630444553560e41b81525033600160147376b2c08407133b36f3fd38fd362dfbd5ed83638460147337f60cea0892b7f1a39811df4415034f723a54d7600a73ceb53721d782367d9cd11f3aa443418d615c7a26620001b6336200051d60201b60201c565b6002620001c48b8262000858565b506003620001d38a8262000858565b50620001df886200056d565b6001600c6000306001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000306001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008a6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008a6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060045460066000306001600160a01b03166001600160a01b031681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03166001600160a01b031681526020019081526020016000208190555086600b60006101000a81548160ff02191690831515021790555086601d60006101000a81548160ff02191690831515021790555080601160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555084601260006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082601360006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060968483886200044691906200079d565b6200045291906200079d565b11156200045e57600080fd5b601486905560158290556016849055836200047a83886200079d565b6200048691906200079d565b60175560188690556019829055601a84905583620004a583886200079d565b620004b191906200079d565b601b5560045430600081815260056020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350506023805460ff1916600117905550620009249650505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b33620005816000546001600160a01b031690565b6001600160a01b031614620005dd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b038116620006255760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21037bbb732b960991b6044820152606401620005d4565b62000630816200051d565b50565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200068a5781600019048211156200066e576200066e62000633565b808516156200067c57918102915b93841c93908002906200064e565b509250929050565b600082620006a35750600162000742565b81620006b25750600062000742565b8160018114620006cb5760028114620006d657620006f6565b600191505062000742565b60ff841115620006ea57620006ea62000633565b50506001821b62000742565b5060208310610133831016604e8410600b84101617156200071b575081810a62000742565b62000727838362000649565b80600019048211156200073e576200073e62000633565b0290505b92915050565b60006200075960ff84168362000692565b9392505050565b808202811582820484141762000742576200074262000633565b6000826200079857634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000742576200074262000633565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620007de57607f821691505b602082108103620007ff57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200085357600081815260208120601f850160051c810160208610156200082e5750805b601f850160051c820191505b818110156200084f578281556001016200083a565b5050505b505050565b81516001600160401b03811115620008745762000874620007b3565b6200088c81620008858454620007c9565b8462000805565b602080601f831160018114620008c45760008415620008ab5750858301515b600019600386901b1c1916600185901b1785556200084f565b600085815260208120601f198616915b82811015620008f557888601518255948401946001909101908401620008d4565b5085821015620009145787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b615c0280620009346000396000f3fe6080604052600436106200027b5760003560e01c80636ddd17131162000153578063a8aa1b3111620000c5578063eb3410401162000084578063eb3410401462000770578063ebcee4b01462000795578063f178619b14620007ad578063f2fde38b14620007c5578063f86aa92d14620007ea578063f887ea40146200080257600080fd5b8063a8aa1b3114620006a2578063a9059cbb14620006c4578063aa4bde2814620006e9578063d31afb791462000701578063dd62ed3e146200072657600080fd5b80638da5cb5b11620001125780638da5cb5b14620006145780638ea5220f146200063457806395d89b4114620006565780639d9241ec146200066e578063a64e4f8a146200068657600080fd5b80636ddd1713146200056c57806370a082311462000588578063715018a614620005c257806375f0a87414620005da5780638c0b5e2214620005fc57600080fd5b80632bd7845711620001ed5780633ff2222311620001ac5780633ff2222314620004c357806359b107b914620004e85780635c85974f14620005005780635d0044ca14620005255780636303516c146200054a57600080fd5b80632bd7845714620003f9578063313ce56714620004375780633582ad23146200045557806339bd033f14620004715780633c32a06614620004ab57600080fd5b80630d075d9c116200023a5780630d075d9c146200034e5780630f683e901462000373578063147c9f6d146200039857806318160ddd14620003bd57806323b872dd14620003d457600080fd5b80630445b667146200028857806304fda8ff14620002b357806306a1409f14620002da57806306fdde0314620002f1578063095ea7b3146200031857600080fd5b366200028357005b600080fd5b3480156200029557600080fd5b50620002a0601e5481565b6040519081526020015b60405180910390f35b348015620002c057600080fd5b50620002d8620002d236600462002580565b6200082c565b005b620002d8620002eb36600462002580565b6200089d565b348015620002fe57600080fd5b506200030962000dc0565b604051620002aa9190620025ee565b3480156200032557600080fd5b506200033d620003373660046200262b565b62000e5a565b6040519015158152602001620002aa565b3480156200035b57600080fd5b50620002d86200036d3660046200265a565b62000ec8565b3480156200038057600080fd5b50620002d8620003923660046200265a565b62000f5c565b348015620003a557600080fd5b50620002d8620003b736600462002687565b62000ff0565b348015620003ca57600080fd5b50600454620002a0565b348015620003e157600080fd5b506200033d620003f3366004620026d9565b6200106c565b3480156200040657600080fd5b506200041e620004183660046200262b565b620011af565b6040516001600160a01b039091168152602001620002aa565b3480156200044457600080fd5b5060405160128152602001620002aa565b3480156200046257600080fd5b506007546200033d9060ff1681565b3480156200047e57600080fd5b506200041e620004903660046200271f565b6021602052600090815260409020546001600160a01b031681565b348015620004b857600080fd5b50620002a060245481565b348015620004d057600080fd5b50620002d8620004e236600462002806565b620011e8565b348015620004f557600080fd5b50620002a060175481565b3480156200050d57600080fd5b50620002d86200051f36600462002580565b62001410565b3480156200053257600080fd5b50620002d86200054436600462002580565b62001481565b3480156200055757600080fd5b506011546200041e906001600160a01b031681565b3480156200057957600080fd5b50601d546200033d9060ff1681565b3480156200059557600080fd5b50620002a0620005a73660046200271f565b6001600160a01b031660009081526005602052604090205490565b348015620005cf57600080fd5b50620002d8620014f2565b348015620005e757600080fd5b506012546200041e906001600160a01b031681565b3480156200060957600080fd5b50620002a060095481565b3480156200062157600080fd5b506000546001600160a01b03166200041e565b3480156200064157600080fd5b506013546200041e906001600160a01b031681565b3480156200066357600080fd5b50620003096200153d565b3480156200067b57600080fd5b50620002a0601b5481565b3480156200069357600080fd5b50600b546200033d9060ff1681565b348015620006af57600080fd5b506001546200041e906001600160a01b031681565b348015620006d157600080fd5b506200033d620006e33660046200262b565b6200154e565b348015620006f657600080fd5b50620002a0600a5481565b3480156200070e57600080fd5b50620002d86200072036600462002580565b62001595565b3480156200073357600080fd5b50620002a062000745366004620028ed565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156200077d57600080fd5b50620002d86200078f3660046200292b565b620015d7565b348015620007a257600080fd5b50620002d862001643565b348015620007ba57600080fd5b50620002d862001699565b348015620007d257600080fd5b50620002d8620007e43660046200271f565b620016e2565b348015620007f757600080fd5b50620002a0601c5481565b3480156200080f57600080fd5b506200041e737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6012546001600160a01b031633146200084457600080fd5b60125447906001600160a01b03166108fc606462000863858562002962565b6200086f91906200297c565b6040518115909202916000818181858888f1935050505015801562000898573d6000803e3d6000fd5b505050565b33620008b16000546001600160a01b031690565b6001600160a01b031614620008e35760405162461bcd60e51b8152600401620008da906200299f565b60405180910390fd5b601f54610100900460ff16156200093d5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c65640000000000000000006044820152606401620008da565b6001811015620009815760405162461bcd60e51b815260206004820152600e60248201526d098dec6d64078406240dadedce8d60931b6044820152606401620008da565b60003411620009c55760405162461bcd60e51b815260206004820152600f60248201526e139bc8115512081cdd5c1c1b1a5959608a1b6044820152606401620008da565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000a18573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a3e9190620029d4565b6001600160a01b031663c9c65396737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000a9f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ac59190620029d4565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000b12573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b389190620029d4565b600180546001600160a01b0319166001600160a01b0392831690811782556000908152600860209081526040808320805460ff199081168617909155600454845487168552600684528285208654909716855295835281842095909555601f8054909516909317909355308082526005909352205462000bba91349062001775565b601f805461ffff19166101001790556001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801562000c13573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c399190620029f4565b60015460405163095ea7b360e01b81527371b5759d73262fbb223956913ecf4ecc510576416004820152602481018390529192506001600160a01b03169063095ea7b3906044016020604051808303816000875af115801562000ca0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cc6919062002a0e565b50600062000cd88362278d0062002962565b62000ce4904262002a2e565b60018054604051630727935760e01b81523360048201526001600160a01b0390911660248201526044810191909152606481018490526084810182905260c060a4820152600760c4820152666c70206c6f636b60c81b60e48201529091507371b5759d73262fbb223956913ecf4ecc5105764190630727935790610104016020604051808303816000875af115801562000d82573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000da89190620029f4565b601c5562000db843600262002a2e565b602055505050565b60606002805462000dd19062002a44565b80601f016020809104026020016040519081016040528092919081815260200182805462000dff9062002a44565b801562000e505780601f1062000e245761010080835404028352916020019162000e50565b820191906000526020600020905b81548152906001019060200180831162000e3257829003601f168201915b5050505050905090565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259062000eb69086815260200190565b60405180910390a35060015b92915050565b3362000edc6000546001600160a01b031690565b6001600160a01b03161462000f055760405162461bcd60e51b8152600401620008da906200299f565b60968162000f14848662002a2e565b62000f20919062002a2e565b111562000f2c57600080fd5b6014839055601582905560168190558062000f48838562002a2e565b62000f54919062002a2e565b601755505050565b3362000f706000546001600160a01b031690565b6001600160a01b03161462000f995760405162461bcd60e51b8152600401620008da906200299f565b60968162000fa8848662002a2e565b62000fb4919062002a2e565b111562000fc057600080fd5b60188390556019829055601a8190558062000fdc838562002a2e565b62000fe8919062002a2e565b601b55505050565b33620010046000546001600160a01b031690565b6001600160a01b0316146200102d5760405162461bcd60e51b8152600401620008da906200299f565b601280546001600160a01b039485166001600160a01b031991821617909155601180549385169382169390931790925560138054919093169116179055565b60006001600160a01b038416620010975760405162461bcd60e51b8152600401620008da9062002a80565b6001600160a01b038316620010c05760405162461bcd60e51b8152600401620008da9062002ac5565b6004546001600160a01b03851660009081526006602090815260408083203384529091529020541462001198576001600160a01b0384166000908152600660209081526040808320338452909152902054828110156200115c5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b6044820152606401620008da565b6001600160a01b0385166000908152600660209081526040808320338452909152812080548592906200119190849062002b08565b9091555050505b620011a584848462001821565b90505b9392505050565b60226020528160005260406000208181548110620011cc57600080fd5b6000918252602090912001546001600160a01b03169150829050565b60235460ff16620012325760405162461bcd60e51b8152602060048201526013602482015272119858dd1bdc9e481a5cc8191a5cd8589b1959606a1b6044820152606401620008da565b602554336000908152600560205260409020541015620012895760405162461bcd60e51b81526020600482015260116024820152704e6f7420656e6f75676820746f6b656e7360781b6044820152606401620008da565b6200129b303361dead60255462001a04565b60008a8a8a8a8a8a8a8a8a8a604051620012b59062002572565b620012ca9a9998979695949392919062002b1e565b604051809103906000f080158015620012e7573d6000803e3d6000fd5b50905060008190508960216000836001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550602260008b6001600160a01b03166001600160a01b03168152602001908152602001600020819080600181540180825580915050600190039060005260206000200160009091909190916101000a8154816001600160a01b0302191690836001600160a01b0316021790555060246000815480929190620013ba9062002b9c565b9091555050604080516001600160a01b03808d168252831660208201527fd5f9bdf12adf29dab0248c349842c3822d53ae2bb4f36352f301630d018c8139910160405180910390a1505050505050505050505050565b33620014246000546001600160a01b031690565b6001600160a01b0316146200144d5760405162461bcd60e51b8152600401620008da906200299f565b600a8110156200145c57600080fd5b6103e8816004546200146f919062002962565b6200147b91906200297c565b60095550565b33620014956000546001600160a01b031690565b6001600160a01b031614620014be5760405162461bcd60e51b8152600401620008da906200299f565b600a811015620014cd57600080fd5b6103e881600454620014e0919062002962565b620014ec91906200297c565b600a5550565b33620015066000546001600160a01b031690565b6001600160a01b0316146200152f5760405162461bcd60e51b8152600401620008da906200299f565b6200153b600062001b36565b565b60606003805462000dd19062002a44565b600033620015646000546001600160a01b031690565b6001600160a01b03160362001588576200158033848462001b86565b905062000ec2565b6200158033848462001821565b33620015a96000546001600160a01b031690565b6001600160a01b031614620015d25760405162461bcd60e51b8152600401620008da906200299f565b602555565b33620015eb6000546001600160a01b031690565b6001600160a01b031614620016145760405162461bcd60e51b8152600401620008da906200299f565b601d805460ff1916831515179055620016306012600a62002cb5565b6200163c908262002962565b601e555050565b60255433600081815260066020908152604080832030808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3565b33620016ad6000546001600160a01b031690565b6001600160a01b031614620016d65760405162461bcd60e51b8152600401620008da906200299f565b6007805460ff19169055565b33620016f66000546001600160a01b031690565b6001600160a01b0316146200171f5760405162461bcd60e51b8152600401620008da906200299f565b6001600160a01b038116620017675760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21037bbb732b960991b6044820152606401620008da565b620017728162001b36565b50565b60405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b03821660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990849060c40160606040518083038185885af1158015620017f2573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062001819919062002cc6565b505050505050565b60006001600160a01b0384166200184c5760405162461bcd60e51b8152600401620008da9062002a80565b6001600160a01b038316620018755760405162461bcd60e51b8152600401620008da9062002ac5565b6000546001600160a01b03858116911614806200189f57506000546001600160a01b038481169116145b80620018ad5750601f5460ff165b15620018c857620018c084848462001b86565b9050620011a8565b601f54610100900460ff16620019185760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401620008da565b60075460ff161562001931576200193184848462001ca8565b6200193c8362001e80565b156200194c576200194c62001ed6565b600b5460ff16156200199e576001546001600160a01b03848116911614806200198257506001546001600160a01b038581169116145b6200198e57816200199b565b6200199b84848462002100565b91505b620019ab84848462001b86565b50826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051620019f291815260200190565b60405180910390a35060019392505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b179052915160009283929088169162001a6a919062002cf5565b6000604051808303816000865af19150503d806000811462001aa9576040519150601f19603f3d011682016040523d82523d6000602084013e62001aae565b606091505b509150915081801562001adc57508051158062001adc57508080602001905181019062001adc919062002a0e565b620018195760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416044820152631253115160e21b6064820152608401620008da565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166000908152600560205260408120548281101562001be85760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401620008da565b6001600160a01b03851660009081526005602052604090205462001c0e90849062002b08565b6001600160a01b03808716600090815260056020526040808220939093559086168152205462001c4090849062002a2e565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9062001c959087815260200190565b60405180910390a3506001949350505050565b6001600160a01b03831660009081526008602052604090205460ff16801562001ce957506001600160a01b03821660009081526008602052604090205460ff165b1562001cf457505050565b6001546001600160a01b03848116911614801562001d2b57506001600160a01b03821660009081526008602052604090205460ff16155b1562001d7a5760095481111562001d745760405162461bcd60e51b815260206004820152600c60248201526b13585e081d1e081b1a5b5a5d60a21b6044820152606401620008da565b62001dfa565b6001546001600160a01b03838116911614801562001db157506001600160a01b03831660009081526008602052604090205460ff16155b1562001dfa5760095481111562001dfa5760405162461bcd60e51b815260206004820152600c60248201526b13585e081d1e081b1a5b5a5d60a21b6044820152606401620008da565b6001600160a01b03821660009081526008602052604090205460ff166200089857600a546001600160a01b03831660009081526005602052604090205462001e43908362002a2e565b1115620008985760405162461bcd60e51b815260206004820152600a60248201526913585e081dd85b1b195d60b21b6044820152606401620008da565b6001546000906001600160a01b03838116911614801562001ea45750601f5460ff16155b801562001eb35750601d5460ff165b801562000ec25750601e5430600090815260056020526040902054101592915050565b601f805460ff191660011790553060009081526005602052604081205490506000601054600e54600f5462001f0c919062002a2e565b62001f18919062002a2e565b905081158062001f26575080155b1562001f34575050620020f4565b6000600282600f548562001f49919062002962565b62001f5591906200297c565b62001f6191906200297c565b9050600062001f71828562002b08565b90504762001f7f8262002401565b600062001f8d824762002b08565b9050600085600e548362001fa2919062002962565b62001fae91906200297c565b90506000866010548462001fc3919062002962565b62001fcf91906200297c565b905060008162001fe0848662002b08565b62001fec919062002b08565b6000600f819055600e81905560108190556013546040519293506001600160a01b03169184156108fc0291859190818181858888f1935050505015801562002038573d6000803e3d6000fd5b506000871180156200204a5750600081115b15620020af576011546200206b90889083906001600160a01b031662001775565b600f54604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6012546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015620020e9573d6000803e3d6000fd5b505050505050505050505b601f805460ff19169055565b6001600160a01b0383166000908152600c602052604081205460ff16806200214057506001600160a01b0383166000908152600c602052604090205460ff165b156200214e575080620011a8565b60006020544311620021e55760646200216984606262002962565b6200217591906200297c565b905060626200218682603262002962565b6200219291906200297c565b600f6000828254620021a5919062002a2e565b9091555060629050620021ba82603062002962565b620021c691906200297c565b600e6000828254620021d9919062002a2e565b90915550620023969050565b6001546001600160a01b0385811691161480156200220557506000601b54115b15620022ab576103e8601b54846200221e919062002962565b6200222a91906200297c565b9050601b54601954826200223f919062002962565b6200224b91906200297c565b600f60008282546200225e919062002a2e565b9091555050601b54601a5462002275908362002962565b6200228191906200297c565b6010600082825462002294919062002a2e565b9091555050601b54601854620021ba908362002962565b6001546001600160a01b038681169116148015620022cb57506000601754115b1562002396576103e860175484620022e4919062002962565b620022f091906200297c565b90506017546015548262002305919062002962565b6200231191906200297c565b600f600082825462002324919062002a2e565b90915550506017546016546200233b908362002962565b6200234791906200297c565b601060008282546200235a919062002a2e565b909155505060175460145462002371908362002962565b6200237d91906200297c565b600e600082825462002390919062002a2e565b90915550505b8015620023ec57620023aa85308362001b86565b5060405181815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b620023f8818462002b08565b95945050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811062002439576200243962002d13565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620024ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024d29190620029d4565b81600181518110620024e857620024e862002d13565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906200254290859060009086903090429060040162002d29565b600060405180830381600087803b1580156200255d57600080fd5b505af115801562001819573d6000803e3d6000fd5b612e308062002d9d83390190565b6000602082840312156200259357600080fd5b5035919050565b60005b83811015620025b75781810151838201526020016200259d565b50506000910152565b60008151808452620025da8160208601602086016200259a565b601f01601f19169290920160200192915050565b602081526000620011a86020830184620025c0565b6001600160a01b03811681146200177257600080fd5b8035620026268162002603565b919050565b600080604083850312156200263f57600080fd5b82356200264c8162002603565b946020939093013593505050565b6000806000606084860312156200267057600080fd5b505081359360208301359350604090920135919050565b6000806000606084860312156200269d57600080fd5b8335620026aa8162002603565b92506020840135620026bc8162002603565b91506040840135620026ce8162002603565b809150509250925092565b600080600060608486031215620026ef57600080fd5b8335620026fc8162002603565b925060208401356200270e8162002603565b929592945050506040919091013590565b6000602082840312156200273257600080fd5b8135620011a88162002603565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200276757600080fd5b813567ffffffffffffffff808211156200278557620027856200273f565b604051601f8301601f19908116603f01168101908282118183101715620027b057620027b06200273f565b81604052838152866020858801011115620027ca57600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146200177257600080fd5b80356200262681620027ea565b6000806000806000806000806000806101408b8d0312156200282757600080fd5b8a3567ffffffffffffffff808211156200284057600080fd5b6200284e8e838f0162002755565b9b5060208d01359150808211156200286557600080fd5b50620028748d828e0162002755565b9950506200288560408c0162002619565b97506200289560608c01620027f9565b965060808b01359550620028ac60a08c0162002619565b945060c08b01359350620028c360e08c0162002619565b92506101008b01359150620028dc6101208c0162002619565b90509295989b9194979a5092959850565b600080604083850312156200290157600080fd5b82356200290e8162002603565b91506020830135620029208162002603565b809150509250929050565b600080604083850312156200293f57600080fd5b82356200264c81620027ea565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000ec25762000ec26200294c565b6000826200299a57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215620029e757600080fd5b8151620011a88162002603565b60006020828403121562002a0757600080fd5b5051919050565b60006020828403121562002a2157600080fd5b8151620011a881620027ea565b8082018082111562000ec25762000ec26200294c565b600181811c9082168062002a5957607f821691505b60208210810362002a7a57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111562000ec25762000ec26200294c565b600061014080835262002b348184018e620025c0565b9050828103602084015262002b4a818d620025c0565b6001600160a01b039b8c16604085015299151560608401525050608081019690965293871660a086015260c0850192909252851660e08401526101008301529092166101209092019190915292915050565b60006001820162002bb15762002bb16200294c565b5060010190565b600181815b8085111562002bf957816000190482111562002bdd5762002bdd6200294c565b8085161562002beb57918102915b93841c939080029062002bbd565b509250929050565b60008262002c125750600162000ec2565b8162002c215750600062000ec2565b816001811462002c3a576002811462002c455762002c65565b600191505062000ec2565b60ff84111562002c595762002c596200294c565b50506001821b62000ec2565b5060208310610133831016604e8410600b841016171562002c8a575081810a62000ec2565b62002c96838362002bb8565b806000190482111562002cad5762002cad6200294c565b029392505050565b6000620011a860ff84168362002c01565b60008060006060848603121562002cdc57600080fd5b8351925060208401519150604084015190509250925092565b6000825162002d098184602087016200259a565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101562002d7b5784516001600160a01b03168352938301939183019160010162002d54565b50506001600160a01b0396909616606085015250505060800152939250505056fe6080604052620000126012600a620006c4565b6200002290633b9aca00620006dc565b60048190556007805460ff191660011790556103e8906200004590600a620006dc565b620000519190620006f6565b6009556103e8600454600a620000689190620006dc565b620000749190620006f6565b600a5560148080556015819055601681905562000092818062000719565b6200009e919062000719565b601755601e601855601e6019556014601a55601a54601954601854620000c5919062000719565b620000d1919062000719565b601b55601d805460ff19166001179055600454620186a090620000f690600a620006dc565b620001029190620006f6565b601e553480156200011257600080fd5b5060405162002e3038038062002e30833981016040819052620001359162000822565b620001403362000499565b60026200014e8b8262000997565b5060036200015d8a8262000997565b506200016988620004e9565b6001600c6000306001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000306001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008a6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008a6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060045460066000306001600160a01b03166001600160a01b031681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03166001600160a01b031681526020019081526020016000208190555086600b60006101000a81548160ff02191690831515021790555086601d60006101000a81548160ff02191690831515021790555080601160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555084601260006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082601360006101000a8154816001600160a01b0302191690836001600160a01b031602179055506096848388620003d0919062000719565b620003dc919062000719565b1115620003e857600080fd5b6014869055601582905560168490558362000404838862000719565b62000410919062000719565b60175560188690556019829055601a849055836200042f838862000719565b6200043b919062000719565b601b5560045430600081815260056020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050505050505062000a63565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b33620004fd6000546001600160a01b031690565b6001600160a01b031614620005595760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b038116620005a15760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21037bbb732b960991b604482015260640162000550565b620005ac8162000499565b50565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000606578160001904821115620005ea57620005ea620005af565b80851615620005f857918102915b93841c9390800290620005ca565b509250929050565b6000826200061f57506001620006be565b816200062e57506000620006be565b8160018114620006475760028114620006525762000672565b6001915050620006be565b60ff841115620006665762000666620005af565b50506001821b620006be565b5060208310610133831016604e8410600b841016171562000697575081810a620006be565b620006a38383620005c5565b8060001904821115620006ba57620006ba620005af565b0290505b92915050565b6000620006d560ff8416836200060e565b9392505050565b8082028115828204841417620006be57620006be620005af565b6000826200071457634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620006be57620006be620005af565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200075757600080fd5b81516001600160401b03808211156200077457620007746200072f565b604051601f8301601f19908116603f011681019082821181831017156200079f576200079f6200072f565b81604052838152602092508683858801011115620007bc57600080fd5b600091505b83821015620007e05785820183015181830184015290820190620007c1565b600093810190920192909252949350505050565b80516001600160a01b03811681146200080c57600080fd5b919050565b805180151581146200080c57600080fd5b6000806000806000806000806000806101408b8d0312156200084357600080fd5b8a516001600160401b03808211156200085b57600080fd5b620008698e838f0162000745565b9b5060208d01519150808211156200088057600080fd5b506200088f8d828e0162000745565b995050620008a060408c01620007f4565b9750620008b060608c0162000811565b965060808b01519550620008c760a08c01620007f4565b945060c08b01519350620008de60e08c01620007f4565b92506101008b01519150620008f76101208c01620007f4565b90509295989b9194979a5092959850565b600181811c908216806200091d57607f821691505b6020821081036200093e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200099257600081815260208120601f850160051c810160208610156200096d5750805b601f850160051c820191505b818110156200098e5782815560010162000979565b5050505b505050565b81516001600160401b03811115620009b357620009b36200072f565b620009cb81620009c4845462000908565b8462000944565b602080601f83116001811462000a035760008415620009ea5750858301515b600019600386901b1c1916600185901b1785556200098e565b600085815260208120601f198616915b8281101562000a345788860151825594840194600190910190840162000a13565b508582101562000a535787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6123bd8062000a736000396000f3fe6080604052600436106102085760003560e01c806370a0823111610118578063a8aa1b31116100a0578063eb3410401161006f578063eb341040146105d7578063f178619b146105f7578063f2fde38b1461060c578063f86aa92d1461062c578063f887ea401461064257600080fd5b8063a8aa1b311461053b578063a9059cbb1461055b578063aa4bde281461057b578063dd62ed3e1461059157600080fd5b80638da5cb5b116100e75780638da5cb5b146104b85780638ea5220f146104d657806395d89b41146104f65780639d9241ec1461050b578063a64e4f8a1461052157600080fd5b806370a0823114610437578063715018a61461046d57806375f0a874146104825780638c0b5e22146104a257600080fd5b806318160ddd1161019b57806359b107b91161016a57806359b107b91461038f5780635c85974f146103a55780635d0044ca146103c55780636303516c146103e55780636ddd17131461041d57600080fd5b806318160ddd1461032457806323b872dd14610339578063313ce567146103595780633582ad231461037557600080fd5b8063095ea7b3116101d7578063095ea7b3146102945780630d075d9c146102c45780630f683e90146102e4578063147c9f6d1461030457600080fd5b80630445b6671461021457806304fda8ff1461023d57806306a1409f1461025f57806306fdde031461027257600080fd5b3661020f57005b600080fd5b34801561022057600080fd5b5061022a601e5481565b6040519081526020015b60405180910390f35b34801561024957600080fd5b5061025d610258366004611e3e565b61066a565b005b61025d61026d366004611e3e565b6106d5565b34801561027e57600080fd5b50610287610bd4565b6040516102349190611e57565b3480156102a057600080fd5b506102b46102af366004611eba565b610c66565b6040519015158152602001610234565b3480156102d057600080fd5b5061025d6102df366004611ee6565b610cd3565b3480156102f057600080fd5b5061025d6102ff366004611ee6565b610d5a565b34801561031057600080fd5b5061025d61031f366004611f12565b610de1565b34801561033057600080fd5b5060045461022a565b34801561034557600080fd5b506102b4610354366004611f5d565b610e59565b34801561036557600080fd5b5060405160128152602001610234565b34801561038157600080fd5b506007546102b49060ff1681565b34801561039b57600080fd5b5061022a60175481565b3480156103b157600080fd5b5061025d6103c0366004611e3e565b610f8f565b3480156103d157600080fd5b5061025d6103e0366004611e3e565b610ff7565b3480156103f157600080fd5b50601154610405906001600160a01b031681565b6040516001600160a01b039091168152602001610234565b34801561042957600080fd5b50601d546102b49060ff1681565b34801561044357600080fd5b5061022a610452366004611f9e565b6001600160a01b031660009081526005602052604090205490565b34801561047957600080fd5b5061025d61105f565b34801561048e57600080fd5b50601254610405906001600160a01b031681565b3480156104ae57600080fd5b5061022a60095481565b3480156104c457600080fd5b506000546001600160a01b0316610405565b3480156104e257600080fd5b50601354610405906001600160a01b031681565b34801561050257600080fd5b506102876110a4565b34801561051757600080fd5b5061022a601b5481565b34801561052d57600080fd5b50600b546102b49060ff1681565b34801561054757600080fd5b50600154610405906001600160a01b031681565b34801561056757600080fd5b506102b4610576366004611eba565b6110b3565b34801561058757600080fd5b5061022a600a5481565b34801561059d57600080fd5b5061022a6105ac366004611fbb565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156105e357600080fd5b5061025d6105f2366004612002565b6110f3565b34801561060357600080fd5b5061025d611157565b34801561061857600080fd5b5061025d610627366004611f9e565b61119c565b34801561063857600080fd5b5061022a601c5481565b34801561064e57600080fd5b50610405737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6012546001600160a01b0316331461068157600080fd5b60125447906001600160a01b03166108fc606461069e8585612036565b6106a8919061204d565b6040518115909202916000818181858888f193505050501580156106d0573d6000803e3d6000fd5b505050565b336106e86000546001600160a01b031690565b6001600160a01b0316146107175760405162461bcd60e51b815260040161070e9061206f565b60405180910390fd5b601f54610100900460ff161561076f5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c6564000000000000000000604482015260640161070e565b60018110156107b15760405162461bcd60e51b815260206004820152600e60248201526d098dec6d64078406240dadedce8d60931b604482015260640161070e565b600034116107f35760405162461bcd60e51b815260206004820152600f60248201526e139bc8115512081cdd5c1c1b1a5959608a1b604482015260640161070e565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610845573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086991906120a4565b6001600160a01b031663c9c65396737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ed91906120a4565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d91906120a4565b600180546001600160a01b0319166001600160a01b0392831690811782556000908152600860209081526040808320805460ff199081168617909155600454845487168552600684528285208654909716855295835281842095909555601f805490951690931790935530808252600590935220546109dd913490611227565b601f805461ffff19166101001790556001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610a35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5991906120c1565b60015460405163095ea7b360e01b81527371b5759d73262fbb223956913ecf4ecc510576416004820152602481018390529192506001600160a01b03169063095ea7b3906044016020604051808303816000875af1158015610abf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae391906120da565b506000610af38362278d00612036565b610afd90426120f7565b60018054604051630727935760e01b81523360048201526001600160a01b0390911660248201526044810191909152606481018490526084810182905260c060a4820152600760c4820152666c70206c6f636b60c81b60e48201529091507371b5759d73262fbb223956913ecf4ecc5105764190630727935790610104016020604051808303816000875af1158015610b9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbe91906120c1565b601c55610bcc4360026120f7565b602055505050565b606060028054610be39061210a565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0f9061210a565b8015610c5c5780601f10610c3157610100808354040283529160200191610c5c565b820191906000526020600020905b815481529060010190602001808311610c3f57829003601f168201915b5050505050905090565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610cc19086815260200190565b60405180910390a35060015b92915050565b33610ce66000546001600160a01b031690565b6001600160a01b031614610d0c5760405162461bcd60e51b815260040161070e9061206f565b609681610d1984866120f7565b610d2391906120f7565b1115610d2e57600080fd5b60148390556015829055601681905580610d4883856120f7565b610d5291906120f7565b601755505050565b33610d6d6000546001600160a01b031690565b6001600160a01b031614610d935760405162461bcd60e51b815260040161070e9061206f565b609681610da084866120f7565b610daa91906120f7565b1115610db557600080fd5b60188390556019829055601a81905580610dcf83856120f7565b610dd991906120f7565b601b55505050565b33610df46000546001600160a01b031690565b6001600160a01b031614610e1a5760405162461bcd60e51b815260040161070e9061206f565b601280546001600160a01b039485166001600160a01b031991821617909155601180549385169382169390931790925560138054919093169116179055565b60006001600160a01b038416610e815760405162461bcd60e51b815260040161070e90612144565b6001600160a01b038316610ea75760405162461bcd60e51b815260040161070e90612189565b6004546001600160a01b038516600090815260066020908152604080832033845290915290205414610f7a576001600160a01b038416600090815260066020908152604080832033845290915290205482811015610f405760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b604482015260640161070e565b6001600160a01b038516600090815260066020908152604080832033845290915281208054859290610f739084906121cc565b9091555050505b610f858484846112d0565b90505b9392505050565b33610fa26000546001600160a01b031690565b6001600160a01b031614610fc85760405162461bcd60e51b815260040161070e9061206f565b600a811015610fd657600080fd5b6103e881600454610fe79190612036565b610ff1919061204d565b60095550565b3361100a6000546001600160a01b031690565b6001600160a01b0316146110305760405162461bcd60e51b815260040161070e9061206f565b600a81101561103e57600080fd5b6103e88160045461104f9190612036565b611059919061204d565b600a5550565b336110726000546001600160a01b031690565b6001600160a01b0316146110985760405162461bcd60e51b815260040161070e9061206f565b6110a26000611494565b565b606060038054610be39061210a565b6000336110c86000546001600160a01b031690565b6001600160a01b0316036110e8576110e13384846114e4565b9050610ccd565b6110e13384846112d0565b336111066000546001600160a01b031690565b6001600160a01b03161461112c5760405162461bcd60e51b815260040161070e9061206f565b601d805460ff19168315151790556111466012600a6122c3565b6111509082612036565b601e555050565b3361116a6000546001600160a01b031690565b6001600160a01b0316146111905760405162461bcd60e51b815260040161070e9061206f565b6007805460ff19169055565b336111af6000546001600160a01b031690565b6001600160a01b0316146111d55760405162461bcd60e51b815260040161070e9061206f565b6001600160a01b03811661121b5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21037bbb732b960991b604482015260640161070e565b61122481611494565b50565b60405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b03821660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990849060c40160606040518083038185885af11580156112a3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112c891906122d2565b505050505050565b60006001600160a01b0384166112f85760405162461bcd60e51b815260040161070e90612144565b6001600160a01b03831661131e5760405162461bcd60e51b815260040161070e90612189565b6000546001600160a01b038581169116148061134757506000546001600160a01b038481169116145b806113545750601f5460ff165b1561136b576113648484846114e4565b9050610f88565b601f54610100900460ff166113b95760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161070e565b60075460ff16156113cf576113cf8484846115ff565b6113d8836117c7565b156113e5576113e561181a565b600b5460ff1615611431576001546001600160a01b038481169116148061141957506001546001600160a01b038581169116145b611423578161142e565b61142e848484611a1f565b91505b61143c8484846114e4565b50826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161148291815260200190565b60405180910390a35060019392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316600090815260056020526040812054828110156115445760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b604482015260640161070e565b6001600160a01b0385166000908152600560205260409020546115689084906121cc565b6001600160a01b0380871660009081526005602052604080822093909355908616815220546115989084906120f7565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115ec9087815260200190565b60405180910390a3506001949350505050565b6001600160a01b03831660009081526008602052604090205460ff16801561163f57506001600160a01b03821660009081526008602052604090205460ff165b1561164957505050565b6001546001600160a01b03848116911614801561167f57506001600160a01b03821660009081526008602052604090205460ff16155b156116ca576009548111156116c55760405162461bcd60e51b815260206004820152600c60248201526b13585e081d1e081b1a5b5a5d60a21b604482015260640161070e565b611746565b6001546001600160a01b03838116911614801561170057506001600160a01b03831660009081526008602052604090205460ff16155b15611746576009548111156117465760405162461bcd60e51b815260206004820152600c60248201526b13585e081d1e081b1a5b5a5d60a21b604482015260640161070e565b6001600160a01b03821660009081526008602052604090205460ff166106d057600a546001600160a01b03831660009081526005602052604090205461178c90836120f7565b11156106d05760405162461bcd60e51b815260206004820152600a60248201526913585e081dd85b1b195d60b21b604482015260640161070e565b6001546000906001600160a01b0383811691161480156117ea5750601f5460ff16155b80156117f85750601d5460ff165b8015610ccd5750601e5430600090815260056020526040902054101592915050565b601f805460ff191660011790553060009081526005602052604081205490506000601054600e54600f5461184e91906120f7565b61185891906120f7565b9050811580611865575080155b15611871575050611a13565b6000600282600f54856118849190612036565b61188e919061204d565b611898919061204d565b905060006118a682856121cc565b9050476118b282611cda565b60006118be82476121cc565b9050600085600e54836118d19190612036565b6118db919061204d565b9050600086601054846118ee9190612036565b6118f8919061204d565b905060008161190784866121cc565b61191191906121cc565b6000600f819055600e81905560108190556013546040519293506001600160a01b03169184156108fc0291859190818181858888f1935050505015801561195c573d6000803e3d6000fd5b5060008711801561196d5750600081115b156119cf5760115461198b90889083906001600160a01b0316611227565b600f54604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6012546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611a08573d6000803e3d6000fd5b505050505050505050505b601f805460ff19169055565b6001600160a01b0383166000908152600c602052604081205460ff1680611a5e57506001600160a01b0383166000908152600c602052604090205460ff165b15611a6a575080610f88565b60006020544311611aef576064611a82846062612036565b611a8c919061204d565b90506062611a9b826032612036565b611aa5919061204d565b600f6000828254611ab691906120f7565b9091555060629050611ac9826030612036565b611ad3919061204d565b600e6000828254611ae491906120f7565b90915550611c749050565b6001546001600160a01b038581169116148015611b0e57506000601b54115b15611ba1576103e8601b5484611b249190612036565b611b2e919061204d565b9050601b5460195482611b419190612036565b611b4b919061204d565b600f6000828254611b5c91906120f7565b9091555050601b54601a54611b719083612036565b611b7b919061204d565b60106000828254611b8c91906120f7565b9091555050601b54601854611ac99083612036565b6001546001600160a01b038681169116148015611bc057506000601754115b15611c74576103e860175484611bd69190612036565b611be0919061204d565b905060175460155482611bf39190612036565b611bfd919061204d565b600f6000828254611c0e91906120f7565b9091555050601754601654611c239083612036565b611c2d919061204d565b60106000828254611c3e91906120f7565b9091555050601754601454611c539083612036565b611c5d919061204d565b600e6000828254611c6e91906120f7565b90915550505b8015611cc757611c858530836114e4565b5060405181815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b611cd181846121cc565b95945050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d0f57611d0f612300565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da591906120a4565b81600181518110611db857611db8612300565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611e10908590600090869030904290600401612316565b600060405180830381600087803b158015611e2a57600080fd5b505af11580156112c8573d6000803e3d6000fd5b600060208284031215611e5057600080fd5b5035919050565b600060208083528351808285015260005b81811015611e8457858101830151858201604001528201611e68565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461122457600080fd5b60008060408385031215611ecd57600080fd5b8235611ed881611ea5565b946020939093013593505050565b600080600060608486031215611efb57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611f2757600080fd5b8335611f3281611ea5565b92506020840135611f4281611ea5565b91506040840135611f5281611ea5565b809150509250925092565b600080600060608486031215611f7257600080fd5b8335611f7d81611ea5565b92506020840135611f8d81611ea5565b929592945050506040919091013590565b600060208284031215611fb057600080fd5b8135610f8881611ea5565b60008060408385031215611fce57600080fd5b8235611fd981611ea5565b91506020830135611fe981611ea5565b809150509250929050565b801515811461122457600080fd5b6000806040838503121561201557600080fd5b8235611ed881611ff4565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610ccd57610ccd612020565b60008261206a57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156120b657600080fd5b8151610f8881611ea5565b6000602082840312156120d357600080fd5b5051919050565b6000602082840312156120ec57600080fd5b8151610f8881611ff4565b80820180821115610ccd57610ccd612020565b600181811c9082168061211e57607f821691505b60208210810361213e57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610ccd57610ccd612020565b600181815b8085111561221a57816000190482111561220057612200612020565b8085161561220d57918102915b93841c93908002906121e4565b509250929050565b60008261223157506001610ccd565b8161223e57506000610ccd565b8160018114612254576002811461225e5761227a565b6001915050610ccd565b60ff84111561226f5761226f612020565b50506001821b610ccd565b5060208310610133831016604e8410600b841016171561229d575081810a610ccd565b6122a783836121df565b80600019048211156122bb576122bb612020565b029392505050565b6000610f8860ff841683612222565b6000806000606084860312156122e757600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123665784516001600160a01b031683529383019391830191600101612341565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122011e549ffc57e15388c17c04f43023480c1d055730d07bbe81ce62530296d5ec064736f6c63430008120033a2646970667358221220e8c79a7e8eaa59a81adaeb97a2e54f529eb3aaa1a200975dd6b85abf898b07bd64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106200027b5760003560e01c80636ddd17131162000153578063a8aa1b3111620000c5578063eb3410401162000084578063eb3410401462000770578063ebcee4b01462000795578063f178619b14620007ad578063f2fde38b14620007c5578063f86aa92d14620007ea578063f887ea40146200080257600080fd5b8063a8aa1b3114620006a2578063a9059cbb14620006c4578063aa4bde2814620006e9578063d31afb791462000701578063dd62ed3e146200072657600080fd5b80638da5cb5b11620001125780638da5cb5b14620006145780638ea5220f146200063457806395d89b4114620006565780639d9241ec146200066e578063a64e4f8a146200068657600080fd5b80636ddd1713146200056c57806370a082311462000588578063715018a614620005c257806375f0a87414620005da5780638c0b5e2214620005fc57600080fd5b80632bd7845711620001ed5780633ff2222311620001ac5780633ff2222314620004c357806359b107b914620004e85780635c85974f14620005005780635d0044ca14620005255780636303516c146200054a57600080fd5b80632bd7845714620003f9578063313ce56714620004375780633582ad23146200045557806339bd033f14620004715780633c32a06614620004ab57600080fd5b80630d075d9c116200023a5780630d075d9c146200034e5780630f683e901462000373578063147c9f6d146200039857806318160ddd14620003bd57806323b872dd14620003d457600080fd5b80630445b667146200028857806304fda8ff14620002b357806306a1409f14620002da57806306fdde0314620002f1578063095ea7b3146200031857600080fd5b366200028357005b600080fd5b3480156200029557600080fd5b50620002a0601e5481565b6040519081526020015b60405180910390f35b348015620002c057600080fd5b50620002d8620002d236600462002580565b6200082c565b005b620002d8620002eb36600462002580565b6200089d565b348015620002fe57600080fd5b506200030962000dc0565b604051620002aa9190620025ee565b3480156200032557600080fd5b506200033d620003373660046200262b565b62000e5a565b6040519015158152602001620002aa565b3480156200035b57600080fd5b50620002d86200036d3660046200265a565b62000ec8565b3480156200038057600080fd5b50620002d8620003923660046200265a565b62000f5c565b348015620003a557600080fd5b50620002d8620003b736600462002687565b62000ff0565b348015620003ca57600080fd5b50600454620002a0565b348015620003e157600080fd5b506200033d620003f3366004620026d9565b6200106c565b3480156200040657600080fd5b506200041e620004183660046200262b565b620011af565b6040516001600160a01b039091168152602001620002aa565b3480156200044457600080fd5b5060405160128152602001620002aa565b3480156200046257600080fd5b506007546200033d9060ff1681565b3480156200047e57600080fd5b506200041e620004903660046200271f565b6021602052600090815260409020546001600160a01b031681565b348015620004b857600080fd5b50620002a060245481565b348015620004d057600080fd5b50620002d8620004e236600462002806565b620011e8565b348015620004f557600080fd5b50620002a060175481565b3480156200050d57600080fd5b50620002d86200051f36600462002580565b62001410565b3480156200053257600080fd5b50620002d86200054436600462002580565b62001481565b3480156200055757600080fd5b506011546200041e906001600160a01b031681565b3480156200057957600080fd5b50601d546200033d9060ff1681565b3480156200059557600080fd5b50620002a0620005a73660046200271f565b6001600160a01b031660009081526005602052604090205490565b348015620005cf57600080fd5b50620002d8620014f2565b348015620005e757600080fd5b506012546200041e906001600160a01b031681565b3480156200060957600080fd5b50620002a060095481565b3480156200062157600080fd5b506000546001600160a01b03166200041e565b3480156200064157600080fd5b506013546200041e906001600160a01b031681565b3480156200066357600080fd5b50620003096200153d565b3480156200067b57600080fd5b50620002a0601b5481565b3480156200069357600080fd5b50600b546200033d9060ff1681565b348015620006af57600080fd5b506001546200041e906001600160a01b031681565b348015620006d157600080fd5b506200033d620006e33660046200262b565b6200154e565b348015620006f657600080fd5b50620002a0600a5481565b3480156200070e57600080fd5b50620002d86200072036600462002580565b62001595565b3480156200073357600080fd5b50620002a062000745366004620028ed565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156200077d57600080fd5b50620002d86200078f3660046200292b565b620015d7565b348015620007a257600080fd5b50620002d862001643565b348015620007ba57600080fd5b50620002d862001699565b348015620007d257600080fd5b50620002d8620007e43660046200271f565b620016e2565b348015620007f757600080fd5b50620002a0601c5481565b3480156200080f57600080fd5b506200041e737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6012546001600160a01b031633146200084457600080fd5b60125447906001600160a01b03166108fc606462000863858562002962565b6200086f91906200297c565b6040518115909202916000818181858888f1935050505015801562000898573d6000803e3d6000fd5b505050565b33620008b16000546001600160a01b031690565b6001600160a01b031614620008e35760405162461bcd60e51b8152600401620008da906200299f565b60405180910390fd5b601f54610100900460ff16156200093d5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c65640000000000000000006044820152606401620008da565b6001811015620009815760405162461bcd60e51b815260206004820152600e60248201526d098dec6d64078406240dadedce8d60931b6044820152606401620008da565b60003411620009c55760405162461bcd60e51b815260206004820152600f60248201526e139bc8115512081cdd5c1c1b1a5959608a1b6044820152606401620008da565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000a18573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a3e9190620029d4565b6001600160a01b031663c9c65396737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000a9f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ac59190620029d4565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000b12573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b389190620029d4565b600180546001600160a01b0319166001600160a01b0392831690811782556000908152600860209081526040808320805460ff199081168617909155600454845487168552600684528285208654909716855295835281842095909555601f8054909516909317909355308082526005909352205462000bba91349062001775565b601f805461ffff19166101001790556001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801562000c13573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c399190620029f4565b60015460405163095ea7b360e01b81527371b5759d73262fbb223956913ecf4ecc510576416004820152602481018390529192506001600160a01b03169063095ea7b3906044016020604051808303816000875af115801562000ca0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cc6919062002a0e565b50600062000cd88362278d0062002962565b62000ce4904262002a2e565b60018054604051630727935760e01b81523360048201526001600160a01b0390911660248201526044810191909152606481018490526084810182905260c060a4820152600760c4820152666c70206c6f636b60c81b60e48201529091507371b5759d73262fbb223956913ecf4ecc5105764190630727935790610104016020604051808303816000875af115801562000d82573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000da89190620029f4565b601c5562000db843600262002a2e565b602055505050565b60606002805462000dd19062002a44565b80601f016020809104026020016040519081016040528092919081815260200182805462000dff9062002a44565b801562000e505780601f1062000e245761010080835404028352916020019162000e50565b820191906000526020600020905b81548152906001019060200180831162000e3257829003601f168201915b5050505050905090565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259062000eb69086815260200190565b60405180910390a35060015b92915050565b3362000edc6000546001600160a01b031690565b6001600160a01b03161462000f055760405162461bcd60e51b8152600401620008da906200299f565b60968162000f14848662002a2e565b62000f20919062002a2e565b111562000f2c57600080fd5b6014839055601582905560168190558062000f48838562002a2e565b62000f54919062002a2e565b601755505050565b3362000f706000546001600160a01b031690565b6001600160a01b03161462000f995760405162461bcd60e51b8152600401620008da906200299f565b60968162000fa8848662002a2e565b62000fb4919062002a2e565b111562000fc057600080fd5b60188390556019829055601a8190558062000fdc838562002a2e565b62000fe8919062002a2e565b601b55505050565b33620010046000546001600160a01b031690565b6001600160a01b0316146200102d5760405162461bcd60e51b8152600401620008da906200299f565b601280546001600160a01b039485166001600160a01b031991821617909155601180549385169382169390931790925560138054919093169116179055565b60006001600160a01b038416620010975760405162461bcd60e51b8152600401620008da9062002a80565b6001600160a01b038316620010c05760405162461bcd60e51b8152600401620008da9062002ac5565b6004546001600160a01b03851660009081526006602090815260408083203384529091529020541462001198576001600160a01b0384166000908152600660209081526040808320338452909152902054828110156200115c5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b6044820152606401620008da565b6001600160a01b0385166000908152600660209081526040808320338452909152812080548592906200119190849062002b08565b9091555050505b620011a584848462001821565b90505b9392505050565b60226020528160005260406000208181548110620011cc57600080fd5b6000918252602090912001546001600160a01b03169150829050565b60235460ff16620012325760405162461bcd60e51b8152602060048201526013602482015272119858dd1bdc9e481a5cc8191a5cd8589b1959606a1b6044820152606401620008da565b602554336000908152600560205260409020541015620012895760405162461bcd60e51b81526020600482015260116024820152704e6f7420656e6f75676820746f6b656e7360781b6044820152606401620008da565b6200129b303361dead60255462001a04565b60008a8a8a8a8a8a8a8a8a8a604051620012b59062002572565b620012ca9a9998979695949392919062002b1e565b604051809103906000f080158015620012e7573d6000803e3d6000fd5b50905060008190508960216000836001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550602260008b6001600160a01b03166001600160a01b03168152602001908152602001600020819080600181540180825580915050600190039060005260206000200160009091909190916101000a8154816001600160a01b0302191690836001600160a01b0316021790555060246000815480929190620013ba9062002b9c565b9091555050604080516001600160a01b03808d168252831660208201527fd5f9bdf12adf29dab0248c349842c3822d53ae2bb4f36352f301630d018c8139910160405180910390a1505050505050505050505050565b33620014246000546001600160a01b031690565b6001600160a01b0316146200144d5760405162461bcd60e51b8152600401620008da906200299f565b600a8110156200145c57600080fd5b6103e8816004546200146f919062002962565b6200147b91906200297c565b60095550565b33620014956000546001600160a01b031690565b6001600160a01b031614620014be5760405162461bcd60e51b8152600401620008da906200299f565b600a811015620014cd57600080fd5b6103e881600454620014e0919062002962565b620014ec91906200297c565b600a5550565b33620015066000546001600160a01b031690565b6001600160a01b0316146200152f5760405162461bcd60e51b8152600401620008da906200299f565b6200153b600062001b36565b565b60606003805462000dd19062002a44565b600033620015646000546001600160a01b031690565b6001600160a01b03160362001588576200158033848462001b86565b905062000ec2565b6200158033848462001821565b33620015a96000546001600160a01b031690565b6001600160a01b031614620015d25760405162461bcd60e51b8152600401620008da906200299f565b602555565b33620015eb6000546001600160a01b031690565b6001600160a01b031614620016145760405162461bcd60e51b8152600401620008da906200299f565b601d805460ff1916831515179055620016306012600a62002cb5565b6200163c908262002962565b601e555050565b60255433600081815260066020908152604080832030808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3565b33620016ad6000546001600160a01b031690565b6001600160a01b031614620016d65760405162461bcd60e51b8152600401620008da906200299f565b6007805460ff19169055565b33620016f66000546001600160a01b031690565b6001600160a01b0316146200171f5760405162461bcd60e51b8152600401620008da906200299f565b6001600160a01b038116620017675760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21037bbb732b960991b6044820152606401620008da565b620017728162001b36565b50565b60405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b03821660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990849060c40160606040518083038185885af1158015620017f2573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062001819919062002cc6565b505050505050565b60006001600160a01b0384166200184c5760405162461bcd60e51b8152600401620008da9062002a80565b6001600160a01b038316620018755760405162461bcd60e51b8152600401620008da9062002ac5565b6000546001600160a01b03858116911614806200189f57506000546001600160a01b038481169116145b80620018ad5750601f5460ff165b15620018c857620018c084848462001b86565b9050620011a8565b601f54610100900460ff16620019185760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401620008da565b60075460ff161562001931576200193184848462001ca8565b6200193c8362001e80565b156200194c576200194c62001ed6565b600b5460ff16156200199e576001546001600160a01b03848116911614806200198257506001546001600160a01b038581169116145b6200198e57816200199b565b6200199b84848462002100565b91505b620019ab84848462001b86565b50826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051620019f291815260200190565b60405180910390a35060019392505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b179052915160009283929088169162001a6a919062002cf5565b6000604051808303816000865af19150503d806000811462001aa9576040519150601f19603f3d011682016040523d82523d6000602084013e62001aae565b606091505b509150915081801562001adc57508051158062001adc57508080602001905181019062001adc919062002a0e565b620018195760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416044820152631253115160e21b6064820152608401620008da565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166000908152600560205260408120548281101562001be85760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401620008da565b6001600160a01b03851660009081526005602052604090205462001c0e90849062002b08565b6001600160a01b03808716600090815260056020526040808220939093559086168152205462001c4090849062002a2e565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9062001c959087815260200190565b60405180910390a3506001949350505050565b6001600160a01b03831660009081526008602052604090205460ff16801562001ce957506001600160a01b03821660009081526008602052604090205460ff165b1562001cf457505050565b6001546001600160a01b03848116911614801562001d2b57506001600160a01b03821660009081526008602052604090205460ff16155b1562001d7a5760095481111562001d745760405162461bcd60e51b815260206004820152600c60248201526b13585e081d1e081b1a5b5a5d60a21b6044820152606401620008da565b62001dfa565b6001546001600160a01b03838116911614801562001db157506001600160a01b03831660009081526008602052604090205460ff16155b1562001dfa5760095481111562001dfa5760405162461bcd60e51b815260206004820152600c60248201526b13585e081d1e081b1a5b5a5d60a21b6044820152606401620008da565b6001600160a01b03821660009081526008602052604090205460ff166200089857600a546001600160a01b03831660009081526005602052604090205462001e43908362002a2e565b1115620008985760405162461bcd60e51b815260206004820152600a60248201526913585e081dd85b1b195d60b21b6044820152606401620008da565b6001546000906001600160a01b03838116911614801562001ea45750601f5460ff16155b801562001eb35750601d5460ff165b801562000ec25750601e5430600090815260056020526040902054101592915050565b601f805460ff191660011790553060009081526005602052604081205490506000601054600e54600f5462001f0c919062002a2e565b62001f18919062002a2e565b905081158062001f26575080155b1562001f34575050620020f4565b6000600282600f548562001f49919062002962565b62001f5591906200297c565b62001f6191906200297c565b9050600062001f71828562002b08565b90504762001f7f8262002401565b600062001f8d824762002b08565b9050600085600e548362001fa2919062002962565b62001fae91906200297c565b90506000866010548462001fc3919062002962565b62001fcf91906200297c565b905060008162001fe0848662002b08565b62001fec919062002b08565b6000600f819055600e81905560108190556013546040519293506001600160a01b03169184156108fc0291859190818181858888f1935050505015801562002038573d6000803e3d6000fd5b506000871180156200204a5750600081115b15620020af576011546200206b90889083906001600160a01b031662001775565b600f54604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6012546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015620020e9573d6000803e3d6000fd5b505050505050505050505b601f805460ff19169055565b6001600160a01b0383166000908152600c602052604081205460ff16806200214057506001600160a01b0383166000908152600c602052604090205460ff165b156200214e575080620011a8565b60006020544311620021e55760646200216984606262002962565b6200217591906200297c565b905060626200218682603262002962565b6200219291906200297c565b600f6000828254620021a5919062002a2e565b9091555060629050620021ba82603062002962565b620021c691906200297c565b600e6000828254620021d9919062002a2e565b90915550620023969050565b6001546001600160a01b0385811691161480156200220557506000601b54115b15620022ab576103e8601b54846200221e919062002962565b6200222a91906200297c565b9050601b54601954826200223f919062002962565b6200224b91906200297c565b600f60008282546200225e919062002a2e565b9091555050601b54601a5462002275908362002962565b6200228191906200297c565b6010600082825462002294919062002a2e565b9091555050601b54601854620021ba908362002962565b6001546001600160a01b038681169116148015620022cb57506000601754115b1562002396576103e860175484620022e4919062002962565b620022f091906200297c565b90506017546015548262002305919062002962565b6200231191906200297c565b600f600082825462002324919062002a2e565b90915550506017546016546200233b908362002962565b6200234791906200297c565b601060008282546200235a919062002a2e565b909155505060175460145462002371908362002962565b6200237d91906200297c565b600e600082825462002390919062002a2e565b90915550505b8015620023ec57620023aa85308362001b86565b5060405181815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b620023f8818462002b08565b95945050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811062002439576200243962002d13565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620024ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024d29190620029d4565b81600181518110620024e857620024e862002d13565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906200254290859060009086903090429060040162002d29565b600060405180830381600087803b1580156200255d57600080fd5b505af115801562001819573d6000803e3d6000fd5b612e308062002d9d83390190565b6000602082840312156200259357600080fd5b5035919050565b60005b83811015620025b75781810151838201526020016200259d565b50506000910152565b60008151808452620025da8160208601602086016200259a565b601f01601f19169290920160200192915050565b602081526000620011a86020830184620025c0565b6001600160a01b03811681146200177257600080fd5b8035620026268162002603565b919050565b600080604083850312156200263f57600080fd5b82356200264c8162002603565b946020939093013593505050565b6000806000606084860312156200267057600080fd5b505081359360208301359350604090920135919050565b6000806000606084860312156200269d57600080fd5b8335620026aa8162002603565b92506020840135620026bc8162002603565b91506040840135620026ce8162002603565b809150509250925092565b600080600060608486031215620026ef57600080fd5b8335620026fc8162002603565b925060208401356200270e8162002603565b929592945050506040919091013590565b6000602082840312156200273257600080fd5b8135620011a88162002603565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200276757600080fd5b813567ffffffffffffffff808211156200278557620027856200273f565b604051601f8301601f19908116603f01168101908282118183101715620027b057620027b06200273f565b81604052838152866020858801011115620027ca57600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146200177257600080fd5b80356200262681620027ea565b6000806000806000806000806000806101408b8d0312156200282757600080fd5b8a3567ffffffffffffffff808211156200284057600080fd5b6200284e8e838f0162002755565b9b5060208d01359150808211156200286557600080fd5b50620028748d828e0162002755565b9950506200288560408c0162002619565b97506200289560608c01620027f9565b965060808b01359550620028ac60a08c0162002619565b945060c08b01359350620028c360e08c0162002619565b92506101008b01359150620028dc6101208c0162002619565b90509295989b9194979a5092959850565b600080604083850312156200290157600080fd5b82356200290e8162002603565b91506020830135620029208162002603565b809150509250929050565b600080604083850312156200293f57600080fd5b82356200264c81620027ea565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000ec25762000ec26200294c565b6000826200299a57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215620029e757600080fd5b8151620011a88162002603565b60006020828403121562002a0757600080fd5b5051919050565b60006020828403121562002a2157600080fd5b8151620011a881620027ea565b8082018082111562000ec25762000ec26200294c565b600181811c9082168062002a5957607f821691505b60208210810362002a7a57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111562000ec25762000ec26200294c565b600061014080835262002b348184018e620025c0565b9050828103602084015262002b4a818d620025c0565b6001600160a01b039b8c16604085015299151560608401525050608081019690965293871660a086015260c0850192909252851660e08401526101008301529092166101209092019190915292915050565b60006001820162002bb15762002bb16200294c565b5060010190565b600181815b8085111562002bf957816000190482111562002bdd5762002bdd6200294c565b8085161562002beb57918102915b93841c939080029062002bbd565b509250929050565b60008262002c125750600162000ec2565b8162002c215750600062000ec2565b816001811462002c3a576002811462002c455762002c65565b600191505062000ec2565b60ff84111562002c595762002c596200294c565b50506001821b62000ec2565b5060208310610133831016604e8410600b841016171562002c8a575081810a62000ec2565b62002c96838362002bb8565b806000190482111562002cad5762002cad6200294c565b029392505050565b6000620011a860ff84168362002c01565b60008060006060848603121562002cdc57600080fd5b8351925060208401519150604084015190509250925092565b6000825162002d098184602087016200259a565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101562002d7b5784516001600160a01b03168352938301939183019160010162002d54565b50506001600160a01b0396909616606085015250505060800152939250505056fe6080604052620000126012600a620006c4565b6200002290633b9aca00620006dc565b60048190556007805460ff191660011790556103e8906200004590600a620006dc565b620000519190620006f6565b6009556103e8600454600a620000689190620006dc565b620000749190620006f6565b600a5560148080556015819055601681905562000092818062000719565b6200009e919062000719565b601755601e601855601e6019556014601a55601a54601954601854620000c5919062000719565b620000d1919062000719565b601b55601d805460ff19166001179055600454620186a090620000f690600a620006dc565b620001029190620006f6565b601e553480156200011257600080fd5b5060405162002e3038038062002e30833981016040819052620001359162000822565b620001403362000499565b60026200014e8b8262000997565b5060036200015d8a8262000997565b506200016988620004e9565b6001600c6000306001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000306001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008a6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008a6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060045460066000306001600160a01b03166001600160a01b031681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03166001600160a01b031681526020019081526020016000208190555086600b60006101000a81548160ff02191690831515021790555086601d60006101000a81548160ff02191690831515021790555080601160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555084601260006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082601360006101000a8154816001600160a01b0302191690836001600160a01b031602179055506096848388620003d0919062000719565b620003dc919062000719565b1115620003e857600080fd5b6014869055601582905560168490558362000404838862000719565b62000410919062000719565b60175560188690556019829055601a849055836200042f838862000719565b6200043b919062000719565b601b5560045430600081815260056020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050505050505062000a63565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b33620004fd6000546001600160a01b031690565b6001600160a01b031614620005595760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b038116620005a15760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21037bbb732b960991b604482015260640162000550565b620005ac8162000499565b50565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000606578160001904821115620005ea57620005ea620005af565b80851615620005f857918102915b93841c9390800290620005ca565b509250929050565b6000826200061f57506001620006be565b816200062e57506000620006be565b8160018114620006475760028114620006525762000672565b6001915050620006be565b60ff841115620006665762000666620005af565b50506001821b620006be565b5060208310610133831016604e8410600b841016171562000697575081810a620006be565b620006a38383620005c5565b8060001904821115620006ba57620006ba620005af565b0290505b92915050565b6000620006d560ff8416836200060e565b9392505050565b8082028115828204841417620006be57620006be620005af565b6000826200071457634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620006be57620006be620005af565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200075757600080fd5b81516001600160401b03808211156200077457620007746200072f565b604051601f8301601f19908116603f011681019082821181831017156200079f576200079f6200072f565b81604052838152602092508683858801011115620007bc57600080fd5b600091505b83821015620007e05785820183015181830184015290820190620007c1565b600093810190920192909252949350505050565b80516001600160a01b03811681146200080c57600080fd5b919050565b805180151581146200080c57600080fd5b6000806000806000806000806000806101408b8d0312156200084357600080fd5b8a516001600160401b03808211156200085b57600080fd5b620008698e838f0162000745565b9b5060208d01519150808211156200088057600080fd5b506200088f8d828e0162000745565b995050620008a060408c01620007f4565b9750620008b060608c0162000811565b965060808b01519550620008c760a08c01620007f4565b945060c08b01519350620008de60e08c01620007f4565b92506101008b01519150620008f76101208c01620007f4565b90509295989b9194979a5092959850565b600181811c908216806200091d57607f821691505b6020821081036200093e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200099257600081815260208120601f850160051c810160208610156200096d5750805b601f850160051c820191505b818110156200098e5782815560010162000979565b5050505b505050565b81516001600160401b03811115620009b357620009b36200072f565b620009cb81620009c4845462000908565b8462000944565b602080601f83116001811462000a035760008415620009ea5750858301515b600019600386901b1c1916600185901b1785556200098e565b600085815260208120601f198616915b8281101562000a345788860151825594840194600190910190840162000a13565b508582101562000a535787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6123bd8062000a736000396000f3fe6080604052600436106102085760003560e01c806370a0823111610118578063a8aa1b31116100a0578063eb3410401161006f578063eb341040146105d7578063f178619b146105f7578063f2fde38b1461060c578063f86aa92d1461062c578063f887ea401461064257600080fd5b8063a8aa1b311461053b578063a9059cbb1461055b578063aa4bde281461057b578063dd62ed3e1461059157600080fd5b80638da5cb5b116100e75780638da5cb5b146104b85780638ea5220f146104d657806395d89b41146104f65780639d9241ec1461050b578063a64e4f8a1461052157600080fd5b806370a0823114610437578063715018a61461046d57806375f0a874146104825780638c0b5e22146104a257600080fd5b806318160ddd1161019b57806359b107b91161016a57806359b107b91461038f5780635c85974f146103a55780635d0044ca146103c55780636303516c146103e55780636ddd17131461041d57600080fd5b806318160ddd1461032457806323b872dd14610339578063313ce567146103595780633582ad231461037557600080fd5b8063095ea7b3116101d7578063095ea7b3146102945780630d075d9c146102c45780630f683e90146102e4578063147c9f6d1461030457600080fd5b80630445b6671461021457806304fda8ff1461023d57806306a1409f1461025f57806306fdde031461027257600080fd5b3661020f57005b600080fd5b34801561022057600080fd5b5061022a601e5481565b6040519081526020015b60405180910390f35b34801561024957600080fd5b5061025d610258366004611e3e565b61066a565b005b61025d61026d366004611e3e565b6106d5565b34801561027e57600080fd5b50610287610bd4565b6040516102349190611e57565b3480156102a057600080fd5b506102b46102af366004611eba565b610c66565b6040519015158152602001610234565b3480156102d057600080fd5b5061025d6102df366004611ee6565b610cd3565b3480156102f057600080fd5b5061025d6102ff366004611ee6565b610d5a565b34801561031057600080fd5b5061025d61031f366004611f12565b610de1565b34801561033057600080fd5b5060045461022a565b34801561034557600080fd5b506102b4610354366004611f5d565b610e59565b34801561036557600080fd5b5060405160128152602001610234565b34801561038157600080fd5b506007546102b49060ff1681565b34801561039b57600080fd5b5061022a60175481565b3480156103b157600080fd5b5061025d6103c0366004611e3e565b610f8f565b3480156103d157600080fd5b5061025d6103e0366004611e3e565b610ff7565b3480156103f157600080fd5b50601154610405906001600160a01b031681565b6040516001600160a01b039091168152602001610234565b34801561042957600080fd5b50601d546102b49060ff1681565b34801561044357600080fd5b5061022a610452366004611f9e565b6001600160a01b031660009081526005602052604090205490565b34801561047957600080fd5b5061025d61105f565b34801561048e57600080fd5b50601254610405906001600160a01b031681565b3480156104ae57600080fd5b5061022a60095481565b3480156104c457600080fd5b506000546001600160a01b0316610405565b3480156104e257600080fd5b50601354610405906001600160a01b031681565b34801561050257600080fd5b506102876110a4565b34801561051757600080fd5b5061022a601b5481565b34801561052d57600080fd5b50600b546102b49060ff1681565b34801561054757600080fd5b50600154610405906001600160a01b031681565b34801561056757600080fd5b506102b4610576366004611eba565b6110b3565b34801561058757600080fd5b5061022a600a5481565b34801561059d57600080fd5b5061022a6105ac366004611fbb565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156105e357600080fd5b5061025d6105f2366004612002565b6110f3565b34801561060357600080fd5b5061025d611157565b34801561061857600080fd5b5061025d610627366004611f9e565b61119c565b34801561063857600080fd5b5061022a601c5481565b34801561064e57600080fd5b50610405737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6012546001600160a01b0316331461068157600080fd5b60125447906001600160a01b03166108fc606461069e8585612036565b6106a8919061204d565b6040518115909202916000818181858888f193505050501580156106d0573d6000803e3d6000fd5b505050565b336106e86000546001600160a01b031690565b6001600160a01b0316146107175760405162461bcd60e51b815260040161070e9061206f565b60405180910390fd5b601f54610100900460ff161561076f5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c6564000000000000000000604482015260640161070e565b60018110156107b15760405162461bcd60e51b815260206004820152600e60248201526d098dec6d64078406240dadedce8d60931b604482015260640161070e565b600034116107f35760405162461bcd60e51b815260206004820152600f60248201526e139bc8115512081cdd5c1c1b1a5959608a1b604482015260640161070e565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610845573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086991906120a4565b6001600160a01b031663c9c65396737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ed91906120a4565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d91906120a4565b600180546001600160a01b0319166001600160a01b0392831690811782556000908152600860209081526040808320805460ff199081168617909155600454845487168552600684528285208654909716855295835281842095909555601f805490951690931790935530808252600590935220546109dd913490611227565b601f805461ffff19166101001790556001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610a35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5991906120c1565b60015460405163095ea7b360e01b81527371b5759d73262fbb223956913ecf4ecc510576416004820152602481018390529192506001600160a01b03169063095ea7b3906044016020604051808303816000875af1158015610abf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae391906120da565b506000610af38362278d00612036565b610afd90426120f7565b60018054604051630727935760e01b81523360048201526001600160a01b0390911660248201526044810191909152606481018490526084810182905260c060a4820152600760c4820152666c70206c6f636b60c81b60e48201529091507371b5759d73262fbb223956913ecf4ecc5105764190630727935790610104016020604051808303816000875af1158015610b9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbe91906120c1565b601c55610bcc4360026120f7565b602055505050565b606060028054610be39061210a565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0f9061210a565b8015610c5c5780601f10610c3157610100808354040283529160200191610c5c565b820191906000526020600020905b815481529060010190602001808311610c3f57829003601f168201915b5050505050905090565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610cc19086815260200190565b60405180910390a35060015b92915050565b33610ce66000546001600160a01b031690565b6001600160a01b031614610d0c5760405162461bcd60e51b815260040161070e9061206f565b609681610d1984866120f7565b610d2391906120f7565b1115610d2e57600080fd5b60148390556015829055601681905580610d4883856120f7565b610d5291906120f7565b601755505050565b33610d6d6000546001600160a01b031690565b6001600160a01b031614610d935760405162461bcd60e51b815260040161070e9061206f565b609681610da084866120f7565b610daa91906120f7565b1115610db557600080fd5b60188390556019829055601a81905580610dcf83856120f7565b610dd991906120f7565b601b55505050565b33610df46000546001600160a01b031690565b6001600160a01b031614610e1a5760405162461bcd60e51b815260040161070e9061206f565b601280546001600160a01b039485166001600160a01b031991821617909155601180549385169382169390931790925560138054919093169116179055565b60006001600160a01b038416610e815760405162461bcd60e51b815260040161070e90612144565b6001600160a01b038316610ea75760405162461bcd60e51b815260040161070e90612189565b6004546001600160a01b038516600090815260066020908152604080832033845290915290205414610f7a576001600160a01b038416600090815260066020908152604080832033845290915290205482811015610f405760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b604482015260640161070e565b6001600160a01b038516600090815260066020908152604080832033845290915281208054859290610f739084906121cc565b9091555050505b610f858484846112d0565b90505b9392505050565b33610fa26000546001600160a01b031690565b6001600160a01b031614610fc85760405162461bcd60e51b815260040161070e9061206f565b600a811015610fd657600080fd5b6103e881600454610fe79190612036565b610ff1919061204d565b60095550565b3361100a6000546001600160a01b031690565b6001600160a01b0316146110305760405162461bcd60e51b815260040161070e9061206f565b600a81101561103e57600080fd5b6103e88160045461104f9190612036565b611059919061204d565b600a5550565b336110726000546001600160a01b031690565b6001600160a01b0316146110985760405162461bcd60e51b815260040161070e9061206f565b6110a26000611494565b565b606060038054610be39061210a565b6000336110c86000546001600160a01b031690565b6001600160a01b0316036110e8576110e13384846114e4565b9050610ccd565b6110e13384846112d0565b336111066000546001600160a01b031690565b6001600160a01b03161461112c5760405162461bcd60e51b815260040161070e9061206f565b601d805460ff19168315151790556111466012600a6122c3565b6111509082612036565b601e555050565b3361116a6000546001600160a01b031690565b6001600160a01b0316146111905760405162461bcd60e51b815260040161070e9061206f565b6007805460ff19169055565b336111af6000546001600160a01b031690565b6001600160a01b0316146111d55760405162461bcd60e51b815260040161070e9061206f565b6001600160a01b03811661121b5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21037bbb732b960991b604482015260640161070e565b61122481611494565b50565b60405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b03821660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990849060c40160606040518083038185885af11580156112a3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112c891906122d2565b505050505050565b60006001600160a01b0384166112f85760405162461bcd60e51b815260040161070e90612144565b6001600160a01b03831661131e5760405162461bcd60e51b815260040161070e90612189565b6000546001600160a01b038581169116148061134757506000546001600160a01b038481169116145b806113545750601f5460ff165b1561136b576113648484846114e4565b9050610f88565b601f54610100900460ff166113b95760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161070e565b60075460ff16156113cf576113cf8484846115ff565b6113d8836117c7565b156113e5576113e561181a565b600b5460ff1615611431576001546001600160a01b038481169116148061141957506001546001600160a01b038581169116145b611423578161142e565b61142e848484611a1f565b91505b61143c8484846114e4565b50826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161148291815260200190565b60405180910390a35060019392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316600090815260056020526040812054828110156115445760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b604482015260640161070e565b6001600160a01b0385166000908152600560205260409020546115689084906121cc565b6001600160a01b0380871660009081526005602052604080822093909355908616815220546115989084906120f7565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115ec9087815260200190565b60405180910390a3506001949350505050565b6001600160a01b03831660009081526008602052604090205460ff16801561163f57506001600160a01b03821660009081526008602052604090205460ff165b1561164957505050565b6001546001600160a01b03848116911614801561167f57506001600160a01b03821660009081526008602052604090205460ff16155b156116ca576009548111156116c55760405162461bcd60e51b815260206004820152600c60248201526b13585e081d1e081b1a5b5a5d60a21b604482015260640161070e565b611746565b6001546001600160a01b03838116911614801561170057506001600160a01b03831660009081526008602052604090205460ff16155b15611746576009548111156117465760405162461bcd60e51b815260206004820152600c60248201526b13585e081d1e081b1a5b5a5d60a21b604482015260640161070e565b6001600160a01b03821660009081526008602052604090205460ff166106d057600a546001600160a01b03831660009081526005602052604090205461178c90836120f7565b11156106d05760405162461bcd60e51b815260206004820152600a60248201526913585e081dd85b1b195d60b21b604482015260640161070e565b6001546000906001600160a01b0383811691161480156117ea5750601f5460ff16155b80156117f85750601d5460ff165b8015610ccd5750601e5430600090815260056020526040902054101592915050565b601f805460ff191660011790553060009081526005602052604081205490506000601054600e54600f5461184e91906120f7565b61185891906120f7565b9050811580611865575080155b15611871575050611a13565b6000600282600f54856118849190612036565b61188e919061204d565b611898919061204d565b905060006118a682856121cc565b9050476118b282611cda565b60006118be82476121cc565b9050600085600e54836118d19190612036565b6118db919061204d565b9050600086601054846118ee9190612036565b6118f8919061204d565b905060008161190784866121cc565b61191191906121cc565b6000600f819055600e81905560108190556013546040519293506001600160a01b03169184156108fc0291859190818181858888f1935050505015801561195c573d6000803e3d6000fd5b5060008711801561196d5750600081115b156119cf5760115461198b90889083906001600160a01b0316611227565b600f54604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6012546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611a08573d6000803e3d6000fd5b505050505050505050505b601f805460ff19169055565b6001600160a01b0383166000908152600c602052604081205460ff1680611a5e57506001600160a01b0383166000908152600c602052604090205460ff165b15611a6a575080610f88565b60006020544311611aef576064611a82846062612036565b611a8c919061204d565b90506062611a9b826032612036565b611aa5919061204d565b600f6000828254611ab691906120f7565b9091555060629050611ac9826030612036565b611ad3919061204d565b600e6000828254611ae491906120f7565b90915550611c749050565b6001546001600160a01b038581169116148015611b0e57506000601b54115b15611ba1576103e8601b5484611b249190612036565b611b2e919061204d565b9050601b5460195482611b419190612036565b611b4b919061204d565b600f6000828254611b5c91906120f7565b9091555050601b54601a54611b719083612036565b611b7b919061204d565b60106000828254611b8c91906120f7565b9091555050601b54601854611ac99083612036565b6001546001600160a01b038681169116148015611bc057506000601754115b15611c74576103e860175484611bd69190612036565b611be0919061204d565b905060175460155482611bf39190612036565b611bfd919061204d565b600f6000828254611c0e91906120f7565b9091555050601754601654611c239083612036565b611c2d919061204d565b60106000828254611c3e91906120f7565b9091555050601754601454611c539083612036565b611c5d919061204d565b600e6000828254611c6e91906120f7565b90915550505b8015611cc757611c858530836114e4565b5060405181815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b611cd181846121cc565b95945050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d0f57611d0f612300565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da591906120a4565b81600181518110611db857611db8612300565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611e10908590600090869030904290600401612316565b600060405180830381600087803b158015611e2a57600080fd5b505af11580156112c8573d6000803e3d6000fd5b600060208284031215611e5057600080fd5b5035919050565b600060208083528351808285015260005b81811015611e8457858101830151858201604001528201611e68565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461122457600080fd5b60008060408385031215611ecd57600080fd5b8235611ed881611ea5565b946020939093013593505050565b600080600060608486031215611efb57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611f2757600080fd5b8335611f3281611ea5565b92506020840135611f4281611ea5565b91506040840135611f5281611ea5565b809150509250925092565b600080600060608486031215611f7257600080fd5b8335611f7d81611ea5565b92506020840135611f8d81611ea5565b929592945050506040919091013590565b600060208284031215611fb057600080fd5b8135610f8881611ea5565b60008060408385031215611fce57600080fd5b8235611fd981611ea5565b91506020830135611fe981611ea5565b809150509250929050565b801515811461122457600080fd5b6000806040838503121561201557600080fd5b8235611ed881611ff4565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610ccd57610ccd612020565b60008261206a57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156120b657600080fd5b8151610f8881611ea5565b6000602082840312156120d357600080fd5b5051919050565b6000602082840312156120ec57600080fd5b8151610f8881611ff4565b80820180821115610ccd57610ccd612020565b600181811c9082168061211e57607f821691505b60208210810361213e57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610ccd57610ccd612020565b600181815b8085111561221a57816000190482111561220057612200612020565b8085161561220d57918102915b93841c93908002906121e4565b509250929050565b60008261223157506001610ccd565b8161223e57506000610ccd565b8160018114612254576002811461225e5761227a565b6001915050610ccd565b60ff84111561226f5761226f612020565b50506001821b610ccd565b5060208310610133831016604e8410600b841016171561229d575081810a610ccd565b6122a783836121df565b80600019048211156122bb576122bb612020565b029392505050565b6000610f8860ff841683612222565b6000806000606084860312156122e757600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123665784516001600160a01b031683529383019391830191600101612341565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122011e549ffc57e15388c17c04f43023480c1d055730d07bbe81ce62530296d5ec064736f6c63430008120033a2646970667358221220e8c79a7e8eaa59a81adaeb97a2e54f529eb3aaa1a200975dd6b85abf898b07bd64736f6c63430008120033

Deployed Bytecode Sourcemap

20378:2660:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4817:60;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;4817:60:0;;;;;;;;20106:228;;;;;;;;;;-1:-1:-1;20106:228:0;;;;;:::i;:::-;;:::i;:::-;;12052:1405;;;;;;:::i;:::-;;:::i;7643:85::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;8032:207::-;;;;;;;;;;-1:-1:-1;8032:207:0;;;;;:::i;:::-;;:::i;:::-;;;1897:14:1;;1890:22;1872:41;;1860:2;1845:18;8032:207:0;1732:187:1;8851:435:0;;;;;;;;;;-1:-1:-1;8851:435:0;;;;;:::i;:::-;;:::i;9349:428::-;;;;;;;;;;-1:-1:-1;9349:428:0;;;;;:::i;:::-;;:::i;9824:258::-;;;;;;;;;;-1:-1:-1;9824:258:0;;;;;:::i;:::-;;:::i;7352:93::-;;;;;;;;;;-1:-1:-1;7425:12:0;;7352:93;;17562:672;;;;;;;;;;-1:-1:-1;17562:672:0;;;;;:::i;:::-;;:::i;20498:49::-;;;;;;;;;;-1:-1:-1;20498:49:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;3404:32:1;;;3386:51;;3374:2;3359:18;20498:49:0;3240:203:1;7453:85:0;;;;;;;;;;-1:-1:-1;7453:85:0;;3459:2;3590:36:1;;3578:2;3563:18;7453:85:0;3448:184:1;3741:32:0;;;;;;;;;;-1:-1:-1;3741:32:0;;;;;;;;20426:47;;;;;;;;;;-1:-1:-1;20426:47:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;20426:47:0;;;20602:29;;;;;;;;;;;;;;;;21620:1415;;;;;;;;;;-1:-1:-1;21620:1415:0;;;;;:::i;:::-;;:::i;4419:82::-;;;;;;;;;;;;;;;;10443:179;;;;;;;;;;-1:-1:-1;10443:179:0;;;;;:::i;:::-;;:::i;10168:185::-;;;;;;;;;;-1:-1:-1;10168:185:0;;;;;:::i;:::-;;:::i;4214:23::-;;;;;;;;;;-1:-1:-1;4214:23:0;;;;-1:-1:-1;;;;;4214:23:0;;;4780:30;;;;;;;;;;-1:-1:-1;4780:30:0;;;;;;;;7736:110;;;;;;;;;;-1:-1:-1;7736:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;7820:18:0;7793:7;7820:18;;;:9;:18;;;;;;;7736:110;2806:103;;;;;;;;;;;;;:::i;4244:30::-;;;;;;;;;;-1:-1:-1;4244:30:0;;;;-1:-1:-1;;;;;4244:30:0;;;3828:58;;;;;;;;;;;;;;;;2401:87;;;;;;;;;;-1:-1:-1;2447:7:0;2474:6;-1:-1:-1;;;;;2474:6:0;2401:87;;4281:24;;;;;;;;;;-1:-1:-1;4281:24:0;;;;-1:-1:-1;;;;;4281:24:0;;;7546:89;;;;;;;;;;;;;:::i;4618:86::-;;;;;;;;;;;;;;;;3989:23;;;;;;;;;;-1:-1:-1;3989:23:0;;;;;;;;3341:19;;;;;;;;;;-1:-1:-1;3341:19:0;;;;-1:-1:-1;;;;;3341:19:0;;;17246:308;;;;;;;;;;-1:-1:-1;17246:308:0;;;;;:::i;:::-;;:::i;3899:62::-;;;;;;;;;;;;;;;;21265:106;;;;;;;;;;-1:-1:-1;21265:106:0;;;;;:::i;:::-;;:::i;7854:170::-;;;;;;;;;;-1:-1:-1;7854:170:0;;;;;:::i;:::-;-1:-1:-1;;;;;7988:19:0;;;7956:7;7988:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;7854:170;13574:203;;;;;;;;;;-1:-1:-1;13574:203:0;;;;;:::i;:::-;;:::i;21423:189::-;;;;;;;;;;;;;:::i;11671:92::-;;;;;;;;;;;;;:::i;2622:176::-;;;;;;;;;;-1:-1:-1;2622:176:0;;;;;:::i;:::-;;:::i;4731:23::-;;;;;;;;;;;;;;;;3156:90;;;;;;;;;;;;3203:42;3156:90;;20106:228;20186:15;;-1:-1:-1;;;;;20186:15:0;20172:10;:29;20164:38;;;;;;20274:15;;20234:21;;-1:-1:-1;;;;;20274:15:0;20266:60;20322:3;20301:17;20314:4;20234:21;20301:17;:::i;:::-;20300:25;;;;:::i;:::-;20266:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20153:181;20106:228;:::o;12052:1405::-;2547:10;2536:7;2447;2474:6;-1:-1:-1;;;;;2474:6:0;;2401:87;2536:7;-1:-1:-1;;;;;2536:21:0;;2528:66;;;;-1:-1:-1;;;2528:66:0;;;;;;;:::i;:::-;;;;;;;;;12145:14:::1;::::0;::::1;::::0;::::1;;;12144:15;12136:51;;;::::0;-1:-1:-1;;;12136:51:0;;8147:2:1;12136:51:0::1;::::0;::::1;8129:21:1::0;8186:2;8166:18;;;8159:30;8225:25;8205:18;;;8198:53;8268:18;;12136:51:0::1;7945:347:1::0;12136:51:0::1;12224:1;12206:14;:19;;12198:46;;;::::0;-1:-1:-1;;;12198:46:0;;8499:2:1;12198:46:0::1;::::0;::::1;8481:21:1::0;8538:2;8518:18;;;8511:30;-1:-1:-1;;;8557:18:1;;;8550:44;8611:18;;12198:46:0::1;8297:338:1::0;12198:46:0::1;12275:1;12263:9;:13;12255:41;;;::::0;-1:-1:-1;;;12255:41:0;;8842:2:1;12255:41:0::1;::::0;::::1;8824:21:1::0;8881:2;8861:18;;;8854:30;-1:-1:-1;;;8900:18:1;;;8893:45;8955:18;;12255:41:0::1;8640:339:1::0;12255:41:0::1;3203:42;-1:-1:-1::0;;;;;12366:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12354:40:0::1;;3203:42;-1:-1:-1::0;;;;;12409:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12354:107;::::0;-1:-1:-1;;;;;;12354:107:0::1;::::0;;;;;;-1:-1:-1;;;;;9470:15:1;;;12354:107:0::1;::::0;::::1;9452:34:1::0;12445:4:0::1;9502:18:1::0;;;9495:43;9387:18;;12354:107:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12347:4;:114:::0;;-1:-1:-1;;;;;;12347:114:0::1;-1:-1:-1::0;;;;;12347:114:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;12535:31:0;;;:16:::1;:31;::::0;;;;;;;:38;;-1:-1:-1;;12535:38:0;;::::1;::::0;::::1;::::0;;;12622:12:::1;::::0;2474:6;;;;12584:20;;:11:::1;:20:::0;;;;;12613:4;;;;::::1;12584:35:::0;;;;;;;;:50;;;;12720:6:::1;:13:::0;;;;::::1;::::0;;::::1;::::0;;;12775:4:::1;7820:18:::0;;;:9;:18;;;;;12744:64:::1;::::0;12783:9:::1;::::0;12744:12:::1;:64::i;:::-;12819:14;:21:::0;;-1:-1:-1;;12851:14:0;12819:21:::1;12851:14:::0;;;-1:-1:-1;12955:4:0;12948:37:::1;::::0;-1:-1:-1;;;12948:37:0;;12979:4:::1;12948:37;::::0;::::1;3386:51:1::0;-1:-1:-1;;;;;;;12955:4:0::1;::::0;12948:22:::1;::::0;3359:18:1;;12948:37:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13003:4;::::0;12996:48:::1;::::0;-1:-1:-1;;;12996:48:0;;3291:42:::1;12996:48;::::0;::::1;9912:51:1::0;9979:18;;;9972:34;;;12928:57:0;;-1:-1:-1;;;;;;13003:4:0::1;::::0;12996:20:::1;::::0;9885:18:1;;12996:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;13055:19:0::1;13095:24;:14:::0;13112:7:::1;13095:24;:::i;:::-;13077:42;::::0;:15:::1;:42;:::i;:::-;13267:4;::::0;;13216:159:::1;::::0;-1:-1:-1;;;13216:159:0;;13242:10:::1;13216:159;::::0;::::1;10753:34:1::0;-1:-1:-1;;;;;13267:4:0;;::::1;10803:18:1::0;;;10796:43;10855:18;;;10848:50;;;;10914:18;;;10907:34;;;10957:19;;;10950:35;;;11022:3;11001:19;;;10994:32;11063:1;11042:19;;;11035:30;-1:-1:-1;;;11081:19:1;;;11074:38;13055:64:0;;-1:-1:-1;3291:42:0::1;::::0;13216:11:::1;::::0;11129:19:1;;13216:159:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13205:8;:170:::0;13433:16:::1;:12;13448:1;13433:16;:::i;:::-;13417:13;:32:::0;-1:-1:-1;;;12052:1405:0:o;7643:85::-;7682:13;7715:5;7708:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7643:85;:::o;8032:207::-;8127:10;8098:4;8115:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8115:32:0;;;;;;;;;;:41;;;8172:37;8098:4;;8115:32;;8172:37;;;;8150:6;160:25:1;;148:2;133:18;;14:177;8172:37:0;;;;;;;;-1:-1:-1;8227:4:0;8032:207;;;;;:::o;8851:435::-;2547:10;2536:7;2447;2474:6;-1:-1:-1;;;;;2474:6:0;;2401:87;2536:7;-1:-1:-1;;;;;2536:21:0;;2528:66;;;;-1:-1:-1;;;2528:66:0;;;;;;;:::i;:::-;9057:3:::1;9042:11:::0;9010:29:::1;9026:13:::0;9010;:29:::1;:::i;:::-;:43;;;;:::i;:::-;:50;;9002:59;;;::::0;::::1;;9095:15;:31:::0;;;9137:15:::1;:31:::0;;;9179:17:::1;:31:::0;;;9199:11;9235:29:::1;9155:13:::0;9113;9235:29:::1;:::i;:::-;:43;;;;:::i;:::-;9221:11;:57:::0;-1:-1:-1;;;8851:435:0:o;9349:428::-;2547:10;2536:7;2447;2474:6;-1:-1:-1;;;;;2474:6:0;;2401:87;2536:7;-1:-1:-1;;;;;2536:21:0;;2528:66;;;;-1:-1:-1;;;2528:66:0;;;;;;;:::i;:::-;9556:3:::1;9541:11:::0;9509:29:::1;9525:13:::0;9509;:29:::1;:::i;:::-;:43;;;;:::i;:::-;:50;;9501:59;;;::::0;::::1;;9582:16;:32:::0;;;9625:16:::1;:32:::0;;;9668:18:::1;:32:::0;;;9689:11;9726:29:::1;9644:13:::0;9601;9726:29:::1;:::i;:::-;:43;;;;:::i;:::-;9711:12;:58:::0;-1:-1:-1;;;9349:428:0:o;9824:258::-;2547:10;2536:7;2447;2474:6;-1:-1:-1;;;;;2474:6:0;;2401:87;2536:7;-1:-1:-1;;;;;2536:21:0;;2528:66;;;;-1:-1:-1;;;2528:66:0;;;;;;;:::i;:::-;9976:15:::1;:34:::0;;-1:-1:-1;;;;;9976:34:0;;::::1;-1:-1:-1::0;;;;;;9976:34:0;;::::1;;::::0;;;10021:8:::1;:20:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;10052:9:::1;:22:::0;;;;;::::1;::::0;::::1;;::::0;;9824:258::o;17562:672::-;17685:4;-1:-1:-1;;;;;17710:20:0;;17702:70;;;;-1:-1:-1;;;17702:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17791:23:0;;17783:71;;;;-1:-1:-1;;;17783:71:0;;;;;;;:::i;:::-;17904:12;;-1:-1:-1;;;;;17869:19:0;;;;;;:11;:19;;;;;;;;17889:10;17869:31;;;;;;;;:47;17865:304;;-1:-1:-1;;;;;17998:19:0;;17975:20;17998:19;;;:11;:19;;;;;;;;18018:10;17998:31;;;;;;;;18052:22;;;;18044:57;;;;-1:-1:-1;;;18044:57:0;;12556:2:1;18044:57:0;;;12538:21:1;12595:2;12575:18;;;12568:30;-1:-1:-1;;;12614:18:1;;;12607:52;12676:18;;18044:57:0;12354:346:1;18044:57:0;-1:-1:-1;;;;;18116:19:0;;;;;;:11;:19;;;;;;;;18136:10;18116:31;;;;;;;:41;;18151:6;;18116:19;:41;;18151:6;;18116:41;:::i;:::-;;;;-1:-1:-1;;;17865:304:0;18186:40;18200:6;18208:9;18219:6;18186:13;:40::i;:::-;18179:47;;17562:672;;;;;;:::o;20498:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20498:49:0;;-1:-1:-1;20498:49:0;;-1:-1:-1;20498:49:0:o;21620:1415::-;21939:15;;;;21931:47;;;;-1:-1:-1;;;21931:47:0;;13040:2:1;21931:47:0;;;13022:21:1;13079:2;13059:18;;;13052:30;-1:-1:-1;;;13098:18:1;;;13091:49;13157:18;;21931:47:0;12838:343:1;21931:47:0;22083:15;;22068:10;22058:21;;;;:9;:21;;;;;;:40;;22050:70;;;;-1:-1:-1;;;22050:70:0;;13388:2:1;22050:70:0;;;13370:21:1;13427:2;13407:18;;;13400:30;-1:-1:-1;;;13446:18:1;;;13439:47;13503:18;;22050:70:0;13186:341:1;22050:70:0;22194:183;22248:4;22269:10;20700:42;22351:15;;22194:31;:183::i;:::-;22390:25;22450:5;22470:7;22492:5;22584:10;22609:12;22636:9;22660:6;22681:3;22699:5;22719:2;22418:314;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;22390:342;;22745:21;22777:11;22745:44;;22893:5;22863:12;:27;22876:13;-1:-1:-1;;;;;22863:27:0;-1:-1:-1;;;;;22863:27:0;;;;;;;;;;;;;:35;;;;;-1:-1:-1;;;;;22863:35:0;;;;;-1:-1:-1;;;;;22863:35:0;;;;;;22909:12;:19;22922:5;-1:-1:-1;;;;;22909:19:0;-1:-1:-1;;;;;22909:19:0;;;;;;;;;;;;22934:13;22909:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22909:39:0;;;;;-1:-1:-1;;;;;22909:39:0;;;;;;22961:14;;:16;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;22993:34:0;;;-1:-1:-1;;;;;9470:15:1;;;9452:34;;9522:15;;9517:2;9502:18;;9495:43;22993:34:0;;9387:18:1;22993:34:0;;;;;;;21920:1115;;21620:1415;;;;;;;;;;:::o;10443:179::-;2547:10;2536:7;2447;2474:6;-1:-1:-1;;;;;2474:6:0;;2401:87;2536:7;-1:-1:-1;;;;;2536:21:0;;2528:66;;;;-1:-1:-1;;;2528:66:0;;;;;;;:::i;:::-;10529:2:::1;10518:7;:13;;10510:22;;;::::0;::::1;;3712:5;10596:7;10581:12;;:22;;;;:::i;:::-;10580:34;;;;:::i;:::-;10566:11;:48:::0;-1:-1:-1;10443:179:0:o;10168:185::-;2547:10;2536:7;2447;2474:6;-1:-1:-1;;;;;2474:6:0;;2401:87;2536:7;-1:-1:-1;;;;;2536:21:0;;2528:66;;;;-1:-1:-1;;;2528:66:0;;;;;;;:::i;:::-;10256:2:::1;10245:7;:13;;10237:22;;;::::0;::::1;;3712:5;10327:7;10312:12;;:22;;;;:::i;:::-;10311:34;;;;:::i;:::-;10293:15;:52:::0;-1:-1:-1;10168:185:0:o;2806:103::-;2547:10;2536:7;2447;2474:6;-1:-1:-1;;;;;2474:6:0;;2401:87;2536:7;-1:-1:-1;;;;;2536:21:0;;2528:66;;;;-1:-1:-1;;;2528:66:0;;;;;;;:::i;:::-;2871:30:::1;2898:1;2871:18;:30::i;:::-;2806:103::o:0;7546:89::-;7587:13;7620:7;7613:14;;;;;:::i;17246:308::-;17335:4;17372:10;17361:7;2447;2474:6;-1:-1:-1;;;;;2474:6:0;;2401:87;17361:7;-1:-1:-1;;;;;17361:21:0;;17357:190;;17406:45;17421:10;17433:9;17444:6;17406:14;:45::i;:::-;17399:52;;;;17357:190;17491:44;17505:10;17517:9;17528:6;17491:13;:44::i;21265:106::-;2547:10;2536:7;2447;2474:6;-1:-1:-1;;;;;2474:6:0;;2401:87;2536:7;-1:-1:-1;;;;;2536:21:0;;2528:66;;;;-1:-1:-1;;;2528:66:0;;;;;;;:::i;:::-;21342:15:::1;:21:::0;21265:106::o;13574:203::-;2547:10;2536:7;2447;2474:6;-1:-1:-1;;;;;2474:6:0;;2401:87;2536:7;-1:-1:-1;;;;;2536:21:0;;2528:66;;;;-1:-1:-1;;;2528:66:0;;;;;;;:::i;:::-;13692:11:::1;:22:::0;;-1:-1:-1;;13692:22:0::1;::::0;::::1;;;::::0;;13755:13:::1;3459:2;13755;:13;:::i;:::-;13741:28;::::0;:10;:28:::1;:::i;:::-;13725:13;:44:::0;-1:-1:-1;;13574:203:0:o;21423:189::-;21521:15;;21492:10;21480:23;;;;:11;:23;;;;;;;;21512:4;21480:38;;;;;;;;;;:56;;;21552:52;160:25:1;;;21512:4:0;;21552:52;;133:18:1;21552:52:0;;;;;;;21423:189::o;11671:92::-;2547:10;2536:7;2447;2474:6;-1:-1:-1;;;;;2474:6:0;;2401:87;2536:7;-1:-1:-1;;;;;2536:21:0;;2528:66;;;;-1:-1:-1;;;2528:66:0;;;;;;;:::i;:::-;11734:13:::1;:21:::0;;-1:-1:-1;;11734:21:0::1;::::0;;11671:92::o;2622:176::-;2547:10;2536:7;2447;2474:6;-1:-1:-1;;;;;2474:6:0;;2401:87;2536:7;-1:-1:-1;;;;;2536:21:0;;2528:66;;;;-1:-1:-1;;;2528:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2711:22:0;::::1;2703:48;;;::::0;-1:-1:-1;;;2703:48:0;;16325:2:1;2703:48:0::1;::::0;::::1;16307:21:1::0;16364:2;16344:18;;;16337:30;-1:-1:-1;;;16383:18:1;;;16376:43;16436:18;;2703:48:0::1;16123:337:1::0;2703:48:0::1;2762:28;2781:8;2762:18;:28::i;:::-;2622:176:::0;:::o;19771:327::-;19902:188;;-1:-1:-1;;;19902:188:0;;19965:4;19902:188;;;16806:34:1;16856:18;;;16849:34;;;20011:1:0;16899:18:1;;;16892:34;;;16942:18;;;16935:34;-1:-1:-1;;;;;17006:15:1;;16985:19;;;16978:44;20064:15:0;17038:19:1;;;17031:35;3203:42:0;;19902:22;;19932:9;;16740:19:1;;19902:188:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19771:327;;;:::o;18242:1133::-;18368:4;-1:-1:-1;;;;;18393:20:0;;18385:70;;;;-1:-1:-1;;;18385:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18474:23:0;;18466:71;;;;-1:-1:-1;;;18466:71:0;;;;;;;:::i;:::-;2447:7;2474:6;-1:-1:-1;;;;;18596:17:0;;;2474:6;;18596:17;;:41;;-1:-1:-1;2447:7:0;2474:6;-1:-1:-1;;;;;18617:20:0;;;2474:6;;18617:20;18596:41;:51;;;-1:-1:-1;18641:6:0;;;;18596:51;18592:132;;;18671:41;18686:6;18694:9;18705:6;18671:14;:41::i;:::-;18664:48;;;;18592:132;18850:14;;;;;;;18842:47;;;;-1:-1:-1;;;18842:47:0;;17590:2:1;18842:47:0;;;17572:21:1;17629:2;17609:18;;;17602:30;-1:-1:-1;;;17648:18:1;;;17641:50;17708:18;;18842:47:0;17388:344:1;18842:47:0;18904:13;;;;18900:84;;;18934:38;18946:6;18954:9;18965:6;18934:11;:38::i;:::-;18998:26;19014:9;18998:15;:26::i;:::-;18994:69;;;19041:10;:8;:10::i;:::-;19077:11;;;;19073:170;;;19128:4;;-1:-1:-1;;;;;19115:17:0;;;19128:4;;19115:17;;:35;;-1:-1:-1;19146:4:0;;-1:-1:-1;;;;;19136:14:0;;;19146:4;;19136:14;19115:35;19114:117;;19225:6;19114:117;;;19171:34;19179:6;19187:9;19198:6;19171:7;:34::i;:::-;19105:126;;19073:170;19253:41;19268:6;19276:9;19287:6;19253:14;:41::i;:::-;;19327:9;-1:-1:-1;;;;;19310:35:0;19319:6;-1:-1:-1;;;;;19310:35:0;;19338:6;19310:35;;;;160:25:1;;148:2;133:18;;14:177;19310:35:0;;;;;;;;-1:-1:-1;19363:4:0;18242:1133;;;;;:::o;407:430::-;613:51;;;-1:-1:-1;;;;;17995:15:1;;;613:51:0;;;17977:34:1;18047:15;;;18027:18;;;18020:43;18079:18;;;;18072:34;;;613:51:0;;;;;;;;;;17912:18:1;;;;613:51:0;;;;;;;-1:-1:-1;;;;;613:51:0;-1:-1:-1;;;613:51:0;;;588:87;;-1:-1:-1;;;;588:10:0;;;;:87;;613:51;588:87;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;552:123;;;;708:7;:57;;;;-1:-1:-1;720:11:0;;:16;;:44;;;751:4;740:24;;;;;;;;;;;;:::i;:::-;686:143;;;;-1:-1:-1;;;686:143:0;;18611:2:1;686:143:0;;;18593:21:1;18650:2;18630:18;;;18623:30;18689:34;18669:18;;;18662:62;-1:-1:-1;;;18740:18:1;;;18733:34;18784:19;;686:143:0;18409:400:1;2917:191:0;2991:16;3010:6;;-1:-1:-1;;;;;3027:17:0;;;-1:-1:-1;;;;;;3027:17:0;;;;;;3060:40;;3010:6;;;;;;;3060:40;;2991:16;3060:40;2980:128;2917:191;:::o;8336:453::-;-1:-1:-1;;;;;8504:17:0;;8463:4;8504:17;;;:9;:17;;;;;;8540:23;;;;8532:56;;;;-1:-1:-1;;;8532:56:0;;19016:2:1;8532:56:0;;;18998:21:1;19055:2;19035:18;;;19028:30;-1:-1:-1;;;19074:18:1;;;19067:50;19134:18;;8532:56:0;18814:344:1;8532:56:0;-1:-1:-1;;;;;8619:17:0;;;;;;:9;:17;;;;;;:26;;8639:6;;8619:26;:::i;:::-;-1:-1:-1;;;;;8599:17:0;;;;;;;:9;:17;;;;;;:46;;;;8679:20;;;;;;;:29;;8702:6;;8679:29;:::i;:::-;-1:-1:-1;;;;;8656:20:0;;;;;;;:9;:20;;;;;;;:52;;;;8724:35;;;;;;;;;;8752:6;160:25:1;;148:2;133:18;;14:177;8724:35:0;;;;;;;;-1:-1:-1;8777:4:0;;8336:453;-1:-1:-1;;;;8336:453:0:o;10747:807::-;-1:-1:-1;;;;;10938:24:0;;;;;;:16;:24;;;;;;;;:55;;;;-1:-1:-1;;;;;;10966:27:0;;;;;;:16;:27;;;;;;;;10938:55;10934:94;;;10747:807;;;:::o;10934:94::-;11070:4;;-1:-1:-1;;;;;11060:14:0;;;11070:4;;11060:14;:46;;;;-1:-1:-1;;;;;;11079:27:0;;;;;;:16;:27;;;;;;;;11078:28;11060:46;11056:275;;;11141:11;;11131:6;:21;;11123:46;;;;-1:-1:-1;;;11123:46:0;;19365:2:1;11123:46:0;;;19347:21:1;19404:2;19384:18;;;19377:30;-1:-1:-1;;;19423:18:1;;;19416:42;19475:18;;11123:46:0;19163:336:1;11123:46:0;11056:275;;;11223:4;;-1:-1:-1;;;;;11210:17:0;;;11223:4;;11210:17;:46;;;;-1:-1:-1;;;;;;11232:24:0;;;;;;:16;:24;;;;;;;;11231:25;11210:46;11206:125;;;11291:11;;11281:6;:21;;11273:46;;;;-1:-1:-1;;;11273:46:0;;19365:2:1;11273:46:0;;;19347:21:1;19404:2;19384:18;;;19377:30;-1:-1:-1;;;19423:18:1;;;19416:42;19475:18;;11273:46:0;19163:336:1;11273:46:0;-1:-1:-1;;;;;11371:27:0;;;;;;:16;:27;;;;;;;;11366:181;;11474:15;;-1:-1:-1;;;;;7820:18:0;;7793:7;7820:18;;;:9;:18;;;;;;11441:29;;:6;:29;:::i;:::-;:48;;11415:120;;;;-1:-1:-1;;;11415:120:0;;19706:2:1;11415:120:0;;;19688:21:1;19745:2;19725:18;;;19718:30;-1:-1:-1;;;19764:18:1;;;19757:40;19814:18;;11415:120:0;19504:334:1;13858:239:0;13975:4;;13925;;-1:-1:-1;;;;;13962:17:0;;;13975:4;;13962:17;:41;;;;-1:-1:-1;13997:6:0;;;;13996:7;13962:41;:69;;;;-1:-1:-1;14020:11:0;;;;13962:69;:127;;;;-1:-1:-1;14076:13:0;;14066:4;14048:24;;;;:9;:24;;;;;;:41;;13942:147;13858:239;-1:-1:-1;;13858:239:0:o;15613:1625::-;5076:6;:13;;-1:-1:-1;;5076:13:0;5085:4;5076:13;;;15706:4:::1;-1:-1:-1::0;7820:18:0;;;:9;:18;;;;;;15662:50:::1;;15723:25;15812:12;;15778:18;;15751:11;;:45;;;;:::i;:::-;:73;;;;:::i;:::-;15723:101:::0;-1:-1:-1;15841:20:0;;;:46:::1;;-1:-1:-1::0;15865:22:0;;15841:46:::1;15837:85;;;15904:7;;;;15837:85;15983:23;16063:1;16043:17;16028:11;;16010:15;:29;;;;:::i;:::-;16009:51;;;;:::i;:::-;:55;;;;:::i;:::-;15983:81:::0;-1:-1:-1;16075:26:0::1;16104:33;15983:81:::0;16104:15;:33:::1;:::i;:::-;16075:62:::0;-1:-1:-1;16178:21:0::1;16248:36;16075:62:::0;16248:16:::1;:36::i;:::-;16297:18;16318:41;16342:17:::0;16318:21:::1;:41;:::i;:::-;16297:62;;16370:23;16432:17;16410:18;;16397:10;:31;;;;:::i;:::-;16396:53;;;;:::i;:::-;16370:79;;16460:17;16510;16494:12;;16481:10;:25;;;;:::i;:::-;16480:47;;;;:::i;:::-;16460:67:::0;-1:-1:-1;16538:23:0::1;16460:67:::0;16564:28:::1;16577:15:::0;16564:10;:28:::1;:::i;:::-;:40;;;;:::i;:::-;16666:1;16652:11;:15:::0;;;16678:18:::1;:22:::0;;;16711:12:::1;:16:::0;;;16774:9:::1;::::0;16766:38:::1;::::0;16538:66;;-1:-1:-1;;;;;;16774:9:0::1;::::0;16766:38;::::1;;;::::0;16794:9;;16766:38;;16666:1;16766:38;16794:9;16774;16766:38;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;16864:1;16846:15;:19;:42;;;;;16887:1;16869:15;:19;16846:42;16842:281;;;16952:8;::::0;16905:56:::1;::::0;16918:15;;16935;;-1:-1:-1;;;;;16952:8:0::1;16905:12;:56::i;:::-;17085:11;::::0;16981:130:::1;::::0;;20045:25:1;;;20101:2;20086:18;;20079:34;;;20129:18;;;20122:34;;;;16981:130:0;::::1;::::0;;;;20033:2:1;16981:130:0;;::::1;16842:281;17182:15;::::0;17174:56:::1;::::0;-1:-1:-1;;;;;17182:15:0;;::::1;::::0;17208:21:::1;17174:56:::0;::::1;;;::::0;17182:15:::1;17174:56:::0;17182:15;17174:56;17208:21;17182:15;17174:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15651:1587;;;;;;;;;5100:1;5112:6:::0;:14;;-1:-1:-1;;5112:14:0;;;15613:1625::o;14105:1500::-;-1:-1:-1;;;;;14279:18:0;;14216:7;14279:18;;;:12;:18;;;;;;;;;:38;;-1:-1:-1;;;;;;14301:16:0;;;;;;:12;:16;;;;;;;;14279:38;14275:84;;;-1:-1:-1;14341:6:0;14334:13;;14275:84;14371:12;14471:13;;14455:12;:29;14451:907;;14524:3;14509:11;:6;14518:2;14509:11;:::i;:::-;14508:19;;;;:::i;:::-;14501:26;-1:-1:-1;14582:2:0;14569:9;14501:26;14576:2;14569:9;:::i;:::-;14568:16;;;;:::i;:::-;14553:11;;:31;;;;;;;:::i;:::-;;;;-1:-1:-1;14635:2:0;;-1:-1:-1;14622:9:0;:4;14629:2;14622:9;:::i;:::-;14621:16;;;;:::i;:::-;14599:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;14451:907:0;;-1:-1:-1;14451:907:0;;14694:4;;-1:-1:-1;;;;;14688:10:0;;;14694:4;;14688:10;:30;;;;;14717:1;14702:12;;:16;14688:30;14684:674;;;3712:5;14752:12;;14743:6;:21;;;;:::i;:::-;14742:33;;;;:::i;:::-;14735:40;;14833:12;;14813:16;;14806:4;:23;;;;:::i;:::-;14805:40;;;;:::i;:::-;14790:11;;:55;;;;;;;:::i;:::-;;;;-1:-1:-1;;14906:12:0;;14884:18;;14877:25;;:4;:25;:::i;:::-;14876:42;;;;:::i;:::-;14860:12;;:58;;;;;;;:::i;:::-;;;;-1:-1:-1;;14983:12:0;;14963:16;;14956:23;;:4;:23;:::i;14684:674::-;15053:4;;-1:-1:-1;;;;;15045:12:0;;;15053:4;;15045:12;:31;;;;;15075:1;15061:11;;:15;15045:31;15041:317;;;3712:5;15110:11;;15101:6;:20;;;;:::i;:::-;15100:32;;;;:::i;:::-;15093:39;;15189:11;;15170:15;;15163:4;:22;;;;:::i;:::-;15162:38;;;;:::i;:::-;15147:11;;:53;;;;;;;:::i;:::-;;;;-1:-1:-1;;15260:11:0;;15239:17;;15232:24;;:4;:24;:::i;:::-;15231:40;;;;:::i;:::-;15215:12;;:56;;;;;;;:::i;:::-;;;;-1:-1:-1;;15335:11:0;;15316:15;;15309:22;;:4;:22;:::i;:::-;15308:38;;;;:::i;:::-;15286:18;;:60;;;;;;;:::i;:::-;;;;-1:-1:-1;;15041:317:0;15406:8;;15402:137;;15431:41;15446:4;15460;15467;15431:14;:41::i;:::-;-1:-1:-1;15492:35:0;;160:25:1;;;15515:4:0;;-1:-1:-1;;;;;15492:35:0;;;;;148:2:1;133:18;15492:35:0;;;;;;;15402:137;15583:14;15593:4;15583:14;;:::i;:::-;;14105:1500;-1:-1:-1;;;;;14105:1500:0:o;19383:380::-;19473:16;;;19487:1;19473:16;;;;;;;;19449:21;;19473:16;;;;;;;;;;-1:-1:-1;19473:16:0;19449:40;;19518:4;19500;19505:1;19500:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;19500:23:0;;;-1:-1:-1;;;;;19500:23:0;;;;;3203:42;-1:-1:-1;;;;;19544:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19534:4;19539:1;19534:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19534:23:0;;;:7;;;;;;;;;;;:23;19568:187;;-1:-1:-1;;;19568:187:0;;3203:42;;19568:57;;:187;;19640:11;;19666:1;;19682:4;;19709;;19729:15;;19568:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;:::o;196:180:1:-;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:1;;196:180;-1:-1:-1;196:180:1:o;381:250::-;466:1;476:113;490:6;487:1;484:13;476:113;;;566:11;;;560:18;547:11;;;540:39;512:2;505:10;476:113;;;-1:-1:-1;;623:1:1;605:16;;598:27;381:250::o;636:271::-;678:3;716:5;710:12;743:6;738:3;731:19;759:76;828:6;821:4;816:3;812:14;805:4;798:5;794:16;759:76;:::i;:::-;889:2;868:15;-1:-1:-1;;864:29:1;855:39;;;;896:4;851:50;;636:271;-1:-1:-1;;636:271:1:o;912:220::-;1061:2;1050:9;1043:21;1024:4;1081:45;1122:2;1111:9;1107:18;1099:6;1081:45;:::i;1137:131::-;-1:-1:-1;;;;;1212:31:1;;1202:42;;1192:70;;1258:1;1255;1248:12;1273:134;1341:20;;1370:31;1341:20;1370:31;:::i;:::-;1273:134;;;:::o;1412:315::-;1480:6;1488;1541:2;1529:9;1520:7;1516:23;1512:32;1509:52;;;1557:1;1554;1547:12;1509:52;1596:9;1583:23;1615:31;1640:5;1615:31;:::i;:::-;1665:5;1717:2;1702:18;;;;1689:32;;-1:-1:-1;;;1412:315:1:o;1924:316::-;2001:6;2009;2017;2070:2;2058:9;2049:7;2045:23;2041:32;2038:52;;;2086:1;2083;2076:12;2038:52;-1:-1:-1;;2109:23:1;;;2179:2;2164:18;;2151:32;;-1:-1:-1;2230:2:1;2215:18;;;2202:32;;1924:316;-1:-1:-1;1924:316:1:o;2245:529::-;2322:6;2330;2338;2391:2;2379:9;2370:7;2366:23;2362:32;2359:52;;;2407:1;2404;2397:12;2359:52;2446:9;2433:23;2465:31;2490:5;2465:31;:::i;:::-;2515:5;-1:-1:-1;2572:2:1;2557:18;;2544:32;2585:33;2544:32;2585:33;:::i;:::-;2637:7;-1:-1:-1;2696:2:1;2681:18;;2668:32;2709:33;2668:32;2709:33;:::i;:::-;2761:7;2751:17;;;2245:529;;;;;:::o;2779:456::-;2856:6;2864;2872;2925:2;2913:9;2904:7;2900:23;2896:32;2893:52;;;2941:1;2938;2931:12;2893:52;2980:9;2967:23;2999:31;3024:5;2999:31;:::i;:::-;3049:5;-1:-1:-1;3106:2:1;3091:18;;3078:32;3119:33;3078:32;3119:33;:::i;:::-;2779:456;;3171:7;;-1:-1:-1;;;3225:2:1;3210:18;;;;3197:32;;2779:456::o;3637:247::-;3696:6;3749:2;3737:9;3728:7;3724:23;3720:32;3717:52;;;3765:1;3762;3755:12;3717:52;3804:9;3791:23;3823:31;3848:5;3823:31;:::i;3889:127::-;3950:10;3945:3;3941:20;3938:1;3931:31;3981:4;3978:1;3971:15;4005:4;4002:1;3995:15;4021:719;4064:5;4117:3;4110:4;4102:6;4098:17;4094:27;4084:55;;4135:1;4132;4125:12;4084:55;4171:6;4158:20;4197:18;4234:2;4230;4227:10;4224:36;;;4240:18;;:::i;:::-;4315:2;4309:9;4283:2;4369:13;;-1:-1:-1;;4365:22:1;;;4389:2;4361:31;4357:40;4345:53;;;4413:18;;;4433:22;;;4410:46;4407:72;;;4459:18;;:::i;:::-;4499:10;4495:2;4488:22;4534:2;4526:6;4519:18;4580:3;4573:4;4568:2;4560:6;4556:15;4552:26;4549:35;4546:55;;;4597:1;4594;4587:12;4546:55;4661:2;4654:4;4646:6;4642:17;4635:4;4627:6;4623:17;4610:54;4708:1;4701:4;4696:2;4688:6;4684:15;4680:26;4673:37;4728:6;4719:15;;;;;;4021:719;;;;:::o;4745:118::-;4831:5;4824:13;4817:21;4810:5;4807:32;4797:60;;4853:1;4850;4843:12;4868:128;4933:20;;4962:28;4933:20;4962:28;:::i;5001:1118::-;5158:6;5166;5174;5182;5190;5198;5206;5214;5222;5230;5283:3;5271:9;5262:7;5258:23;5254:33;5251:53;;;5300:1;5297;5290:12;5251:53;5340:9;5327:23;5369:18;5410:2;5402:6;5399:14;5396:34;;;5426:1;5423;5416:12;5396:34;5449:50;5491:7;5482:6;5471:9;5467:22;5449:50;:::i;:::-;5439:60;;5552:2;5541:9;5537:18;5524:32;5508:48;;5581:2;5571:8;5568:16;5565:36;;;5597:1;5594;5587:12;5565:36;;5620:52;5664:7;5653:8;5642:9;5638:24;5620:52;:::i;:::-;5610:62;;;5691:38;5725:2;5714:9;5710:18;5691:38;:::i;:::-;5681:48;;5748:35;5779:2;5768:9;5764:18;5748:35;:::i;:::-;5738:45;;5830:3;5819:9;5815:19;5802:33;5792:43;;5854:39;5888:3;5877:9;5873:19;5854:39;:::i;:::-;5844:49;;5940:3;5929:9;5925:19;5912:33;5902:43;;5964:39;5998:3;5987:9;5983:19;5964:39;:::i;:::-;5954:49;;6050:3;6039:9;6035:19;6022:33;6012:43;;6074:39;6108:3;6097:9;6093:19;6074:39;:::i;:::-;6064:49;;5001:1118;;;;;;;;;;;;;:::o;6124:388::-;6192:6;6200;6253:2;6241:9;6232:7;6228:23;6224:32;6221:52;;;6269:1;6266;6259:12;6221:52;6308:9;6295:23;6327:31;6352:5;6327:31;:::i;:::-;6377:5;-1:-1:-1;6434:2:1;6419:18;;6406:32;6447:33;6406:32;6447:33;:::i;:::-;6499:7;6489:17;;;6124:388;;;;;:::o;6517:309::-;6582:6;6590;6643:2;6631:9;6622:7;6618:23;6614:32;6611:52;;;6659:1;6656;6649:12;6611:52;6698:9;6685:23;6717:28;6739:5;6717:28;:::i;7057:127::-;7118:10;7113:3;7109:20;7106:1;7099:31;7149:4;7146:1;7139:15;7173:4;7170:1;7163:15;7189:168;7262:9;;;7293;;7310:15;;;7304:22;;7290:37;7280:71;;7331:18;;:::i;7362:217::-;7402:1;7428;7418:132;;7472:10;7467:3;7463:20;7460:1;7453:31;7507:4;7504:1;7497:15;7535:4;7532:1;7525:15;7418:132;-1:-1:-1;7564:9:1;;7362:217::o;7584:356::-;7786:2;7768:21;;;7805:18;;;7798:30;7864:34;7859:2;7844:18;;7837:62;7931:2;7916:18;;7584:356::o;8984:251::-;9054:6;9107:2;9095:9;9086:7;9082:23;9078:32;9075:52;;;9123:1;9120;9113:12;9075:52;9155:9;9149:16;9174:31;9199:5;9174:31;:::i;9549:184::-;9619:6;9672:2;9660:9;9651:7;9647:23;9643:32;9640:52;;;9688:1;9685;9678:12;9640:52;-1:-1:-1;9711:16:1;;9549:184;-1:-1:-1;9549:184:1:o;10017:245::-;10084:6;10137:2;10125:9;10116:7;10112:23;10108:32;10105:52;;;10153:1;10150;10143:12;10105:52;10185:9;10179:16;10204:28;10226:5;10204:28;:::i;10267:125::-;10332:9;;;10353:10;;;10350:36;;;10366:18;;:::i;11159:380::-;11238:1;11234:12;;;;11281;;;11302:61;;11356:4;11348:6;11344:17;11334:27;;11302:61;11409:2;11401:6;11398:14;11378:18;11375:38;11372:161;;11455:10;11450:3;11446:20;11443:1;11436:31;11490:4;11487:1;11480:15;11518:4;11515:1;11508:15;11372:161;;11159:380;;;:::o;11544:401::-;11746:2;11728:21;;;11785:2;11765:18;;;11758:30;11824:34;11819:2;11804:18;;11797:62;-1:-1:-1;;;11890:2:1;11875:18;;11868:35;11935:3;11920:19;;11544:401::o;11950:399::-;12152:2;12134:21;;;12191:2;12171:18;;;12164:30;12230:34;12225:2;12210:18;;12203:62;-1:-1:-1;;;12296:2:1;12281:18;;12274:33;12339:3;12324:19;;11950:399::o;12705:128::-;12772:9;;;12793:11;;;12790:37;;;12807:18;;:::i;13532:1063::-;13910:4;13939:3;13969:2;13958:9;13951:21;13995:45;14036:2;14025:9;14021:18;14013:6;13995:45;:::i;:::-;13981:59;;14088:9;14080:6;14076:22;14071:2;14060:9;14056:18;14049:50;14116:33;14142:6;14134;14116:33;:::i;:::-;-1:-1:-1;;;;;14223:15:1;;;14218:2;14203:18;;14196:43;14282:14;;14275:22;14270:2;14255:18;;14248:50;-1:-1:-1;;14329:3:1;14314:19;;14307:35;;;;14379:15;;;14176:3;14358:19;;14351:44;14426:3;14411:19;;14404:35;;;;14476:15;;14470:3;14455:19;;14448:44;14523:3;14508:19;;14501:35;14573:15;;;14567:3;14552:19;;;14545:44;;;;14108:41;13532:1063;-1:-1:-1;;13532:1063:1:o;14600:135::-;14639:3;14660:17;;;14657:43;;14680:18;;:::i;:::-;-1:-1:-1;14727:1:1;14716:13;;14600:135::o;14740:422::-;14829:1;14872:5;14829:1;14886:270;14907:7;14897:8;14894:21;14886:270;;;14966:4;14962:1;14958:6;14954:17;14948:4;14945:27;14942:53;;;14975:18;;:::i;:::-;15025:7;15015:8;15011:22;15008:55;;;15045:16;;;;15008:55;15124:22;;;;15084:15;;;;14886:270;;;14890:3;14740:422;;;;;:::o;15167:806::-;15216:5;15246:8;15236:80;;-1:-1:-1;15287:1:1;15301:5;;15236:80;15335:4;15325:76;;-1:-1:-1;15372:1:1;15386:5;;15325:76;15417:4;15435:1;15430:59;;;;15503:1;15498:130;;;;15410:218;;15430:59;15460:1;15451:10;;15474:5;;;15498:130;15535:3;15525:8;15522:17;15519:43;;;15542:18;;:::i;:::-;-1:-1:-1;;15598:1:1;15584:16;;15613:5;;15410:218;;15712:2;15702:8;15699:16;15693:3;15687:4;15684:13;15680:36;15674:2;15664:8;15661:16;15656:2;15650:4;15647:12;15643:35;15640:77;15637:159;;;-1:-1:-1;15749:19:1;;;15781:5;;15637:159;15828:34;15853:8;15847:4;15828:34;:::i;:::-;15898:6;15894:1;15890:6;15886:19;15877:7;15874:32;15871:58;;;15909:18;;:::i;:::-;15947:20;;15167:806;-1:-1:-1;;;15167:806:1:o;15978:140::-;16036:5;16065:47;16106:4;16096:8;16092:19;16086:4;16065:47;:::i;17077:306::-;17165:6;17173;17181;17234:2;17222:9;17213:7;17209:23;17205:32;17202:52;;;17250:1;17247;17240:12;17202:52;17279:9;17273:16;17263:26;;17329:2;17318:9;17314:18;17308:25;17298:35;;17373:2;17362:9;17358:18;17352:25;17342:35;;17077:306;;;;;:::o;18117:287::-;18246:3;18284:6;18278:13;18300:66;18359:6;18354:3;18347:4;18339:6;18335:17;18300:66;:::i;:::-;18382:16;;;;;18117:287;-1:-1:-1;;18117:287:1:o;20167:127::-;20228:10;20223:3;20219:20;20216:1;20209:31;20259:4;20256:1;20249:15;20283:4;20280:1;20273:15;20299:980;20561:4;20609:3;20598:9;20594:19;20640:6;20629:9;20622:25;20666:2;20704:6;20699:2;20688:9;20684:18;20677:34;20747:3;20742:2;20731:9;20727:18;20720:31;20771:6;20806;20800:13;20837:6;20829;20822:22;20875:3;20864:9;20860:19;20853:26;;20914:2;20906:6;20902:15;20888:29;;20935:1;20945:195;20959:6;20956:1;20953:13;20945:195;;;21024:13;;-1:-1:-1;;;;;21020:39:1;21008:52;;21115:15;;;;21080:12;;;;21056:1;20974:9;20945:195;;;-1:-1:-1;;;;;;;21196:32:1;;;;21191:2;21176:18;;21169:60;-1:-1:-1;;;21260:3:1;21245:19;21238:35;21157:3;20299:980;-1:-1:-1;;;20299:980:1:o

Swarm Source

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