ETH Price: $2,654.60 (-0.81%)

Token

Naughty Quagmire ($NQUAG)
 

Overview

Max Total Supply

1,000,000,000 $NQUAG

Holders

144

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Uniswap V2: $NQUAG
Balance
94,631,178.376759317 $NQUAG

Value
$0.00
0x29213d0476e5d25729feb4031710fb5367e2a014
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:
NAUGHTYQUAGMIRE

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

//Telegram: https://t.me/NaughtyQuagmire
//Twitter: https://twitter.com/naughtyquagmire	



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

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

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

// Dex Router contract interface
interface IDexRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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

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

contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), _owner);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = payable(address(0));
    }

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

contract NAUGHTYQUAGMIRE is Context, IERC20, Ownable {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    mapping(address => bool) public isExcludedFromFee;
    mapping(address => bool) public isExcludedFromMaxTxn;
    mapping(address => bool) public isExcludedFromMaxHolding;
    mapping(address => bool) public isBot;

    string private _name = "Naughty Quagmire";
    string private _symbol = "$NQUAG";
    uint8 private _decimals = 9;
    uint256 private _totalSupply = 1_000_000 * 1e12;

    address private constant DEAD = address(0xdead);
    address private constant ZERO = address(0);
    IDexRouter public dexRouter;
    address public dexPair;
    address public marketingWallet;

    uint256 public minTokenToSwap = _totalSupply.div(1e5); // this amount will trigger swap and distribute
    uint256 public maxHoldLimit = _totalSupply.div(100); // this is the max wallet holding limit
    uint256 public maxTxnLimit = _totalSupply.div(100); // this is the max transaction limit
    uint256 public botFee = 990;
    uint256 public percentDivider = 1000;
    uint256 public snipingTime = 60 seconds;
    uint256 public launchedAt;

    bool public distributeAndLiquifyStatus; // should be true to turn on to liquidate the pool
    bool public feesStatus; // enable by default
    bool public trading; // once enable can't be disable afterwards

    uint256 public liquidityFeeOnBuying = 10; // 1% will be added to the liquidity
    uint256 public marketingFeeOnBuying = 30; // 3% will be added to the marketing address

    uint256 public liquidityFeeOnSelling = 10; // 1% will be added to the liquidity
    uint256 public marketingFeeOnSelling = 150; // 3% will be added to the marketing address

    uint256 liquidityFeeCounter = 0;
    uint256 marketingFeeCounter = 0;

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

    constructor() {
        _balances[owner()] = _totalSupply;
        marketingWallet = address(0x7FB168d5f8166f84418B5b6d0d5e76542582a032);

        IDexRouter _dexRouter = IDexRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        // Create a dex pair for this new ERC20
        address _dexPair = IDexFactory(_dexRouter.factory()).createPair(
            address(this),
            _dexRouter.WETH()
        );
        dexPair = _dexPair;

        // set the rest of the contract variables
        dexRouter = _dexRouter;

        //exclude owner and this contract from fee
        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[address(dexRouter)] = true;

        //exclude owner and this contract from max Txn
        isExcludedFromMaxTxn[owner()] = true;
        isExcludedFromMaxTxn[address(this)] = true;
        isExcludedFromMaxTxn[address(dexRouter)] = true;

        //exclude owner and this contract from max hold limit
        isExcludedFromMaxHolding[owner()] = true;
        isExcludedFromMaxHolding[address(this)] = true;
        isExcludedFromMaxHolding[address(dexRouter)] = true;
        isExcludedFromMaxHolding[dexPair] = true;
        isExcludedFromMaxHolding[marketingWallet] = true;

        emit Transfer(address(0), owner(), _totalSupply);
    }

    //to receive ETH from dexRouter when swapping
    receive() external payable {}

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "NT: transfer amount exceeds allowance"
            )
        );
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "NT: decreased allowance or below zero"
            )
        );
        return true;
    }

    function includeOrExcludeFromFee(address account, bool value)
        external
        onlyOwner
    {
        isExcludedFromFee[account] = value;
    }

    function includeOrExcludeFromMaxTxn(address account, bool value)
        external
        onlyOwner
    {
        isExcludedFromMaxTxn[account] = value;
    }

    function includeOrExcludeFromMaxHolding(address account, bool value)
        external
        onlyOwner
    {
        isExcludedFromMaxHolding[account] = value;
    }

    function setMinTokenToSwap(uint256 _amount) external onlyOwner {
        require(_amount > 0, "NT: can't be 0");
        minTokenToSwap = _amount;
    }

    function setMaxHoldLimit(uint256 _amount) external onlyOwner {
        require(
            _amount >= _totalSupply.div(percentDivider),
            "NT: should be greater than 0.1%"
        );
        maxHoldLimit = _amount;
    }

    function setMaxTxnLimit(uint256 _amount) external onlyOwner {
        require(
            _amount >= _totalSupply / percentDivider,
            "NT: should be greater than 0.1%"
        );
        maxTxnLimit = _amount;
    }

    function setBuyFeePercent(
        uint256 _lpFee,
        uint256 _marketingFee
    ) external onlyOwner {
        marketingFeeOnBuying = _lpFee;
        liquidityFeeOnBuying = _marketingFee;
        require(
            _lpFee.add(_marketingFee) <= percentDivider.div(10),
            "NT: can't be more than 10%"
        );
    }

    function setSellFeePercent(
        uint256 _lpFee,
        uint256 _marketingFee
    ) external onlyOwner {
        marketingFeeOnSelling = _lpFee;
        liquidityFeeOnSelling = _marketingFee;
        require(
            _lpFee.add(_marketingFee) <= percentDivider.div(10),
            "NT: can't be more than 10%"
        );
    }

    function setDistributionStatus(bool _value) public onlyOwner {
        distributeAndLiquifyStatus = _value;
    }

    function enableOrDisableFees(bool _value) external onlyOwner {
        feesStatus = _value;
    }

    function updateAddresses(address _marketingWallet) external onlyOwner {
        marketingWallet = _marketingWallet;
    }

    function setIsBot(address holder, bool exempt)
        external
        onlyOwner
    {
        isBot[holder] = exempt;
    }

    function enableTrading() external onlyOwner {
        require(!trading, "NT: already enabled");
        trading = true;
        feesStatus = true;
        distributeAndLiquifyStatus = true;
        launchedAt = block.timestamp;
    }

    function removeStuckEth(address _receiver) public onlyOwner {
        payable(_receiver).transfer(address(this).balance);
    }

    function totalBuyFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = amount
            .mul(marketingFeeOnBuying.add(liquidityFeeOnBuying))
            .div(percentDivider);
        return fee;
    }

    function totalSellFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = amount
            .mul(marketingFeeOnSelling.add(liquidityFeeOnSelling))
            .div(percentDivider);
        return fee;
    }

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

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "NT: transfer from the zero address");
        require(to != address(0), "NT: transfer to the zero address");
        require(amount > 0, "NT: Amount must be greater than zero");
        require(!isBot[from],"Bot detected");

        if (!isExcludedFromMaxTxn[from] && !isExcludedFromMaxTxn[to]) {
            require(amount <= maxTxnLimit, "NT: max txn limit exceeds");

            // trading disable till launch
            if (!trading) {
                require(
                    dexPair != from && dexPair != to,
                    "NT: trading is disable"
                );
            }
        }

        if (!isExcludedFromMaxHolding[to]) {
            require(
                balanceOf(to).add(amount) <= maxHoldLimit,
                "NT: max hold limit exceeds"
            );
        }

        // swap and liquify
        distributeAndLiquify(from, to);

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any account belongs to isExcludedFromFee account then remove the fee
        if (isExcludedFromFee[from] || isExcludedFromFee[to] || !feesStatus) {
            takeFee = false;
        }

        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (dexPair == sender && takeFee) {
            uint256 allFee;
            uint256 tTransferAmount;
            // antibot
            if (
                block.timestamp < launchedAt + snipingTime &&
                sender != address(dexRouter)
            ) {
                allFee = amount.mul(botFee).div(percentDivider);
                marketingFeeCounter += allFee;
                tTransferAmount = amount.sub(allFee);
            } else {
                allFee = totalBuyFeePerTx(amount);
                tTransferAmount = amount.sub(allFee);
                setFeeCountersOnBuying(amount);
            }

            _balances[sender] = _balances[sender].sub(
                amount,
                "NT: insufficient balance"
            );
            _balances[recipient] = _balances[recipient].add(tTransferAmount);
            emit Transfer(sender, recipient, tTransferAmount);

            takeTokenFee(sender, allFee);
        } else if (dexPair == recipient && takeFee) {
            uint256 allFee = totalSellFeePerTx(amount);
            uint256 tTransferAmount = amount.sub(allFee);
            _balances[sender] = _balances[sender].sub(
                amount,
                "NT: insufficient balance"
            );
            _balances[recipient] = _balances[recipient].add(tTransferAmount);
            emit Transfer(sender, recipient, tTransferAmount);

            takeTokenFee(sender, allFee);
            setFeeCountersOnSelling(amount);
        } else {
            _balances[sender] = _balances[sender].sub(
                amount,
                "NT: insufficient balance"
            );
            _balances[recipient] = _balances[recipient].add(amount);
            emit Transfer(sender, recipient, amount);
        }
    }

    function takeTokenFee(address sender, uint256 amount) private {
        _balances[address(this)] = _balances[address(this)].add(amount);

        emit Transfer(sender, address(this), amount);
    }

    function setFeeCountersOnBuying(uint256 amount) private {
        liquidityFeeCounter += amount.mul(liquidityFeeOnBuying).div(
            percentDivider
        );
        marketingFeeCounter += amount.mul(marketingFeeOnBuying).div(
            percentDivider
        );
    }

    function setFeeCountersOnSelling(uint256 amount) private {
        liquidityFeeCounter += amount.mul(liquidityFeeOnSelling).div(
            percentDivider
        );
        marketingFeeCounter += amount.mul(marketingFeeOnSelling).div(
            percentDivider
        );
    }

    function distributeAndLiquify(address from, address to) private {
        if(liquidityFeeCounter.add(marketingFeeCounter) == 0) return;
        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is Dex pair.
        uint256 contractTokenBalance = balanceOf(address(this));

        bool shouldSell = contractTokenBalance >= minTokenToSwap;

        if (
            shouldSell &&
            from != dexPair &&
            distributeAndLiquifyStatus &&
            !(from == address(this) && to == dexPair) // swap 1 time
        ) {
            // approve contract
            _approve(address(this), address(dexRouter), contractTokenBalance);

            uint256 halfLiquidity = liquidityFeeCounter.div(2);
            uint256 otherHalfLiquidity = liquidityFeeCounter.sub(halfLiquidity);

            uint256 tokenAmountToBeSwapped = contractTokenBalance.sub(
                otherHalfLiquidity
            );

            uint256 balanceBefore = address(this).balance;

            // now is to lock into liquidty pool
            Utils.swapTokensForEth(address(dexRouter), tokenAmountToBeSwapped);

            uint256 deltaBalance = address(this).balance.sub(balanceBefore);

            uint256 ethToBeAddedToLiquidity = deltaBalance
                .mul(halfLiquidity)
                .div(tokenAmountToBeSwapped);

            // add liquidity to Dex
            if (ethToBeAddedToLiquidity > 0) {
                Utils.addLiquidity(
                    address(dexRouter),
                    DEAD,
                    otherHalfLiquidity,
                    ethToBeAddedToLiquidity
                );

                emit SwapAndLiquify(
                    halfLiquidity,
                    ethToBeAddedToLiquidity,
                    otherHalfLiquidity
                );
            }

            uint256 ethForMarketing = address(this).balance;

            // sending Eth to Marketing wallet
            if (ethForMarketing > 0) payable(marketingWallet).transfer(ethForMarketing);

            // Reset all fee counters
            liquidityFeeCounter = 0;
            marketingFeeCounter = 0;
        }
    }
}

