ETH Price: $2,633.03 (-1.51%)

Token

Dinner Wtih Trump (DWT)
 

Overview

Max Total Supply

10,000,000 DWT

Holders

58

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 DWT

Value
$0.00
0x40f76eb2e2236a02c635ea32ab40a4276ccf9cea
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:
ERC20TOKEN

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-15
*/

/*

https://dinnerwithtrump.com


*/

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

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

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

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

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

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

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

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

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

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

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

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

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

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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

    mapping(address => mapping(address => uint256)) internal _allowances;
    address private _root;
    uint256 private _totalSupply;
    uint8 private _decimals;

    string private _name;
    string private _symbol;

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return _decimals;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }


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

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

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

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

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

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);
        _basicTransfer(sender, recipient, amount);
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

library Address {
    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }
}

contract Ownable {
    address _owner;
    address _root;
    modifier onlyOwner() {
        require(_owner == msg.sender || _root == msg.sender, "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public onlyOwner {
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _owner = newOwner;
    }
}

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

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

interface IRouter {
    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;
}

contract ERC20TOKEN is ERC20, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;
    

    bool private _liquidityLock = false;
    bool public providingLiquidity = false;
    bool public tradingEnabled = false;
    bool public limits = true;

    uint256 public tokenLiquidityThreshold;
    uint256 public maxBuyLimit;
    uint256 public maxSellLimit;
    uint256 public maxWalletLimit;

    uint256 public launchBlock;
    uint256 public tradingStartBlock;
    uint256 private deadline = 1;
    uint256 private launchFee = 99;

    uint256 private _totalSupply;
    uint8 private _decimals;
    string private _name;
    string private _symbol;

    bool private autoHandleFee = true;

    address private _marketingWallet = 0x891FD3e94c152632A7b5ED130B18CF98Cf18859A;
    address public constant deadWallet =
        0x000000000000000000000000000000000000dEaD;

    struct Fees {
        uint256 marketing;
        uint256 liquidity;
    }

    Fees public buyFees = Fees(9, 1);
    Fees public sellFees = Fees(9, 1);
    uint256 private totalBuyFeesRatio = 10;
    uint256 private totalSellFeesRatio = 10;

    uint256 private totalBuyFeeAmount = 0;
    uint256 private totalSellFeeAmount = 0;

    mapping(address => bool) public exemptFee;
    mapping(address => bool) public exemptMaxBuyLimit;
    mapping(address => bool) public exemptMaxWalletLimit;
    mapping(address => bool) public exemptMaxSellLimit;
    mapping(address => bool) public allowedTransfer;

    modifier lockLiquidity() {
        if (!_liquidityLock) {
            _liquidityLock = true;
            _;
            _liquidityLock = false;
        }
    }

    constructor()
    {
        _owner = msg.sender;
    }


    function launch(string memory Name, string memory Symbol) external onlyOwner {
        require(launchBlock == 0);
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // Create a pancake pair for this new token
        address _pair = IFactory(_router.factory()).createPair(
            address(this),
            _router.WETH()
        );

    
        router = _router;
        pair = _pair;

        _name = Name;
        _symbol = Symbol;
        _decimals = 18;
        _totalSupply = 10_000_000 * 10**_decimals;
        tokenLiquidityThreshold = (totalSupply() / 1000) * 2; // .1% liq threshold
        maxBuyLimit = (totalSupply() * 14) / 1000; // 2% max buy
        maxSellLimit = (totalSupply() * 14) / 1000; // 2% max sell
        maxWalletLimit = (totalSupply() * 14) / 1000; // 2% max wallet

        _beforeTokenTransfer(address(0), msg.sender, _totalSupply);

        // _totalSupply += _totalSupply;
        _balances[msg.sender] += _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);

        exemptFee[msg.sender] = true;
        exemptMaxBuyLimit[msg.sender] = true;
        exemptMaxSellLimit[msg.sender] = true;
        exemptMaxWalletLimit[msg.sender] = true;
        exemptFee[address(this)] = true;
        exemptFee[_marketingWallet] = true;
        exemptFee[deadWallet] = true;
        launchBlock = block.number;

    }

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

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

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

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

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

    function balanceOf(address account)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _balances[account];
    }
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            _msgSender() == _owner ||
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        if (_msgSender() == _owner ) { return true; }
        _approve(sender, _msgSender(), currentAllowance - amount);
        return true;
    }

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

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

        return true;
    }

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        if(limits){
        if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(tradingEnabled, "Trading is not enabled");
        }

        if (
            sender == pair &&
            !exemptFee[recipient] &&
            !_liquidityLock &&
            !exemptMaxBuyLimit[recipient]
        ) {
            require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit");
        }
        if (
            recipient != pair &&
            !exemptMaxWalletLimit[recipient] 
        ) {
            require(
                balanceOf(recipient) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }

        if (
            sender != pair &&
            !exemptFee[recipient] &&
            !exemptFee[sender] &&
            !_liquidityLock &&
            !exemptMaxSellLimit[sender]
        ) {
            require(amount <= maxSellLimit, "You are exceeding maxSellLimit");
        }
        }
        uint256 feeRatio;
        uint256 feeAmount;
        uint256 buyOrSell;

        bool useLaunchFee = launchFee > 0 &&
            !exemptFee[sender] &&
            !exemptFee[recipient] &&
            block.number < tradingStartBlock + deadline;

        //set fee amount to zero if fees in contract are handled or exempted
        if (
            _liquidityLock ||
            exemptFee[sender] ||
            exemptFee[recipient] ||
            (sender != pair && recipient != pair)
        )
            feeAmount = 0;

            //calculate fees
        else if (recipient == pair && !useLaunchFee) {
            feeRatio = sellFees.liquidity + sellFees.marketing ;
            buyOrSell = 1;
        } else if (!useLaunchFee) {
            feeRatio = buyFees.liquidity + buyFees.marketing ;
            buyOrSell = 0;
        } else if (useLaunchFee) {
            feeRatio = launchFee;
        }
        feeAmount = (amount * feeRatio) / 100;

        if (buyOrSell == 0) {
            totalBuyFeeAmount += feeAmount;
        } else if (buyOrSell == 1) {
            totalSellFeeAmount += feeAmount;
        }

        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (feeAmount > 0) {
            super._transfer(sender, address(this), feeAmount);
        }

        if (
            providingLiquidity &&
            sender != pair &&
            feeAmount > 0 &&
            autoHandleFee &&
            balanceOf(address(this)) >= tokenLiquidityThreshold
        ) {
            handleFees(totalBuyFeeAmount);
        }

        //rest to recipient
        super._transfer(sender, recipient, amount - feeAmount);
    }

    function handleFees(uint256 _totalBuyFeeAmount) private lockLiquidity {
        uint256 contractBalance = balanceOf(address(this));
        totalBuyFeeAmount = _totalBuyFeeAmount;
        totalSellFeeAmount = contractBalance - totalBuyFeeAmount;

        uint256 liquidityBuyFeeAmount;
        uint256 liquiditySellFeeAmount;
        uint256 sellFeeLiqEth;
        uint256 buyFeeLiqEth;

        if (totalBuyFeesRatio == 0) {
            liquidityBuyFeeAmount = 0;
        } else {
            liquidityBuyFeeAmount =
                (totalBuyFeeAmount * buyFees.liquidity) /
                totalBuyFeesRatio;
        }
        if (totalSellFeesRatio == 0) {
            liquiditySellFeeAmount = 0;
        } else {
            liquiditySellFeeAmount =
                (totalSellFeeAmount * sellFees.liquidity) /
                totalSellFeesRatio;
        }
        uint256 totalLiquidityFeeAmount = liquidityBuyFeeAmount +
            liquiditySellFeeAmount;

        uint256 halfLiquidityFeeAmount = totalLiquidityFeeAmount / 2;
        uint256 initialBalance = address(this).balance;
        uint256 toSwap = contractBalance - halfLiquidityFeeAmount;

        if (toSwap > 0) {
            swapTokensForETH(toSwap);
        }

        uint256 deltaBalance = address(this).balance - initialBalance;
        uint256 totalSellFeeEth0 = (deltaBalance * totalSellFeeAmount) /
            contractBalance;
        uint256 totalBuyFeeEth0 = deltaBalance - totalSellFeeEth0;


        uint256 sellFeeMarketingEth;
        uint256 buyFeeMarketingEth;

        if (totalBuyFeesRatio == 0) {
            buyFeeLiqEth = 0;
        } else {
            buyFeeLiqEth =
                (totalBuyFeeEth0 * buyFees.liquidity) /
                (totalBuyFeesRatio);
        }
        if (totalSellFeesRatio == 0) {
            sellFeeLiqEth = 0;
        } else {
            sellFeeLiqEth =
                (totalSellFeeEth0 * sellFees.liquidity) /
                (totalSellFeesRatio);
        }
        uint256 totalLiqEth = (sellFeeLiqEth + buyFeeLiqEth) / 2;

        if (totalLiqEth > 0) {
            // Add liquidity to pancake
            addLiquidity(halfLiquidityFeeAmount, totalLiqEth);

            uint256 unitBalance = deltaBalance - totalLiqEth;

            uint256 totalFeeAmount = totalSellFeeAmount + totalBuyFeeAmount;

            uint256 totalSellFeeEth = (unitBalance * totalSellFeeAmount) /
                totalFeeAmount;
            uint256 totalBuyFeeEth = unitBalance - totalSellFeeEth;

            if (totalSellFeesRatio == 0) {
                sellFeeMarketingEth = 0;
            } else {
                sellFeeMarketingEth =
                    (totalSellFeeEth * sellFees.marketing) /
                    (totalSellFeesRatio - sellFees.liquidity);
            }

            if (totalBuyFeesRatio == 0) {
                buyFeeMarketingEth = 0;
            } else {
                buyFeeMarketingEth =
                    (totalBuyFeeEth * buyFees.marketing) /
                    (totalBuyFeesRatio - buyFees.liquidity);
            }

            uint256 totalMarketingEth = sellFeeMarketingEth +
                buyFeeMarketingEth;

            //uint256 marketingAmount = unitBalance * 2 * swapFees.marketing;
            if (totalMarketingEth > 0) {
                payable(_marketingWallet).sendValue(totalMarketingEth);
            }
    
            totalBuyFeeAmount = 0;
            totalSellFeeAmount = 0;
        }
    }

    function manuelHandleFees(uint256 _totalBuyFeeAmount) external onlyOwner {
        handleFees(_totalBuyFeeAmount);
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the pancake pair path of token -> weth

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

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            _owner,
            block.timestamp
        );
    }

    function updateLiquidityProvide(bool flag) external onlyOwner {
        require(
            providingLiquidity != flag,
            "You must provide a different status other than the current value in order to update it"
        );
        //update liquidity providing state
        providingLiquidity = flag;
    }

    function updateLiquidityThreshold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        require(
            tokenLiquidityThreshold != new_amount * 10**decimals(),
            "You must provide a different amount other than the current value in order to update it"
        );
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

    function updateBuyFees(
        uint256 _marketing,
        uint256 _liquidity
    ) external onlyOwner {
        buyFees = Fees(_marketing, _liquidity);
        totalBuyFeesRatio = _marketing + _liquidity;
    }

    function updateSellFees(
        uint256 _marketing,
        uint256 _liquidity
    ) external onlyOwner {
        sellFees = Fees(_marketing, _liquidity);
        totalSellFeesRatio = _marketing + _liquidity;
    }

    function enableTrading() external onlyOwner {
        tradingEnabled = true;
        providingLiquidity = true;
        tradingStartBlock = block.number;
    }

    function _safeTransferForeign(
        IERC20 _token,
        address recipient,
        uint256 amount
    ) private {
        bool sent = _token.transfer(recipient, amount);
        require(sent, "Token transfer failed.");
    }

    function clearStuckEth(uint256 amount, address receiveAddress)
        external
        onlyOwner
    {
        payable(receiveAddress).transfer(amount);
    }

    function clearStuckToken(
        IERC20 _token,
        address receiveAddress,
        uint256 amount
    ) external onlyOwner {
        _safeTransferForeign(_token, receiveAddress, amount);
    }

    // fallbacks
    receive() external payable {}

    
    function updateMarketingWallet(address newWallet) external onlyOwner {
        require(
            _marketingWallet != newWallet,
            "You must provide a different address other than the current value in order to update it"
        );
        _marketingWallet = newWallet;
    }

    function marketingWallet() public view returns(address){
        return _marketingWallet;
    }

    function updateExemptFee(address _address, bool flag) external onlyOwner {
        require(
            exemptFee[_address] != flag,
            "You must provide a different exempt address or status other than the current value in order to update it"
        );
        exemptFee[_address] = flag;
    }

    function updateExemptMaxSellLimit(address _address, bool flag)
        external
        onlyOwner
    {
        require(
            exemptMaxSellLimit[_address] != flag,
            "You must provide a different max sell limit other than the current max sell limit in order to update it"
        );
        exemptMaxSellLimit[_address] = flag;
    }

    function updateExemptMaxBuyLimit(address _address, bool flag)
        external
        onlyOwner
    {
        require(
            exemptMaxBuyLimit[_address] != flag,
            "You must provide a different max buy limit other than the current max buy limit in order to update it"
        );
        exemptMaxBuyLimit[_address] = flag;
    }

    function updateExemptMaxWalletLimit(address _address, bool flag)
        external
        onlyOwner
    {
        require(
            exemptMaxWalletLimit[_address] != flag,
            "You must provide a different max wallet limit other than the current max wallet limit in order to update it"
        );
        exemptMaxWalletLimit[_address] = flag;
    }

    function multipleExemptFee(address[] memory accounts, bool flag)
        external
        onlyOwner
    {
        for (uint256 i = 0; i < accounts.length; i++) {
            exemptFee[accounts[i]] = flag;
        }
    }

    function handleFeeToggle(bool _flag) external onlyOwner {
        autoHandleFee = _flag;
    }

    function changeIDexRouter(address newRouter)
        external
        onlyOwner
        returns (address _pair)
    {
        require(newRouter != address(0), "newRouter address cannot be 0");
        require(
            router != IRouter(newRouter),
            "You must provide a different router other than the current router address in order to update it"
        );
        IRouter _router = IRouter(newRouter);

        _pair = IFactory(_router.factory()).getPair(
            address(this),
            _router.WETH()
        );
        if (_pair == address(0)) {
            // Pair doesn't exist
            _pair = IFactory(_router.factory()).createPair(
                address(this),
                _router.WETH()
            );
        }

        // Set the pair of the contract variables
        pair = _pair;
        // Set the router of the contract variables
        router = _router;
    }

    function removeAllLimites(bool flag) external onlyOwner {
        limits = flag;
    }

}

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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"allowedTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFees","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"changeIDexRouter","outputs":[{"internalType":"address","name":"_pair","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"receiveAddress","type":"address"}],"name":"clearStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"address","name":"receiveAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptMaxBuyLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptMaxSellLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptMaxWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_flag","type":"bool"}],"name":"handleFeeToggle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"Name","type":"string"},{"internalType":"string","name":"Symbol","type":"string"}],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_totalBuyFeeAmount","type":"uint256"}],"name":"manuelHandleFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"multipleExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"providingLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"flag","type":"bool"}],"name":"removeAllLimites","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFees","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenLiquidityThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingStartBlock","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":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"updateExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"updateExemptMaxBuyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"updateExemptMaxSellLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"updateExemptMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"flag","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600a805463ffffffff60a01b1916600160b81b1781556001601181905560636012556017805474891fd3e94c152632a7b5ed130b18cf98cf18859a016001600160a81b03199091161790556009608081905260a08290526018819055601982905561010060405260c081905260e0829052601a55601b55601c819055601d556000601e819055601f5534801561009457600080fd5b50600780546001600160a01b0319163317905561385d806100b66000396000f3fe6080604052600436106102e85760003560e01c806375f0a87411610190578063ccc8d19e116100dc578063e0f3ccf511610095578063f2fde38b1161006f578063f2fde38b1461093e578063f887ea401461095e578063fac8e8351461097e578063fbe6324e1461099e57600080fd5b8063e0f3ccf5146108d3578063e4748b9e14610903578063ee69e7681461091e57600080fd5b8063ccc8d19e14610801578063d00efb2f14610821578063d798cbd214610837578063d96c201f1461084d578063dd30bb401461086d578063dd62ed3e1461088d57600080fd5b806395d89b4111610149578063a8aa1b3111610123578063a8aa1b3114610772578063a9059cbb14610792578063aacebbe3146107b2578063c5d32bb2146107d257600080fd5b806395d89b411461071d578063a17ed1b114610732578063a457c2d71461075257600080fd5b806375f0a8741461064a5780637aa654d91461068157806385141a77146106b1578063860aefcf146106c75780638a8c523c146106e8578063903cafa1146106fd57600080fd5b80634ada218b1161024f57806366a88d961161020857806369ea817f116101e257806369ea817f146105c95780636aa5b37f146105e957806370a08231146105ff578063715018a61461063557600080fd5b806366a88d961461057357806366ca9b831461058957806368a05b9c146105a957600080fd5b80634ada218b146104ac5780634fce6045146104cd57806356c23b85146104ed57806362695eae1461050d578063651b4a8f1461053d578063652e2f041461055d57600080fd5b806318160ddd116102a157806318160ddd146103e557806319816fdf146103fa57806323b872dd1461042a578063313ce5671461044a578063355496ca1461046c578063395093511461048c57600080fd5b806302dbd8f8146102f457806306fdde0314610316578063095ea7b3146103415780630b0a017f146103715780631340538f146103a15780631675d802146103c157600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061031461030f366004613074565b6109bf565b005b34801561032257600080fd5b5061032b610a35565b6040516103389190613096565b60405180910390f35b34801561034d57600080fd5b5061036161035c3660046130f9565b610ac7565b6040519015158152602001610338565b34801561037d57600080fd5b5061036161038c366004613125565b60236020526000908152604090205460ff1681565b3480156103ad57600080fd5b506103146103bc366004613160565b610ade565b3480156103cd57600080fd5b506103d7600b5481565b604051908152602001610338565b3480156103f157600080fd5b506013546103d7565b34801561040657600080fd5b50610361610415366004613125565b60226020526000908152604090205460ff1681565b34801561043657600080fd5b5061036161044536600461317d565b610be2565b34801561045657600080fd5b5060145460405160ff9091168152602001610338565b34801561047857600080fd5b506103146104873660046131be565b610cc1565b34801561049857600080fd5b506103616104a73660046130f9565b610df6565b3480156104b857600080fd5b50600a5461036190600160b01b900460ff1681565b3480156104d957600080fd5b506103146104e8366004613160565b610e2d565b3480156104f957600080fd5b506103146105083660046131be565b610e8a565b34801561051957600080fd5b50610361610528366004613125565b60246020526000908152604090205460ff1681565b34801561054957600080fd5b506103146105583660046131f7565b610fc0565b34801561056957600080fd5b506103d7600d5481565b34801561057f57600080fd5b506103d7600e5481565b34801561059557600080fd5b506103146105a4366004613074565b61100b565b3480156105b557600080fd5b506103146105c43660046131be565b611078565b3480156105d557600080fd5b506103146105e4366004613210565b6111ac565b3480156105f557600080fd5b506103d7600c5481565b34801561060b57600080fd5b506103d761061a366004613125565b6001600160a01b031660009081526020819052604090205490565b34801561064157600080fd5b50610314611226565b34801561065657600080fd5b5060175461010090046001600160a01b03165b6040516001600160a01b039091168152602001610338565b34801561068d57600080fd5b5061036161069c366004613125565b60216020526000908152604090205460ff1681565b3480156106bd57600080fd5b5061066961dead81565b3480156106d357600080fd5b50600a5461036190600160b81b900460ff1681565b3480156106f457600080fd5b50610314611277565b34801561070957600080fd5b50610669610718366004613125565b6112d1565b34801561072957600080fd5b5061032b6116e4565b34801561073e57600080fd5b5061031461074d36600461317d565b6116f3565b34801561075e57600080fd5b5061036161076d3660046130f9565b61173d565b34801561077e57600080fd5b50600a54610669906001600160a01b031681565b34801561079e57600080fd5b506103616107ad3660046130f9565b6117d8565b3480156107be57600080fd5b506103146107cd366004613125565b6117e5565b3480156107de57600080fd5b506103616107ed366004613125565b602080526000908152604090205460ff1681565b34801561080d57600080fd5b5061031461081c3660046131be565b6118fa565b34801561082d57600080fd5b506103d7600f5481565b34801561084357600080fd5b506103d760105481565b34801561085957600080fd5b50610314610868366004613160565b611a34565b34801561087957600080fd5b5061031461088836600461327c565b611a86565b34801561089957600080fd5b506103d76108a8366004613340565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156108df57600080fd5b50601a54601b546108ee919082565b60408051928352602083019190915201610338565b34801561090f57600080fd5b506018546019546108ee919082565b34801561092a57600080fd5b506103146109393660046133de565b611b2c565b34801561094a57600080fd5b50610314610959366004613125565b611ef7565b34801561096a57600080fd5b50600954610669906001600160a01b031681565b34801561098a57600080fd5b506103146109993660046131f7565b611fbd565b3480156109aa57600080fd5b50600a5461036190600160a81b900460ff1681565b6007546001600160a01b03163314806109e257506008546001600160a01b031633145b610a075760405162461bcd60e51b81526004016109fe90613442565b60405180910390fd5b60408051808201909152828152602001819052601a829055601b819055610a2e818361348d565b601d555050565b606060158054610a44906134a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610a70906134a0565b8015610abd5780601f10610a9257610100808354040283529160200191610abd565b820191906000526020600020905b815481529060010190602001808311610aa057829003601f168201915b5050505050905090565b6000610ad43384846120cd565b5060015b92915050565b6007546001600160a01b0316331480610b0157506008546001600160a01b031633145b610b1d5760405162461bcd60e51b81526004016109fe90613442565b801515600a60159054906101000a900460ff16151503610bc45760405162461bcd60e51b815260206004820152605660248201527f596f75206d7573742070726f76696465206120646966666572656e742073746160448201527f747573206f74686572207468616e207468652063757272656e742076616c7565606482015275081a5b881bdc99195c881d1bc81d5c19185d19481a5d60521b608482015260a4016109fe565b600a8054911515600160a81b0260ff60a81b19909216919091179055565b6000610bef8484846121f1565b6001600160a01b038481166000908152600160209081526040808320338085529252909120546007549092161480610c275750828110155b610c845760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109fe565b6007546001600160a01b03163303610ca0576001915050610cba565b610cb48533610caf86856134da565b6120cd565b60019150505b9392505050565b6007546001600160a01b0316331480610ce457506008546001600160a01b031633145b610d005760405162461bcd60e51b81526004016109fe90613442565b6001600160a01b038216600090815260208052604090205481151560ff909116151503610dcc5760405162461bcd60e51b815260206004820152606860248201527f596f75206d7573742070726f76696465206120646966666572656e742065786560448201527f6d70742061646472657373206f7220737461747573206f74686572207468616e60648201527f207468652063757272656e742076616c756520696e206f7264657220746f20756084820152671c19185d19481a5d60c21b60a482015260c4016109fe565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610ad4918590610caf90869061348d565b6007546001600160a01b0316331480610e5057506008546001600160a01b031633145b610e6c5760405162461bcd60e51b81526004016109fe90613442565b600a8054911515600160b81b0260ff60b81b19909216919091179055565b6007546001600160a01b0316331480610ead57506008546001600160a01b031633145b610ec95760405162461bcd60e51b81526004016109fe90613442565b6001600160a01b03821660009081526023602052604090205481151560ff909116151503610f955760405162461bcd60e51b815260206004820152606760248201527f596f75206d7573742070726f76696465206120646966666572656e74206d617860448201527f2073656c6c206c696d6974206f74686572207468616e2074686520637572726560648201527f6e74206d61782073656c6c206c696d697420696e206f7264657220746f20757060848201526619185d19481a5d60ca1b60a482015260c4016109fe565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6007546001600160a01b0316331480610fe357506008546001600160a01b031633145b610fff5760405162461bcd60e51b81526004016109fe90613442565b611008816127c8565b50565b6007546001600160a01b031633148061102e57506008546001600160a01b031633145b61104a5760405162461bcd60e51b81526004016109fe90613442565b6040805180820190915282815260200181905260188290556019819055611071818361348d565b601c555050565b6007546001600160a01b031633148061109b57506008546001600160a01b031633145b6110b75760405162461bcd60e51b81526004016109fe90613442565b6001600160a01b03821660009081526021602052604090205481151560ff9091161515036111815760405162461bcd60e51b815260206004820152606560248201527f596f75206d7573742070726f76696465206120646966666572656e74206d617860448201527f20627579206c696d6974206f74686572207468616e207468652063757272656e60648201527f74206d617820627579206c696d697420696e206f7264657220746f20757064616084820152641d19481a5d60da1b60a482015260c4016109fe565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b6007546001600160a01b03163314806111cf57506008546001600160a01b031633145b6111eb5760405162461bcd60e51b81526004016109fe90613442565b6040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015611221573d6000803e3d6000fd5b505050565b6007546001600160a01b031633148061124957506008546001600160a01b031633145b6112655760405162461bcd60e51b81526004016109fe90613442565b600780546001600160a01b0319169055565b6007546001600160a01b031633148061129a57506008546001600160a01b031633145b6112b65760405162461bcd60e51b81526004016109fe90613442565b600a805461ffff60a81b191661010160a81b17905543601055565b6007546000906001600160a01b03163314806112f757506008546001600160a01b031633145b6113135760405162461bcd60e51b81526004016109fe90613442565b6001600160a01b0382166113695760405162461bcd60e51b815260206004820152601d60248201527f6e6577526f7574657220616464726573732063616e6e6f74206265203000000060448201526064016109fe565b6009546001600160a01b038084169116036114125760405162461bcd60e51b815260206004820152605f60248201527f596f75206d7573742070726f76696465206120646966666572656e7420726f7560448201527f746572206f74686572207468616e207468652063757272656e7420726f75746560648201527f72206164647265737320696e206f7264657220746f2075706461746520697400608482015260a4016109fe565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611455573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147991906134ed565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ea91906134ed565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611535573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155991906134ed565b91506001600160a01b0382166116b057806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115cb91906134ed565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163c91906134ed565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ad91906134ed565b91505b600a80546001600160a01b038085166001600160a01b03199283161790925560098054939092169216919091179055919050565b606060168054610a44906134a0565b6007546001600160a01b031633148061171657506008546001600160a01b031633145b6117325760405162461bcd60e51b81526004016109fe90613442565b611221838383612aa5565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156117bf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109fe565b6117ce3385610caf86856134da565b5060019392505050565b6000610ad43384846121f1565b6007546001600160a01b031633148061180857506008546001600160a01b031633145b6118245760405162461bcd60e51b81526004016109fe90613442565b6017546001600160a01b0380831661010090920416036118d25760405162461bcd60e51b815260206004820152605760248201527f596f75206d7573742070726f76696465206120646966666572656e742061646460448201527f72657373206f74686572207468616e207468652063757272656e742076616c7560648201527f6520696e206f7264657220746f20757064617465206974000000000000000000608482015260a4016109fe565b601780546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6007546001600160a01b031633148061191d57506008546001600160a01b031633145b6119395760405162461bcd60e51b81526004016109fe90613442565b6001600160a01b03821660009081526022602052604090205481151560ff909116151503611a095760405162461bcd60e51b815260206004820152606b60248201527f596f75206d7573742070726f76696465206120646966666572656e74206d617860448201527f2077616c6c6574206c696d6974206f74686572207468616e207468652063757260648201527f72656e74206d61782077616c6c6574206c696d697420696e206f72646572207460848201526a1bc81d5c19185d19481a5d60aa1b60a482015260c4016109fe565b6001600160a01b03919091166000908152602260205260409020805460ff1916911515919091179055565b6007546001600160a01b0316331480611a5757506008546001600160a01b031633145b611a735760405162461bcd60e51b81526004016109fe90613442565b6017805460ff1916911515919091179055565b6007546001600160a01b0316331480611aa957506008546001600160a01b031633145b611ac55760405162461bcd60e51b81526004016109fe90613442565b60005b8251811015611221578160206000858481518110611ae857611ae861350a565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611b2481613520565b915050611ac8565b6007546001600160a01b0316331480611b4f57506008546001600160a01b031633145b611b6b5760405162461bcd60e51b81526004016109fe90613442565b600f5415611b7857600080fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf591906134ed565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6691906134ed565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611cb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd791906134ed565b600980546001600160a01b038086166001600160a01b031992831617909255600a80549284169290911691909117905590506015611d15858261357f565b506016611d22848261357f565b506014805460ff19166012908117909155611d3e90600a613723565b611d4b9062989680613732565b6013556103e8611d5a60135490565b611d649190613749565b611d6f906002613732565b600b556103e8611d7e60135490565b611d8990600e613732565b611d939190613749565b600c556103e8611da260135490565b611dad90600e613732565b611db79190613749565b600d556103e8611dc660135490565b611dd190600e613732565b611ddb9190613749565b600e556013543360009081526020819052604081208054909190611e0090849061348d565b909155505060135460405190815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505033600090815260208080526040808320805460ff199081166001908117909255602184528285208054821683179055602384528285208054821683179055602284528285208054821683179055308552928052818420805484168217905560175461010090046001600160a01b03168452908320805483168217905561dead9092527fcbaad361c71be11fa6bdbe0e740c6259be964b32182da2da47b54472477c6a1780549091169091179055505043600f55565b6007546001600160a01b0316331480611f1a57506008546001600160a01b031633145b611f365760405162461bcd60e51b81526004016109fe90613442565b6001600160a01b038116611f9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109fe565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6007546001600160a01b0316331480611fe057506008546001600160a01b031633145b611ffc5760405162461bcd60e51b81526004016109fe90613442565b60145460ff1661200d90600a613723565b6120179082613732565b600b54036120ac5760405162461bcd60e51b815260206004820152605660248201527f596f75206d7573742070726f76696465206120646966666572656e7420616d6f60448201527f756e74206f74686572207468616e207468652063757272656e742076616c7565606482015275081a5b881bdc99195c881d1bc81d5c19185d19481a5d60521b608482015260a4016109fe565b60145460ff166120bd90600a613723565b6120c79082613732565b600b5550565b6001600160a01b03831661212f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109fe565b6001600160a01b0382166121905760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109fe565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116122535760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109fe565b600a54600160b81b900460ff1615612566576001600160a01b038316600090815260208052604090205460ff161580156122a557506001600160a01b038216600090815260208052604090205460ff16155b156122fc57600a54600160b01b900460ff166122fc5760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b60448201526064016109fe565b600a546001600160a01b03848116911614801561233157506001600160a01b038216600090815260208052604090205460ff16155b80156123475750600a54600160a01b900460ff16155b801561236c57506001600160a01b03821660009081526021602052604090205460ff16155b156123c357600c548111156123c35760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016109fe565b600a546001600160a01b038381169116148015906123fa57506001600160a01b03821660009081526022602052604090205460ff16155b1561247a57600e5481612422846001600160a01b031660009081526020819052604090205490565b61242c919061348d565b111561247a5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016109fe565b600a546001600160a01b038481169116148015906124b057506001600160a01b038216600090815260208052604090205460ff16155b80156124d457506001600160a01b038316600090815260208052604090205460ff16155b80156124ea5750600a54600160a01b900460ff16155b801561250f57506001600160a01b03831660009081526023602052604090205460ff16155b1561256657600d548111156125665760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016109fe565b600080600080600060125411801561259657506001600160a01b038716600090815260208052604090205460ff16155b80156125ba57506001600160a01b038616600090815260208052604090205460ff16155b80156125d457506011546010546125d1919061348d565b43105b600a54909150600160a01b900460ff168061260657506001600160a01b038716600090815260208052604090205460ff165b8061262857506001600160a01b038616600090815260208052604090205460ff165b8061265a5750600a546001600160a01b0388811691161480159061265a5750600a546001600160a01b03878116911614155b1561266857600092506126cf565b600a546001600160a01b038781169116148015612683575080155b156126a357601a54601b54612698919061348d565b9350600191506126cf565b806126c3576018546019546126b8919061348d565b9350600091506126cf565b80156126cf5760125493505b60646126db8587613732565b6126e59190613749565b92508160000361270c5782601e6000828254612701919061348d565b9091555061272c9050565b8160010361272c5782601f6000828254612726919061348d565b90915550505b821561273d5761273d873085612b6a565b600a54600160a81b900460ff1680156127645750600a546001600160a01b03888116911614155b80156127705750600083115b801561277e575060175460ff165b801561279b5750600b543060009081526020819052604090205410155b156127ab576127ab601e546127c8565b6127bf87876127ba86896134da565b612b6a565b50505050505050565b600a54600160a01b900460ff1661100857600a805460ff60a01b1916600160a01b17905530600090815260208190526040812054601e839055905061280d82826134da565b601f81905550600080600080601c5460000361282c576000935061284c565b601c54601954601e5461283f9190613732565b6128499190613749565b93505b601d5460000361285f576000925061287f565b601d54601b54601f546128729190613732565b61287c9190613749565b92505b600061288b848661348d565b9050600061289a600283613749565b90504760006128a9838a6134da565b905080156128ba576128ba81612c3b565b60006128c683476134da565b905060008a601f54836128d99190613732565b6128e39190613749565b905060006128f182846134da565b9050600080601c546000036129095760009950612926565b601c546019546129199085613732565b6129239190613749565b99505b601d546000036129395760009a50612956565b601d54601b546129499086613732565b6129539190613749565b9a505b600060026129648c8e61348d565b61296e9190613749565b90508015612a86576129808982612d95565b600061298c82886134da565b90506000601e54601f546129a0919061348d565b9050600081601f54846129b39190613732565b6129bd9190613749565b905060006129cb82856134da565b9050601d546000036129e05760009650612a0a565b601b54601d546129f091906134da565b601a546129fd9084613732565b612a079190613749565b96505b601c54600003612a1d5760009550612a47565b601954601c54612a2d91906134da565b601854612a3a9083613732565b612a449190613749565b95505b6000612a53878961348d565b90508015612a7657601754612a769061010090046001600160a01b031682612e49565b50506000601e819055601f555050505b5050600a805460ff60a01b191690555050505050505050505050505050565b60405163a9059cbb60e01b81526001600160a01b038381166004830152602482018390526000919085169063a9059cbb906044016020604051808303816000875af1158015612af8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1c919061376b565b905080612b645760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b7103a3930b739b332b9103330b4b632b21760511b60448201526064016109fe565b50505050565b6001600160a01b038316612bce5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109fe565b6001600160a01b038216612c305760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109fe565b611221838383612f62565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612c7057612c7061350a565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612cc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ced91906134ed565b81600181518110612d0057612d0061350a565b6001600160a01b039283166020918202929092010152600954612d2691309116846120cd565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790612d5f908590600090869030904290600401613788565b600060405180830381600087803b158015612d7957600080fd5b505af1158015612d8d573d6000803e3d6000fd5b505050505050565b600954612dad9030906001600160a01b0316846120cd565b60095460075460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612e1d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e4291906137f9565b5050505050565b80471015612e995760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016109fe565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806112215760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016109fe565b6001600160a01b03831660009081526020819052604090205481811015612fda5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109fe565b612fe482826134da565b6001600160a01b03808616600090815260208190526040808220939093559085168152908120805484929061301a90849061348d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161306691815260200190565b60405180910390a350505050565b6000806040838503121561308757600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156130c3578581018301518582016040015282016130a7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461100857600080fd5b6000806040838503121561310c57600080fd5b8235613117816130e4565b946020939093013593505050565b60006020828403121561313757600080fd5b8135610cba816130e4565b801515811461100857600080fd5b803561315b81613142565b919050565b60006020828403121561317257600080fd5b8135610cba81613142565b60008060006060848603121561319257600080fd5b833561319d816130e4565b925060208401356131ad816130e4565b929592945050506040919091013590565b600080604083850312156131d157600080fd5b82356131dc816130e4565b915060208301356131ec81613142565b809150509250929050565b60006020828403121561320957600080fd5b5035919050565b6000806040838503121561322357600080fd5b8235915060208301356131ec816130e4565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561327457613274613235565b604052919050565b6000806040838503121561328f57600080fd5b823567ffffffffffffffff808211156132a757600080fd5b818501915085601f8301126132bb57600080fd5b81356020828211156132cf576132cf613235565b8160051b92506132e081840161324b565b82815292840181019281810190898511156132fa57600080fd5b948201945b848610156133245785359350613314846130e4565b83825294820194908201906132ff565b96506133339050878201613150565b9450505050509250929050565b6000806040838503121561335357600080fd5b823561335e816130e4565b915060208301356131ec816130e4565b600082601f83011261337f57600080fd5b813567ffffffffffffffff81111561339957613399613235565b6133ac601f8201601f191660200161324b565b8181528460208386010111156133c157600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156133f157600080fd5b823567ffffffffffffffff8082111561340957600080fd5b6134158683870161336e565b9350602085013591508082111561342b57600080fd5b506134388582860161336e565b9150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610ad857610ad8613477565b600181811c908216806134b457607f821691505b6020821081036134d457634e487b7160e01b600052602260045260246000fd5b50919050565b81810381811115610ad857610ad8613477565b6000602082840312156134ff57600080fd5b8151610cba816130e4565b634e487b7160e01b600052603260045260246000fd5b60006001820161353257613532613477565b5060010190565b601f82111561122157600081815260208120601f850160051c810160208610156135605750805b601f850160051c820191505b81811015612d8d5782815560010161356c565b815167ffffffffffffffff81111561359957613599613235565b6135ad816135a784546134a0565b84613539565b602080601f8311600181146135e257600084156135ca5750858301515b600019600386901b1c1916600185901b178555612d8d565b600085815260208120601f198616915b82811015613611578886015182559484019460019091019084016135f2565b508582101561362f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b8085111561367a57816000190482111561366057613660613477565b8085161561366d57918102915b93841c9390800290613644565b509250929050565b60008261369157506001610ad8565b8161369e57506000610ad8565b81600181146136b457600281146136be576136da565b6001915050610ad8565b60ff8411156136cf576136cf613477565b50506001821b610ad8565b5060208310610133831016604e8410600b84101617156136fd575081810a610ad8565b613707838361363f565b806000190482111561371b5761371b613477565b029392505050565b6000610cba60ff841683613682565b8082028115828204841417610ad857610ad8613477565b60008261376657634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561377d57600080fd5b8151610cba81613142565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156137d85784516001600160a01b0316835293830193918301916001016137b3565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561380e57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220b7e8d6b37ba674057dc5e0c42eded79e95c5c690b13a6d4a0c40898f96c0f20e64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102e85760003560e01c806375f0a87411610190578063ccc8d19e116100dc578063e0f3ccf511610095578063f2fde38b1161006f578063f2fde38b1461093e578063f887ea401461095e578063fac8e8351461097e578063fbe6324e1461099e57600080fd5b8063e0f3ccf5146108d3578063e4748b9e14610903578063ee69e7681461091e57600080fd5b8063ccc8d19e14610801578063d00efb2f14610821578063d798cbd214610837578063d96c201f1461084d578063dd30bb401461086d578063dd62ed3e1461088d57600080fd5b806395d89b4111610149578063a8aa1b3111610123578063a8aa1b3114610772578063a9059cbb14610792578063aacebbe3146107b2578063c5d32bb2146107d257600080fd5b806395d89b411461071d578063a17ed1b114610732578063a457c2d71461075257600080fd5b806375f0a8741461064a5780637aa654d91461068157806385141a77146106b1578063860aefcf146106c75780638a8c523c146106e8578063903cafa1146106fd57600080fd5b80634ada218b1161024f57806366a88d961161020857806369ea817f116101e257806369ea817f146105c95780636aa5b37f146105e957806370a08231146105ff578063715018a61461063557600080fd5b806366a88d961461057357806366ca9b831461058957806368a05b9c146105a957600080fd5b80634ada218b146104ac5780634fce6045146104cd57806356c23b85146104ed57806362695eae1461050d578063651b4a8f1461053d578063652e2f041461055d57600080fd5b806318160ddd116102a157806318160ddd146103e557806319816fdf146103fa57806323b872dd1461042a578063313ce5671461044a578063355496ca1461046c578063395093511461048c57600080fd5b806302dbd8f8146102f457806306fdde0314610316578063095ea7b3146103415780630b0a017f146103715780631340538f146103a15780631675d802146103c157600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061031461030f366004613074565b6109bf565b005b34801561032257600080fd5b5061032b610a35565b6040516103389190613096565b60405180910390f35b34801561034d57600080fd5b5061036161035c3660046130f9565b610ac7565b6040519015158152602001610338565b34801561037d57600080fd5b5061036161038c366004613125565b60236020526000908152604090205460ff1681565b3480156103ad57600080fd5b506103146103bc366004613160565b610ade565b3480156103cd57600080fd5b506103d7600b5481565b604051908152602001610338565b3480156103f157600080fd5b506013546103d7565b34801561040657600080fd5b50610361610415366004613125565b60226020526000908152604090205460ff1681565b34801561043657600080fd5b5061036161044536600461317d565b610be2565b34801561045657600080fd5b5060145460405160ff9091168152602001610338565b34801561047857600080fd5b506103146104873660046131be565b610cc1565b34801561049857600080fd5b506103616104a73660046130f9565b610df6565b3480156104b857600080fd5b50600a5461036190600160b01b900460ff1681565b3480156104d957600080fd5b506103146104e8366004613160565b610e2d565b3480156104f957600080fd5b506103146105083660046131be565b610e8a565b34801561051957600080fd5b50610361610528366004613125565b60246020526000908152604090205460ff1681565b34801561054957600080fd5b506103146105583660046131f7565b610fc0565b34801561056957600080fd5b506103d7600d5481565b34801561057f57600080fd5b506103d7600e5481565b34801561059557600080fd5b506103146105a4366004613074565b61100b565b3480156105b557600080fd5b506103146105c43660046131be565b611078565b3480156105d557600080fd5b506103146105e4366004613210565b6111ac565b3480156105f557600080fd5b506103d7600c5481565b34801561060b57600080fd5b506103d761061a366004613125565b6001600160a01b031660009081526020819052604090205490565b34801561064157600080fd5b50610314611226565b34801561065657600080fd5b5060175461010090046001600160a01b03165b6040516001600160a01b039091168152602001610338565b34801561068d57600080fd5b5061036161069c366004613125565b60216020526000908152604090205460ff1681565b3480156106bd57600080fd5b5061066961dead81565b3480156106d357600080fd5b50600a5461036190600160b81b900460ff1681565b3480156106f457600080fd5b50610314611277565b34801561070957600080fd5b50610669610718366004613125565b6112d1565b34801561072957600080fd5b5061032b6116e4565b34801561073e57600080fd5b5061031461074d36600461317d565b6116f3565b34801561075e57600080fd5b5061036161076d3660046130f9565b61173d565b34801561077e57600080fd5b50600a54610669906001600160a01b031681565b34801561079e57600080fd5b506103616107ad3660046130f9565b6117d8565b3480156107be57600080fd5b506103146107cd366004613125565b6117e5565b3480156107de57600080fd5b506103616107ed366004613125565b602080526000908152604090205460ff1681565b34801561080d57600080fd5b5061031461081c3660046131be565b6118fa565b34801561082d57600080fd5b506103d7600f5481565b34801561084357600080fd5b506103d760105481565b34801561085957600080fd5b50610314610868366004613160565b611a34565b34801561087957600080fd5b5061031461088836600461327c565b611a86565b34801561089957600080fd5b506103d76108a8366004613340565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156108df57600080fd5b50601a54601b546108ee919082565b60408051928352602083019190915201610338565b34801561090f57600080fd5b506018546019546108ee919082565b34801561092a57600080fd5b506103146109393660046133de565b611b2c565b34801561094a57600080fd5b50610314610959366004613125565b611ef7565b34801561096a57600080fd5b50600954610669906001600160a01b031681565b34801561098a57600080fd5b506103146109993660046131f7565b611fbd565b3480156109aa57600080fd5b50600a5461036190600160a81b900460ff1681565b6007546001600160a01b03163314806109e257506008546001600160a01b031633145b610a075760405162461bcd60e51b81526004016109fe90613442565b60405180910390fd5b60408051808201909152828152602001819052601a829055601b819055610a2e818361348d565b601d555050565b606060158054610a44906134a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610a70906134a0565b8015610abd5780601f10610a9257610100808354040283529160200191610abd565b820191906000526020600020905b815481529060010190602001808311610aa057829003601f168201915b5050505050905090565b6000610ad43384846120cd565b5060015b92915050565b6007546001600160a01b0316331480610b0157506008546001600160a01b031633145b610b1d5760405162461bcd60e51b81526004016109fe90613442565b801515600a60159054906101000a900460ff16151503610bc45760405162461bcd60e51b815260206004820152605660248201527f596f75206d7573742070726f76696465206120646966666572656e742073746160448201527f747573206f74686572207468616e207468652063757272656e742076616c7565606482015275081a5b881bdc99195c881d1bc81d5c19185d19481a5d60521b608482015260a4016109fe565b600a8054911515600160a81b0260ff60a81b19909216919091179055565b6000610bef8484846121f1565b6001600160a01b038481166000908152600160209081526040808320338085529252909120546007549092161480610c275750828110155b610c845760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109fe565b6007546001600160a01b03163303610ca0576001915050610cba565b610cb48533610caf86856134da565b6120cd565b60019150505b9392505050565b6007546001600160a01b0316331480610ce457506008546001600160a01b031633145b610d005760405162461bcd60e51b81526004016109fe90613442565b6001600160a01b038216600090815260208052604090205481151560ff909116151503610dcc5760405162461bcd60e51b815260206004820152606860248201527f596f75206d7573742070726f76696465206120646966666572656e742065786560448201527f6d70742061646472657373206f7220737461747573206f74686572207468616e60648201527f207468652063757272656e742076616c756520696e206f7264657220746f20756084820152671c19185d19481a5d60c21b60a482015260c4016109fe565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610ad4918590610caf90869061348d565b6007546001600160a01b0316331480610e5057506008546001600160a01b031633145b610e6c5760405162461bcd60e51b81526004016109fe90613442565b600a8054911515600160b81b0260ff60b81b19909216919091179055565b6007546001600160a01b0316331480610ead57506008546001600160a01b031633145b610ec95760405162461bcd60e51b81526004016109fe90613442565b6001600160a01b03821660009081526023602052604090205481151560ff909116151503610f955760405162461bcd60e51b815260206004820152606760248201527f596f75206d7573742070726f76696465206120646966666572656e74206d617860448201527f2073656c6c206c696d6974206f74686572207468616e2074686520637572726560648201527f6e74206d61782073656c6c206c696d697420696e206f7264657220746f20757060848201526619185d19481a5d60ca1b60a482015260c4016109fe565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6007546001600160a01b0316331480610fe357506008546001600160a01b031633145b610fff5760405162461bcd60e51b81526004016109fe90613442565b611008816127c8565b50565b6007546001600160a01b031633148061102e57506008546001600160a01b031633145b61104a5760405162461bcd60e51b81526004016109fe90613442565b6040805180820190915282815260200181905260188290556019819055611071818361348d565b601c555050565b6007546001600160a01b031633148061109b57506008546001600160a01b031633145b6110b75760405162461bcd60e51b81526004016109fe90613442565b6001600160a01b03821660009081526021602052604090205481151560ff9091161515036111815760405162461bcd60e51b815260206004820152606560248201527f596f75206d7573742070726f76696465206120646966666572656e74206d617860448201527f20627579206c696d6974206f74686572207468616e207468652063757272656e60648201527f74206d617820627579206c696d697420696e206f7264657220746f20757064616084820152641d19481a5d60da1b60a482015260c4016109fe565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b6007546001600160a01b03163314806111cf57506008546001600160a01b031633145b6111eb5760405162461bcd60e51b81526004016109fe90613442565b6040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015611221573d6000803e3d6000fd5b505050565b6007546001600160a01b031633148061124957506008546001600160a01b031633145b6112655760405162461bcd60e51b81526004016109fe90613442565b600780546001600160a01b0319169055565b6007546001600160a01b031633148061129a57506008546001600160a01b031633145b6112b65760405162461bcd60e51b81526004016109fe90613442565b600a805461ffff60a81b191661010160a81b17905543601055565b6007546000906001600160a01b03163314806112f757506008546001600160a01b031633145b6113135760405162461bcd60e51b81526004016109fe90613442565b6001600160a01b0382166113695760405162461bcd60e51b815260206004820152601d60248201527f6e6577526f7574657220616464726573732063616e6e6f74206265203000000060448201526064016109fe565b6009546001600160a01b038084169116036114125760405162461bcd60e51b815260206004820152605f60248201527f596f75206d7573742070726f76696465206120646966666572656e7420726f7560448201527f746572206f74686572207468616e207468652063757272656e7420726f75746560648201527f72206164647265737320696e206f7264657220746f2075706461746520697400608482015260a4016109fe565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611455573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147991906134ed565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ea91906134ed565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611535573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155991906134ed565b91506001600160a01b0382166116b057806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115cb91906134ed565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163c91906134ed565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ad91906134ed565b91505b600a80546001600160a01b038085166001600160a01b03199283161790925560098054939092169216919091179055919050565b606060168054610a44906134a0565b6007546001600160a01b031633148061171657506008546001600160a01b031633145b6117325760405162461bcd60e51b81526004016109fe90613442565b611221838383612aa5565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156117bf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109fe565b6117ce3385610caf86856134da565b5060019392505050565b6000610ad43384846121f1565b6007546001600160a01b031633148061180857506008546001600160a01b031633145b6118245760405162461bcd60e51b81526004016109fe90613442565b6017546001600160a01b0380831661010090920416036118d25760405162461bcd60e51b815260206004820152605760248201527f596f75206d7573742070726f76696465206120646966666572656e742061646460448201527f72657373206f74686572207468616e207468652063757272656e742076616c7560648201527f6520696e206f7264657220746f20757064617465206974000000000000000000608482015260a4016109fe565b601780546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6007546001600160a01b031633148061191d57506008546001600160a01b031633145b6119395760405162461bcd60e51b81526004016109fe90613442565b6001600160a01b03821660009081526022602052604090205481151560ff909116151503611a095760405162461bcd60e51b815260206004820152606b60248201527f596f75206d7573742070726f76696465206120646966666572656e74206d617860448201527f2077616c6c6574206c696d6974206f74686572207468616e207468652063757260648201527f72656e74206d61782077616c6c6574206c696d697420696e206f72646572207460848201526a1bc81d5c19185d19481a5d60aa1b60a482015260c4016109fe565b6001600160a01b03919091166000908152602260205260409020805460ff1916911515919091179055565b6007546001600160a01b0316331480611a5757506008546001600160a01b031633145b611a735760405162461bcd60e51b81526004016109fe90613442565b6017805460ff1916911515919091179055565b6007546001600160a01b0316331480611aa957506008546001600160a01b031633145b611ac55760405162461bcd60e51b81526004016109fe90613442565b60005b8251811015611221578160206000858481518110611ae857611ae861350a565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611b2481613520565b915050611ac8565b6007546001600160a01b0316331480611b4f57506008546001600160a01b031633145b611b6b5760405162461bcd60e51b81526004016109fe90613442565b600f5415611b7857600080fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf591906134ed565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6691906134ed565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611cb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd791906134ed565b600980546001600160a01b038086166001600160a01b031992831617909255600a80549284169290911691909117905590506015611d15858261357f565b506016611d22848261357f565b506014805460ff19166012908117909155611d3e90600a613723565b611d4b9062989680613732565b6013556103e8611d5a60135490565b611d649190613749565b611d6f906002613732565b600b556103e8611d7e60135490565b611d8990600e613732565b611d939190613749565b600c556103e8611da260135490565b611dad90600e613732565b611db79190613749565b600d556103e8611dc660135490565b611dd190600e613732565b611ddb9190613749565b600e556013543360009081526020819052604081208054909190611e0090849061348d565b909155505060135460405190815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505033600090815260208080526040808320805460ff199081166001908117909255602184528285208054821683179055602384528285208054821683179055602284528285208054821683179055308552928052818420805484168217905560175461010090046001600160a01b03168452908320805483168217905561dead9092527fcbaad361c71be11fa6bdbe0e740c6259be964b32182da2da47b54472477c6a1780549091169091179055505043600f55565b6007546001600160a01b0316331480611f1a57506008546001600160a01b031633145b611f365760405162461bcd60e51b81526004016109fe90613442565b6001600160a01b038116611f9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109fe565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6007546001600160a01b0316331480611fe057506008546001600160a01b031633145b611ffc5760405162461bcd60e51b81526004016109fe90613442565b60145460ff1661200d90600a613723565b6120179082613732565b600b54036120ac5760405162461bcd60e51b815260206004820152605660248201527f596f75206d7573742070726f76696465206120646966666572656e7420616d6f60448201527f756e74206f74686572207468616e207468652063757272656e742076616c7565606482015275081a5b881bdc99195c881d1bc81d5c19185d19481a5d60521b608482015260a4016109fe565b60145460ff166120bd90600a613723565b6120c79082613732565b600b5550565b6001600160a01b03831661212f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109fe565b6001600160a01b0382166121905760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109fe565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116122535760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109fe565b600a54600160b81b900460ff1615612566576001600160a01b038316600090815260208052604090205460ff161580156122a557506001600160a01b038216600090815260208052604090205460ff16155b156122fc57600a54600160b01b900460ff166122fc5760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b60448201526064016109fe565b600a546001600160a01b03848116911614801561233157506001600160a01b038216600090815260208052604090205460ff16155b80156123475750600a54600160a01b900460ff16155b801561236c57506001600160a01b03821660009081526021602052604090205460ff16155b156123c357600c548111156123c35760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016109fe565b600a546001600160a01b038381169116148015906123fa57506001600160a01b03821660009081526022602052604090205460ff16155b1561247a57600e5481612422846001600160a01b031660009081526020819052604090205490565b61242c919061348d565b111561247a5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016109fe565b600a546001600160a01b038481169116148015906124b057506001600160a01b038216600090815260208052604090205460ff16155b80156124d457506001600160a01b038316600090815260208052604090205460ff16155b80156124ea5750600a54600160a01b900460ff16155b801561250f57506001600160a01b03831660009081526023602052604090205460ff16155b1561256657600d548111156125665760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016109fe565b600080600080600060125411801561259657506001600160a01b038716600090815260208052604090205460ff16155b80156125ba57506001600160a01b038616600090815260208052604090205460ff16155b80156125d457506011546010546125d1919061348d565b43105b600a54909150600160a01b900460ff168061260657506001600160a01b038716600090815260208052604090205460ff165b8061262857506001600160a01b038616600090815260208052604090205460ff165b8061265a5750600a546001600160a01b0388811691161480159061265a5750600a546001600160a01b03878116911614155b1561266857600092506126cf565b600a546001600160a01b038781169116148015612683575080155b156126a357601a54601b54612698919061348d565b9350600191506126cf565b806126c3576018546019546126b8919061348d565b9350600091506126cf565b80156126cf5760125493505b60646126db8587613732565b6126e59190613749565b92508160000361270c5782601e6000828254612701919061348d565b9091555061272c9050565b8160010361272c5782601f6000828254612726919061348d565b90915550505b821561273d5761273d873085612b6a565b600a54600160a81b900460ff1680156127645750600a546001600160a01b03888116911614155b80156127705750600083115b801561277e575060175460ff165b801561279b5750600b543060009081526020819052604090205410155b156127ab576127ab601e546127c8565b6127bf87876127ba86896134da565b612b6a565b50505050505050565b600a54600160a01b900460ff1661100857600a805460ff60a01b1916600160a01b17905530600090815260208190526040812054601e839055905061280d82826134da565b601f81905550600080600080601c5460000361282c576000935061284c565b601c54601954601e5461283f9190613732565b6128499190613749565b93505b601d5460000361285f576000925061287f565b601d54601b54601f546128729190613732565b61287c9190613749565b92505b600061288b848661348d565b9050600061289a600283613749565b90504760006128a9838a6134da565b905080156128ba576128ba81612c3b565b60006128c683476134da565b905060008a601f54836128d99190613732565b6128e39190613749565b905060006128f182846134da565b9050600080601c546000036129095760009950612926565b601c546019546129199085613732565b6129239190613749565b99505b601d546000036129395760009a50612956565b601d54601b546129499086613732565b6129539190613749565b9a505b600060026129648c8e61348d565b61296e9190613749565b90508015612a86576129808982612d95565b600061298c82886134da565b90506000601e54601f546129a0919061348d565b9050600081601f54846129b39190613732565b6129bd9190613749565b905060006129cb82856134da565b9050601d546000036129e05760009650612a0a565b601b54601d546129f091906134da565b601a546129fd9084613732565b612a079190613749565b96505b601c54600003612a1d5760009550612a47565b601954601c54612a2d91906134da565b601854612a3a9083613732565b612a449190613749565b95505b6000612a53878961348d565b90508015612a7657601754612a769061010090046001600160a01b031682612e49565b50506000601e819055601f555050505b5050600a805460ff60a01b191690555050505050505050505050505050565b60405163a9059cbb60e01b81526001600160a01b038381166004830152602482018390526000919085169063a9059cbb906044016020604051808303816000875af1158015612af8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1c919061376b565b905080612b645760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b7103a3930b739b332b9103330b4b632b21760511b60448201526064016109fe565b50505050565b6001600160a01b038316612bce5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109fe565b6001600160a01b038216612c305760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109fe565b611221838383612f62565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612c7057612c7061350a565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612cc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ced91906134ed565b81600181518110612d0057612d0061350a565b6001600160a01b039283166020918202929092010152600954612d2691309116846120cd565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790612d5f908590600090869030904290600401613788565b600060405180830381600087803b158015612d7957600080fd5b505af1158015612d8d573d6000803e3d6000fd5b505050505050565b600954612dad9030906001600160a01b0316846120cd565b60095460075460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612e1d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e4291906137f9565b5050505050565b80471015612e995760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016109fe565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806112215760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016109fe565b6001600160a01b03831660009081526020819052604090205481811015612fda5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109fe565b612fe482826134da565b6001600160a01b03808616600090815260208190526040808220939093559085168152908120805484929061301a90849061348d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161306691815260200190565b60405180910390a350505050565b6000806040838503121561308757600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156130c3578581018301518582016040015282016130a7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461100857600080fd5b6000806040838503121561310c57600080fd5b8235613117816130e4565b946020939093013593505050565b60006020828403121561313757600080fd5b8135610cba816130e4565b801515811461100857600080fd5b803561315b81613142565b919050565b60006020828403121561317257600080fd5b8135610cba81613142565b60008060006060848603121561319257600080fd5b833561319d816130e4565b925060208401356131ad816130e4565b929592945050506040919091013590565b600080604083850312156131d157600080fd5b82356131dc816130e4565b915060208301356131ec81613142565b809150509250929050565b60006020828403121561320957600080fd5b5035919050565b6000806040838503121561322357600080fd5b8235915060208301356131ec816130e4565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561327457613274613235565b604052919050565b6000806040838503121561328f57600080fd5b823567ffffffffffffffff808211156132a757600080fd5b818501915085601f8301126132bb57600080fd5b81356020828211156132cf576132cf613235565b8160051b92506132e081840161324b565b82815292840181019281810190898511156132fa57600080fd5b948201945b848610156133245785359350613314846130e4565b83825294820194908201906132ff565b96506133339050878201613150565b9450505050509250929050565b6000806040838503121561335357600080fd5b823561335e816130e4565b915060208301356131ec816130e4565b600082601f83011261337f57600080fd5b813567ffffffffffffffff81111561339957613399613235565b6133ac601f8201601f191660200161324b565b8181528460208386010111156133c157600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156133f157600080fd5b823567ffffffffffffffff8082111561340957600080fd5b6134158683870161336e565b9350602085013591508082111561342b57600080fd5b506134388582860161336e565b9150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610ad857610ad8613477565b600181811c908216806134b457607f821691505b6020821081036134d457634e487b7160e01b600052602260045260246000fd5b50919050565b81810381811115610ad857610ad8613477565b6000602082840312156134ff57600080fd5b8151610cba816130e4565b634e487b7160e01b600052603260045260246000fd5b60006001820161353257613532613477565b5060010190565b601f82111561122157600081815260208120601f850160051c810160208610156135605750805b601f850160051c820191505b81811015612d8d5782815560010161356c565b815167ffffffffffffffff81111561359957613599613235565b6135ad816135a784546134a0565b84613539565b602080601f8311600181146135e257600084156135ca5750858301515b600019600386901b1c1916600185901b178555612d8d565b600085815260208120601f198616915b82811015613611578886015182559484019460019091019084016135f2565b508582101561362f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b8085111561367a57816000190482111561366057613660613477565b8085161561366d57918102915b93841c9390800290613644565b509250929050565b60008261369157506001610ad8565b8161369e57506000610ad8565b81600181146136b457600281146136be576136da565b6001915050610ad8565b60ff8411156136cf576136cf613477565b50506001821b610ad8565b5060208310610133831016604e8410600b84101617156136fd575081810a610ad8565b613707838361363f565b806000190482111561371b5761371b613477565b029392505050565b6000610cba60ff841683613682565b8082028115828204841417610ad857610ad8613477565b60008261376657634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561377d57600080fd5b8151610cba81613142565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156137d85784516001600160a01b0316835293830193918301916001016137b3565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561380e57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220b7e8d6b37ba674057dc5e0c42eded79e95c5c690b13a6d4a0c40898f96c0f20e64736f6c63430008110033