// Library for doing a swap on Dex
library Utils {
    using SafeMath for uint256;

    function swapTokensForEth(address routerAddress, uint256 tokenAmount)
        internal
    {
        IDexRouter dexRouter = IDexRouter(routerAddress);

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

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

    function addLiquidity(
        address routerAddress,
        address owner,
        uint256 tokenAmount,
        uint256 ethAmount
    ) internal {
        IDexRouter dexRouter = IDexRouter(routerAddress);

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeAndLiquifyStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"enableOrDisableFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxTxn","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":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxHolding","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokenToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"removeStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lpFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setBuyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setDistributionStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxHoldLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxTxnLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinTokenToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lpFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalBuyFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalSellFeePerTx","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":"trading","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":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"updateAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280601081526020017f4e61756768747920517561676d69726500000000000000000000000000000000815250600790805190602001906200005192919062000ae9565b506040518060400160405280600681526020017f244e515541470000000000000000000000000000000000000000000000000000815250600890805190602001906200009f92919062000ae9565b5060098060006101000a81548160ff021916908360ff160217905550670de0b6b3a7640000600a55620000e6620186a0600a54620009fe60201b6200231e1790919060201c565b600e55620001066064600a54620009fe60201b6200231e1790919060201c565b600f55620001266064600a54620009fe60201b6200231e1790919060201c565b6010556103de6011556103e8601255603c601355600a601655601e601755600a60185560966019556000601a556000601b553480156200016557600080fd5b506200017662000a5060201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600a54600160006200024762000a5860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737fb168d5f8166f84418b5b6d0d5e76542582a032600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000341573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000367919062000c03565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f5919062000c03565b6040518363ffffffff1660e01b81526004016200041492919062000c46565b6020604051808303816000875af115801562000434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045a919062000c03565b905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000620004f462000a5860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460006200062d62000a5860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560006200076662000a5860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200098d62000a5860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620009ee919062000c8e565b60405180910390a3505062000e3f565b600062000a4883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000a8160201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000acb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ac2919062000d4f565b60405180910390fd5b506000838562000adc919062000da2565b9050809150509392505050565b82805462000af79062000e09565b90600052602060002090601f01602090048101928262000b1b576000855562000b67565b82601f1062000b3657805160ff191683800117855562000b67565b8280016001018555821562000b67579182015b8281111562000b6657825182559160200191906001019062000b49565b5b50905062000b76919062000b7a565b5090565b5b8082111562000b9557600081600090555060010162000b7b565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000bcb8262000b9e565b9050919050565b62000bdd8162000bbe565b811462000be957600080fd5b50565b60008151905062000bfd8162000bd2565b92915050565b60006020828403121562000c1c5762000c1b62000b99565b5b600062000c2c8482850162000bec565b91505092915050565b62000c408162000bbe565b82525050565b600060408201905062000c5d600083018562000c35565b62000c6c602083018462000c35565b9392505050565b6000819050919050565b62000c888162000c73565b82525050565b600060208201905062000ca5600083018462000c7d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562000ce757808201518184015260208101905062000cca565b8381111562000cf7576000848401525b50505050565b6000601f19601f8301169050919050565b600062000d1b8262000cab565b62000d27818562000cb6565b935062000d3981856020860162000cc7565b62000d448162000cfd565b840191505092915050565b6000602082019050818103600083015262000d6b818462000d0e565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000daf8262000c73565b915062000dbc8362000c73565b92508262000dcf5762000dce62000d73565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e2257607f821691505b6020821081141562000e395762000e3862000dda565b5b50919050565b614d4d8062000e4f6000396000f3fe6080604052600436106102e85760003560e01c8063879dd3c511610190578063bf56b371116100dc578063ed42142911610095578063f2fde38b1161006f578063f2fde38b14610b71578063f4b3dbc314610b9a578063f9dfdaeb14610bd7578063fe6f1b0514610c00576102ef565b8063ed42142914610ae0578063f097ea1a14610b1d578063f242ab4114610b46576102ef565b8063bf56b371146109ce578063bf862391146109f9578063dd62ed3e14610a24578063e6c84dc614610a61578063ea5b9e8514610a8c578063ec44acf214610ab5576102ef565b80639b6a275011610149578063a7c29b4011610123578063a7c29b4014610916578063a9059cbb1461093f578063b0bc2a2d1461097c578063be291dc6146109a5576102ef565b80639b6a275014610887578063a457c2d7146108b0578063a643c1a0146108ed576102ef565b8063879dd3c5146107875780638a8c523c146107b25780638da5cb5b146107c957806395d89b41146107f457806399b102b51461081f5780639a36dfa11461085c576102ef565b80633bbac5791161024f57806375f0a874116102085780637d99c66d116101e25780637d99c66d146106cb578063844af78e146106f657806384ea21bc146107215780638756aabd1461075e576102ef565b806375f0a8741461064a57806379777b4e146106755780637c6a9a9c146106a0576102ef565b80633bbac579146105285780635342acb414610565578063679a3c59146105a2578063681aa362146105cb57806370a08231146105f6578063715018a614610633576102ef565b80631884f1e6116102a15780631884f1e61461040457806323b872dd1461042f5780632d1293901461046c578063313ce567146104955780633326d7f2146104c057806339509351146104eb576102ef565b806303c0f5d4146102f457806306fdde031461031d5780630758d92414610348578063095ea7b3146103735780630a2d140c146103b057806318160ddd146103d9576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b5061031b60048036038101906103169190613c22565b610c2b565b005b34801561032957600080fd5b50610332610d1b565b60405161033f9190613cfb565b60405180910390f35b34801561035457600080fd5b5061035d610dad565b60405161036a9190613d7c565b60405180910390f35b34801561037f57600080fd5b5061039a60048036038101906103959190613dcd565b610dd3565b6040516103a79190613e1c565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d29190613e37565b610df1565b005b3480156103e557600080fd5b506103ee610ea3565b6040516103fb9190613e73565b60405180910390f35b34801561041057600080fd5b50610419610ead565b6040516104269190613e73565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190613e8e565b610eb3565b6040516104639190613e1c565b60405180910390f35b34801561047857600080fd5b50610493600480360381019061048e9190613c22565b610f8c565b005b3480156104a157600080fd5b506104aa61107c565b6040516104b79190613efd565b60405180910390f35b3480156104cc57600080fd5b506104d5611093565b6040516104e29190613e73565b60405180910390f35b3480156104f757600080fd5b50610512600480360381019061050d9190613dcd565b611099565b60405161051f9190613e1c565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190613f18565b61114c565b60405161055c9190613e1c565b60405180910390f35b34801561057157600080fd5b5061058c60048036038101906105879190613f18565b61116c565b6040516105999190613e1c565b60405180910390f35b3480156105ae57600080fd5b506105c960048036038101906105c49190613f18565b61118c565b005b3480156105d757600080fd5b506105e061126b565b6040516105ed9190613e73565b60405180910390f35b34801561060257600080fd5b5061061d60048036038101906106189190613f18565b611271565b60405161062a9190613e73565b60405180910390f35b34801561063f57600080fd5b506106486112ba565b005b34801561065657600080fd5b5061065f61140d565b60405161066c9190613f54565b60405180910390f35b34801561068157600080fd5b5061068a611433565b6040516106979190613e1c565b60405180910390f35b3480156106ac57600080fd5b506106b5611446565b6040516106c29190613e73565b60405180910390f35b3480156106d757600080fd5b506106e061144c565b6040516106ed9190613e73565b60405180910390f35b34801561070257600080fd5b5061070b611452565b6040516107189190613e73565b60405180910390f35b34801561072d57600080fd5b5061074860048036038101906107439190613f18565b611458565b6040516107559190613e1c565b60405180910390f35b34801561076a57600080fd5b5061078560048036038101906107809190613f6f565b611478565b005b34801561079357600080fd5b5061079c611570565b6040516107a99190613e1c565b60405180910390f35b3480156107be57600080fd5b506107c7611583565b005b3480156107d557600080fd5b506107de6116c2565b6040516107eb9190613f54565b60405180910390f35b34801561080057600080fd5b506108096116eb565b6040516108169190613cfb565b60405180910390f35b34801561082b57600080fd5b5061084660048036038101906108419190613f18565b61177d565b6040516108539190613e1c565b60405180910390f35b34801561086857600080fd5b5061087161179d565b60405161087e9190613e73565b60405180910390f35b34801561089357600080fd5b506108ae60048036038101906108a99190613f6f565b6117a3565b005b3480156108bc57600080fd5b506108d760048036038101906108d29190613dcd565b611894565b6040516108e49190613e1c565b60405180910390f35b3480156108f957600080fd5b50610914600480360381019061090f9190613f18565b611961565b005b34801561092257600080fd5b5061093d60048036038101906109389190613c22565b611a3a565b005b34801561094b57600080fd5b5061096660048036038101906109619190613dcd565b611b2a565b6040516109739190613e1c565b60405180910390f35b34801561098857600080fd5b506109a3600480360381019061099e9190613e37565b611b48565b005b3480156109b157600080fd5b506109cc60048036038101906109c79190613f9c565b611bfa565b005b3480156109da57600080fd5b506109e3611d0b565b6040516109f09190613e73565b60405180910390f35b348015610a0557600080fd5b50610a0e611d11565b604051610a1b9190613e73565b60405180910390f35b348015610a3057600080fd5b50610a4b6004803603810190610a469190613fdc565b611d17565b604051610a589190613e73565b60405180910390f35b348015610a6d57600080fd5b50610a76611d9e565b604051610a839190613e73565b60405180910390f35b348015610a9857600080fd5b50610ab36004803603810190610aae9190613c22565b611da4565b005b348015610ac157600080fd5b50610aca611e94565b604051610ad79190613e1c565b60405180910390f35b348015610aec57600080fd5b50610b076004803603810190610b029190613f6f565b611ea7565b604051610b149190613e73565b60405180910390f35b348015610b2957600080fd5b50610b446004803603810190610b3f9190613f6f565b611ef2565b005b348015610b5257600080fd5b50610b5b611fd4565b604051610b689190613f54565b60405180910390f35b348015610b7d57600080fd5b50610b986004803603810190610b939190613f18565b611ffa565b005b348015610ba657600080fd5b50610bc16004803603810190610bbc9190613f6f565b6121bc565b604051610bce9190613e73565b60405180910390f35b348015610be357600080fd5b50610bfe6004803603810190610bf99190613f9c565b612207565b005b348015610c0c57600080fd5b50610c15612318565b604051610c229190613e73565b60405180910390f35b610c33612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb790614068565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b606060078054610d2a906140b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610d56906140b7565b8015610da35780601f10610d7857610100808354040283529160200191610da3565b820191906000526020600020905b815481529060010190602001808311610d8657829003601f168201915b5050505050905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610de7610de0612368565b8484612370565b6001905092915050565b610df9612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7d90614068565b60405180910390fd5b80601560006101000a81548160ff02191690831515021790555050565b6000600a54905090565b600e5481565b6000610ec084848461253b565b610f8184610ecc612368565b610f7c85604051806060016040528060258152602001614cce60259139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f32612368565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a709092919063ffffffff16565b612370565b600190509392505050565b610f94612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611021576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101890614068565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600960009054906101000a900460ff16905090565b60165481565b60006111426110a6612368565b8461113d85600260006110b7612368565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad490919063ffffffff16565b612370565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b611194612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121890614068565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611267573d6000803e3d6000fd5b5050565b60105481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112c2612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461134f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134690614068565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560009054906101000a900460ff1681565b60175481565b60135481565b60195481565b60056020528060005260406000206000915054906101000a900460ff1681565b611480612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461150d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150490614068565b60405180910390fd5b611524601254600a5461231e90919063ffffffff16565b811015611566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155d90614135565b60405180910390fd5b80600f8190555050565b601560019054906101000a900460ff1681565b61158b612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160f90614068565b60405180910390fd5b601560029054906101000a900460ff1615611668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165f906141a1565b60405180910390fd5b6001601560026101000a81548160ff0219169083151502179055506001601560016101000a81548160ff0219169083151502179055506001601560006101000a81548160ff02191690831515021790555042601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600880546116fa906140b7565b80601f0160208091040260200160405190810160405280929190818152602001828054611726906140b7565b80156117735780601f1061174857610100808354040283529160200191611773565b820191906000526020600020905b81548152906001019060200180831161175657829003601f168201915b5050505050905090565b60046020528060005260406000206000915054906101000a900460ff1681565b600f5481565b6117ab612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182f90614068565b60405180910390fd5b601254600a54611848919061421f565b81101561188a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188190614135565b60405180910390fd5b8060108190555050565b60006119576118a1612368565b8461195285604051806060016040528060258152602001614cf360259139600260006118cb612368565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a709092919063ffffffff16565b612370565b6001905092915050565b611969612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ed90614068565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a42612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac690614068565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611b3e611b37612368565b848461253b565b6001905092915050565b611b50612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd490614068565b60405180910390fd5b80601560016101000a81548160ff02191690831515021790555050565b611c02612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8690614068565b60405180910390fd5b8160198190555080601881905550611cb3600a60125461231e90919063ffffffff16565b611cc68284612ad490919063ffffffff16565b1115611d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfe9061429c565b60405180910390fd5b5050565b60145481565b60115481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60185481565b611dac612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3090614068565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601560029054906101000a900460ff1681565b600080611ee7601254611ed9611eca601654601754612ad490919063ffffffff16565b86612b3290919063ffffffff16565b61231e90919063ffffffff16565b905080915050919050565b611efa612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7e90614068565b60405180910390fd5b60008111611fca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc190614308565b60405180910390fd5b80600e8190555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612002612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461208f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208690614068565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156120ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f69061439a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806121fc6012546121ee6121df601854601954612ad490919063ffffffff16565b86612b3290919063ffffffff16565b61231e90919063ffffffff16565b905080915050919050565b61220f612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461229c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229390614068565b60405180910390fd5b81601781905550806016819055506122c0600a60125461231e90919063ffffffff16565b6122d38284612ad490919063ffffffff16565b1115612314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230b9061429c565b60405180910390fd5b5050565b60125481565b600061236083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bad565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d79061442c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244790614498565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161252e9190613e73565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a29061452a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561261b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261290614596565b60405180910390fd5b6000811161265e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265590614628565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156126eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e290614694565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561278f5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128da576010548111156127d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d090614700565b60405180910390fd5b601560029054906101000a900460ff166128d9578273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561289957508173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b6128d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cf9061476c565b60405180910390fd5b5b5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661298b57600f546129498261293b85611271565b612ad490919063ffffffff16565b111561298a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612981906147d8565b60405180910390fd5b5b6129958383612c10565b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a3c5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612a545750601560019054906101000a900460ff16155b15612a5e57600090505b612a6a84848484612f48565b50505050565b6000838311158290612ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aaf9190613cfb565b60405180910390fd5b5060008385612ac791906147f8565b9050809150509392505050565b6000808284612ae3919061482c565b905083811015612b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1f906148ce565b60405180910390fd5b8091505092915050565b600080831415612b455760009050612ba7565b60008284612b5391906148ee565b9050828482612b62919061421f565b14612ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b99906149ba565b60405180910390fd5b809150505b92915050565b60008083118290612bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612beb9190613cfb565b60405180910390fd5b5060008385612c03919061421f565b9050809150509392505050565b6000612c29601b54601a54612ad490919063ffffffff16565b1415612c3457612f44565b6000612c3f30611271565b90506000600e548210159050808015612ca65750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612cbe5750601560009054906101000a900460ff165b8015612d4f57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612d4d5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b15612f4157612d8130600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612370565b6000612d996002601a5461231e90919063ffffffff16565b90506000612db282601a546136ab90919063ffffffff16565b90506000612dc982866136ab90919063ffffffff16565b90506000479050612dfc600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836136f5565b6000612e1182476136ab90919063ffffffff16565b90506000612e3a84612e2c8885612b3290919063ffffffff16565b61231e90919063ffffffff16565b90506000811115612eb157612e75600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead87846138db565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868287604051612ea8939291906149da565b60405180910390a15b60004790506000811115612f2957600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612f27573d6000803e3d6000fd5b505b6000601a819055506000601b81905550505050505050505b50505b5050565b8373ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612fa25750805b1561327a57600080601354601454612fba919061482c565b421080156130165750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b156130795761304460125461303660115487612b3290919063ffffffff16565b61231e90919063ffffffff16565b915081601b6000828254613058919061482c565b9250508190555061307282856136ab90919063ffffffff16565b90506130a3565b61308284611ea7565b915061309782856136ab90919063ffffffff16565b90506130a28461397f565b5b61312c846040518060400160405280601881526020017f4e543a20696e73756666696369656e742062616c616e63650000000000000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a709092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131c181600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132619190613e73565b60405180910390a36132738683613a04565b50506136a5565b8273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156132d45750805b156134dd5760006132e4836121bc565b905060006132fb82856136ab90919063ffffffff16565b9050613386846040518060400160405280601881526020017f4e543a20696e73756666696369656e742062616c616e63650000000000000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a709092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061341b81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134bb9190613e73565b60405180910390a36134cd8683613a04565b6134d684613b02565b50506136a4565b613566826040518060400160405280601881526020017f4e543a20696e73756666696369656e742062616c616e63650000000000000000815250600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a709092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135fb82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad490919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161369b9190613e73565b60405180910390a35b5b50505050565b60006136ed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a70565b905092915050565b60008290506000600267ffffffffffffffff81111561371757613716614a11565b5b6040519080825280602002602001820160405280156137455781602001602082028036833780820191505090505b509050308160008151811061375d5761375c614a40565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138069190614a84565b8160018151811061381a57613819614a40565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c42613883919061482c565b6040518663ffffffff1660e01b81526004016138a3959493929190614baa565b600060405180830381600087803b1580156138bd57600080fd5b505af11580156138d1573d6000803e3d6000fd5b5050505050505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff1663f305d7198330866000808a61012c42613911919061482c565b6040518863ffffffff1660e01b815260040161393296959493929190614c04565b60606040518083038185885af1158015613950573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906139759190614c7a565b5050505050505050565b6139a860125461399a60165484612b3290919063ffffffff16565b61231e90919063ffffffff16565b601a60008282546139b9919061482c565b925050819055506139e96012546139db60175484612b3290919063ffffffff16565b61231e90919063ffffffff16565b601b60008282546139fa919061482c565b9250508190555050565b613a5681600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad490919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613af69190613e73565b60405180910390a35050565b613b2b601254613b1d60185484612b3290919063ffffffff16565b61231e90919063ffffffff16565b601a6000828254613b3c919061482c565b92505081905550613b6c601254613b5e60195484612b3290919063ffffffff16565b61231e90919063ffffffff16565b601b6000828254613b7d919061482c565b9250508190555050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bb782613b8c565b9050919050565b613bc781613bac565b8114613bd257600080fd5b50565b600081359050613be481613bbe565b92915050565b60008115159050919050565b613bff81613bea565b8114613c0a57600080fd5b50565b600081359050613c1c81613bf6565b92915050565b60008060408385031215613c3957613c38613b87565b5b6000613c4785828601613bd5565b9250506020613c5885828601613c0d565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c9c578082015181840152602081019050613c81565b83811115613cab576000848401525b50505050565b6000601f19601f8301169050919050565b6000613ccd82613c62565b613cd78185613c6d565b9350613ce7818560208601613c7e565b613cf081613cb1565b840191505092915050565b60006020820190508181036000830152613d158184613cc2565b905092915050565b6000819050919050565b6000613d42613d3d613d3884613b8c565b613d1d565b613b8c565b9050919050565b6000613d5482613d27565b9050919050565b6000613d6682613d49565b9050919050565b613d7681613d5b565b82525050565b6000602082019050613d916000830184613d6d565b92915050565b6000819050919050565b613daa81613d97565b8114613db557600080fd5b50565b600081359050613dc781613da1565b92915050565b60008060408385031215613de457613de3613b87565b5b6000613df285828601613bd5565b9250506020613e0385828601613db8565b9150509250929050565b613e1681613bea565b82525050565b6000602082019050613e316000830184613e0d565b92915050565b600060208284031215613e4d57613e4c613b87565b5b6000613e5b84828501613c0d565b91505092915050565b613e6d81613d97565b82525050565b6000602082019050613e886000830184613e64565b92915050565b600080600060608486031215613ea757613ea6613b87565b5b6000613eb586828701613bd5565b9350506020613ec686828701613bd5565b9250506040613ed786828701613db8565b9150509250925092565b600060ff82169050919050565b613ef781613ee1565b82525050565b6000602082019050613f126000830184613eee565b92915050565b600060208284031215613f2e57613f2d613b87565b5b6000613f3c84828501613bd5565b91505092915050565b613f4e81613bac565b82525050565b6000602082019050613f696000830184613f45565b92915050565b600060208284031215613f8557613f84613b87565b5b6000613f9384828501613db8565b91505092915050565b60008060408385031215613fb357613fb2613b87565b5b6000613fc185828601613db8565b9250506020613fd285828601613db8565b9150509250929050565b60008060408385031215613ff357613ff2613b87565b5b600061400185828601613bd5565b925050602061401285828601613bd5565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614052602083613c6d565b915061405d8261401c565b602082019050919050565b6000602082019050818103600083015261408181614045565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806140cf57607f821691505b602082108114156140e3576140e2614088565b5b50919050565b7f4e543a2073686f756c642062652067726561746572207468616e20302e312500600082015250565b600061411f601f83613c6d565b915061412a826140e9565b602082019050919050565b6000602082019050818103600083015261414e81614112565b9050919050565b7f4e543a20616c726561647920656e61626c656400000000000000000000000000600082015250565b600061418b601383613c6d565b915061419682614155565b602082019050919050565b600060208201905081810360008301526141ba8161417e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061422a82613d97565b915061423583613d97565b925082614245576142446141c1565b5b828204905092915050565b7f4e543a2063616e2774206265206d6f7265207468616e20313025000000000000600082015250565b6000614286601a83613c6d565b915061429182614250565b602082019050919050565b600060208201905081810360008301526142b581614279565b9050919050565b7f4e543a2063616e27742062652030000000000000000000000000000000000000600082015250565b60006142f2600e83613c6d565b91506142fd826142bc565b602082019050919050565b60006020820190508181036000830152614321816142e5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614384602683613c6d565b915061438f82614328565b604082019050919050565b600060208201905081810360008301526143b381614377565b9050919050565b7f4e543a20617070726f76652066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614416602183613c6d565b9150614421826143ba565b604082019050919050565b6000602082019050818103600083015261444581614409565b9050919050565b7f4e543a20617070726f766520746f20746865207a65726f206164647265737300600082015250565b6000614482601f83613c6d565b915061448d8261444c565b602082019050919050565b600060208201905081810360008301526144b181614475565b9050919050565b7f4e543a207472616e736665722066726f6d20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614514602283613c6d565b915061451f826144b8565b604082019050919050565b6000602082019050818103600083015261454381614507565b9050919050565b7f4e543a207472616e7366657220746f20746865207a65726f2061646472657373600082015250565b6000614580602083613c6d565b915061458b8261454a565b602082019050919050565b600060208201905081810360008301526145af81614573565b9050919050565b7f4e543a20416d6f756e74206d7573742062652067726561746572207468616e2060008201527f7a65726f00000000000000000000000000000000000000000000000000000000602082015250565b6000614612602483613c6d565b915061461d826145b6565b604082019050919050565b6000602082019050818103600083015261464181614605565b9050919050565b7f426f742064657465637465640000000000000000000000000000000000000000600082015250565b600061467e600c83613c6d565b915061468982614648565b602082019050919050565b600060208201905081810360008301526146ad81614671565b9050919050565b7f4e543a206d61782074786e206c696d6974206578636565647300000000000000600082015250565b60006146ea601983613c6d565b91506146f5826146b4565b602082019050919050565b60006020820190508181036000830152614719816146dd565b9050919050565b7f4e543a2074726164696e672069732064697361626c6500000000000000000000600082015250565b6000614756601683613c6d565b915061476182614720565b602082019050919050565b6000602082019050818103600083015261478581614749565b9050919050565b7f4e543a206d617820686f6c64206c696d69742065786365656473000000000000600082015250565b60006147c2601a83613c6d565b91506147cd8261478c565b602082019050919050565b600060208201905081810360008301526147f1816147b5565b9050919050565b600061480382613d97565b915061480e83613d97565b925082821015614821576148206141f0565b5b828203905092915050565b600061483782613d97565b915061484283613d97565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614877576148766141f0565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006148b8601b83613c6d565b91506148c382614882565b602082019050919050565b600060208201905081810360008301526148e7816148ab565b9050919050565b60006148f982613d97565b915061490483613d97565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561493d5761493c6141f0565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006149a4602183613c6d565b91506149af82614948565b604082019050919050565b600060208201905081810360008301526149d381614997565b9050919050565b60006060820190506149ef6000830186613e64565b6149fc6020830185613e64565b614a096040830184613e64565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614a7e81613bbe565b92915050565b600060208284031215614a9a57614a99613b87565b5b6000614aa884828501614a6f565b91505092915050565b6000819050919050565b6000614ad6614ad1614acc84614ab1565b613d1d565b613d97565b9050919050565b614ae681614abb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614b2181613bac565b82525050565b6000614b338383614b18565b60208301905092915050565b6000602082019050919050565b6000614b5782614aec565b614b618185614af7565b9350614b6c83614b08565b8060005b83811015614b9d578151614b848882614b27565b9750614b8f83614b3f565b925050600181019050614b70565b5085935050505092915050565b600060a082019050614bbf6000830188613e64565b614bcc6020830187614add565b8181036040830152614bde8186614b4c565b9050614bed6060830185613f45565b614bfa6080830184613e64565b9695505050505050565b600060c082019050614c196000830189613f45565b614c266020830188613e64565b614c336040830187614add565b614c406060830186614add565b614c4d6080830185613f45565b614c5a60a0830184613e64565b979650505050505050565b600081519050614c7481613da1565b92915050565b600080600060608486031215614c9357614c92613b87565b5b6000614ca186828701614c65565b9350506020614cb286828701614c65565b9250506040614cc386828701614c65565b915050925092509256fe4e543a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654e543a2064656372656173656420616c6c6f77616e6365206f722062656c6f77207a65726fa2646970667358221220a16252ddc03ba076c6d6e895819f274f4e54a786910801970bacdbdf5171868c64736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106102e85760003560e01c8063879dd3c511610190578063bf56b371116100dc578063ed42142911610095578063f2fde38b1161006f578063f2fde38b14610b71578063f4b3dbc314610b9a578063f9dfdaeb14610bd7578063fe6f1b0514610c00576102ef565b8063ed42142914610ae0578063f097ea1a14610b1d578063f242ab4114610b46576102ef565b8063bf56b371146109ce578063bf862391146109f9578063dd62ed3e14610a24578063e6c84dc614610a61578063ea5b9e8514610a8c578063ec44acf214610ab5576102ef565b80639b6a275011610149578063a7c29b4011610123578063a7c29b4014610916578063a9059cbb1461093f578063b0bc2a2d1461097c578063be291dc6146109a5576102ef565b80639b6a275014610887578063a457c2d7146108b0578063a643c1a0146108ed576102ef565b8063879dd3c5146107875780638a8c523c146107b25780638da5cb5b146107c957806395d89b41146107f457806399b102b51461081f5780639a36dfa11461085c576102ef565b80633bbac5791161024f57806375f0a874116102085780637d99c66d116101e25780637d99c66d146106cb578063844af78e146106f657806384ea21bc146107215780638756aabd1461075e576102ef565b806375f0a8741461064a57806379777b4e146106755780637c6a9a9c146106a0576102ef565b80633bbac579146105285780635342acb414610565578063679a3c59146105a2578063681aa362146105cb57806370a08231146105f6578063715018a614610633576102ef565b80631884f1e6116102a15780631884f1e61461040457806323b872dd1461042f5780632d1293901461046c578063313ce567146104955780633326d7f2146104c057806339509351146104eb576102ef565b806303c0f5d4146102f457806306fdde031461031d5780630758d92414610348578063095ea7b3146103735780630a2d140c146103b057806318160ddd146103d9576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b5061031b60048036038101906103169190613c22565b610c2b565b005b34801561032957600080fd5b50610332610d1b565b60405161033f9190613cfb565b60405180910390f35b34801561035457600080fd5b5061035d610dad565b60405161036a9190613d7c565b60405180910390f35b34801561037f57600080fd5b5061039a60048036038101906103959190613dcd565b610dd3565b6040516103a79190613e1c565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d29190613e37565b610df1565b005b3480156103e557600080fd5b506103ee610ea3565b6040516103fb9190613e73565b60405180910390f35b34801561041057600080fd5b50610419610ead565b6040516104269190613e73565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190613e8e565b610eb3565b6040516104639190613e1c565b60405180910390f35b34801561047857600080fd5b50610493600480360381019061048e9190613c22565b610f8c565b005b3480156104a157600080fd5b506104aa61107c565b6040516104b79190613efd565b60405180910390f35b3480156104cc57600080fd5b506104d5611093565b6040516104e29190613e73565b60405180910390f35b3480156104f757600080fd5b50610512600480360381019061050d9190613dcd565b611099565b60405161051f9190613e1c565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190613f18565b61114c565b60405161055c9190613e1c565b60405180910390f35b34801561057157600080fd5b5061058c60048036038101906105879190613f18565b61116c565b6040516105999190613e1c565b60405180910390f35b3480156105ae57600080fd5b506105c960048036038101906105c49190613f18565b61118c565b005b3480156105d757600080fd5b506105e061126b565b6040516105ed9190613e73565b60405180910390f35b34801561060257600080fd5b5061061d60048036038101906106189190613f18565b611271565b60405161062a9190613e73565b60405180910390f35b34801561063f57600080fd5b506106486112ba565b005b34801561065657600080fd5b5061065f61140d565b60405161066c9190613f54565b60405180910390f35b34801561068157600080fd5b5061068a611433565b6040516106979190613e1c565b60405180910390f35b3480156106ac57600080fd5b506106b5611446565b6040516106c29190613e73565b60405180910390f35b3480156106d757600080fd5b506106e061144c565b6040516106ed9190613e73565b60405180910390f35b34801561070257600080fd5b5061070b611452565b6040516107189190613e73565b60405180910390f35b34801561072d57600080fd5b5061074860048036038101906107439190613f18565b611458565b6040516107559190613e1c565b60405180910390f35b34801561076a57600080fd5b5061078560048036038101906107809190613f6f565b611478565b005b34801561079357600080fd5b5061079c611570565b6040516107a99190613e1c565b60405180910390f35b3480156107be57600080fd5b506107c7611583565b005b3480156107d557600080fd5b506107de6116c2565b6040516107eb9190613f54565b60405180910390f35b34801561080057600080fd5b506108096116eb565b6040516108169190613cfb565b60405180910390f35b34801561082b57600080fd5b5061084660048036038101906108419190613f18565b61177d565b6040516108539190613e1c565b60405180910390f35b34801561086857600080fd5b5061087161179d565b60405161087e9190613e73565b60405180910390f35b34801561089357600080fd5b506108ae60048036038101906108a99190613f6f565b6117a3565b005b3480156108bc57600080fd5b506108d760048036038101906108d29190613dcd565b611894565b6040516108e49190613e1c565b60405180910390f35b3480156108f957600080fd5b50610914600480360381019061090f9190613f18565b611961565b005b34801561092257600080fd5b5061093d60048036038101906109389190613c22565b611a3a565b005b34801561094b57600080fd5b5061096660048036038101906109619190613dcd565b611b2a565b6040516109739190613e1c565b60405180910390f35b34801561098857600080fd5b506109a3600480360381019061099e9190613e37565b611b48565b005b3480156109b157600080fd5b506109cc60048036038101906109c79190613f9c565b611bfa565b005b3480156109da57600080fd5b506109e3611d0b565b6040516109f09190613e73565b60405180910390f35b348015610a0557600080fd5b50610a0e611d11565b604051610a1b9190613e73565b60405180910390f35b348015610a3057600080fd5b50610a4b6004803603810190610a469190613fdc565b611d17565b604051610a589190613e73565b60405180910390f35b348015610a6d57600080fd5b50610a76611d9e565b604051610a839190613e73565b60405180910390f35b348015610a9857600080fd5b50610ab36004803603810190610aae9190613c22565b611da4565b005b348015610ac157600080fd5b50610aca611e94565b604051610ad79190613e1c565b60405180910390f35b348015610aec57600080fd5b50610b076004803603810190610b029190613f6f565b611ea7565b604051610b149190613e73565b60405180910390f35b348015610b2957600080fd5b50610b446004803603810190610b3f9190613f6f565b611ef2565b005b348015610b5257600080fd5b50610b5b611fd4565b604051610b689190613f54565b60405180910390f35b348015610b7d57600080fd5b50610b986004803603810190610b939190613f18565b611ffa565b005b348015610ba657600080fd5b50610bc16004803603810190610bbc9190613f6f565b6121bc565b604051610bce9190613e73565b60405180910390f35b348015610be357600080fd5b50610bfe6004803603810190610bf99190613f9c565b612207565b005b348015610c0c57600080fd5b50610c15612318565b604051610c229190613e73565b60405180910390f35b610c33612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb790614068565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b606060078054610d2a906140b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610d56906140b7565b8015610da35780601f10610d7857610100808354040283529160200191610da3565b820191906000526020600020905b815481529060010190602001808311610d8657829003601f168201915b5050505050905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610de7610de0612368565b8484612370565b6001905092915050565b610df9612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7d90614068565b60405180910390fd5b80601560006101000a81548160ff02191690831515021790555050565b6000600a54905090565b600e5481565b6000610ec084848461253b565b610f8184610ecc612368565b610f7c85604051806060016040528060258152602001614cce60259139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f32612368565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a709092919063ffffffff16565b612370565b600190509392505050565b610f94612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611021576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101890614068565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600960009054906101000a900460ff16905090565b60165481565b60006111426110a6612368565b8461113d85600260006110b7612368565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad490919063ffffffff16565b612370565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b611194612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121890614068565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611267573d6000803e3d6000fd5b5050565b60105481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112c2612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461134f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134690614068565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560009054906101000a900460ff1681565b60175481565b60135481565b60195481565b60056020528060005260406000206000915054906101000a900460ff1681565b611480612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461150d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150490614068565b60405180910390fd5b611524601254600a5461231e90919063ffffffff16565b811015611566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155d90614135565b60405180910390fd5b80600f8190555050565b601560019054906101000a900460ff1681565b61158b612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160f90614068565b60405180910390fd5b601560029054906101000a900460ff1615611668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165f906141a1565b60405180910390fd5b6001601560026101000a81548160ff0219169083151502179055506001601560016101000a81548160ff0219169083151502179055506001601560006101000a81548160ff02191690831515021790555042601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600880546116fa906140b7565b80601f0160208091040260200160405190810160405280929190818152602001828054611726906140b7565b80156117735780601f1061174857610100808354040283529160200191611773565b820191906000526020600020905b81548152906001019060200180831161175657829003601f168201915b5050505050905090565b60046020528060005260406000206000915054906101000a900460ff1681565b600f5481565b6117ab612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182f90614068565b60405180910390fd5b601254600a54611848919061421f565b81101561188a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188190614135565b60405180910390fd5b8060108190555050565b60006119576118a1612368565b8461195285604051806060016040528060258152602001614cf360259139600260006118cb612368565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a709092919063ffffffff16565b612370565b6001905092915050565b611969612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ed90614068565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a42612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac690614068565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611b3e611b37612368565b848461253b565b6001905092915050565b611b50612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd490614068565b60405180910390fd5b80601560016101000a81548160ff02191690831515021790555050565b611c02612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8690614068565b60405180910390fd5b8160198190555080601881905550611cb3600a60125461231e90919063ffffffff16565b611cc68284612ad490919063ffffffff16565b1115611d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfe9061429c565b60405180910390fd5b5050565b60145481565b60115481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60185481565b611dac612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3090614068565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601560029054906101000a900460ff1681565b600080611ee7601254611ed9611eca601654601754612ad490919063ffffffff16565b86612b3290919063ffffffff16565b61231e90919063ffffffff16565b905080915050919050565b611efa612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7e90614068565b60405180910390fd5b60008111611fca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc190614308565b60405180910390fd5b80600e8190555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612002612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461208f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208690614068565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156120ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f69061439a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806121fc6012546121ee6121df601854601954612ad490919063ffffffff16565b86612b3290919063ffffffff16565b61231e90919063ffffffff16565b905080915050919050565b61220f612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461229c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229390614068565b60405180910390fd5b81601781905550806016819055506122c0600a60125461231e90919063ffffffff16565b6122d38284612ad490919063ffffffff16565b1115612314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230b9061429c565b60405180910390fd5b5050565b60125481565b600061236083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bad565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d79061442c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244790614498565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161252e9190613e73565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a29061452a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561261b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261290614596565b60405180910390fd5b6000811161265e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265590614628565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156126eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e290614694565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561278f5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128da576010548111156127d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d090614700565b60405180910390fd5b601560029054906101000a900460ff166128d9578273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561289957508173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b6128d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cf9061476c565b60405180910390fd5b5b5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661298b57600f546129498261293b85611271565b612ad490919063ffffffff16565b111561298a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612981906147d8565b60405180910390fd5b5b6129958383612c10565b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a3c5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612a545750601560019054906101000a900460ff16155b15612a5e57600090505b612a6a84848484612f48565b50505050565b6000838311158290612ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aaf9190613cfb565b60405180910390fd5b5060008385612ac791906147f8565b9050809150509392505050565b6000808284612ae3919061482c565b905083811015612b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1f906148ce565b60405180910390fd5b8091505092915050565b600080831415612b455760009050612ba7565b60008284612b5391906148ee565b9050828482612b62919061421f565b14612ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b99906149ba565b60405180910390fd5b809150505b92915050565b60008083118290612bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612beb9190613cfb565b60405180910390fd5b5060008385612c03919061421f565b9050809150509392505050565b6000612c29601b54601a54612ad490919063ffffffff16565b1415612c3457612f44565b6000612c3f30611271565b90506000600e548210159050808015612ca65750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612cbe5750601560009054906101000a900460ff165b8015612d4f57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612d4d5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b15612f4157612d8130600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612370565b6000612d996002601a5461231e90919063ffffffff16565b90506000612db282601a546136ab90919063ffffffff16565b90506000612dc982866136ab90919063ffffffff16565b90506000479050612dfc600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836136f5565b6000612e1182476136ab90919063ffffffff16565b90506000612e3a84612e2c8885612b3290919063ffffffff16565b61231e90919063ffffffff16565b90506000811115612eb157612e75600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead87846138db565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868287604051612ea8939291906149da565b60405180910390a15b60004790506000811115612f2957600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612f27573d6000803e3d6000fd5b505b6000601a819055506000601b81905550505050505050505b50505b5050565b8373ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612fa25750805b1561327a57600080601354601454612fba919061482c565b421080156130165750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b156130795761304460125461303660115487612b3290919063ffffffff16565b61231e90919063ffffffff16565b915081601b6000828254613058919061482c565b9250508190555061307282856136ab90919063ffffffff16565b90506130a3565b61308284611ea7565b915061309782856136ab90919063ffffffff16565b90506130a28461397f565b5b61312c846040518060400160405280601881526020017f4e543a20696e73756666696369656e742062616c616e63650000000000000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a709092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131c181600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132619190613e73565b60405180910390a36132738683613a04565b50506136a5565b8273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156132d45750805b156134dd5760006132e4836121bc565b905060006132fb82856136ab90919063ffffffff16565b9050613386846040518060400160405280601881526020017f4e543a20696e73756666696369656e742062616c616e63650000000000000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a709092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061341b81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134bb9190613e73565b60405180910390a36134cd8683613a04565b6134d684613b02565b50506136a4565b613566826040518060400160405280601881526020017f4e543a20696e73756666696369656e742062616c616e63650000000000000000815250600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a709092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135fb82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad490919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161369b9190613e73565b60405180910390a35b5b50505050565b60006136ed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a70565b905092915050565b60008290506000600267ffffffffffffffff81111561371757613716614a11565b5b6040519080825280602002602001820160405280156137455781602001602082028036833780820191505090505b509050308160008151811061375d5761375c614a40565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138069190614a84565b8160018151811061381a57613819614a40565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c42613883919061482c565b6040518663ffffffff1660e01b81526004016138a3959493929190614baa565b600060405180830381600087803b1580156138bd57600080fd5b505af11580156138d1573d6000803e3d6000fd5b5050505050505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff1663f305d7198330866000808a61012c42613911919061482c565b6040518863ffffffff1660e01b815260040161393296959493929190614c04565b60606040518083038185885af1158015613950573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906139759190614c7a565b5050505050505050565b6139a860125461399a60165484612b3290919063ffffffff16565b61231e90919063ffffffff16565b601a60008282546139b9919061482c565b925050819055506139e96012546139db60175484612b3290919063ffffffff16565b61231e90919063ffffffff16565b601b60008282546139fa919061482c565b9250508190555050565b613a5681600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad490919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613af69190613e73565b60405180910390a35050565b613b2b601254613b1d60185484612b3290919063ffffffff16565b61231e90919063ffffffff16565b601a6000828254613b3c919061482c565b92505081905550613b6c601254613b5e60195484612b3290919063ffffffff16565b61231e90919063ffffffff16565b601b6000828254613b7d919061482c565b9250508190555050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bb782613b8c565b9050919050565b613bc781613bac565b8114613bd257600080fd5b50565b600081359050613be481613bbe565b92915050565b60008115159050919050565b613bff81613bea565b8114613c0a57600080fd5b50565b600081359050613c1c81613bf6565b92915050565b60008060408385031215613c3957613c38613b87565b5b6000613c4785828601613bd5565b9250506020613c5885828601613c0d565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c9c578082015181840152602081019050613c81565b83811115613cab576000848401525b50505050565b6000601f19601f8301169050919050565b6000613ccd82613c62565b613cd78185613c6d565b9350613ce7818560208601613c7e565b613cf081613cb1565b840191505092915050565b60006020820190508181036000830152613d158184613cc2565b905092915050565b6000819050919050565b6000613d42613d3d613d3884613b8c565b613d1d565b613b8c565b9050919050565b6000613d5482613d27565b9050919050565b6000613d6682613d49565b9050919050565b613d7681613d5b565b82525050565b6000602082019050613d916000830184613d6d565b92915050565b6000819050919050565b613daa81613d97565b8114613db557600080fd5b50565b600081359050613dc781613da1565b92915050565b60008060408385031215613de457613de3613b87565b5b6000613df285828601613bd5565b9250506020613e0385828601613db8565b9150509250929050565b613e1681613bea565b82525050565b6000602082019050613e316000830184613e0d565b92915050565b600060208284031215613e4d57613e4c613b87565b5b6000613e5b84828501613c0d565b91505092915050565b613e6d81613d97565b82525050565b6000602082019050613e886000830184613e64565b92915050565b600080600060608486031215613ea757613ea6613b87565b5b6000613eb586828701613bd5565b9350506020613ec686828701613bd5565b9250506040613ed786828701613db8565b9150509250925092565b600060ff82169050919050565b613ef781613ee1565b82525050565b6000602082019050613f126000830184613eee565b92915050565b600060208284031215613f2e57613f2d613b87565b5b6000613f3c84828501613bd5565b91505092915050565b613f4e81613bac565b82525050565b6000602082019050613f696000830184613f45565b92915050565b600060208284031215613f8557613f84613b87565b5b6000613f9384828501613db8565b91505092915050565b60008060408385031215613fb357613fb2613b87565b5b6000613fc185828601613db8565b9250506020613fd285828601613db8565b9150509250929050565b60008060408385031215613ff357613ff2613b87565b5b600061400185828601613bd5565b925050602061401285828601613bd5565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614052602083613c6d565b915061405d8261401c565b602082019050919050565b6000602082019050818103600083015261408181614045565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806140cf57607f821691505b602082108114156140e3576140e2614088565b5b50919050565b7f4e543a2073686f756c642062652067726561746572207468616e20302e312500600082015250565b600061411f601f83613c6d565b915061412a826140e9565b602082019050919050565b6000602082019050818103600083015261414e81614112565b9050919050565b7f4e543a20616c726561647920656e61626c656400000000000000000000000000600082015250565b600061418b601383613c6d565b915061419682614155565b602082019050919050565b600060208201905081810360008301526141ba8161417e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061422a82613d97565b915061423583613d97565b925082614245576142446141c1565b5b828204905092915050565b7f4e543a2063616e2774206265206d6f7265207468616e20313025000000000000600082015250565b6000614286601a83613c6d565b915061429182614250565b602082019050919050565b600060208201905081810360008301526142b581614279565b9050919050565b7f4e543a2063616e27742062652030000000000000000000000000000000000000600082015250565b60006142f2600e83613c6d565b91506142fd826142bc565b602082019050919050565b60006020820190508181036000830152614321816142e5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614384602683613c6d565b915061438f82614328565b604082019050919050565b600060208201905081810360008301526143b381614377565b9050919050565b7f4e543a20617070726f76652066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614416602183613c6d565b9150614421826143ba565b604082019050919050565b6000602082019050818103600083015261444581614409565b9050919050565b7f4e543a20617070726f766520746f20746865207a65726f206164647265737300600082015250565b6000614482601f83613c6d565b915061448d8261444c565b602082019050919050565b600060208201905081810360008301526144b181614475565b9050919050565b7f4e543a207472616e736665722066726f6d20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614514602283613c6d565b915061451f826144b8565b604082019050919050565b6000602082019050818103600083015261454381614507565b9050919050565b7f4e543a207472616e7366657220746f20746865207a65726f2061646472657373600082015250565b6000614580602083613c6d565b915061458b8261454a565b602082019050919050565b600060208201905081810360008301526145af81614573565b9050919050565b7f4e543a20416d6f756e74206d7573742062652067726561746572207468616e2060008201527f7a65726f00000000000000000000000000000000000000000000000000000000602082015250565b6000614612602483613c6d565b915061461d826145b6565b604082019050919050565b6000602082019050818103600083015261464181614605565b9050919050565b7f426f742064657465637465640000000000000000000000000000000000000000600082015250565b600061467e600c83613c6d565b915061468982614648565b602082019050919050565b600060208201905081810360008301526146ad81614671565b9050919050565b7f4e543a206d61782074786e206c696d6974206578636565647300000000000000600082015250565b60006146ea601983613c6d565b91506146f5826146b4565b602082019050919050565b60006020820190508181036000830152614719816146dd565b9050919050565b7f4e543a2074726164696e672069732064697361626c6500000000000000000000600082015250565b6000614756601683613c6d565b915061476182614720565b602082019050919050565b6000602082019050818103600083015261478581614749565b9050919050565b7f4e543a206d617820686f6c64206c696d69742065786365656473000000000000600082015250565b60006147c2601a83613c6d565b91506147cd8261478c565b602082019050919050565b600060208201905081810360008301526147f1816147b5565b9050919050565b600061480382613d97565b915061480e83613d97565b925082821015614821576148206141f0565b5b828203905092915050565b600061483782613d97565b915061484283613d97565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614877576148766141f0565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006148b8601b83613c6d565b91506148c382614882565b602082019050919050565b600060208201905081810360008301526148e7816148ab565b9050919050565b60006148f982613d97565b915061490483613d97565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561493d5761493c6141f0565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006149a4602183613c6d565b91506149af82614948565b604082019050919050565b600060208201905081810360008301526149d381614997565b9050919050565b60006060820190506149ef6000830186613e64565b6149fc6020830185613e64565b614a096040830184613e64565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614a7e81613bbe565b92915050565b600060208284031215614a9a57614a99613b87565b5b6000614aa884828501614a6f565b91505092915050565b6000819050919050565b6000614ad6614ad1614acc84614ab1565b613d1d565b613d97565b9050919050565b614ae681614abb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614b2181613bac565b82525050565b6000614b338383614b18565b60208301905092915050565b6000602082019050919050565b6000614b5782614aec565b614b618185614af7565b9350614b6c83614b08565b8060005b83811015614b9d578151614b848882614b27565b9750614b8f83614b3f565b925050600181019050614b70565b5085935050505092915050565b600060a082019050614bbf6000830188613e64565b614bcc6020830187614add565b8181036040830152614bde8186614b4c565b9050614bed6060830185613f45565b614bfa6080830184613e64565b9695505050505050565b600060c082019050614c196000830189613f45565b614c266020830188613e64565b614c336040830187614add565b614c406060830186614add565b614c4d6080830185613f45565b614c5a60a0830184613e64565b979650505050505050565b600081519050614c7481613da1565b92915050565b600080600060608486031215614c9357614c92613b87565b5b6000614ca186828701614c65565b9350506020614cb286828701614c65565b9250506040614cc386828701614c65565b915050925092509256fe4e543a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654e543a2064656372656173656420616c6c6f77616e6365206f722062656c6f77207a65726fa2646970667358221220a16252ddc03ba076c6d6e895819f274f4e54a786910801970bacdbdf5171868c64736f6c634300080a0033

Deployed Bytecode Sourcemap

3273:16161:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11346:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6840:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4001:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7751:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10985:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7117:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4103:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7952:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9455:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7026:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4777:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8403:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3674:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3496:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11731:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4309:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7225:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2820:157;;;;;;;;;;;;;:::i;:::-;;4064:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4560:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4861:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4480:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5040:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3611:56;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9797:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4656:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11484:239;;;;;;;;;;;;;:::i;:::-;;2606:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6931:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3552:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4211:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10042:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8711:400;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11215:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9284:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7352:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11108:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10632:345;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4526:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4403:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7559:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4955:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9119:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4706:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11868:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9634:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4035:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2985:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12108:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10282:342;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4437:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11346:130;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11462:6:::1;11446:5;:13;11452:6;11446:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;11346:130:::0;;:::o;6840:83::-;6877:13;6910:5;6903:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6840:83;:::o;4001:27::-;;;;;;;;;;;;;:::o;7751:193::-;7853:4;7875:39;7884:12;:10;:12::i;:::-;7898:7;7907:6;7875:8;:39::i;:::-;7932:4;7925:11;;7751:193;;;;:::o;10985:115::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11086:6:::1;11057:26;;:35;;;;;;;;;;;;;;;;;;10985:115:::0;:::o;7117:100::-;7170:7;7197:12;;7190:19;;7117:100;:::o;4103:53::-;;;;:::o;7952:443::-;8084:4;8101:36;8111:6;8119:9;8130:6;8101:9;:36::i;:::-;8148:217;8171:6;8192:12;:10;:12::i;:::-;8219:135;8275:6;8219:135;;;;;;;;;;;;;;;;;:11;:19;8231:6;8219:19;;;;;;;;;;;;;;;:33;8239:12;:10;:12::i;:::-;8219:33;;;;;;;;;;;;;;;;:37;;:135;;;;;:::i;:::-;8148:8;:217::i;:::-;8383:4;8376:11;;7952:443;;;;;:::o;9455:171::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9613:5:::1;9577:24;:33;9602:7;9577:33;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;9455:171:::0;;:::o;7026:83::-;7067:5;7092:9;;;;;;;;;;;7085:16;;7026:83;:::o;4777:40::-;;;;:::o;8403:300::-;8518:4;8540:133;8563:12;:10;:12::i;:::-;8590:7;8612:50;8651:10;8612:11;:25;8624:12;:10;:12::i;:::-;8612:25;;;;;;;;;;;;;;;:34;8638:7;8612:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;8540:8;:133::i;:::-;8691:4;8684:11;;8403:300;;;;:::o;3674:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;3496:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;11731:129::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11810:9:::1;11802:27;;:50;11830:21;11802:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11731:129:::0;:::o;4309:50::-;;;;:::o;7225:119::-;7291:7;7318:9;:18;7328:7;7318:18;;;;;;;;;;;;;;;;7311:25;;7225:119;;;:::o;2820:157::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2927:1:::1;2890:40;;2911:6;::::0;::::1;;;;;;;;2890:40;;;;;;;;;;;;2966:1;2941:6:::0;::::1;:28;;;;;;;;;;;;;;;;;;2820:157::o:0;4064:30::-;;;;;;;;;;;;;:::o;4560:38::-;;;;;;;;;;;;;:::o;4861:40::-;;;;:::o;4480:39::-;;;;:::o;5040:42::-;;;;:::o;3611:56::-;;;;;;;;;;;;;;;;;;;;;;:::o;9797:237::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9902:32:::1;9919:14;;9902:12;;:16;;:32;;;;:::i;:::-;9891:7;:43;;9869:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;10019:7;10004:12;:22;;;;9797:237:::0;:::o;4656:22::-;;;;;;;;;;;;;:::o;11484:239::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11548:7:::1;;;;;;;;;;;11547:8;11539:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;11600:4;11590:7;;:14;;;;;;;;;;;;;;;;;;11628:4;11615:10;;:17;;;;;;;;;;;;;;;;;;11672:4;11643:26;;:33;;;;;;;;;;;;;;;;;;11700:15;11687:10;:28;;;;11484:239::o:0;2606:79::-;2644:7;2671:6;;;;;;;;;;;2664:13;;2606:79;:::o;6931:87::-;6970:13;7003:7;6996:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6931:87;:::o;3552:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;4211:51::-;;;;:::o;10042:232::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10161:14:::1;;10146:12;;:29;;;;:::i;:::-;10135:7;:40;;10113:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;10259:7;10245:11;:21;;;;10042:232:::0;:::o;8711:400::-;8831:4;8853:228;8876:12;:10;:12::i;:::-;8903:7;8925:145;8982:15;8925:145;;;;;;;;;;;;;;;;;:11;:25;8937:12;:10;:12::i;:::-;8925:25;;;;;;;;;;;;;;;:34;8951:7;8925:34;;;;;;;;;;;;;;;;:38;;:145;;;;;:::i;:::-;8853:8;:228::i;:::-;9099:4;9092:11;;8711:400;;;;:::o;11215:123::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11314:16:::1;11296:15;;:34;;;;;;;;;;;;;;;;;;11215:123:::0;:::o;9284:163::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9434:5:::1;9402:20;:29;9423:7;9402:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;9284:163:::0;;:::o;7352:199::-;7457:4;7479:42;7489:12;:10;:12::i;:::-;7503:9;7514:6;7479:9;:42::i;:::-;7539:4;7532:11;;7352:199;;;;:::o;11108:99::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11193:6:::1;11180:10;;:19;;;;;;;;;;;;;;;;;;11108:99:::0;:::o;10632:345::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10777:6:::1;10753:21;:30;;;;10818:13;10794:21;:37;;;;10893:22;10912:2;10893:14;;:18;;:22;;;;:::i;:::-;10864:25;10875:13;10864:6;:10;;:25;;;;:::i;:::-;:51;;10842:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;10632:345:::0;;:::o;4526:25::-;;;;:::o;4403:27::-;;;;:::o;7559:184::-;7676:7;7708:11;:18;7720:5;7708:18;;;;;;;;;;;;;;;:27;7727:7;7708:27;;;;;;;;;;;;;;;;7701:34;;7559:184;;;;:::o;4955:41::-;;;;:::o;9119:157::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9263:5:::1;9234:17;:26;9252:7;9234:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;9119:157:::0;;:::o;4706:19::-;;;;;;;;;;;;;:::o;11868:232::-;11931:7;11951:11;11965:106;12056:14;;11965:72;11990:46;12015:20;;11990;;:24;;:46;;;;:::i;:::-;11965:6;:24;;:72;;;;:::i;:::-;:90;;:106;;;;:::i;:::-;11951:120;;12089:3;12082:10;;;11868:232;;;:::o;9634:155::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9726:1:::1;9716:7;:11;9708:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9774:7;9757:14;:24;;;;9634:155:::0;:::o;4035:22::-;;;;;;;;;;;;;:::o;2985:281::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3108:1:::1;3088:22;;:8;:22;;;;3066:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;3221:8;3192:38;;3213:6;::::0;::::1;;;;;;;;3192:38;;;;;;;;;;;;3250:8;3241:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2985:281:::0;:::o;12108:235::-;12172:7;12192:11;12206:108;12299:14;;12206:74;12231:48;12257:21;;12231;;:25;;:48;;;;:::i;:::-;12206:6;:24;;:74;;;;:::i;:::-;:92;;:108;;;;:::i;:::-;12192:122;;12332:3;12325:10;;;12108:235;;;:::o;10282:342::-;2743:12;:10;:12::i;:::-;2733:22;;:6;;;;;;;;;;:22;;;2725:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10425:6:::1;10402:20;:29;;;;10465:13;10442:20;:36;;;;10540:22;10559:2;10540:14;;:18;;:22;;;;:::i;:::-;10511:25;10522:13;10511:6;:10;;:25;;;;:::i;:::-;:51;;10489:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;10282:342:::0;;:::o;4437:36::-;;;;:::o;21730:132::-;21788:7;21815:39;21819:1;21822;21815:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;21808:46;;21730:132;;;;:::o;1942:115::-;1995:15;2038:10;2023:26;;1942:115;:::o;12351:365::-;12495:1;12478:19;;:5;:19;;;;12470:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12573:1;12554:21;;:7;:21;;;;12546:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12654:6;12624:11;:18;12636:5;12624:18;;;;;;;;;;;;;;;:27;12643:7;12624:27;;;;;;;;;;;;;;;:36;;;;12692:7;12676:32;;12685:5;12676:32;;;12701:6;12676:32;;;;;;:::i;:::-;;;;;;;;12351:365;;;:::o;12724:1467::-;12862:1;12846:18;;:4;:18;;;;12838:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12936:1;12922:16;;:2;:16;;;;12914:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;13003:1;12994:6;:10;12986:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13065:5;:11;13071:4;13065:11;;;;;;;;;;;;;;;;;;;;;;;;;13064:12;13056:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;13110:20;:26;13131:4;13110:26;;;;;;;;;;;;;;;;;;;;;;;;;13109:27;:56;;;;;13141:20;:24;13162:2;13141:24;;;;;;;;;;;;;;;;;;;;;;;;;13140:25;13109:56;13105:385;;;13200:11;;13190:6;:21;;13182:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13307:7;;;;;;;;;;;13302:177;;13376:4;13365:15;;:7;;;;;;;;;;;:15;;;;:32;;;;;13395:2;13384:13;;:7;;;;;;;;;;;:13;;;;13365:32;13335:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;13302:177;13105:385;13507:24;:28;13532:2;13507:28;;;;;;;;;;;;;;;;;;;;;;;;;13502:191;;13607:12;;13578:25;13596:6;13578:13;13588:2;13578:9;:13::i;:::-;:17;;:25;;;;:::i;:::-;:41;;13552:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;13502:191;13734:30;13755:4;13761:2;13734:20;:30::i;:::-;13838:12;13853:4;13838:19;;13957:17;:23;13975:4;13957:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;13984:17;:21;14002:2;13984:21;;;;;;;;;;;;;;;;;;;;;;;;;13957:48;:63;;;;14010:10;;;;;;;;;;;14009:11;13957:63;13953:111;;;14047:5;14037:15;;13953:111;14142:41;14157:4;14163:2;14167:6;14175:7;14142:14;:41::i;:::-;12827:1364;12724:1467;;;:::o;21017:226::-;21137:7;21170:1;21165;:6;;21173:12;21157:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;21197:9;21213:1;21209;:5;;;;:::i;:::-;21197:17;;21234:1;21227:8;;;21017:226;;;;;:::o;20684:181::-;20742:7;20762:9;20778:1;20774;:5;;;;:::i;:::-;20762:17;;20803:1;20798;:6;;20790:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;20856:1;20849:8;;;20684:181;;;;:::o;21251:471::-;21309:7;21559:1;21554;:6;21550:47;;;21584:1;21577:8;;;;21550:47;21609:9;21625:1;21621;:5;;;;:::i;:::-;21609:17;;21654:1;21649;21645;:5;;;;:::i;:::-;:10;21637:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;21713:1;21706:8;;;21251:471;;;;;:::o;21870:312::-;21990:7;22022:1;22018;:5;22025:12;22010:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;22049:9;22065:1;22061;:5;;;;:::i;:::-;22049:17;;22173:1;22166:8;;;21870:312;;;;;:::o;17038:2393::-;17164:1;17116:44;17140:19;;17116;;:23;;:44;;;;:::i;:::-;:49;17113:61;;;17167:7;;17113:61;17462:28;17493:24;17511:4;17493:9;:24::i;:::-;17462:55;;17530:15;17572:14;;17548:20;:38;;17530:56;;17617:10;:42;;;;;17652:7;;;;;;;;;;;17644:15;;:4;:15;;;;17617:42;:85;;;;;17676:26;;;;;;;;;;;17617:85;:143;;;;;17737:4;17721:21;;:4;:21;;;:38;;;;;17752:7;;;;;;;;;;;17746:13;;:2;:13;;;17721:38;17719:41;17617:143;17599:1825;;;17835:65;17852:4;17867:9;;;;;;;;;;;17879:20;17835:8;:65::i;:::-;17917:21;17941:26;17965:1;17941:19;;:23;;:26;;;;:::i;:::-;17917:50;;17982:26;18011:38;18035:13;18011:19;;:23;;:38;;;;:::i;:::-;17982:67;;18066:30;18099:76;18142:18;18099:20;:24;;:76;;;;:::i;:::-;18066:109;;18192:21;18216;18192:45;;18304:66;18335:9;;;;;;;;;;;18347:22;18304;:66::i;:::-;18387:20;18410:40;18436:13;18410:21;:25;;:40;;;;:::i;:::-;18387:63;;18467:31;18501:95;18573:22;18501:49;18536:13;18501:12;:34;;:49;;;;:::i;:::-;:71;;:95;;;;:::i;:::-;18467:129;;18680:1;18654:23;:27;18650:442;;;18702:192;18751:9;;;;;;;;;;;3938:6;18811:18;18852:23;18702:18;:192::i;:::-;18920:156;18957:13;18993:23;19039:18;18920:156;;;;;;;;:::i;:::-;;;;;;;;18650:442;19108:23;19134:21;19108:47;;19242:1;19224:15;:19;19220:75;;;19253:15;;;;;;;;;;;19245:33;;:50;19279:15;19245:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19220:75;19373:1;19351:19;:23;;;;19411:1;19389:19;:23;;;;17787:1637;;;;;;;17599:1825;17102:2329;;17038:2393;;;:::o;14272:1962::-;14438:6;14427:17;;:7;;;;;;;;;;;:17;;;:28;;;;;14448:7;14427:28;14423:1804;;;14472:14;14501:23;14616:11;;14603:10;;:24;;;;:::i;:::-;14585:15;:42;:91;;;;;14666:9;;;;;;;;;;;14648:28;;:6;:28;;;;14585:91;14563:492;;;14720:38;14743:14;;14720:18;14731:6;;14720;:10;;:18;;;;:::i;:::-;:22;;:38;;;;:::i;:::-;14711:47;;14800:6;14777:19;;:29;;;;;;;:::i;:::-;;;;;;;;14843:18;14854:6;14843;:10;;:18;;;;:::i;:::-;14825:36;;14563:492;;;14911:24;14928:6;14911:16;:24::i;:::-;14902:33;;14972:18;14983:6;14972;:10;;:18;;;;:::i;:::-;14954:36;;15009:30;15032:6;15009:22;:30::i;:::-;14563:492;15091:106;15131:6;15091:106;;;;;;;;;;;;;;;;;:9;:17;15101:6;15091:17;;;;;;;;;;;;;;;;:21;;:106;;;;;:::i;:::-;15071:9;:17;15081:6;15071:17;;;;;;;;;;;;;;;:126;;;;15235:41;15260:15;15235:9;:20;15245:9;15235:20;;;;;;;;;;;;;;;;:24;;:41;;;;:::i;:::-;15212:9;:20;15222:9;15212:20;;;;;;;;;;;;;;;:64;;;;15313:9;15296:44;;15305:6;15296:44;;;15324:15;15296:44;;;;;;:::i;:::-;;;;;;;;15357:28;15370:6;15378;15357:12;:28::i;:::-;14457:940;;14423:1804;;;15418:9;15407:20;;:7;;;;;;;;;;;:20;;;:31;;;;;15431:7;15407:31;15403:824;;;15455:14;15472:25;15490:6;15472:17;:25::i;:::-;15455:42;;15512:23;15538:18;15549:6;15538;:10;;:18;;;;:::i;:::-;15512:44;;15591:106;15631:6;15591:106;;;;;;;;;;;;;;;;;:9;:17;15601:6;15591:17;;;;;;;;;;;;;;;;:21;;:106;;;;;:::i;:::-;15571:9;:17;15581:6;15571:17;;;;;;;;;;;;;;;:126;;;;15735:41;15760:15;15735:9;:20;15745:9;15735:20;;;;;;;;;;;;;;;;:24;;:41;;;;:::i;:::-;15712:9;:20;15722:9;15712:20;;;;;;;;;;;;;;;:64;;;;15813:9;15796:44;;15805:6;15796:44;;;15824:15;15796:44;;;;;;:::i;:::-;;;;;;;;15857:28;15870:6;15878;15857:12;:28::i;:::-;15900:31;15924:6;15900:23;:31::i;:::-;15440:503;;15403:824;;;15984:106;16024:6;15984:106;;;;;;;;;;;;;;;;;:9;:17;15994:6;15984:17;;;;;;;;;;;;;;;;:21;;:106;;;;;:::i;:::-;15964:9;:17;15974:6;15964:17;;;;;;;;;;;;;;;:126;;;;16128:32;16153:6;16128:9;:20;16138:9;16128:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;16105:9;:20;16115:9;16105:20;;;;;;;;;;;;;;;:55;;;;16197:9;16180:35;;16189:6;16180:35;;;16208:6;16180:35;;;;;;:::i;:::-;;;;;;;;15403:824;14423:1804;14272:1962;;;;:::o;20873:136::-;20931:7;20958:43;20962:1;20965;20958:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;20951:50;;20873:136;;;;:::o;19530:603::-;19634:20;19668:13;19634:48;;19751:21;19789:1;19775:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19751:40;;19820:4;19802;19807:1;19802:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19846:9;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19836:4;19841:1;19836:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;19901:9;:60;;;19976:11;20002:1;20046:4;20073;20111:3;20093:15;:21;;;;:::i;:::-;19901:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19623:510;;19530:603;;:::o;20141:512::-;20304:20;20338:13;20304:48;;20395:9;:25;;;20428:9;20461:4;20481:11;20507:1;20550;20593:5;20631:3;20613:15;:21;;;;:::i;:::-;20395:250;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20293:360;20141:512;;;;:::o;16451:284::-;16541:76;16592:14;;16541:32;16552:20;;16541:6;:10;;:32;;;;:::i;:::-;:36;;:76;;;;:::i;:::-;16518:19;;:99;;;;;;;:::i;:::-;;;;;;;;16651:76;16702:14;;16651:32;16662:20;;16651:6;:10;;:32;;;;:::i;:::-;:36;;:76;;;;:::i;:::-;16628:19;;:99;;;;;;;:::i;:::-;;;;;;;;16451:284;:::o;16242:201::-;16342:36;16371:6;16342:9;:24;16360:4;16342:24;;;;;;;;;;;;;;;;:28;;:36;;;;:::i;:::-;16315:9;:24;16333:4;16315:24;;;;;;;;;;;;;;;:63;;;;16421:4;16396:39;;16405:6;16396:39;;;16428:6;16396:39;;;;;;:::i;:::-;;;;;;;;16242:201;;:::o;16743:287::-;16834:77;16886:14;;16834:33;16845:21;;16834:6;:10;;:33;;;;:::i;:::-;:37;;:77;;;;:::i;:::-;16811:19;;:100;;;;;;;:::i;:::-;;;;;;;;16945:77;16997:14;;16945:33;16956:21;;16945:6;:10;;:33;;;;:::i;:::-;:37;;:77;;;;:::i;:::-;16922:19;;:100;;;;;;;:::i;:::-;;;;;;;;16743:287;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:90::-;875:7;918:5;911:13;904:21;893:32;;841:90;;;:::o;937:116::-;1007:21;1022:5;1007:21;:::i;:::-;1000:5;997:32;987:60;;1043:1;1040;1033:12;987:60;937:116;:::o;1059:133::-;1102:5;1140:6;1127:20;1118:29;;1156:30;1180:5;1156:30;:::i;:::-;1059:133;;;;:::o;1198:468::-;1263:6;1271;1320:2;1308:9;1299:7;1295:23;1291:32;1288:119;;;1326:79;;:::i;:::-;1288:119;1446:1;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1417:117;1573:2;1599:50;1641:7;1632:6;1621:9;1617:22;1599:50;:::i;:::-;1589:60;;1544:115;1198:468;;;;;:::o;1672:99::-;1724:6;1758:5;1752:12;1742:22;;1672:99;;;:::o;1777:169::-;1861:11;1895:6;1890:3;1883:19;1935:4;1930:3;1926:14;1911:29;;1777:169;;;;:::o;1952:307::-;2020:1;2030:113;2044:6;2041:1;2038:13;2030:113;;;2129:1;2124:3;2120:11;2114:18;2110:1;2105:3;2101:11;2094:39;2066:2;2063:1;2059:10;2054:15;;2030:113;;;2161:6;2158:1;2155:13;2152:101;;;2241:1;2232:6;2227:3;2223:16;2216:27;2152:101;2001:258;1952:307;;;:::o;2265:102::-;2306:6;2357:2;2353:7;2348:2;2341:5;2337:14;2333:28;2323:38;;2265:102;;;:::o;2373:364::-;2461:3;2489:39;2522:5;2489:39;:::i;:::-;2544:71;2608:6;2603:3;2544:71;:::i;:::-;2537:78;;2624:52;2669:6;2664:3;2657:4;2650:5;2646:16;2624:52;:::i;:::-;2701:29;2723:6;2701:29;:::i;:::-;2696:3;2692:39;2685:46;;2465:272;2373:364;;;;:::o;2743:313::-;2856:4;2894:2;2883:9;2879:18;2871:26;;2943:9;2937:4;2933:20;2929:1;2918:9;2914:17;2907:47;2971:78;3044:4;3035:6;2971:78;:::i;:::-;2963:86;;2743:313;;;;:::o;3062:60::-;3090:3;3111:5;3104:12;;3062:60;;;:::o;3128:142::-;3178:9;3211:53;3229:34;3238:24;3256:5;3238:24;:::i;:::-;3229:34;:::i;:::-;3211:53;:::i;:::-;3198:66;;3128:142;;;:::o;3276:126::-;3326:9;3359:37;3390:5;3359:37;:::i;:::-;3346:50;;3276:126;;;:::o;3408:144::-;3476:9;3509:37;3540:5;3509:37;:::i;:::-;3496:50;;3408:144;;;:::o;3558:167::-;3663:55;3712:5;3663:55;:::i;:::-;3658:3;3651:68;3558:167;;:::o;3731:258::-;3842:4;3880:2;3869:9;3865:18;3857:26;;3893:89;3979:1;3968:9;3964:17;3955:6;3893:89;:::i;:::-;3731:258;;;;:::o;3995:77::-;4032:7;4061:5;4050:16;;3995:77;;;:::o;4078:122::-;4151:24;4169:5;4151:24;:::i;:::-;4144:5;4141:35;4131:63;;4190:1;4187;4180:12;4131:63;4078:122;:::o;4206:139::-;4252:5;4290:6;4277:20;4268:29;;4306:33;4333:5;4306:33;:::i;:::-;4206:139;;;;:::o;4351:474::-;4419:6;4427;4476:2;4464:9;4455:7;4451:23;4447:32;4444:119;;;4482:79;;:::i;:::-;4444:119;4602:1;4627:53;4672:7;4663:6;4652:9;4648:22;4627:53;:::i;:::-;4617:63;;4573:117;4729:2;4755:53;4800:7;4791:6;4780:9;4776:22;4755:53;:::i;:::-;4745:63;;4700:118;4351:474;;;;;:::o;4831:109::-;4912:21;4927:5;4912:21;:::i;:::-;4907:3;4900:34;4831:109;;:::o;4946:210::-;5033:4;5071:2;5060:9;5056:18;5048:26;;5084:65;5146:1;5135:9;5131:17;5122:6;5084:65;:::i;:::-;4946:210;;;;:::o;5162:323::-;5218:6;5267:2;5255:9;5246:7;5242:23;5238:32;5235:119;;;5273:79;;:::i;:::-;5235:119;5393:1;5418:50;5460:7;5451:6;5440:9;5436:22;5418:50;:::i;:::-;5408:60;;5364:114;5162:323;;;;:::o;5491:118::-;5578:24;5596:5;5578:24;:::i;:::-;5573:3;5566:37;5491:118;;:::o;5615:222::-;5708:4;5746:2;5735:9;5731:18;5723:26;;5759:71;5827:1;5816:9;5812:17;5803:6;5759:71;:::i;:::-;5615:222;;;;:::o;5843:619::-;5920:6;5928;5936;5985:2;5973:9;5964:7;5960:23;5956:32;5953:119;;;5991:79;;:::i;:::-;5953:119;6111:1;6136:53;6181:7;6172:6;6161:9;6157:22;6136:53;:::i;:::-;6126:63;;6082:117;6238:2;6264:53;6309:7;6300:6;6289:9;6285:22;6264:53;:::i;:::-;6254:63;;6209:118;6366:2;6392:53;6437:7;6428:6;6417:9;6413:22;6392:53;:::i;:::-;6382:63;;6337:118;5843:619;;;;;:::o;6468:86::-;6503:7;6543:4;6536:5;6532:16;6521:27;;6468:86;;;:::o;6560:112::-;6643:22;6659:5;6643:22;:::i;:::-;6638:3;6631:35;6560:112;;:::o;6678:214::-;6767:4;6805:2;6794:9;6790:18;6782:26;;6818:67;6882:1;6871:9;6867:17;6858:6;6818:67;:::i;:::-;6678:214;;;;:::o;6898:329::-;6957:6;7006:2;6994:9;6985:7;6981:23;6977:32;6974:119;;;7012:79;;:::i;:::-;6974:119;7132:1;7157:53;7202:7;7193:6;7182:9;7178:22;7157:53;:::i;:::-;7147:63;;7103:117;6898:329;;;;:::o;7233:118::-;7320:24;7338:5;7320:24;:::i;:::-;7315:3;7308:37;7233:118;;:::o;7357:222::-;7450:4;7488:2;7477:9;7473:18;7465:26;;7501:71;7569:1;7558:9;7554:17;7545:6;7501:71;:::i;:::-;7357:222;;;;:::o;7585:329::-;7644:6;7693:2;7681:9;7672:7;7668:23;7664:32;7661:119;;;7699:79;;:::i;:::-;7661:119;7819:1;7844:53;7889:7;7880:6;7869:9;7865:22;7844:53;:::i;:::-;7834:63;;7790:117;7585:329;;;;:::o;7920:474::-;7988:6;7996;8045:2;8033:9;8024:7;8020:23;8016:32;8013:119;;;8051:79;;:::i;:::-;8013:119;8171:1;8196:53;8241:7;8232:6;8221:9;8217:22;8196:53;:::i;:::-;8186:63;;8142:117;8298:2;8324:53;8369:7;8360:6;8349:9;8345:22;8324:53;:::i;:::-;8314:63;;8269:118;7920:474;;;;;:::o;8400:::-;8468:6;8476;8525:2;8513:9;8504:7;8500:23;8496:32;8493:119;;;8531:79;;:::i;:::-;8493:119;8651:1;8676:53;8721:7;8712:6;8701:9;8697:22;8676:53;:::i;:::-;8666:63;;8622:117;8778:2;8804:53;8849:7;8840:6;8829:9;8825:22;8804:53;:::i;:::-;8794:63;;8749:118;8400:474;;;;;:::o;8880:182::-;9020:34;9016:1;9008:6;9004:14;8997:58;8880:182;:::o;9068:366::-;9210:3;9231:67;9295:2;9290:3;9231:67;:::i;:::-;9224:74;;9307:93;9396:3;9307:93;:::i;:::-;9425:2;9420:3;9416:12;9409:19;;9068:366;;;:::o;9440:419::-;9606:4;9644:2;9633:9;9629:18;9621:26;;9693:9;9687:4;9683:20;9679:1;9668:9;9664:17;9657:47;9721:131;9847:4;9721:131;:::i;:::-;9713:139;;9440:419;;;:::o;9865:180::-;9913:77;9910:1;9903:88;10010:4;10007:1;10000:15;10034:4;10031:1;10024:15;10051:320;10095:6;10132:1;10126:4;10122:12;10112:22;;10179:1;10173:4;10169:12;10200:18;10190:81;;10256:4;10248:6;10244:17;10234:27;;10190:81;10318:2;10310:6;10307:14;10287:18;10284:38;10281:84;;;10337:18;;:::i;:::-;10281:84;10102:269;10051:320;;;:::o;10377:181::-;10517:33;10513:1;10505:6;10501:14;10494:57;10377:181;:::o;10564:366::-;10706:3;10727:67;10791:2;10786:3;10727:67;:::i;:::-;10720:74;;10803:93;10892:3;10803:93;:::i;:::-;10921:2;10916:3;10912:12;10905:19;;10564:366;;;:::o;10936:419::-;11102:4;11140:2;11129:9;11125:18;11117:26;;11189:9;11183:4;11179:20;11175:1;11164:9;11160:17;11153:47;11217:131;11343:4;11217:131;:::i;:::-;11209:139;;10936:419;;;:::o;11361:169::-;11501:21;11497:1;11489:6;11485:14;11478:45;11361:169;:::o;11536:366::-;11678:3;11699:67;11763:2;11758:3;11699:67;:::i;:::-;11692:74;;11775:93;11864:3;11775:93;:::i;:::-;11893:2;11888:3;11884:12;11877:19;;11536:366;;;:::o;11908:419::-;12074:4;12112:2;12101:9;12097:18;12089:26;;12161:9;12155:4;12151:20;12147:1;12136:9;12132:17;12125:47;12189:131;12315:4;12189:131;:::i;:::-;12181:139;;11908:419;;;:::o;12333:180::-;12381:77;12378:1;12371:88;12478:4;12475:1;12468:15;12502:4;12499:1;12492:15;12519:180;12567:77;12564:1;12557:88;12664:4;12661:1;12654:15;12688:4;12685:1;12678:15;12705:185;12745:1;12762:20;12780:1;12762:20;:::i;:::-;12757:25;;12796:20;12814:1;12796:20;:::i;:::-;12791:25;;12835:1;12825:35;;12840:18;;:::i;:::-;12825:35;12882:1;12879;12875:9;12870:14;;12705:185;;;;:::o;12896:176::-;13036:28;13032:1;13024:6;13020:14;13013:52;12896:176;:::o;13078:366::-;13220:3;13241:67;13305:2;13300:3;13241:67;:::i;:::-;13234:74;;13317:93;13406:3;13317:93;:::i;:::-;13435:2;13430:3;13426:12;13419:19;;13078:366;;;:::o;13450:419::-;13616:4;13654:2;13643:9;13639:18;13631:26;;13703:9;13697:4;13693:20;13689:1;13678:9;13674:17;13667:47;13731:131;13857:4;13731:131;:::i;:::-;13723:139;;13450:419;;;:::o;13875:164::-;14015:16;14011:1;14003:6;13999:14;13992:40;13875:164;:::o;14045:366::-;14187:3;14208:67;14272:2;14267:3;14208:67;:::i;:::-;14201:74;;14284:93;14373:3;14284:93;:::i;:::-;14402:2;14397:3;14393:12;14386:19;;14045:366;;;:::o;14417:419::-;14583:4;14621:2;14610:9;14606:18;14598:26;;14670:9;14664:4;14660:20;14656:1;14645:9;14641:17;14634:47;14698:131;14824:4;14698:131;:::i;:::-;14690:139;;14417:419;;;:::o;14842:225::-;14982:34;14978:1;14970:6;14966:14;14959:58;15051:8;15046:2;15038:6;15034:15;15027:33;14842:225;:::o;15073:366::-;15215:3;15236:67;15300:2;15295:3;15236:67;:::i;:::-;15229:74;;15312:93;15401:3;15312:93;:::i;:::-;15430:2;15425:3;15421:12;15414:19;;15073:366;;;:::o;15445:419::-;15611:4;15649:2;15638:9;15634:18;15626:26;;15698:9;15692:4;15688:20;15684:1;15673:9;15669:17;15662:47;15726:131;15852:4;15726:131;:::i;:::-;15718:139;;15445:419;;;:::o;15870:220::-;16010:34;16006:1;15998:6;15994:14;15987:58;16079:3;16074:2;16066:6;16062:15;16055:28;15870:220;:::o;16096:366::-;16238:3;16259:67;16323:2;16318:3;16259:67;:::i;:::-;16252:74;;16335:93;16424:3;16335:93;:::i;:::-;16453:2;16448:3;16444:12;16437:19;;16096:366;;;:::o;16468:419::-;16634:4;16672:2;16661:9;16657:18;16649:26;;16721:9;16715:4;16711:20;16707:1;16696:9;16692:17;16685:47;16749:131;16875:4;16749:131;:::i;:::-;16741:139;;16468:419;;;:::o;16893:181::-;17033:33;17029:1;17021:6;17017:14;17010:57;16893:181;:::o;17080:366::-;17222:3;17243:67;17307:2;17302:3;17243:67;:::i;:::-;17236:74;;17319:93;17408:3;17319:93;:::i;:::-;17437:2;17432:3;17428:12;17421:19;;17080:366;;;:::o;17452:419::-;17618:4;17656:2;17645:9;17641:18;17633:26;;17705:9;17699:4;17695:20;17691:1;17680:9;17676:17;17669:47;17733:131;17859:4;17733:131;:::i;:::-;17725:139;;17452:419;;;:::o;17877:221::-;18017:34;18013:1;18005:6;18001:14;17994:58;18086:4;18081:2;18073:6;18069:15;18062:29;17877:221;:::o;18104:366::-;18246:3;18267:67;18331:2;18326:3;18267:67;:::i;:::-;18260:74;;18343:93;18432:3;18343:93;:::i;:::-;18461:2;18456:3;18452:12;18445:19;;18104:366;;;:::o;18476:419::-;18642:4;18680:2;18669:9;18665:18;18657:26;;18729:9;18723:4;18719:20;18715:1;18704:9;18700:17;18693:47;18757:131;18883:4;18757:131;:::i;:::-;18749:139;;18476:419;;;:::o;18901:182::-;19041:34;19037:1;19029:6;19025:14;19018:58;18901:182;:::o;19089:366::-;19231:3;19252:67;19316:2;19311:3;19252:67;:::i;:::-;19245:74;;19328:93;19417:3;19328:93;:::i;:::-;19446:2;19441:3;19437:12;19430:19;;19089:366;;;:::o;19461:419::-;19627:4;19665:2;19654:9;19650:18;19642:26;;19714:9;19708:4;19704:20;19700:1;19689:9;19685:17;19678:47;19742:131;19868:4;19742:131;:::i;:::-;19734:139;;19461:419;;;:::o;19886:223::-;20026:34;20022:1;20014:6;20010:14;20003:58;20095:6;20090:2;20082:6;20078:15;20071:31;19886:223;:::o;20115:366::-;20257:3;20278:67;20342:2;20337:3;20278:67;:::i;:::-;20271:74;;20354:93;20443:3;20354:93;:::i;:::-;20472:2;20467:3;20463:12;20456:19;;20115:366;;;:::o;20487:419::-;20653:4;20691:2;20680:9;20676:18;20668:26;;20740:9;20734:4;20730:20;20726:1;20715:9;20711:17;20704:47;20768:131;20894:4;20768:131;:::i;:::-;20760:139;;20487:419;;;:::o;20912:162::-;21052:14;21048:1;21040:6;21036:14;21029:38;20912:162;:::o;21080:366::-;21222:3;21243:67;21307:2;21302:3;21243:67;:::i;:::-;21236:74;;21319:93;21408:3;21319:93;:::i;:::-;21437:2;21432:3;21428:12;21421:19;;21080:366;;;:::o;21452:419::-;21618:4;21656:2;21645:9;21641:18;21633:26;;21705:9;21699:4;21695:20;21691:1;21680:9;21676:17;21669:47;21733:131;21859:4;21733:131;:::i;:::-;21725:139;;21452:419;;;:::o;21877:175::-;22017:27;22013:1;22005:6;22001:14;21994:51;21877:175;:::o;22058:366::-;22200:3;22221:67;22285:2;22280:3;22221:67;:::i;:::-;22214:74;;22297:93;22386:3;22297:93;:::i;:::-;22415:2;22410:3;22406:12;22399:19;;22058:366;;;:::o;22430:419::-;22596:4;22634:2;22623:9;22619:18;22611:26;;22683:9;22677:4;22673:20;22669:1;22658:9;22654:17;22647:47;22711:131;22837:4;22711:131;:::i;:::-;22703:139;;22430:419;;;:::o;22855:172::-;22995:24;22991:1;22983:6;22979:14;22972:48;22855:172;:::o;23033:366::-;23175:3;23196:67;23260:2;23255:3;23196:67;:::i;:::-;23189:74;;23272:93;23361:3;23272:93;:::i;:::-;23390:2;23385:3;23381:12;23374:19;;23033:366;;;:::o;23405:419::-;23571:4;23609:2;23598:9;23594:18;23586:26;;23658:9;23652:4;23648:20;23644:1;23633:9;23629:17;23622:47;23686:131;23812:4;23686:131;:::i;:::-;23678:139;;23405:419;;;:::o;23830:176::-;23970:28;23966:1;23958:6;23954:14;23947:52;23830:176;:::o;24012:366::-;24154:3;24175:67;24239:2;24234:3;24175:67;:::i;:::-;24168:74;;24251:93;24340:3;24251:93;:::i;:::-;24369:2;24364:3;24360:12;24353:19;;24012:366;;;:::o;24384:419::-;24550:4;24588:2;24577:9;24573:18;24565:26;;24637:9;24631:4;24627:20;24623:1;24612:9;24608:17;24601:47;24665:131;24791:4;24665:131;:::i;:::-;24657:139;;24384:419;;;:::o;24809:191::-;24849:4;24869:20;24887:1;24869:20;:::i;:::-;24864:25;;24903:20;24921:1;24903:20;:::i;:::-;24898:25;;24942:1;24939;24936:8;24933:34;;;24947:18;;:::i;:::-;24933:34;24992:1;24989;24985:9;24977:17;;24809:191;;;;:::o;25006:305::-;25046:3;25065:20;25083:1;25065:20;:::i;:::-;25060:25;;25099:20;25117:1;25099:20;:::i;:::-;25094:25;;25253:1;25185:66;25181:74;25178:1;25175:81;25172:107;;;25259:18;;:::i;:::-;25172:107;25303:1;25300;25296:9;25289:16;;25006:305;;;;:::o;25317:177::-;25457:29;25453:1;25445:6;25441:14;25434:53;25317:177;:::o;25500:366::-;25642:3;25663:67;25727:2;25722:3;25663:67;:::i;:::-;25656:74;;25739:93;25828:3;25739:93;:::i;:::-;25857:2;25852:3;25848:12;25841:19;;25500:366;;;:::o;25872:419::-;26038:4;26076:2;26065:9;26061:18;26053:26;;26125:9;26119:4;26115:20;26111:1;26100:9;26096:17;26089:47;26153:131;26279:4;26153:131;:::i;:::-;26145:139;;25872:419;;;:::o;26297:348::-;26337:7;26360:20;26378:1;26360:20;:::i;:::-;26355:25;;26394:20;26412:1;26394:20;:::i;:::-;26389:25;;26582:1;26514:66;26510:74;26507:1;26504:81;26499:1;26492:9;26485:17;26481:105;26478:131;;;26589:18;;:::i;:::-;26478:131;26637:1;26634;26630:9;26619:20;;26297:348;;;;:::o;26651:220::-;26791:34;26787:1;26779:6;26775:14;26768:58;26860:3;26855:2;26847:6;26843:15;26836:28;26651:220;:::o;26877:366::-;27019:3;27040:67;27104:2;27099:3;27040:67;:::i;:::-;27033:74;;27116:93;27205:3;27116:93;:::i;:::-;27234:2;27229:3;27225:12;27218:19;;26877:366;;;:::o;27249:419::-;27415:4;27453:2;27442:9;27438:18;27430:26;;27502:9;27496:4;27492:20;27488:1;27477:9;27473:17;27466:47;27530:131;27656:4;27530:131;:::i;:::-;27522:139;;27249:419;;;:::o;27674:442::-;27823:4;27861:2;27850:9;27846:18;27838:26;;27874:71;27942:1;27931:9;27927:17;27918:6;27874:71;:::i;:::-;27955:72;28023:2;28012:9;28008:18;27999:6;27955:72;:::i;:::-;28037;28105:2;28094:9;28090:18;28081:6;28037:72;:::i;:::-;27674:442;;;;;;:::o;28122:180::-;28170:77;28167:1;28160:88;28267:4;28264:1;28257:15;28291:4;28288:1;28281:15;28308:180;28356:77;28353:1;28346:88;28453:4;28450:1;28443:15;28477:4;28474:1;28467:15;28494:143;28551:5;28582:6;28576:13;28567:22;;28598:33;28625:5;28598:33;:::i;:::-;28494:143;;;;:::o;28643:351::-;28713:6;28762:2;28750:9;28741:7;28737:23;28733:32;28730:119;;;28768:79;;:::i;:::-;28730:119;28888:1;28913:64;28969:7;28960:6;28949:9;28945:22;28913:64;:::i;:::-;28903:74;;28859:128;28643:351;;;;:::o;29000:85::-;29045:7;29074:5;29063:16;;29000:85;;;:::o;29091:158::-;29149:9;29182:61;29200:42;29209:32;29235:5;29209:32;:::i;:::-;29200:42;:::i;:::-;29182:61;:::i;:::-;29169:74;;29091:158;;;:::o;29255:147::-;29350:45;29389:5;29350:45;:::i;:::-;29345:3;29338:58;29255:147;;:::o;29408:114::-;29475:6;29509:5;29503:12;29493:22;;29408:114;;;:::o;29528:184::-;29627:11;29661:6;29656:3;29649:19;29701:4;29696:3;29692:14;29677:29;;29528:184;;;;:::o;29718:132::-;29785:4;29808:3;29800:11;;29838:4;29833:3;29829:14;29821:22;;29718:132;;;:::o;29856:108::-;29933:24;29951:5;29933:24;:::i;:::-;29928:3;29921:37;29856:108;;:::o;29970:179::-;30039:10;30060:46;30102:3;30094:6;30060:46;:::i;:::-;30138:4;30133:3;30129:14;30115:28;;29970:179;;;;:::o;30155:113::-;30225:4;30257;30252:3;30248:14;30240:22;;30155:113;;;:::o;30304:732::-;30423:3;30452:54;30500:5;30452:54;:::i;:::-;30522:86;30601:6;30596:3;30522:86;:::i;:::-;30515:93;;30632:56;30682:5;30632:56;:::i;:::-;30711:7;30742:1;30727:284;30752:6;30749:1;30746:13;30727:284;;;30828:6;30822:13;30855:63;30914:3;30899:13;30855:63;:::i;:::-;30848:70;;30941:60;30994:6;30941:60;:::i;:::-;30931:70;;30787:224;30774:1;30771;30767:9;30762:14;;30727:284;;;30731:14;31027:3;31020:10;;30428:608;;;30304:732;;;;:::o;31042:831::-;31305:4;31343:3;31332:9;31328:19;31320:27;;31357:71;31425:1;31414:9;31410:17;31401:6;31357:71;:::i;:::-;31438:80;31514:2;31503:9;31499:18;31490:6;31438:80;:::i;:::-;31565:9;31559:4;31555:20;31550:2;31539:9;31535:18;31528:48;31593:108;31696:4;31687:6;31593:108;:::i;:::-;31585:116;;31711:72;31779:2;31768:9;31764:18;31755:6;31711:72;:::i;:::-;31793:73;31861:3;31850:9;31846:19;31837:6;31793:73;:::i;:::-;31042:831;;;;;;;;:::o;31879:807::-;32128:4;32166:3;32155:9;32151:19;32143:27;;32180:71;32248:1;32237:9;32233:17;32224:6;32180:71;:::i;:::-;32261:72;32329:2;32318:9;32314:18;32305:6;32261:72;:::i;:::-;32343:80;32419:2;32408:9;32404:18;32395:6;32343:80;:::i;:::-;32433;32509:2;32498:9;32494:18;32485:6;32433:80;:::i;:::-;32523:73;32591:3;32580:9;32576:19;32567:6;32523:73;:::i;:::-;32606;32674:3;32663:9;32659:19;32650:6;32606:73;:::i;:::-;31879:807;;;;;;;;;:::o;32692:143::-;32749:5;32780:6;32774:13;32765:22;;32796:33;32823:5;32796:33;:::i;:::-;32692:143;;;;:::o;32841:663::-;32929:6;32937;32945;32994:2;32982:9;32973:7;32969:23;32965:32;32962:119;;;33000:79;;:::i;:::-;32962:119;33120:1;33145:64;33201:7;33192:6;33181:9;33177:22;33145:64;:::i;:::-;33135:74;;33091:128;33258:2;33284:64;33340:7;33331:6;33320:9;33316:22;33284:64;:::i;:::-;33274:74;;33229:129;33397:2;33423:64;33479:7;33470:6;33459:9;33455:22;33423:64;:::i;:::-;33413:74;;33368:129;32841:663;;;;;:::o

Swarm Source

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