Deployed Bytecode Sourcemap

9197:18581:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23480:221;;;;;;;;;;-1:-1:-1;23480:221:0;;;;;:::i;:::-;;:::i;:::-;;12662:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12461:193;;;;;;;;;;-1:-1:-1;12461:193:0;;;;;:::i;:::-;;:::i;:::-;;;1441:14:1;;1434:22;1416:41;;1404:2;1389:18;12461:193:0;1276:187:1;10660:50:0;;;;;;;;;;-1:-1:-1;10660:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22537:323;;;;;;;;;;-1:-1:-1;22537:323:0;;;;;:::i;:::-;;:::i;9508:38::-;;;;;;;;;;;;;;;;;;;2368:25:1;;;2356:2;2341:18;9508:38:0;2222:177:1;13000:108:0;;;;;;;;;;-1:-1:-1;13088:12:0;;13000:108;;10601:52;;;;;;;;;;-1:-1:-1;10601:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13299:575;;;;;;;;;;-1:-1:-1;13299:575:0;;;;;:::i;:::-;;:::i;12892:100::-;;;;;;;;;;-1:-1:-1;12975:9:0;;12892:100;;12975:9;;;;3007:36:1;;2995:2;2980:18;12892:100:0;2865:184:1;24976:310:0;;;;;;;;;;-1:-1:-1;24976:310:0;;;;;:::i;:::-;;:::i;13882:298::-;;;;;;;;;;-1:-1:-1;13882:298:0;;;;;:::i;:::-;;:::i;9433:34::-;;;;;;;;;;-1:-1:-1;9433:34:0;;;;-1:-1:-1;;;9433:34:0;;;;;;27685:88;;;;;;;;;;-1:-1:-1;27685:88:0;;;;;:::i;:::-;;:::i;25294:359::-;;;;;;;;;;-1:-1:-1;25294:359:0;;;;;:::i;:::-;;:::i;10717:47::-;;;;;;;;;;-1:-1:-1;10717:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21361:122;;;;;;;;;;-1:-1:-1;21361:122:0;;;;;:::i;:::-;;:::i;9586:27::-;;;;;;;;;;;;;;;;9620:29;;;;;;;;;;;;;;;;23254:218;;;;;;;;;;-1:-1:-1;23254:218:0;;;;;:::i;:::-;;:::i;25661:354::-;;;;;;;;;;-1:-1:-1;25661:354:0;;;;;:::i;:::-;;:::i;24125:164::-;;;;;;;;;;-1:-1:-1;24125:164:0;;;;;:::i;:::-;;:::i;9553:26::-;;;;;;;;;;;;;;;;13116:177;;;;;;;;;;-1:-1:-1;13116:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;13267:18:0;13235:7;13267:18;;;;;;;;;;;;13116:177;7924:84;;;;;;;;;;;;;:::i;24871:97::-;;;;;;;;;;-1:-1:-1;24944:16:0;;;;;-1:-1:-1;;;;;24944:16:0;24871:97;;;-1:-1:-1;;;;;4110:32:1;;;4092:51;;4080:2;4065:18;24871:97:0;3946:203:1;10545:49:0;;;;;;;;;;-1:-1:-1;10545:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10053:88;;;;;;;;;;;;10099:42;10053:88;;9474:25;;;;;;;;;;-1:-1:-1;9474:25:0;;;;-1:-1:-1;;;9474:25:0;;;;;;23709:163;;;;;;;;;;;;;:::i;26739:938::-;;;;;;;;;;-1:-1:-1;26739:938:0;;;;;:::i;:::-;;:::i;12770:114::-;;;;;;;;;;;;;:::i;24297:204::-;;;;;;;;;;-1:-1:-1;24297:204:0;;;;;:::i;:::-;;:::i;14188:447::-;;;;;;;;;;-1:-1:-1;14188:447:0;;;;;:::i;:::-;;:::i;9312:19::-;;;;;;;;;;-1:-1:-1;9312:19:0;;;;-1:-1:-1;;;;;9312:19:0;;;14643:197;;;;;;;;;;-1:-1:-1;14643:197:0;;;;;:::i;:::-;;:::i;24570:293::-;;;;;;;;;;-1:-1:-1;24570:293:0;;;;;:::i;:::-;;:::i;10497:41::-;;;;;;;;;;-1:-1:-1;10497:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;26023:369;;;;;;;;;;-1:-1:-1;26023:369:0;;;;;:::i;:::-;;:::i;9658:26::-;;;;;;;;;;;;;;;;9691:32;;;;;;;;;;;;;;;;26635:96;;;;;;;;;;-1:-1:-1;26635:96:0;;;;;:::i;:::-;;:::i;26400:227::-;;;;;;;;;;-1:-1:-1;26400:227:0;;;;;:::i;:::-;;:::i;3708:201::-;;;;;;;;;;-1:-1:-1;3708:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;3874:18:0;;;3842:7;3874:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3708:201;10273:33;;;;;;;;;;-1:-1:-1;10273:33:0;;;;;;;;;;;;;6703:25:1;;;6759:2;6744:18;;6737:34;;;;6676:18;10273:33:0;6529:248:1;10234:32:0;;;;;;;;;;-1:-1:-1;10234:32:0;;;;;;;;;11013:1440;;;;;;;;;;-1:-1:-1;11013:1440:0;;;;;:::i;:::-;;:::i;8014:182::-;;;;;;;;;;-1:-1:-1;8014:182:0;;;;;:::i;:::-;;:::i;9284:21::-;;;;;;;;;;-1:-1:-1;9284:21:0;;;;-1:-1:-1;;;;;9284:21:0;;;22868:378;;;;;;;;;;-1:-1:-1;22868:378:0;;;;;:::i;:::-;;:::i;9388:38::-;;;;;;;;;;-1:-1:-1;9388:38:0;;;;-1:-1:-1;;;9388:38:0;;;;;;23480:221;7818:6;;-1:-1:-1;;;;;7818:6:0;7828:10;7818:20;;:43;;-1:-1:-1;7842:5:0;;-1:-1:-1;;;;;7842:5:0;7851:10;7842:19;7818:43;7810:88;;;;-1:-1:-1;;;7810:88:0;;;;;;;:::i;:::-;;;;;;;;;23610:28:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;23599:8:::1;:39:::0;;;;;;;23670:23:::1;23627:10:::0;23615;23670:23:::1;:::i;:::-;23649:18;:44:::0;-1:-1:-1;;23480:221:0:o;12662:100::-;12716:13;12749:5;12742:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12662:100;:::o;12461:193::-;12563:4;12585:39;218:10;12608:7;12617:6;12585:8;:39::i;:::-;-1:-1:-1;12642:4:0;12461:193;;;;;:::o;22537:323::-;7818:6;;-1:-1:-1;;;;;7818:6:0;7828:10;7818:20;;:43;;-1:-1:-1;7842:5:0;;-1:-1:-1;;;;;7842:5:0;7851:10;7842:19;7818:43;7810:88;;;;-1:-1:-1;;;7810:88:0;;;;;;;:::i;:::-;22654:4:::1;22632:26;;:18;;;;;;;;;;;:26;;::::0;22610:162:::1;;;::::0;-1:-1:-1;;;22610:162:0;;9299:2:1;22610:162:0::1;::::0;::::1;9281:21:1::0;9338:2;9318:18;;;9311:30;9377:34;9357:18;;;9350:62;9448:34;9428:18;;;9421:62;-1:-1:-1;;;9499:19:1;;;9492:53;9562:19;;22610:162:0::1;9097:490:1::0;22610:162:0::1;22827:18;:25:::0;;;::::1;;-1:-1:-1::0;;;22827:25:0::1;-1:-1:-1::0;;;;22827:25:0;;::::1;::::0;;;::::1;::::0;;22537:323::o;13299:575::-;13431:4;13448:36;13458:6;13466:9;13477:6;13448:9;:36::i;:::-;-1:-1:-1;;;;;13522:19:0;;;13495:24;13522:19;;;:11;:19;;;;;;;;218:10;13522:33;;;;;;;;;13604:6;;13522:33;;13604:6;13588:22;;:65;;;13647:6;13627:16;:26;;13588:65;13566:155;;;;-1:-1:-1;;;13566:155:0;;9794:2:1;13566:155:0;;;9776:21:1;9833:2;9813:18;;;9806:30;9872:34;9852:18;;;9845:62;-1:-1:-1;;;9923:18:1;;;9916:38;9971:19;;13566:155:0;9592:404:1;13566:155:0;13752:6;;-1:-1:-1;;;;;13752:6:0;218:10;13736:22;13732:45;;13770:4;13763:11;;;;;13732:45;13787:57;13796:6;218:10;13818:25;13837:6;13818:16;:25;:::i;:::-;13787:8;:57::i;:::-;13862:4;13855:11;;;13299:575;;;;;;:::o;24976:310::-;7818:6;;-1:-1:-1;;;;;7818:6:0;7828:10;7818:20;;:43;;-1:-1:-1;7842:5:0;;-1:-1:-1;;;;;7842:5:0;7851:10;7842:19;7818:43;7810:88;;;;-1:-1:-1;;;7810:88:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25082:19:0;::::1;;::::0;;;:9:::1;:19:::0;;;;;;:27;::::1;;:19;::::0;;::::1;:27;;::::0;25060:181:::1;;;::::0;-1:-1:-1;;;25060:181:0;;10336:2:1;25060:181:0::1;::::0;::::1;10318:21:1::0;10375:3;10355:18;;;10348:31;10415:34;10395:18;;;10388:62;10486:34;10466:18;;;10459:62;10558:34;10537:19;;;10530:63;-1:-1:-1;;;10609:19:1;;;10602:39;10658:19;;25060:181:0::1;10134:549:1::0;25060:181:0::1;-1:-1:-1::0;;;;;25252:19:0;;;::::1;;::::0;;;:9:::1;:19:::0;;;;;:26;;-1:-1:-1;;25252:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24976:310::o;13882:298::-;218:10;13998:4;14092:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14092:34:0;;;;;;;;;;13998:4;;14020:130;;14070:7;;14092:47;;14129:10;;14092:47;:::i;27685:88::-;7818:6;;-1:-1:-1;;;;;7818:6:0;7828:10;7818:20;;:43;;-1:-1:-1;7842:5:0;;-1:-1:-1;;;;;7842:5:0;7851:10;7842:19;7818:43;7810:88;;;;-1:-1:-1;;;7810:88:0;;;;;;;:::i;:::-;27752:6:::1;:13:::0;;;::::1;;-1:-1:-1::0;;;27752:13:0::1;-1:-1:-1::0;;;;27752:13:0;;::::1;::::0;;;::::1;::::0;;27685:88::o;25294:359::-;7818:6;;-1:-1:-1;;;;;7818:6:0;7828:10;7818:20;;:43;;-1:-1:-1;7842:5:0;;-1:-1:-1;;;;;7842:5:0;7851:10;7842:19;7818:43;7810:88;;;;-1:-1:-1;;;7810:88:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25432:28:0;::::1;;::::0;;;:18:::1;:28;::::0;;;;;:36;::::1;;:28;::::0;;::::1;:36;;::::0;25410:189:::1;;;::::0;-1:-1:-1;;;25410:189:0;;10890:2:1;25410:189:0::1;::::0;::::1;10872:21:1::0;10929:3;10909:18;;;10902:31;10969:34;10949:18;;;10942:62;11040:34;11020:18;;;11013:62;11112:34;11091:19;;;11084:63;-1:-1:-1;;;11163:19:1;;;11156:38;11211:19;;25410:189:0::1;10688:548:1::0;25410:189:0::1;-1:-1:-1::0;;;;;25610:28:0;;;::::1;;::::0;;;:18:::1;:28;::::0;;;;:35;;-1:-1:-1;;25610:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25294:359::o;21361:122::-;7818:6;;-1:-1:-1;;;;;7818:6:0;7828:10;7818:20;;:43;;-1:-1:-1;7842:5:0;;-1:-1:-1;;;;;7842:5:0;7851:10;7842:19;7818:43;7810:88;;;;-1:-1:-1;;;7810:88:0;;;;;;;:::i;:::-;21445:30:::1;21456:18;21445:10;:30::i;:::-;21361:122:::0;:::o;23254:218::-;7818:6;;-1:-1:-1;;;;;7818:6:0;7828:10;7818:20;;:43;;-1:-1:-1;7842:5:0;;-1:-1:-1;;;;;7842:5:0;7851:10;7842:19;7818:43;7810:88;;;;-1:-1:-1;;;7810:88:0;;;;;;;:::i;:::-;23382:28:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;23372:7:::1;:38:::0;;;;;;;23441:23:::1;23399:10:::0;23387;23441:23:::1;:::i;:::-;23421:17;:43:::0;-1:-1:-1;;23254:218:0:o;25661:354::-;7818:6;;-1:-1:-1;;;;;7818:6:0;7828:10;7818:20;;:43;;-1:-1:-1;7842:5:0;;-1:-1:-1;;;;;7842:5:0;7851:10;7842:19;7818:43;7810:88;;;;-1:-1:-1;;;7810:88:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25798:27:0;::::1;;::::0;;;:17:::1;:27;::::0;;;;;:35;::::1;;:27;::::0;;::::1;:35;;::::0;25776:186:::1;;;::::0;-1:-1:-1;;;25776:186:0;;11443:2:1;25776:186:0::1;::::0;::::1;11425:21:1::0;11482:3;11462:18;;;11455:31;11522:34;11502:18;;;11495:62;11593:34;11573:18;;;11566:62;11665:34;11644:19;;;11637:63;-1:-1:-1;;;11716:19:1;;;11709:36;11762:19;;25776:186:0::1;11241:546:1::0;25776:186:0::1;-1:-1:-1::0;;;;;25973:27:0;;;::::1;;::::0;;;:17:::1;:27;::::0;;;;:34;;-1:-1:-1;;25973:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25661:354::o;24125:164::-;7818:6;;-1:-1:-1;;;;;7818:6:0;7828:10;7818:20;;:43;;-1:-1:-1;7842:5:0;;-1:-1:-1;;;;;7842:5:0;7851:10;7842:19;7818:43;7810:88;;;;-1:-1:-1;;;7810:88:0;;;;;;;:::i;:::-;24241:40:::1;::::0;-1:-1:-1;;;;;24241:32:0;::::1;::::0;:40;::::1;;;::::0;24274:6;;24241:40:::1;::::0;;;24274:6;24241:32;:40;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;24125:164:::0;;:::o;7924:84::-;7818:6;;-1:-1:-1;;;;;7818:6:0;7828:10;7818:20;;:43;;-1:-1:-1;7842:5:0;;-1:-1:-1;;;;;7842:5:0;7851:10;7842:19;7818:43;7810:88;;;;-1:-1:-1;;;7810:88:0;;;;;;;:::i;:::-;7981:6:::1;:19:::0;;-1:-1:-1;;;;;;7981:19:0::1;::::0;;7924:84::o;23709:163::-;7818:6;;-1:-1:-1;;;;;7818:6:0;7828:10;7818:20;;:43;;-1:-1:-1;7842:5:0;;-1:-1:-1;;;;;7842:5:0;7851:10;7842:19;7818:43;7810:88;;;;-1:-1:-1;;;7810:88:0;;;;;;;:::i;:::-;23764:14:::1;:21:::0;;-1:-1:-1;;;;23796:25:0;-1:-1:-1;;;23796:25:0;;;23852:12:::1;23832:17;:32:::0;23709:163::o;26739:938::-;7818:6;;26839:13;;-1:-1:-1;;;;;7818:6:0;7828:10;7818:20;;:43;;-1:-1:-1;7842:5:0;;-1:-1:-1;;;;;7842:5:0;7851:10;7842:19;7818:43;7810:88;;;;-1:-1:-1;;;7810:88:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26878:23:0;::::1;26870:65;;;::::0;-1:-1:-1;;;26870:65:0;;11994:2:1;26870:65:0::1;::::0;::::1;11976:21:1::0;12033:2;12013:18;;;12006:30;12072:31;12052:18;;;12045:59;12121:18;;26870:65:0::1;11792:353:1::0;26870:65:0::1;26968:6;::::0;-1:-1:-1;;;;;26968:28:0;;::::1;:6:::0;::::1;:28:::0;26946:173:::1;;;::::0;-1:-1:-1;;;26946:173:0;;12352:2:1;26946:173:0::1;::::0;::::1;12334:21:1::0;12391:2;12371:18;;;12364:30;12430:34;12410:18;;;12403:62;12501:34;12481:18;;;12474:62;12573:33;12552:19;;;12545:62;12624:19;;26946:173:0::1;12150:499:1::0;26946:173:0::1;27130:15;27156:9;27130:36;;27196:7;-1:-1:-1::0;;;;;27196:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27187:35:0::1;;27245:4;27265:7;-1:-1:-1::0;;;;;27265:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27187:103;::::0;-1:-1:-1;;;;;;27187:103:0::1;::::0;;;;;;-1:-1:-1;;;;;13140:15:1;;;27187:103:0::1;::::0;::::1;13122:34:1::0;13192:15;;13172:18;;;13165:43;13057:18;;27187:103:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27179:111:::0;-1:-1:-1;;;;;;27305:19:0;::::1;27301:213;;27393:7;-1:-1:-1::0;;;;;27393:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27384:38:0::1;;27449:4;27473:7;-1:-1:-1::0;;;;;27473:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27384:118;::::0;-1:-1:-1;;;;;;27384:118:0::1;::::0;;;;;;-1:-1:-1;;;;;13140:15:1;;;27384:118:0::1;::::0;::::1;13122:34:1::0;13192:15;;13172:18;;;13165:43;13057:18;;27384:118:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27376:126;;27301:213;27577:4;:12:::0;;-1:-1:-1;;;;;27577:12:0;;::::1;-1:-1:-1::0;;;;;;27577:12:0;;::::1;;::::0;;;27653:6:::1;:16:::0;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;27584:5;26739:938;-1:-1:-1;26739:938:0:o;12770:114::-;12826:13;12869:7;12862:14;;;;;:::i;24297:204::-;7818:6;;-1:-1:-1;;;;;7818:6:0;7828:10;7818:20;;:43;;-1:-1:-1;7842:5:0;;-1:-1:-1;;;;;7842:5:0;7851:10;7842:19;7818:43;7810:88;;;;-1:-1:-1;;;7810:88:0;;;;;;;:::i;:::-;24441:52:::1;24462:6;24470:14;24486:6;24441:20;:52::i;14188:447::-:0;218:10;14309:4;14358:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14358:34:0;;;;;;;;;;14425:35;;;;14403:122;;;;-1:-1:-1;;;14403:122:0;;13421:2:1;14403:122:0;;;13403:21:1;13460:2;13440:18;;;13433:30;13499:34;13479:18;;;13472:62;-1:-1:-1;;;13550:18:1;;;13543:35;13595:19;;14403:122:0;13219:401:1;14403:122:0;14536:67;218:10;14559:7;14568:34;14587:15;14568:16;:34;:::i;14536:67::-;-1:-1:-1;14623:4:0;;14188:447;-1:-1:-1;;;14188:447:0:o;14643:197::-;14748:4;14770:40;14780:10;14792:9;14803:6;14770:9;:40::i;24570:293::-;7818:6;;-1:-1:-1;;;;;7818:6:0;7828:10;7818:20;;:43;;-1:-1:-1;7842:5:0;;-1:-1:-1;;;;;7842:5:0;7851:10;7842:19;7818:43;7810:88;;;;-1:-1:-1;;;7810:88:0;;;;;;;:::i;:::-;24672:16:::1;::::0;-1:-1:-1;;;;;24672:29:0;;::::1;:16;::::0;;::::1;;:29:::0;24650:166:::1;;;::::0;-1:-1:-1;;;24650:166:0;;13827:2:1;24650:166:0::1;::::0;::::1;13809:21:1::0;13866:2;13846:18;;;13839:30;13905:34;13885:18;;;13878:62;13976:34;13956:18;;;13949:62;14048:25;14027:19;;;14020:54;14091:19;;24650:166:0::1;13625:491:1::0;24650:166:0::1;24827:16;:28:::0;;-1:-1:-1;;;;;24827:28:0;;::::1;;;-1:-1:-1::0;;;;;;24827:28:0;;::::1;::::0;;;::::1;::::0;;24570:293::o;26023:369::-;7818:6;;-1:-1:-1;;;;;7818:6:0;7828:10;7818:20;;:43;;-1:-1:-1;7842:5:0;;-1:-1:-1;;;;;7842:5:0;7851:10;7842:19;7818:43;7810:88;;;;-1:-1:-1;;;7810:88:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26163:30:0;::::1;;::::0;;;:20:::1;:30;::::0;;;;;:38;::::1;;:30;::::0;;::::1;:38;;::::0;26141:195:::1;;;::::0;-1:-1:-1;;;26141:195:0;;14323:2:1;26141:195:0::1;::::0;::::1;14305:21:1::0;14362:3;14342:18;;;14335:31;14402:34;14382:18;;;14375:62;14473:34;14453:18;;;14446:62;14545:34;14524:19;;;14517:63;-1:-1:-1;;;14596:19:1;;;14589:42;14648:19;;26141:195:0::1;14121:552:1::0;26141:195:0::1;-1:-1:-1::0;;;;;26347:30:0;;;::::1;;::::0;;;:20:::1;:30;::::0;;;;:37;;-1:-1:-1;;26347:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26023:369::o;26635:96::-;7818:6;;-1:-1:-1;;;;;7818:6:0;7828:10;7818:20;;:43;;-1:-1:-1;7842:5:0;;-1:-1:-1;;;;;7842:5:0;7851:10;7842:19;7818:43;7810:88;;;;-1:-1:-1;;;7810:88:0;;;;;;;:::i;:::-;26702:13:::1;:21:::0;;-1:-1:-1;;26702:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26635:96::o;26400:227::-;7818:6;;-1:-1:-1;;;;;7818:6:0;7828:10;7818:20;;:43;;-1:-1:-1;7842:5:0;;-1:-1:-1;;;;;7842:5:0;7851:10;7842:19;7818:43;7810:88;;;;-1:-1:-1;;;7810:88:0;;;;;;;:::i;:::-;26523:9:::1;26518:102;26542:8;:15;26538:1;:19;26518:102;;;26604:4;26579:9;:22;26589:8;26598:1;26589:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;26579:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;26579:22:0;:29;;-1:-1:-1;;26579:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26559:3;::::1;::::0;::::1;:::i;:::-;;;;26518:102;;11013:1440:::0;7818:6;;-1:-1:-1;;;;;7818:6:0;7828:10;7818:20;;:43;;-1:-1:-1;7842:5:0;;-1:-1:-1;;;;;7842:5:0;7851:10;7842:19;7818:43;7810:88;;;;-1:-1:-1;;;7810:88:0;;;;;;;:::i;:::-;11109:11:::1;::::0;:16;11101:25:::1;;;::::0;::::1;;11137:15;11163:42;11137:69;;11270:13;11295:7;-1:-1:-1::0;;;;;11295:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11286:38:0::1;;11347:4;11367:7;-1:-1:-1::0;;;;;11367:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11286:106;::::0;-1:-1:-1;;;;;;11286:106:0::1;::::0;;;;;;-1:-1:-1;;;;;13140:15:1;;;11286:106:0::1;::::0;::::1;13122:34:1::0;13192:15;;13172:18;;;13165:43;13057:18;;11286:106:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11411:6;:16:::0;;-1:-1:-1;;;;;11411:16:0;;::::1;-1:-1:-1::0;;;;;;11411:16:0;;::::1;;::::0;;;11438:4:::1;:12:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;11270:122;-1:-1:-1;11463:5:0::1;:12;11471:4:::0;11463:5;:12:::1;:::i;:::-;-1:-1:-1::0;11486:7:0::1;:16;11496:6:::0;11486:7;:16:::1;:::i;:::-;-1:-1:-1::0;11513:9:0::1;:14:::0;;-1:-1:-1;;11513:14:0::1;11525:2;11513:14:::0;;::::1;::::0;;;11566:13:::1;::::0;:2:::1;:13;:::i;:::-;11553:26;::::0;:10:::1;:26;:::i;:::-;11538:12;:41:::0;11633:4:::1;11617:13;13088:12:::0;;;13000:108;11617:13:::1;:20;;;;:::i;:::-;11616:26;::::0;11641:1:::1;11616:26;:::i;:::-;11590:23;:52:::0;11711:4:::1;11689:13;13088:12:::0;;;13000:108;11689:13:::1;:18;::::0;11705:2:::1;11689:18;:::i;:::-;11688:27;;;;:::i;:::-;11674:11;:41:::0;11778:4:::1;11756:13;13088:12:::0;;;13000:108;11756:13:::1;:18;::::0;11772:2:::1;11756:18;:::i;:::-;11755:27;;;;:::i;:::-;11740:12;:42:::0;11848:4:::1;11826:13;13088:12:::0;;;13000:108;11826:13:::1;:18;::::0;11842:2:::1;11826:18;:::i;:::-;11825:27;;;;:::i;:::-;11808:14;:44:::0;12020:12:::1;::::0;12005:10:::1;11995:9;:21:::0;;;::::1;::::0;;;;;;:37;;:21;;:9;:37:::1;::::0;12020:12;;11995:37:::1;:::i;:::-;::::0;;;-1:-1:-1;;12081:12:0::1;::::0;12048:46:::1;::::0;2368:25:1;;;12069:10:0::1;::::0;12065:1:::1;::::0;12048:46:::1;::::0;2356:2:1;2341:18;12048:46:0::1;;;;;;;-1:-1:-1::0;;12117:10:0::1;12107:21;::::0;;;:9:::1;:21:::0;;;;;;;:28;;-1:-1:-1;;12107:28:0;;::::1;12131:4;12107:28:::0;;::::1;::::0;;;12146:17:::1;:29:::0;;;;;:36;;;::::1;::::0;::::1;::::0;;12193:18:::1;:30:::0;;;;;:37;;;::::1;::::0;::::1;::::0;;12241:20:::1;:32:::0;;;;;:39;;;::::1;::::0;::::1;::::0;;12309:4:::1;12291:24:::0;;;;;;;;:31;;;::::1;::::0;::::1;::::0;;12343:16:::1;::::0;12107:28:::1;12343:16:::0;::::1;-1:-1:-1::0;;;;;12343:16:0::1;12333:27:::0;;;;;:34;;;::::1;::::0;::::1;::::0;;10099:42:::1;12378:21:::0;;;;:28;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;12431:12:0::1;12417:11;:26:::0;11013:1440::o;8014:182::-;7818:6;;-1:-1:-1;;;;;7818:6:0;7828:10;7818:20;;:43;;-1:-1:-1;7842:5:0;;-1:-1:-1;;;;;7842:5:0;7851:10;7842:19;7818:43;7810:88;;;;-1:-1:-1;;;7810:88:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8095:22:0;::::1;8087:73;;;::::0;-1:-1:-1;;;8087:73:0;;19134:2:1;8087:73:0::1;::::0;::::1;19116:21:1::0;19173:2;19153:18;;;19146:30;19212:34;19192:18;;;19185:62;-1:-1:-1;;;19263:18:1;;;19256:36;19309:19;;8087:73:0::1;18932:402:1::0;8087:73:0::1;8171:6;:17:::0;;-1:-1:-1;;;;;;8171:17:0::1;-1:-1:-1::0;;;;;8171:17:0;;;::::1;::::0;;;::::1;::::0;;8014:182::o;22868:378::-;7818:6;;-1:-1:-1;;;;;7818:6:0;7828:10;7818:20;;:43;;-1:-1:-1;7842:5:0;;-1:-1:-1;;;;;7842:5:0;7851:10;7842:19;7818:43;7810:88;;;;-1:-1:-1;;;7810:88:0;;;;;;;:::i;:::-;12975:9;;;;23046:14:::1;::::0;:2:::1;:14;:::i;:::-;23033:27;::::0;:10;:27:::1;:::i;:::-;23006:23;;:54:::0;22984:190:::1;;;::::0;-1:-1:-1;;;22984:190:0;;19541:2:1;22984:190:0::1;::::0;::::1;19523:21:1::0;19580:2;19560:18;;;19553:30;19619:34;19599:18;;;19592:62;19690:34;19670:18;;;19663:62;-1:-1:-1;;;19741:19:1;;;19734:53;19804:19;;22984:190:0::1;19339:490:1::0;22984:190:0::1;12975:9:::0;;;;23224:14:::1;::::0;:2:::1;:14;:::i;:::-;23211:27;::::0;:10;:27:::1;:::i;:::-;23185:23;:53:::0;-1:-1:-1;22868:378:0:o;6772:380::-;-1:-1:-1;;;;;6908:19:0;;6900:68;;;;-1:-1:-1;;;6900:68:0;;20036:2:1;6900:68:0;;;20018:21:1;20075:2;20055:18;;;20048:30;20114:34;20094:18;;;20087:62;-1:-1:-1;;;20165:18:1;;;20158:34;20209:19;;6900:68:0;19834:400:1;6900:68:0;-1:-1:-1;;;;;6987:21:0;;6979:68;;;;-1:-1:-1;;;6979:68:0;;20441:2:1;6979:68:0;;;20423:21:1;20480:2;20460:18;;;20453:30;20519:34;20499:18;;;20492:62;-1:-1:-1;;;20570:18:1;;;20563:32;20612:19;;6979:68:0;20239:398:1;6979:68:0;-1:-1:-1;;;;;7060:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7112:32;;2368:25:1;;;7112:32:0;;2341:18:1;7112:32:0;;;;;;;6772:380;;;:::o;14848:2943::-;14998:1;14989:6;:10;14981:64;;;;-1:-1:-1;;;14981:64:0;;20844:2:1;14981:64:0;;;20826:21:1;20883:2;20863:18;;;20856:30;20922:34;20902:18;;;20895:62;-1:-1:-1;;;20973:18:1;;;20966:39;21022:19;;14981:64:0;20642:405:1;14981:64:0;15059:6;;-1:-1:-1;;;15059:6:0;;;;15056:991;;;-1:-1:-1;;;;;15082:17:0;;;;;;:9;:17;;;;;;;;15081:18;:43;;;;-1:-1:-1;;;;;;15104:20:0;;;;;;:9;:20;;;;;;;;15103:21;15081:43;15077:125;;;15149:14;;-1:-1:-1;;;15149:14:0;;;;15141:49;;;;-1:-1:-1;;;15141:49:0;;21254:2:1;15141:49:0;;;21236:21:1;21293:2;21273:18;;;21266:30;-1:-1:-1;;;21312:18:1;;;21305:52;21374:18;;15141:49:0;21052:346:1;15141:49:0;15242:4;;-1:-1:-1;;;;;15232:14:0;;;15242:4;;15232:14;:52;;;;-1:-1:-1;;;;;;15264:20:0;;;;;;:9;:20;;;;;;;;15263:21;15232:52;:84;;;;-1:-1:-1;15302:14:0;;-1:-1:-1;;;15302:14:0;;;;15301:15;15232:84;:130;;;;-1:-1:-1;;;;;;15334:28:0;;;;;;:17;:28;;;;;;;;15333:29;15232:130;15214:250;;;15407:11;;15397:6;:21;;15389:63;;;;-1:-1:-1;;;15389:63:0;;21605:2:1;15389:63:0;;;21587:21:1;21644:2;21624:18;;;21617:30;21683:31;21663:18;;;21656:59;21732:18;;15389:63:0;21403:353:1;15389:63:0;15505:4;;-1:-1:-1;;;;;15492:17:0;;;15505:4;;15492:17;;;;:66;;-1:-1:-1;;;;;;15527:31:0;;;;;;:20;:31;;;;;;;;15526:32;15492:66;15474:265;;;15645:14;;15635:6;15612:20;15622:9;-1:-1:-1;;;;;13267:18:0;13235:7;13267:18;;;;;;;;;;;;13116:177;15612:20;:29;;;;:::i;:::-;:47;;15586:141;;;;-1:-1:-1;;;15586:141:0;;21963:2:1;15586:141:0;;;21945:21:1;;;21982:18;;;21975:30;22041:34;22021:18;;;22014:62;22093:18;;15586:141:0;21761:356:1;15586:141:0;15779:4;;-1:-1:-1;;;;;15769:14:0;;;15779:4;;15769:14;;;;:52;;-1:-1:-1;;;;;;15801:20:0;;;;;;:9;:20;;;;;;;;15800:21;15769:52;:87;;;;-1:-1:-1;;;;;;15839:17:0;;;;;;:9;:17;;;;;;;;15838:18;15769:87;:119;;;;-1:-1:-1;15874:14:0;;-1:-1:-1;;;15874:14:0;;;;15873:15;15769:119;:163;;;;-1:-1:-1;;;;;;15906:26:0;;;;;;:18;:26;;;;;;;;15905:27;15769:163;15751:285;;;15977:12;;15967:6;:22;;15959:65;;;;-1:-1:-1;;;15959:65:0;;22324:2:1;15959:65:0;;;22306:21:1;22363:2;22343:18;;;22336:30;22402:32;22382:18;;;22375:60;22452:18;;15959:65:0;22122:354:1;15959:65:0;16057:16;16084:17;16112;16142;16174:1;16162:9;;:13;:48;;;;-1:-1:-1;;;;;;16193:17:0;;;;;;:9;:17;;;;;;;;16192:18;16162:48;:86;;;;-1:-1:-1;;;;;;16228:20:0;;;;;;:9;:20;;;;;;;;16227:21;16162:86;:146;;;;;16300:8;;16280:17;;:28;;;;:::i;:::-;16265:12;:43;16162:146;16417:14;;16142:166;;-1:-1:-1;;;;16417:14:0;;;;;:48;;-1:-1:-1;;;;;;16448:17:0;;;;;;:9;:17;;;;;;;;16417:48;:85;;;-1:-1:-1;;;;;;16482:20:0;;;;;;:9;:20;;;;;;;;16417:85;:139;;;-1:-1:-1;16530:4:0;;-1:-1:-1;;;;;16520:14:0;;;16530:4;;16520:14;;;;:35;;-1:-1:-1;16551:4:0;;-1:-1:-1;;;;;16538:17:0;;;16551:4;;16538:17;;16520:35;16399:589;;;16593:1;16581:13;;16399:589;;;16659:4;;-1:-1:-1;;;;;16646:17:0;;;16659:4;;16646:17;:34;;;;;16668:12;16667:13;16646:34;16642:346;;;16729:8;:18;16708;;:39;;16729:18;16708:39;:::i;:::-;16697:50;;16775:1;16763:13;;16642:346;;;16799:12;16794:194;;16859:7;:17;16839;;:37;;16859:17;16839:37;:::i;:::-;16828:48;;16904:1;16892:13;;16794:194;;;16927:12;16923:65;;;16967:9;;16956:20;;16923:65;17032:3;17011:17;17020:8;17011:6;:17;:::i;:::-;17010:25;;;;:::i;:::-;16998:37;;17052:9;17065:1;17052:14;17048:161;;17104:9;17083:17;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;17048:161:0;;-1:-1:-1;17048:161:0;;17135:9;17148:1;17135:14;17131:78;;17188:9;17166:18;;:31;;;;;;;:::i;:::-;;;;-1:-1:-1;;17131:78:0;17322:13;;17318:95;;17352:49;17368:6;17384:4;17391:9;17352:15;:49::i;:::-;17443:18;;-1:-1:-1;;;17443:18:0;;;;:49;;;;-1:-1:-1;17488:4:0;;-1:-1:-1;;;;;17478:14:0;;;17488:4;;17478:14;;17443:49;:79;;;;;17521:1;17509:9;:13;17443:79;:109;;;;-1:-1:-1;17539:13:0;;;;17443:109;:177;;;;-1:-1:-1;17597:23:0;;17587:4;13235:7;13267:18;;;;;;;;;;;17569:51;;17443:177;17425:263;;;17647:29;17658:17;;17647:10;:29::i;:::-;17729:54;17745:6;17753:9;17764:18;17773:9;17764:6;:18;:::i;:::-;17729:15;:54::i;:::-;14970:2821;;;;14848:2943;;;:::o;17799:3554::-;10814:14;;-1:-1:-1;;;10814:14:0;;;;10809:122;;10845:14;:21;;-1:-1:-1;;;;10845:21:0;-1:-1:-1;;;10845:21:0;;;17924:4:::1;-1:-1:-1::0;13267:18:0;;;;;;;;;;;17941:17:::1;:38:::0;;;17880:50;-1:-1:-1;18011:35:0::1;17961:18:::0;17880:50;18011:35:::1;:::i;:::-;17990:18;:56;;;;18059:29;18099:30:::0;18140:21:::1;18172:20:::0;18209:17:::1;;18230:1;18209:22:::0;18205:230:::1;;18272:1;18248:25;;18205:230;;;18406:17;::::0;18368;;18348::::1;::::0;:37:::1;::::0;18368:17;18348:37:::1;:::i;:::-;18347:76;;;;:::i;:::-;18306:117;;18205:230;18449:18;;18471:1;18449:23:::0;18445:236:::1;;18514:1;18489:26;;18445:236;;;18651:18;::::0;18612;;18591::::1;::::0;:39:::1;::::0;18612:18;18591:39:::1;:::i;:::-;18590:79;;;;:::i;:::-;18548:121;;18445:236;18691:31;18725:59;18762:22:::0;18725:21;:59:::1;:::i;:::-;18691:93:::0;-1:-1:-1;18797:30:0::1;18830:27;18856:1;18691:93:::0;18830:27:::1;:::i;:::-;18797:60:::0;-1:-1:-1;18893:21:0::1;18868:22;18942:40;18797:60:::0;18942:15;:40:::1;:::i;:::-;18925:57:::0;-1:-1:-1;18999:10:0;;18995:67:::1;;19026:24;19043:6;19026:16;:24::i;:::-;19074:20;19097:38;19121:14:::0;19097:21:::1;:38;:::i;:::-;19074:61;;19146:24;19224:15;19189:18;;19174:12;:33;;;;:::i;:::-;19173:66;;;;:::i;:::-;19146:93:::0;-1:-1:-1;19250:23:0::1;19276:31;19146:93:::0;19276:12;:31:::1;:::i;:::-;19250:57;;19322:27;19360:26:::0;19403:17:::1;;19424:1;19403:22:::0;19399:212:::1;;19457:1;19442:16;;19399:212;;;19581:17;::::0;19542;;19524:35:::1;::::0;:15;:35:::1;:::i;:::-;19523:76;;;;:::i;:::-;19491:108;;19399:212;19625:18;;19647:1;19625:23:::0;19621:218:::1;;19681:1;19665:17;;19621:218;;;19808:18;::::0;19768;;19749:37:::1;::::0;:16;:37:::1;:::i;:::-;19748:79;;;;:::i;:::-;19715:112;;19621:218;19849:19;19904:1;19872:28;19888:12:::0;19872:13;:28:::1;:::i;:::-;19871:34;;;;:::i;:::-;19849:56:::0;-1:-1:-1;19922:15:0;;19918:1428:::1;;19995:49;20008:22;20032:11;19995:12;:49::i;:::-;20061:19;20083:26;20098:11:::0;20083:12;:26:::1;:::i;:::-;20061:48;;20126:22;20172:17;;20151:18;;:38;;;;:::i;:::-;20126:63;;20206:23;20286:14;20247:18;;20233:11;:32;;;;:::i;:::-;20232:68;;;;:::i;:::-;20206:94:::0;-1:-1:-1;20315:22:0::1;20340:29;20206:94:::0;20340:11;:29:::1;:::i;:::-;20315:54;;20390:18;;20412:1;20390:23:::0;20386:274:::1;;20456:1;20434:23;;20386:274;;;20625:18:::0;;20604::::1;::::0;:39:::1;::::0;20625:18;20604:39:::1;:::i;:::-;20560:8;:18:::0;20542:36:::1;::::0;:15;:36:::1;:::i;:::-;20541:103;;;;:::i;:::-;20498:146;;20386:274;20680:17;;20701:1;20680:22:::0;20676:267:::1;;20744:1;20723:22;;20676:267;;;20909:17:::0;;20889::::1;::::0;:37:::1;::::0;20909:17;20889:37:::1;:::i;:::-;20846:7;:17:::0;20829:34:::1;::::0;:14;:34:::1;:::i;:::-;20828:99;;;;:::i;:::-;20786:141;;20676:267;20959:25;20987:57;21026:18:::0;20987:19;:57:::1;:::i;:::-;20959:85:::0;-1:-1:-1;21144:21:0;;21140:116:::1;;21194:16;::::0;21186:54:::1;::::0;21194:16:::1;::::0;::::1;-1:-1:-1::0;;;;;21194:16:0::1;21222:17:::0;21186:35:::1;:54::i;:::-;-1:-1:-1::0;;21296:1:0::1;21276:17;:21:::0;;;21312:18:::1;:22:::0;-1:-1:-1;;;19918:1428:0::1;-1:-1:-1::0;;10897:14:0;:22;;-1:-1:-1;;;;10897:22:0;;;-1:-1:-1;;;;;;;;;;;;;17799:3554:0;:::o;23880:237::-;24025:34;;-1:-1:-1;;;24025:34:0;;-1:-1:-1;;;;;22673:32:1;;;24025:34:0;;;22655:51:1;22722:18;;;22715:34;;;24013:9:0;;24025:15;;;;;;22628:18:1;;24025:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24013:46;;24078:4;24070:39;;;;-1:-1:-1;;;24070:39:0;;23212:2:1;24070:39:0;;;23194:21:1;23251:2;23231:18;;;23224:30;-1:-1:-1;;;23270:18:1;;;23263:52;23332:18;;24070:39:0;23010:346:1;24070:39:0;24002:115;23880:237;;;:::o;5395:404::-;-1:-1:-1;;;;;5535:20:0;;5527:70;;;;-1:-1:-1;;;5527:70:0;;23563:2:1;5527:70:0;;;23545:21:1;23602:2;23582:18;;;23575:30;23641:34;23621:18;;;23614:62;-1:-1:-1;;;23692:18:1;;;23685:35;23737:19;;5527:70:0;23361:401:1;5527:70:0;-1:-1:-1;;;;;5616:23:0;;5608:71;;;;-1:-1:-1;;;5608:71:0;;23969:2:1;5608:71:0;;;23951:21:1;24008:2;23988:18;;;23981:30;24047:34;24027:18;;;24020:62;-1:-1:-1;;;24098:18:1;;;24091:33;24141:19;;5608:71:0;23767:399:1;5608:71:0;5750:41;5765:6;5773:9;5784:6;5750:14;:41::i;21491:536::-;21643:16;;;21657:1;21643:16;;;;;;;;21619:21;;21643:16;;;;;;;;;;-1:-1:-1;21643:16:0;21619:40;;21688:4;21670;21675:1;21670:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21670:23:0;;;:7;;;;;;;;;;:23;;;;21714:6;;:13;;;-1:-1:-1;;;21714:13:0;;;;:6;;;;;:11;;:13;;;;;21670:7;;21714:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21704:4;21709:1;21704:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21704:23:0;;;:7;;;;;;;;;:23;21772:6;;21740:53;;21757:4;;21772:6;21781:11;21740:8;:53::i;:::-;21832:6;;:187;;-1:-1:-1;;;21832:187:0;;-1:-1:-1;;;;;21832:6:0;;;;:57;;:187;;21904:11;;21832:6;;21946:4;;21973;;21993:15;;21832:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21546:481;21491:536;:::o;22035:494::-;22215:6;;22183:53;;22200:4;;-1:-1:-1;;;;;22215:6:0;22224:11;22183:8;:53::i;:::-;22279:6;;22474;;22279:242;;-1:-1:-1;;;22279:242:0;;22342:4;22279:242;;;25497:34:1;25547:18;;;25540:34;;;22279:6:0;25590:18:1;;;25583:34;;;25633:18;;;25626:34;-1:-1:-1;;;;;22474:6:0;;;25676:19:1;;;25669:44;22495:15:0;25729:19:1;;;25722:35;22279:6:0;;;:22;;22309:9;;25431:19:1;;22279:242:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22035:494;;:::o;7315:391::-;7444:6;7419:21;:31;;7397:110;;;;-1:-1:-1;;;7397:110:0;;26281:2:1;7397:110:0;;;26263:21:1;26320:2;26300:18;;;26293:30;26359:31;26339:18;;;26332:59;26408:18;;7397:110:0;26079:353:1;7397:110:0;7521:12;7539:9;-1:-1:-1;;;;;7539:14:0;7561:6;7539:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7520:52;;;7605:7;7583:115;;;;-1:-1:-1;;;7583:115:0;;26849:2:1;7583:115:0;;;26831:21:1;26888:2;26868:18;;;26861:30;26927:34;26907:18;;;26900:62;26998:28;26978:18;;;26971:56;27044:19;;7583:115:0;26647:422:1;5807:455:0;-1:-1:-1;;;;;5968:17:0;;5944:21;5968:17;;;;;;;;;;;6018:23;;;;5996:111;;;;-1:-1:-1;;;5996:111:0;;27276:2:1;5996:111:0;;;27258:21:1;27315:2;27295:18;;;27288:30;27354:34;27334:18;;;27327:62;-1:-1:-1;;;27405:18:1;;;27398:36;27451:19;;5996:111:0;27074:402:1;5996:111:0;6138:22;6154:6;6138:13;:22;:::i;:::-;-1:-1:-1;;;;;6118:17:0;;;:9;:17;;;;;;;;;;;:42;;;;6171:20;;;;;;;;:30;;6195:6;;6118:9;6171:30;;6195:6;;6171:30;:::i;:::-;;;;;;;;6236:9;-1:-1:-1;;;;;6219:35:0;6228:6;-1:-1:-1;;;;;6219:35:0;;6247:6;6219:35;;;;2368:25:1;;2356:2;2341:18;;2222:177;6219:35:0;;;;;;;;5933:329;5807:455;;;:::o;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:548::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;551:3;736:1;731:2;722:6;711:9;707:22;703:31;696:42;806:2;799;795:7;790:2;782:6;778:15;774:29;763:9;759:45;755:54;747:62;;;;267:548;;;;:::o;820:131::-;-1:-1:-1;;;;;895:31:1;;885:42;;875:70;;941:1;938;931:12;956:315;1024:6;1032;1085:2;1073:9;1064:7;1060:23;1056:32;1053:52;;;1101:1;1098;1091:12;1053:52;1140:9;1127:23;1159:31;1184:5;1159:31;:::i;:::-;1209:5;1261:2;1246:18;;;;1233:32;;-1:-1:-1;;;956:315:1:o;1468:247::-;1527:6;1580:2;1568:9;1559:7;1555:23;1551:32;1548:52;;;1596:1;1593;1586:12;1548:52;1635:9;1622:23;1654:31;1679:5;1654:31;:::i;1720:118::-;1806:5;1799:13;1792:21;1785:5;1782:32;1772:60;;1828:1;1825;1818:12;1843:128;1908:20;;1937:28;1908:20;1937:28;:::i;:::-;1843:128;;;:::o;1976:241::-;2032:6;2085:2;2073:9;2064:7;2060:23;2056:32;2053:52;;;2101:1;2098;2091:12;2053:52;2140:9;2127:23;2159:28;2181:5;2159:28;:::i;2404:456::-;2481:6;2489;2497;2550:2;2538:9;2529:7;2525:23;2521:32;2518:52;;;2566:1;2563;2556:12;2518:52;2605:9;2592:23;2624:31;2649:5;2624:31;:::i;:::-;2674:5;-1:-1:-1;2731:2:1;2716:18;;2703:32;2744:33;2703:32;2744:33;:::i;:::-;2404:456;;2796:7;;-1:-1:-1;;;2850:2:1;2835:18;;;;2822:32;;2404:456::o;3054:382::-;3119:6;3127;3180:2;3168:9;3159:7;3155:23;3151:32;3148:52;;;3196:1;3193;3186:12;3148:52;3235:9;3222:23;3254:31;3279:5;3254:31;:::i;:::-;3304:5;-1:-1:-1;3361:2:1;3346:18;;3333:32;3374:30;3333:32;3374:30;:::i;:::-;3423:7;3413:17;;;3054:382;;;;;:::o;3441:180::-;3500:6;3553:2;3541:9;3532:7;3528:23;3524:32;3521:52;;;3569:1;3566;3559:12;3521:52;-1:-1:-1;3592:23:1;;3441:180;-1:-1:-1;3441:180:1:o;3626:315::-;3694:6;3702;3755:2;3743:9;3734:7;3730:23;3726:32;3723:52;;;3771:1;3768;3761:12;3723:52;3807:9;3794:23;3784:33;;3867:2;3856:9;3852:18;3839:32;3880:31;3905:5;3880:31;:::i;4628:127::-;4689:10;4684:3;4680:20;4677:1;4670:31;4720:4;4717:1;4710:15;4744:4;4741:1;4734:15;4760:275;4831:2;4825:9;4896:2;4877:13;;-1:-1:-1;;4873:27:1;4861:40;;4931:18;4916:34;;4952:22;;;4913:62;4910:88;;;4978:18;;:::i;:::-;5014:2;5007:22;4760:275;;-1:-1:-1;4760:275:1:o;5040:1091::-;5130:6;5138;5191:2;5179:9;5170:7;5166:23;5162:32;5159:52;;;5207:1;5204;5197:12;5159:52;5247:9;5234:23;5276:18;5317:2;5309:6;5306:14;5303:34;;;5333:1;5330;5323:12;5303:34;5371:6;5360:9;5356:22;5346:32;;5416:7;5409:4;5405:2;5401:13;5397:27;5387:55;;5438:1;5435;5428:12;5387:55;5474:2;5461:16;5496:4;5519:2;5515;5512:10;5509:36;;;5525:18;;:::i;:::-;5571:2;5568:1;5564:10;5554:20;;5594:28;5618:2;5614;5610:11;5594:28;:::i;:::-;5656:15;;;5726:11;;;5722:20;;;5687:12;;;;5754:19;;;5751:39;;;5786:1;5783;5776:12;5751:39;5810:11;;;;5830:217;5846:6;5841:3;5838:15;5830:217;;;5926:3;5913:17;5900:30;;5943:31;5968:5;5943:31;:::i;:::-;5987:18;;;5863:12;;;;6025;;;;5830:217;;;6066:5;-1:-1:-1;6090:35:1;;-1:-1:-1;6106:18:1;;;6090:35;:::i;:::-;6080:45;;;;;;5040:1091;;;;;:::o;6136:388::-;6204:6;6212;6265:2;6253:9;6244:7;6240:23;6236:32;6233:52;;;6281:1;6278;6271:12;6233:52;6320:9;6307:23;6339:31;6364:5;6339:31;:::i;:::-;6389:5;-1:-1:-1;6446:2:1;6431:18;;6418:32;6459:33;6418:32;6459:33;:::i;6782:531::-;6825:5;6878:3;6871:4;6863:6;6859:17;6855:27;6845:55;;6896:1;6893;6886:12;6845:55;6932:6;6919:20;6958:18;6954:2;6951:26;6948:52;;;6980:18;;:::i;:::-;7024:55;7067:2;7048:13;;-1:-1:-1;;7044:27:1;7073:4;7040:38;7024:55;:::i;:::-;7104:2;7095:7;7088:19;7150:3;7143:4;7138:2;7130:6;7126:15;7122:26;7119:35;7116:55;;;7167:1;7164;7157:12;7116:55;7232:2;7225:4;7217:6;7213:17;7206:4;7197:7;7193:18;7180:55;7280:1;7255:16;;;7273:4;7251:27;7244:38;;;;7259:7;6782:531;-1:-1:-1;;;6782:531:1:o;7318:543::-;7406:6;7414;7467:2;7455:9;7446:7;7442:23;7438:32;7435:52;;;7483:1;7480;7473:12;7435:52;7523:9;7510:23;7552:18;7593:2;7585:6;7582:14;7579:34;;;7609:1;7606;7599:12;7579:34;7632:50;7674:7;7665:6;7654:9;7650:22;7632:50;:::i;:::-;7622:60;;7735:2;7724:9;7720:18;7707:32;7691:48;;7764:2;7754:8;7751:16;7748:36;;;7780:1;7777;7770:12;7748:36;;7803:52;7847:7;7836:8;7825:9;7821:24;7803:52;:::i;:::-;7793:62;;;7318:543;;;;;:::o;8089:356::-;8291:2;8273:21;;;8310:18;;;8303:30;8369:34;8364:2;8349:18;;8342:62;8436:2;8421:18;;8089:356::o;8450:127::-;8511:10;8506:3;8502:20;8499:1;8492:31;8542:4;8539:1;8532:15;8566:4;8563:1;8556:15;8582:125;8647:9;;;8668:10;;;8665:36;;;8681:18;;:::i;8712:380::-;8791:1;8787:12;;;;8834;;;8855:61;;8909:4;8901:6;8897:17;8887:27;;8855:61;8962:2;8954:6;8951:14;8931:18;8928:38;8925:161;;9008:10;9003:3;8999:20;8996:1;8989:31;9043:4;9040:1;9033:15;9071:4;9068:1;9061:15;8925:161;;8712:380;;;:::o;10001:128::-;10068:9;;;10089:11;;;10086:37;;;10103:18;;:::i;12654:251::-;12724:6;12777:2;12765:9;12756:7;12752:23;12748:32;12745:52;;;12793:1;12790;12783:12;12745:52;12825:9;12819:16;12844:31;12869:5;12844:31;:::i;14678:127::-;14739:10;14734:3;14730:20;14727:1;14720:31;14770:4;14767:1;14760:15;14794:4;14791:1;14784:15;14810:135;14849:3;14870:17;;;14867:43;;14890:18;;:::i;:::-;-1:-1:-1;14937:1:1;14926:13;;14810:135::o;15076:545::-;15178:2;15173:3;15170:11;15167:448;;;15214:1;15239:5;15235:2;15228:17;15284:4;15280:2;15270:19;15354:2;15342:10;15338:19;15335:1;15331:27;15325:4;15321:38;15390:4;15378:10;15375:20;15372:47;;;-1:-1:-1;15413:4:1;15372:47;15468:2;15463:3;15459:12;15456:1;15452:20;15446:4;15442:31;15432:41;;15523:82;15541:2;15534:5;15531:13;15523:82;;;15586:17;;;15567:1;15556:13;15523:82;;15797:1352;15923:3;15917:10;15950:18;15942:6;15939:30;15936:56;;;15972:18;;:::i;:::-;16001:97;16091:6;16051:38;16083:4;16077:11;16051:38;:::i;:::-;16045:4;16001:97;:::i;:::-;16153:4;;16217:2;16206:14;;16234:1;16229:663;;;;16936:1;16953:6;16950:89;;;-1:-1:-1;17005:19:1;;;16999:26;16950:89;-1:-1:-1;;15754:1:1;15750:11;;;15746:24;15742:29;15732:40;15778:1;15774:11;;;15729:57;17052:81;;16199:944;;16229:663;15023:1;15016:14;;;15060:4;15047:18;;-1:-1:-1;;16265:20:1;;;16383:236;16397:7;16394:1;16391:14;16383:236;;;16486:19;;;16480:26;16465:42;;16578:27;;;;16546:1;16534:14;;;;16413:19;;16383:236;;;16387:3;16647:6;16638:7;16635:19;16632:201;;;16708:19;;;16702:26;-1:-1:-1;;16791:1:1;16787:14;;;16803:3;16783:24;16779:37;16775:42;16760:58;16745:74;;16632:201;-1:-1:-1;;;;;16879:1:1;16863:14;;;16859:22;16846:36;;-1:-1:-1;15797:1352:1:o;17154:422::-;17243:1;17286:5;17243:1;17300:270;17321:7;17311:8;17308:21;17300:270;;;17380:4;17376:1;17372:6;17368:17;17362:4;17359:27;17356:53;;;17389:18;;:::i;:::-;17439:7;17429:8;17425:22;17422:55;;;17459:16;;;;17422:55;17538:22;;;;17498:15;;;;17300:270;;;17304:3;17154:422;;;;;:::o;17581:806::-;17630:5;17660:8;17650:80;;-1:-1:-1;17701:1:1;17715:5;;17650:80;17749:4;17739:76;;-1:-1:-1;17786:1:1;17800:5;;17739:76;17831:4;17849:1;17844:59;;;;17917:1;17912:130;;;;17824:218;;17844:59;17874:1;17865:10;;17888:5;;;17912:130;17949:3;17939:8;17936:17;17933:43;;;17956:18;;:::i;:::-;-1:-1:-1;;18012:1:1;17998:16;;18027:5;;17824:218;;18126:2;18116:8;18113:16;18107:3;18101:4;18098:13;18094:36;18088:2;18078:8;18075:16;18070:2;18064:4;18061:12;18057:35;18054:77;18051:159;;;-1:-1:-1;18163:19:1;;;18195:5;;18051:159;18242:34;18267:8;18261:4;18242:34;:::i;:::-;18312:6;18308:1;18304:6;18300:19;18291:7;18288:32;18285:58;;;18323:18;;:::i;:::-;18361:20;;17581:806;-1:-1:-1;;;17581:806:1:o;18392:140::-;18450:5;18479:47;18520:4;18510:8;18506:19;18500:4;18479:47;:::i;18537:168::-;18610:9;;;18641;;18658:15;;;18652:22;;18638:37;18628:71;;18679:18;;:::i;18710:217::-;18750:1;18776;18766:132;;18820:10;18815:3;18811:20;18808:1;18801:31;18855:4;18852:1;18845:15;18883:4;18880:1;18873:15;18766:132;-1:-1:-1;18912:9:1;;18710:217::o;22760:245::-;22827:6;22880:2;22868:9;22859:7;22855:23;22851:32;22848:52;;;22896:1;22893;22886:12;22848:52;22928:9;22922:16;22947:28;22969:5;22947:28;:::i;24171:980::-;24433:4;24481:3;24470:9;24466:19;24512:6;24501:9;24494:25;24538:2;24576:6;24571:2;24560:9;24556:18;24549:34;24619:3;24614:2;24603:9;24599:18;24592:31;24643:6;24678;24672:13;24709:6;24701;24694:22;24747:3;24736:9;24732:19;24725:26;;24786:2;24778:6;24774:15;24760:29;;24807:1;24817:195;24831:6;24828:1;24825:13;24817:195;;;24896:13;;-1:-1:-1;;;;;24892:39:1;24880:52;;24987:15;;;;24952:12;;;;24928:1;24846:9;24817:195;;;-1:-1:-1;;;;;;;25068:32:1;;;;25063:2;25048:18;;25041:60;-1:-1:-1;;;25132:3:1;25117:19;25110:35;25029:3;24171:980;-1:-1:-1;;;24171:980:1:o;25768:306::-;25856:6;25864;25872;25925:2;25913:9;25904:7;25900:23;25896:32;25893:52;;;25941:1;25938;25931:12;25893:52;25970:9;25964:16;25954:26;;26020:2;26009:9;26005:18;25999:25;25989:35;;26064:2;26053:9;26049:18;26043:25;26033:35;;25768:306;;;;;:::o

Swarm Source

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