ETH Price: $2,444.65 (+1.02%)

Token

Wing Chun (咏春)
 

Overview

Max Total Supply

1,000,000,000 咏春

Holders

86

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000002 咏春

Value
$0.00
0xf0dddd6b2e3ed9d0832e3715b2cfe1ef8e1fc31e
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:
WingChunToken

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-01
*/

/**
https://t.me/wing_chun_coin
http://wingchuncoin.net
https://twitter.com/Wing_Chun_Coin
*/

// 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 WingChunToken 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 = "Wing Chun";
    string private _symbol = unicode"咏春";
    uint8 private _decimals = 9;
    uint256 private _totalSupply = 1_000_000_000 * 1e9;

    IDexRouter public dexRouter;
    address public dexPair;
    address public marketingWallet;

    uint256 public minTokenToSwap = 100_000 * 1e9; // this amount will trigger swap and distribute
    uint256 public maxHoldLimit = _totalSupply.mul(2).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 = 15 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 = 0; // 5% will be added to the liquidity
    uint256 public marketingFeeOnBuying = 0; // 15% will be added to the marketing address

    uint256 public liquidityFeeOnSelling = 50; // 15% will be added to the liquidity
    uint256 public marketingFeeOnSelling = 200; // 75% 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 = msg.sender;

        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;

        //exclude owner and this contract from max Txn
        isExcludedFromMaxTxn[owner()] = true;
        isExcludedFromMaxTxn[address(dexRouter)] = true;
        isExcludedFromMaxTxn[address(this)] = 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,
                "Wing Chun: 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,
                "Wing Chun: decreased allowance or below zero"
            )
        );
        return true;
    }

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

    function includeOrExcludeFromMaxTxn(address[] memory account, bool value)
        external
        onlyOwner
    {
        for (uint256 i; i < account.length; i++) {
            isExcludedFromMaxTxn[account[i]] = value;
        }
    }

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

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

    function setMaxHoldLimit(uint256 _amount) external onlyOwner {
        require(
            _amount >= _totalSupply.mul(5).div(percentDivider),
            "Wing Chun: should be greater than 0.5%"
        );
        maxHoldLimit = _amount;
    }

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

    function setBuyFeePercent(
        uint256 _lpFee,
        uint256 _marketingFee
    ) external onlyOwner {
        marketingFeeOnBuying = _lpFee;
        liquidityFeeOnBuying = _marketingFee;
    }

    function setSellFeePercent(
        uint256 _lpFee,
        uint256 _marketingFee
    ) external onlyOwner {
        marketingFeeOnSelling = _lpFee;
        liquidityFeeOnSelling = _marketingFee;
    }

    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 RemoveBots(address[] memory accounts)
        external
        onlyOwner
    {
        for (uint256 i; i < accounts.length; i++) {
            isBot[accounts[i]] = false;
        }
    }

    function enableTrading() external onlyOwner {
        require(!trading, "Wing Chun: 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), "Wing Chun: approve from the zero address");
        require(spender != address(0), "Wing Chun: 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), "Wing Chun: transfer from the zero address");
        require(to != address(0), "Wing Chun: transfer to the zero address");
        require(amount > 0, "Wing Chun: Amount must be greater than zero");
        require(!isBot[from],"Bot detected");

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

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

        if (!isExcludedFromMaxHolding[to]) {
            require(
                balanceOf(to).add(amount) <= maxHoldLimit,
                "Wing Chun: 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,
                "Wing Chun: 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,
                "Wing Chun: 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,
                "Wing Chun: 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),
                    owner(),
                    otherHalfLiquidity,
                    ethToBeAddedToLiquidity
                );

                emit SwapAndLiquify(
                    halfLiquidity,
                    ethToBeAddedToLiquidity,
                    otherHalfLiquidity
                );
            }

            uint256 ethForMarketing = address(this).balance.sub(
                ethToBeAddedToLiquidity
            );

            // 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":"accounts","type":"address[]"}],"name":"RemoveBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":"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"}]

60806040526040518060400160405280600981526020017f57696e67204368756e0000000000000000000000000000000000000000000000815250600790805190602001906200005192919062000ae1565b506040518060400160405280600681526020017fe5928fe698a50000000000000000000000000000000000000000000000000000815250600890805190602001906200009f92919062000ae1565b5060098060006101000a81548160ff021916908360ff160217905550670de0b6b3a7640000600a55655af3107a4000600e55620001086064620000f46002600a546200097260201b620022d11790919060201c565b620009f660201b6200234c1790919060201c565b600f55620001286064600a54620009f660201b6200234c1790919060201c565b6010556103de6011556103e8601255600f60135560006016556000601755603260185560c86019556000601a556000601b553480156200016757600080fd5b506200017862000a4860201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600a54600160006200024962000a5060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200032f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000355919062000bfb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e3919062000bfb565b6040518363ffffffff1660e01b81526004016200040292919062000c3e565b6020604051808303816000875af115801562000422573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000448919062000bfb565b905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000620004e262000a5060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000620005a162000a5060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000620006da62000a5060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200090162000a5060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a5460405162000962919062000c86565b60405180910390a3505062000f5f565b600080831415620009875760009050620009f0565b6000828462000997919062000cd2565b9050828482620009a8919062000d62565b14620009eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009e29062000e21565b60405180910390fd5b809150505b92915050565b600062000a4083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000a7960201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000ac3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000aba919062000ed6565b60405180910390fd5b506000838562000ad4919062000d62565b9050809150509392505050565b82805462000aef9062000f29565b90600052602060002090601f01602090048101928262000b13576000855562000b5f565b82601f1062000b2e57805160ff191683800117855562000b5f565b8280016001018555821562000b5f579182015b8281111562000b5e57825182559160200191906001019062000b41565b5b50905062000b6e919062000b72565b5090565b5b8082111562000b8d57600081600090555060010162000b73565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000bc38262000b96565b9050919050565b62000bd58162000bb6565b811462000be157600080fd5b50565b60008151905062000bf58162000bca565b92915050565b60006020828403121562000c145762000c1362000b91565b5b600062000c248482850162000be4565b91505092915050565b62000c388162000bb6565b82525050565b600060408201905062000c55600083018562000c2d565b62000c64602083018462000c2d565b9392505050565b6000819050919050565b62000c808162000c6b565b82525050565b600060208201905062000c9d600083018462000c75565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000cdf8262000c6b565b915062000cec8362000c6b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d285762000d2762000ca3565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d6f8262000c6b565b915062000d7c8362000c6b565b92508262000d8f5762000d8e62000d33565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600062000e0960218362000d9a565b915062000e168262000dab565b604082019050919050565b6000602082019050818103600083015262000e3c8162000dfa565b9050919050565b600081519050919050565b60005b8381101562000e6e57808201518184015260208101905062000e51565b8381111562000e7e576000848401525b50505050565b6000601f19601f8301169050919050565b600062000ea28262000e43565b62000eae818562000d9a565b935062000ec081856020860162000e4e565b62000ecb8162000e84565b840191505092915050565b6000602082019050818103600083015262000ef2818462000e95565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f4257607f821691505b6020821081141562000f595762000f5862000efa565b5b50919050565b614ff98062000f6f6000396000f3fe6080604052600436106102e85760003560e01c8063879dd3c511610190578063bf56b371116100dc578063ed42142911610095578063f2fde38b1161006f578063f2fde38b14610b71578063f4b3dbc314610b9a578063f9dfdaeb14610bd7578063fe6f1b0514610c00576102ef565b8063ed42142914610ae0578063f097ea1a14610b1d578063f242ab4114610b46576102ef565b8063bf56b371146109ce578063bf862391146109f9578063dd62ed3e14610a24578063e6c84dc614610a61578063ea5b9e8514610a8c578063ec44acf214610ab5576102ef565b80639a36dfa111610149578063a643c1a011610123578063a643c1a014610916578063a9059cbb1461093f578063b0bc2a2d1461097c578063be291dc6146109a5576102ef565b80639a36dfa1146108855780639b6a2750146108b0578063a457c2d7146108d9576102ef565b8063879dd3c5146107875780638a8c523c146107b25780638da5cb5b146107c957806391ce43ac146107f457806395d89b411461081d57806399b102b514610848576102ef565b80633bbac5791161024f57806375f0a874116102085780637d99c66d116101e25780637d99c66d146106cb578063844af78e146106f657806384ea21bc146107215780638756aabd1461075e576102ef565b806375f0a8741461064a57806379777b4e146106755780637c6a9a9c146106a0576102ef565b80633bbac579146105285780635342acb414610565578063679a3c59146105a2578063681aa362146105cb57806370a08231146105f6578063715018a614610633576102ef565b80631c237b0e116102a15780631c237b0e1461040657806323b872dd1461042f5780632d1293901461046c578063313ce567146104955780633326d7f2146104c057806339509351146104eb576102ef565b806306fdde03146102f45780630758d9241461031f578063095ea7b31461034a5780630a2d140c1461038757806318160ddd146103b05780631884f1e6146103db576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610c2b565b6040516103169190613bea565b60405180910390f35b34801561032b57600080fd5b50610334610cbd565b6040516103419190613c8b565b60405180910390f35b34801561035657600080fd5b50610371600480360381019061036c9190613d2e565b610ce3565b60405161037e9190613d89565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a99190613dd0565b610d01565b005b3480156103bc57600080fd5b506103c5610db3565b6040516103d29190613e0c565b60405180910390f35b3480156103e757600080fd5b506103f0610dbd565b6040516103fd9190613e0c565b60405180910390f35b34801561041257600080fd5b5061042d60048036038101906104289190613f6f565b610dc3565b005b34801561043b57600080fd5b5061045660048036038101906104519190613fb8565b610eed565b6040516104639190613d89565b60405180910390f35b34801561047857600080fd5b50610493600480360381019061048e919061400b565b610fc6565b005b3480156104a157600080fd5b506104aa6110b6565b6040516104b79190614067565b60405180910390f35b3480156104cc57600080fd5b506104d56110cd565b6040516104e29190613e0c565b60405180910390f35b3480156104f757600080fd5b50610512600480360381019061050d9190613d2e565b6110d3565b60405161051f9190613d89565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190614082565b611186565b60405161055c9190613d89565b60405180910390f35b34801561057157600080fd5b5061058c60048036038101906105879190614082565b6111a6565b6040516105999190613d89565b60405180910390f35b3480156105ae57600080fd5b506105c960048036038101906105c49190614082565b6111c6565b005b3480156105d757600080fd5b506105e06112a5565b6040516105ed9190613e0c565b60405180910390f35b34801561060257600080fd5b5061061d60048036038101906106189190614082565b6112ab565b60405161062a9190613e0c565b60405180910390f35b34801561063f57600080fd5b506106486112f4565b005b34801561065657600080fd5b5061065f611447565b60405161066c91906140be565b60405180910390f35b34801561068157600080fd5b5061068a61146d565b6040516106979190613d89565b60405180910390f35b3480156106ac57600080fd5b506106b5611480565b6040516106c29190613e0c565b60405180910390f35b3480156106d757600080fd5b506106e0611486565b6040516106ed9190613e0c565b60405180910390f35b34801561070257600080fd5b5061070b61148c565b6040516107189190613e0c565b60405180910390f35b34801561072d57600080fd5b5061074860048036038101906107439190614082565b611492565b6040516107559190613d89565b60405180910390f35b34801561076a57600080fd5b50610785600480360381019061078091906140d9565b6114b2565b005b34801561079357600080fd5b5061079c6115bd565b6040516107a99190613d89565b60405180910390f35b3480156107be57600080fd5b506107c76115d0565b005b3480156107d557600080fd5b506107de61170f565b6040516107eb91906140be565b60405180910390f35b34801561080057600080fd5b5061081b60048036038101906108169190614106565b611738565b005b34801561082957600080fd5b50610832611862565b60405161083f9190613bea565b60405180910390f35b34801561085457600080fd5b5061086f600480360381019061086a9190614082565b6118f4565b60405161087c9190613d89565b60405180910390f35b34801561089157600080fd5b5061089a611914565b6040516108a79190613e0c565b60405180910390f35b3480156108bc57600080fd5b506108d760048036038101906108d291906140d9565b61191a565b005b3480156108e557600080fd5b5061090060048036038101906108fb9190613d2e565b611a0b565b60405161090d9190613d89565b60405180910390f35b34801561092257600080fd5b5061093d60048036038101906109389190614082565b611ad8565b005b34801561094b57600080fd5b5061096660048036038101906109619190613d2e565b611bb1565b6040516109739190613d89565b60405180910390f35b34801561098857600080fd5b506109a3600480360381019061099e9190613dd0565b611bcf565b005b3480156109b157600080fd5b506109cc60048036038101906109c79190614162565b611c81565b005b3480156109da57600080fd5b506109e3611d28565b6040516109f09190613e0c565b60405180910390f35b348015610a0557600080fd5b50610a0e611d2e565b604051610a1b9190613e0c565b60405180910390f35b348015610a3057600080fd5b50610a4b6004803603810190610a4691906141a2565b611d34565b604051610a589190613e0c565b60405180910390f35b348015610a6d57600080fd5b50610a76611dbb565b604051610a839190613e0c565b60405180910390f35b348015610a9857600080fd5b50610ab36004803603810190610aae919061400b565b611dc1565b005b348015610ac157600080fd5b50610aca611eb1565b604051610ad79190613d89565b60405180910390f35b348015610aec57600080fd5b50610b076004803603810190610b0291906140d9565b611ec4565b604051610b149190613e0c565b60405180910390f35b348015610b2957600080fd5b50610b446004803603810190610b3f91906140d9565b611f0f565b005b348015610b5257600080fd5b50610b5b611ff1565b604051610b6891906140be565b60405180910390f35b348015610b7d57600080fd5b50610b986004803603810190610b939190614082565b612017565b005b348015610ba657600080fd5b50610bc16004803603810190610bbc91906140d9565b6121d9565b604051610bce9190613e0c565b60405180910390f35b348015610be357600080fd5b50610bfe6004803603810190610bf99190614162565b612224565b005b348015610c0c57600080fd5b50610c156122cb565b604051610c229190613e0c565b60405180910390f35b606060078054610c3a90614211565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6690614211565b8015610cb35780601f10610c8857610100808354040283529160200191610cb3565b820191906000526020600020905b815481529060010190602001808311610c9657829003601f168201915b5050505050905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610cf7610cf0612396565b848461239e565b6001905092915050565b610d09612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8d9061428f565b60405180910390fd5b80601560006101000a81548160ff02191690831515021790555050565b6000600a54905090565b600e5481565b610dcb612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4f9061428f565b60405180910390fd5b60005b8151811015610ee957600060066000848481518110610e7d57610e7c6142af565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ee19061430d565b915050610e5b565b5050565b6000610efa848484612569565b610fbb84610f06612396565b610fb6856040518060600160405280602c8152602001614f98602c9139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f6c612396565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9e9092919063ffffffff16565b61239e565b600190509392505050565b610fce612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461105b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110529061428f565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600960009054906101000a900460ff16905090565b60165481565b600061117c6110e0612396565b8461117785600260006110f1612396565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0290919063ffffffff16565b61239e565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b6111ce612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461125b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112529061428f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156112a1573d6000803e3d6000fd5b5050565b60105481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112fc612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611389576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113809061428f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560009054906101000a900460ff1681565b60175481565b60135481565b60195481565b60056020528060005260406000206000915054906101000a900460ff1681565b6114ba612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611547576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153e9061428f565b60405180910390fd5b6115716012546115636005600a546122d190919063ffffffff16565b61234c90919063ffffffff16565b8110156115b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115aa906143c8565b60405180910390fd5b80600f8190555050565b601560019054906101000a900460ff1681565b6115d8612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165c9061428f565b60405180910390fd5b601560029054906101000a900460ff16156116b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ac90614434565b60405180910390fd5b6001601560026101000a81548160ff0219169083151502179055506001601560016101000a81548160ff0219169083151502179055506001601560006101000a81548160ff02191690831515021790555042601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611740612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c49061428f565b60405180910390fd5b60005b825181101561185d5781600460008584815181106117f1576117f06142af565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806118559061430d565b9150506117d0565b505050565b60606008805461187190614211565b80601f016020809104026020016040519081016040528092919081815260200182805461189d90614211565b80156118ea5780601f106118bf576101008083540402835291602001916118ea565b820191906000526020600020905b8154815290600101906020018083116118cd57829003601f168201915b5050505050905090565b60046020528060005260406000206000915054906101000a900460ff1681565b600f5481565b611922612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a69061428f565b60405180910390fd5b601254600a546119bf9190614483565b811015611a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f890614526565b60405180910390fd5b8060108190555050565b6000611ace611a18612396565b84611ac9856040518060600160405280602c8152602001614f6c602c913960026000611a42612396565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9e9092919063ffffffff16565b61239e565b6001905092915050565b611ae0612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b649061428f565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611bc5611bbe612396565b8484612569565b6001905092915050565b611bd7612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5b9061428f565b60405180910390fd5b80601560016101000a81548160ff02191690831515021790555050565b611c89612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0d9061428f565b60405180910390fd5b81601981905550806018819055505050565b60145481565b60115481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60185481565b611dc9612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4d9061428f565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601560029054906101000a900460ff1681565b600080611f04601254611ef6611ee7601654601754612b0290919063ffffffff16565b866122d190919063ffffffff16565b61234c90919063ffffffff16565b905080915050919050565b611f17612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9b9061428f565b60405180910390fd5b60008111611fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fde90614592565b60405180910390fd5b80600e8190555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61201f612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a39061428f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561211c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211390614624565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008061221960125461220b6121fc601854601954612b0290919063ffffffff16565b866122d190919063ffffffff16565b61234c90919063ffffffff16565b905080915050919050565b61222c612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b09061428f565b60405180910390fd5b81601781905550806016819055505050565b60125481565b6000808314156122e45760009050612346565b600082846122f29190614644565b90508284826123019190614483565b14612341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233890614710565b60405180910390fd5b809150505b92915050565b600061238e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b60565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561240e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612405906147a2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561247e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247590614834565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161255c9190613e0c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d0906148c6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264090614958565b60405180910390fd5b6000811161268c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612683906149ea565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612719576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271090614a56565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156127bd5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561290857601054811115612807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fe90614ac2565b60405180910390fd5b601560029054906101000a900460ff16612907578273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156128c757508173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b612906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fd90614b2e565b60405180910390fd5b5b5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166129b957600f5461297782612969856112ab565b612b0290919063ffffffff16565b11156129b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129af90614bc0565b60405180910390fd5b5b6129c38383612bc3565b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a6a5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612a825750601560019054906101000a900460ff16155b15612a8c57600090505b612a9884848484612f12565b50505050565b6000838311158290612ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612add9190613bea565b60405180910390fd5b5060008385612af59190614be0565b9050809150509392505050565b6000808284612b119190614c14565b905083811015612b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4d90614cb6565b60405180910390fd5b8091505092915050565b60008083118290612ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9e9190613bea565b60405180910390fd5b5060008385612bb69190614483565b9050809150509392505050565b6000612bdc601b54601a54612b0290919063ffffffff16565b1415612be757612f0e565b6000612bf2306112ab565b90506000600e548210159050808015612c595750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612c715750601560009054906101000a900460ff165b8015612d0257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612d005750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b15612f0b57612d3430600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461239e565b6000612d4c6002601a5461234c90919063ffffffff16565b90506000612d6582601a5461367590919063ffffffff16565b90506000612d7c828661367590919063ffffffff16565b90506000479050612daf600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836136bf565b6000612dc4824761367590919063ffffffff16565b90506000612ded84612ddf88856122d190919063ffffffff16565b61234c90919063ffffffff16565b90506000811115612e6957612e2d600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612e2661170f565b87846138a5565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868287604051612e6093929190614cd6565b60405180910390a15b6000612e7e824761367590919063ffffffff16565b90506000811115612ef357600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612ef1573d6000803e3d6000fd5b505b6000601a819055506000601b81905550505050505050505b50505b5050565b8373ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612f6c5750805b1561324457600080601354601454612f849190614c14565b42108015612fe05750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b156130435761300e601254613000601154876122d190919063ffffffff16565b61234c90919063ffffffff16565b915081601b60008282546130229190614c14565b9250508190555061303c828561367590919063ffffffff16565b905061306d565b61304c84611ec4565b9150613061828561367590919063ffffffff16565b905061306c84613949565b5b6130f6846040518060400160405280601f81526020017f57696e67204368756e3a20696e73756666696369656e742062616c616e636500815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9e9092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061318b81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0290919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161322b9190613e0c565b60405180910390a361323d86836139ce565b505061366f565b8273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801561329e5750805b156134a75760006132ae836121d9565b905060006132c5828561367590919063ffffffff16565b9050613350846040518060400160405280601f81526020017f57696e67204368756e3a20696e73756666696369656e742062616c616e636500815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9e9092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133e581600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0290919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134859190613e0c565b60405180910390a361349786836139ce565b6134a084613acc565b505061366e565b613530826040518060400160405280601f81526020017f57696e67204368756e3a20696e73756666696369656e742062616c616e636500815250600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9e9092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135c582600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0290919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136659190613e0c565b60405180910390a35b5b50505050565b60006136b783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a9e565b905092915050565b60008290506000600267ffffffffffffffff8111156136e1576136e0613e2c565b5b60405190808252806020026020018201604052801561370f5781602001602082028036833780820191505090505b5090503081600081518110613727576137266142af565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137d09190614d22565b816001815181106137e4576137e36142af565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c4261384d9190614c14565b6040518663ffffffff1660e01b815260040161386d959493929190614e48565b600060405180830381600087803b15801561388757600080fd5b505af115801561389b573d6000803e3d6000fd5b5050505050505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff1663f305d7198330866000808a61012c426138db9190614c14565b6040518863ffffffff1660e01b81526004016138fc96959493929190614ea2565b60606040518083038185885af115801561391a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061393f9190614f18565b5050505050505050565b613972601254613964601654846122d190919063ffffffff16565b61234c90919063ffffffff16565b601a60008282546139839190614c14565b925050819055506139b36012546139a5601754846122d190919063ffffffff16565b61234c90919063ffffffff16565b601b60008282546139c49190614c14565b9250508190555050565b613a2081600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0290919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613ac09190613e0c565b60405180910390a35050565b613af5601254613ae7601854846122d190919063ffffffff16565b61234c90919063ffffffff16565b601a6000828254613b069190614c14565b92505081905550613b36601254613b28601954846122d190919063ffffffff16565b61234c90919063ffffffff16565b601b6000828254613b479190614c14565b9250508190555050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b8b578082015181840152602081019050613b70565b83811115613b9a576000848401525b50505050565b6000601f19601f8301169050919050565b6000613bbc82613b51565b613bc68185613b5c565b9350613bd6818560208601613b6d565b613bdf81613ba0565b840191505092915050565b60006020820190508181036000830152613c048184613bb1565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613c51613c4c613c4784613c0c565b613c2c565b613c0c565b9050919050565b6000613c6382613c36565b9050919050565b6000613c7582613c58565b9050919050565b613c8581613c6a565b82525050565b6000602082019050613ca06000830184613c7c565b92915050565b6000604051905090565b600080fd5b600080fd5b6000613cc582613c0c565b9050919050565b613cd581613cba565b8114613ce057600080fd5b50565b600081359050613cf281613ccc565b92915050565b6000819050919050565b613d0b81613cf8565b8114613d1657600080fd5b50565b600081359050613d2881613d02565b92915050565b60008060408385031215613d4557613d44613cb0565b5b6000613d5385828601613ce3565b9250506020613d6485828601613d19565b9150509250929050565b60008115159050919050565b613d8381613d6e565b82525050565b6000602082019050613d9e6000830184613d7a565b92915050565b613dad81613d6e565b8114613db857600080fd5b50565b600081359050613dca81613da4565b92915050565b600060208284031215613de657613de5613cb0565b5b6000613df484828501613dbb565b91505092915050565b613e0681613cf8565b82525050565b6000602082019050613e216000830184613dfd565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613e6482613ba0565b810181811067ffffffffffffffff82111715613e8357613e82613e2c565b5b80604052505050565b6000613e96613ca6565b9050613ea28282613e5b565b919050565b600067ffffffffffffffff821115613ec257613ec1613e2c565b5b602082029050602081019050919050565b600080fd5b6000613eeb613ee684613ea7565b613e8c565b90508083825260208201905060208402830185811115613f0e57613f0d613ed3565b5b835b81811015613f375780613f238882613ce3565b845260208401935050602081019050613f10565b5050509392505050565b600082601f830112613f5657613f55613e27565b5b8135613f66848260208601613ed8565b91505092915050565b600060208284031215613f8557613f84613cb0565b5b600082013567ffffffffffffffff811115613fa357613fa2613cb5565b5b613faf84828501613f41565b91505092915050565b600080600060608486031215613fd157613fd0613cb0565b5b6000613fdf86828701613ce3565b9350506020613ff086828701613ce3565b925050604061400186828701613d19565b9150509250925092565b6000806040838503121561402257614021613cb0565b5b600061403085828601613ce3565b925050602061404185828601613dbb565b9150509250929050565b600060ff82169050919050565b6140618161404b565b82525050565b600060208201905061407c6000830184614058565b92915050565b60006020828403121561409857614097613cb0565b5b60006140a684828501613ce3565b91505092915050565b6140b881613cba565b82525050565b60006020820190506140d360008301846140af565b92915050565b6000602082840312156140ef576140ee613cb0565b5b60006140fd84828501613d19565b91505092915050565b6000806040838503121561411d5761411c613cb0565b5b600083013567ffffffffffffffff81111561413b5761413a613cb5565b5b61414785828601613f41565b925050602061415885828601613dbb565b9150509250929050565b6000806040838503121561417957614178613cb0565b5b600061418785828601613d19565b925050602061419885828601613d19565b9150509250929050565b600080604083850312156141b9576141b8613cb0565b5b60006141c785828601613ce3565b92505060206141d885828601613ce3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061422957607f821691505b6020821081141561423d5761423c6141e2565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614279602083613b5c565b915061428482614243565b602082019050919050565b600060208201905081810360008301526142a88161426c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061431882613cf8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561434b5761434a6142de565b5b600182019050919050565b7f57696e67204368756e3a2073686f756c6420626520677265617465722074686160008201527f6e20302e35250000000000000000000000000000000000000000000000000000602082015250565b60006143b2602683613b5c565b91506143bd82614356565b604082019050919050565b600060208201905081810360008301526143e1816143a5565b9050919050565b7f57696e67204368756e3a20616c726561647920656e61626c6564000000000000600082015250565b600061441e601a83613b5c565b9150614429826143e8565b602082019050919050565b6000602082019050818103600083015261444d81614411565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061448e82613cf8565b915061449983613cf8565b9250826144a9576144a8614454565b5b828204905092915050565b7f57696e67204368756e3a2073686f756c6420626520677265617465722074686160008201527f6e20302e31250000000000000000000000000000000000000000000000000000602082015250565b6000614510602683613b5c565b915061451b826144b4565b604082019050919050565b6000602082019050818103600083015261453f81614503565b9050919050565b7f57696e67204368756e3a2063616e277420626520300000000000000000000000600082015250565b600061457c601583613b5c565b915061458782614546565b602082019050919050565b600060208201905081810360008301526145ab8161456f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061460e602683613b5c565b9150614619826145b2565b604082019050919050565b6000602082019050818103600083015261463d81614601565b9050919050565b600061464f82613cf8565b915061465a83613cf8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614693576146926142de565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006146fa602183613b5c565b91506147058261469e565b604082019050919050565b60006020820190508181036000830152614729816146ed565b9050919050565b7f57696e67204368756e3a20617070726f76652066726f6d20746865207a65726f60008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b600061478c602883613b5c565b915061479782614730565b604082019050919050565b600060208201905081810360008301526147bb8161477f565b9050919050565b7f57696e67204368756e3a20617070726f766520746f20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061481e602683613b5c565b9150614829826147c2565b604082019050919050565b6000602082019050818103600083015261484d81614811565b9050919050565b7f57696e67204368756e3a207472616e736665722066726f6d20746865207a657260008201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b60006148b0602983613b5c565b91506148bb82614854565b604082019050919050565b600060208201905081810360008301526148df816148a3565b9050919050565b7f57696e67204368756e3a207472616e7366657220746f20746865207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b6000614942602783613b5c565b915061494d826148e6565b604082019050919050565b6000602082019050818103600083015261497181614935565b9050919050565b7f57696e67204368756e3a20416d6f756e74206d7573742062652067726561746560008201527f72207468616e207a65726f000000000000000000000000000000000000000000602082015250565b60006149d4602b83613b5c565b91506149df82614978565b604082019050919050565b60006020820190508181036000830152614a03816149c7565b9050919050565b7f426f742064657465637465640000000000000000000000000000000000000000600082015250565b6000614a40600c83613b5c565b9150614a4b82614a0a565b602082019050919050565b60006020820190508181036000830152614a6f81614a33565b9050919050565b7f57696e67204368756e3a206d61782074786e206c696d69742065786365656473600082015250565b6000614aac602083613b5c565b9150614ab782614a76565b602082019050919050565b60006020820190508181036000830152614adb81614a9f565b9050919050565b7f57696e67204368756e3a2074726164696e672069732064697361626c65000000600082015250565b6000614b18601d83613b5c565b9150614b2382614ae2565b602082019050919050565b60006020820190508181036000830152614b4781614b0b565b9050919050565b7f57696e67204368756e3a206d617820686f6c64206c696d69742065786365656460008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614baa602183613b5c565b9150614bb582614b4e565b604082019050919050565b60006020820190508181036000830152614bd981614b9d565b9050919050565b6000614beb82613cf8565b9150614bf683613cf8565b925082821015614c0957614c086142de565b5b828203905092915050565b6000614c1f82613cf8565b9150614c2a83613cf8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614c5f57614c5e6142de565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614ca0601b83613b5c565b9150614cab82614c6a565b602082019050919050565b60006020820190508181036000830152614ccf81614c93565b9050919050565b6000606082019050614ceb6000830186613dfd565b614cf86020830185613dfd565b614d056040830184613dfd565b949350505050565b600081519050614d1c81613ccc565b92915050565b600060208284031215614d3857614d37613cb0565b5b6000614d4684828501614d0d565b91505092915050565b6000819050919050565b6000614d74614d6f614d6a84614d4f565b613c2c565b613cf8565b9050919050565b614d8481614d59565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614dbf81613cba565b82525050565b6000614dd18383614db6565b60208301905092915050565b6000602082019050919050565b6000614df582614d8a565b614dff8185614d95565b9350614e0a83614da6565b8060005b83811015614e3b578151614e228882614dc5565b9750614e2d83614ddd565b925050600181019050614e0e565b5085935050505092915050565b600060a082019050614e5d6000830188613dfd565b614e6a6020830187614d7b565b8181036040830152614e7c8186614dea565b9050614e8b60608301856140af565b614e986080830184613dfd565b9695505050505050565b600060c082019050614eb760008301896140af565b614ec46020830188613dfd565b614ed16040830187614d7b565b614ede6060830186614d7b565b614eeb60808301856140af565b614ef860a0830184613dfd565b979650505050505050565b600081519050614f1281613d02565b92915050565b600080600060608486031215614f3157614f30613cb0565b5b6000614f3f86828701614f03565b9350506020614f5086828701614f03565b9250506040614f6186828701614f03565b915050925092509256fe57696e67204368756e3a2064656372656173656420616c6c6f77616e6365206f722062656c6f77207a65726f57696e67204368756e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122040dbb2c003cc1f66fa7266bd8882327ae94f93a814693d0cfb7ee72f193185a864736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106102e85760003560e01c8063879dd3c511610190578063bf56b371116100dc578063ed42142911610095578063f2fde38b1161006f578063f2fde38b14610b71578063f4b3dbc314610b9a578063f9dfdaeb14610bd7578063fe6f1b0514610c00576102ef565b8063ed42142914610ae0578063f097ea1a14610b1d578063f242ab4114610b46576102ef565b8063bf56b371146109ce578063bf862391146109f9578063dd62ed3e14610a24578063e6c84dc614610a61578063ea5b9e8514610a8c578063ec44acf214610ab5576102ef565b80639a36dfa111610149578063a643c1a011610123578063a643c1a014610916578063a9059cbb1461093f578063b0bc2a2d1461097c578063be291dc6146109a5576102ef565b80639a36dfa1146108855780639b6a2750146108b0578063a457c2d7146108d9576102ef565b8063879dd3c5146107875780638a8c523c146107b25780638da5cb5b146107c957806391ce43ac146107f457806395d89b411461081d57806399b102b514610848576102ef565b80633bbac5791161024f57806375f0a874116102085780637d99c66d116101e25780637d99c66d146106cb578063844af78e146106f657806384ea21bc146107215780638756aabd1461075e576102ef565b806375f0a8741461064a57806379777b4e146106755780637c6a9a9c146106a0576102ef565b80633bbac579146105285780635342acb414610565578063679a3c59146105a2578063681aa362146105cb57806370a08231146105f6578063715018a614610633576102ef565b80631c237b0e116102a15780631c237b0e1461040657806323b872dd1461042f5780632d1293901461046c578063313ce567146104955780633326d7f2146104c057806339509351146104eb576102ef565b806306fdde03146102f45780630758d9241461031f578063095ea7b31461034a5780630a2d140c1461038757806318160ddd146103b05780631884f1e6146103db576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610c2b565b6040516103169190613bea565b60405180910390f35b34801561032b57600080fd5b50610334610cbd565b6040516103419190613c8b565b60405180910390f35b34801561035657600080fd5b50610371600480360381019061036c9190613d2e565b610ce3565b60405161037e9190613d89565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a99190613dd0565b610d01565b005b3480156103bc57600080fd5b506103c5610db3565b6040516103d29190613e0c565b60405180910390f35b3480156103e757600080fd5b506103f0610dbd565b6040516103fd9190613e0c565b60405180910390f35b34801561041257600080fd5b5061042d60048036038101906104289190613f6f565b610dc3565b005b34801561043b57600080fd5b5061045660048036038101906104519190613fb8565b610eed565b6040516104639190613d89565b60405180910390f35b34801561047857600080fd5b50610493600480360381019061048e919061400b565b610fc6565b005b3480156104a157600080fd5b506104aa6110b6565b6040516104b79190614067565b60405180910390f35b3480156104cc57600080fd5b506104d56110cd565b6040516104e29190613e0c565b60405180910390f35b3480156104f757600080fd5b50610512600480360381019061050d9190613d2e565b6110d3565b60405161051f9190613d89565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190614082565b611186565b60405161055c9190613d89565b60405180910390f35b34801561057157600080fd5b5061058c60048036038101906105879190614082565b6111a6565b6040516105999190613d89565b60405180910390f35b3480156105ae57600080fd5b506105c960048036038101906105c49190614082565b6111c6565b005b3480156105d757600080fd5b506105e06112a5565b6040516105ed9190613e0c565b60405180910390f35b34801561060257600080fd5b5061061d60048036038101906106189190614082565b6112ab565b60405161062a9190613e0c565b60405180910390f35b34801561063f57600080fd5b506106486112f4565b005b34801561065657600080fd5b5061065f611447565b60405161066c91906140be565b60405180910390f35b34801561068157600080fd5b5061068a61146d565b6040516106979190613d89565b60405180910390f35b3480156106ac57600080fd5b506106b5611480565b6040516106c29190613e0c565b60405180910390f35b3480156106d757600080fd5b506106e0611486565b6040516106ed9190613e0c565b60405180910390f35b34801561070257600080fd5b5061070b61148c565b6040516107189190613e0c565b60405180910390f35b34801561072d57600080fd5b5061074860048036038101906107439190614082565b611492565b6040516107559190613d89565b60405180910390f35b34801561076a57600080fd5b50610785600480360381019061078091906140d9565b6114b2565b005b34801561079357600080fd5b5061079c6115bd565b6040516107a99190613d89565b60405180910390f35b3480156107be57600080fd5b506107c76115d0565b005b3480156107d557600080fd5b506107de61170f565b6040516107eb91906140be565b60405180910390f35b34801561080057600080fd5b5061081b60048036038101906108169190614106565b611738565b005b34801561082957600080fd5b50610832611862565b60405161083f9190613bea565b60405180910390f35b34801561085457600080fd5b5061086f600480360381019061086a9190614082565b6118f4565b60405161087c9190613d89565b60405180910390f35b34801561089157600080fd5b5061089a611914565b6040516108a79190613e0c565b60405180910390f35b3480156108bc57600080fd5b506108d760048036038101906108d291906140d9565b61191a565b005b3480156108e557600080fd5b5061090060048036038101906108fb9190613d2e565b611a0b565b60405161090d9190613d89565b60405180910390f35b34801561092257600080fd5b5061093d60048036038101906109389190614082565b611ad8565b005b34801561094b57600080fd5b5061096660048036038101906109619190613d2e565b611bb1565b6040516109739190613d89565b60405180910390f35b34801561098857600080fd5b506109a3600480360381019061099e9190613dd0565b611bcf565b005b3480156109b157600080fd5b506109cc60048036038101906109c79190614162565b611c81565b005b3480156109da57600080fd5b506109e3611d28565b6040516109f09190613e0c565b60405180910390f35b348015610a0557600080fd5b50610a0e611d2e565b604051610a1b9190613e0c565b60405180910390f35b348015610a3057600080fd5b50610a4b6004803603810190610a4691906141a2565b611d34565b604051610a589190613e0c565b60405180910390f35b348015610a6d57600080fd5b50610a76611dbb565b604051610a839190613e0c565b60405180910390f35b348015610a9857600080fd5b50610ab36004803603810190610aae919061400b565b611dc1565b005b348015610ac157600080fd5b50610aca611eb1565b604051610ad79190613d89565b60405180910390f35b348015610aec57600080fd5b50610b076004803603810190610b0291906140d9565b611ec4565b604051610b149190613e0c565b60405180910390f35b348015610b2957600080fd5b50610b446004803603810190610b3f91906140d9565b611f0f565b005b348015610b5257600080fd5b50610b5b611ff1565b604051610b6891906140be565b60405180910390f35b348015610b7d57600080fd5b50610b986004803603810190610b939190614082565b612017565b005b348015610ba657600080fd5b50610bc16004803603810190610bbc91906140d9565b6121d9565b604051610bce9190613e0c565b60405180910390f35b348015610be357600080fd5b50610bfe6004803603810190610bf99190614162565b612224565b005b348015610c0c57600080fd5b50610c156122cb565b604051610c229190613e0c565b60405180910390f35b606060078054610c3a90614211565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6690614211565b8015610cb35780601f10610c8857610100808354040283529160200191610cb3565b820191906000526020600020905b815481529060010190602001808311610c9657829003601f168201915b5050505050905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610cf7610cf0612396565b848461239e565b6001905092915050565b610d09612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8d9061428f565b60405180910390fd5b80601560006101000a81548160ff02191690831515021790555050565b6000600a54905090565b600e5481565b610dcb612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4f9061428f565b60405180910390fd5b60005b8151811015610ee957600060066000848481518110610e7d57610e7c6142af565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ee19061430d565b915050610e5b565b5050565b6000610efa848484612569565b610fbb84610f06612396565b610fb6856040518060600160405280602c8152602001614f98602c9139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f6c612396565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9e9092919063ffffffff16565b61239e565b600190509392505050565b610fce612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461105b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110529061428f565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600960009054906101000a900460ff16905090565b60165481565b600061117c6110e0612396565b8461117785600260006110f1612396565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0290919063ffffffff16565b61239e565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b6111ce612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461125b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112529061428f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156112a1573d6000803e3d6000fd5b5050565b60105481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112fc612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611389576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113809061428f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560009054906101000a900460ff1681565b60175481565b60135481565b60195481565b60056020528060005260406000206000915054906101000a900460ff1681565b6114ba612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611547576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153e9061428f565b60405180910390fd5b6115716012546115636005600a546122d190919063ffffffff16565b61234c90919063ffffffff16565b8110156115b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115aa906143c8565b60405180910390fd5b80600f8190555050565b601560019054906101000a900460ff1681565b6115d8612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165c9061428f565b60405180910390fd5b601560029054906101000a900460ff16156116b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ac90614434565b60405180910390fd5b6001601560026101000a81548160ff0219169083151502179055506001601560016101000a81548160ff0219169083151502179055506001601560006101000a81548160ff02191690831515021790555042601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611740612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c49061428f565b60405180910390fd5b60005b825181101561185d5781600460008584815181106117f1576117f06142af565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806118559061430d565b9150506117d0565b505050565b60606008805461187190614211565b80601f016020809104026020016040519081016040528092919081815260200182805461189d90614211565b80156118ea5780601f106118bf576101008083540402835291602001916118ea565b820191906000526020600020905b8154815290600101906020018083116118cd57829003601f168201915b5050505050905090565b60046020528060005260406000206000915054906101000a900460ff1681565b600f5481565b611922612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a69061428f565b60405180910390fd5b601254600a546119bf9190614483565b811015611a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f890614526565b60405180910390fd5b8060108190555050565b6000611ace611a18612396565b84611ac9856040518060600160405280602c8152602001614f6c602c913960026000611a42612396565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9e9092919063ffffffff16565b61239e565b6001905092915050565b611ae0612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b649061428f565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611bc5611bbe612396565b8484612569565b6001905092915050565b611bd7612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5b9061428f565b60405180910390fd5b80601560016101000a81548160ff02191690831515021790555050565b611c89612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0d9061428f565b60405180910390fd5b81601981905550806018819055505050565b60145481565b60115481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60185481565b611dc9612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4d9061428f565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601560029054906101000a900460ff1681565b600080611f04601254611ef6611ee7601654601754612b0290919063ffffffff16565b866122d190919063ffffffff16565b61234c90919063ffffffff16565b905080915050919050565b611f17612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9b9061428f565b60405180910390fd5b60008111611fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fde90614592565b60405180910390fd5b80600e8190555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61201f612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a39061428f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561211c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211390614624565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008061221960125461220b6121fc601854601954612b0290919063ffffffff16565b866122d190919063ffffffff16565b61234c90919063ffffffff16565b905080915050919050565b61222c612396565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b09061428f565b60405180910390fd5b81601781905550806016819055505050565b60125481565b6000808314156122e45760009050612346565b600082846122f29190614644565b90508284826123019190614483565b14612341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233890614710565b60405180910390fd5b809150505b92915050565b600061238e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b60565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561240e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612405906147a2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561247e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247590614834565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161255c9190613e0c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d0906148c6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264090614958565b60405180910390fd5b6000811161268c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612683906149ea565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612719576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271090614a56565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156127bd5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561290857601054811115612807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fe90614ac2565b60405180910390fd5b601560029054906101000a900460ff16612907578273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156128c757508173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b612906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fd90614b2e565b60405180910390fd5b5b5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166129b957600f5461297782612969856112ab565b612b0290919063ffffffff16565b11156129b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129af90614bc0565b60405180910390fd5b5b6129c38383612bc3565b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a6a5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612a825750601560019054906101000a900460ff16155b15612a8c57600090505b612a9884848484612f12565b50505050565b6000838311158290612ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612add9190613bea565b60405180910390fd5b5060008385612af59190614be0565b9050809150509392505050565b6000808284612b119190614c14565b905083811015612b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4d90614cb6565b60405180910390fd5b8091505092915050565b60008083118290612ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9e9190613bea565b60405180910390fd5b5060008385612bb69190614483565b9050809150509392505050565b6000612bdc601b54601a54612b0290919063ffffffff16565b1415612be757612f0e565b6000612bf2306112ab565b90506000600e548210159050808015612c595750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612c715750601560009054906101000a900460ff165b8015612d0257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612d005750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b15612f0b57612d3430600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461239e565b6000612d4c6002601a5461234c90919063ffffffff16565b90506000612d6582601a5461367590919063ffffffff16565b90506000612d7c828661367590919063ffffffff16565b90506000479050612daf600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836136bf565b6000612dc4824761367590919063ffffffff16565b90506000612ded84612ddf88856122d190919063ffffffff16565b61234c90919063ffffffff16565b90506000811115612e6957612e2d600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612e2661170f565b87846138a5565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868287604051612e6093929190614cd6565b60405180910390a15b6000612e7e824761367590919063ffffffff16565b90506000811115612ef357600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612ef1573d6000803e3d6000fd5b505b6000601a819055506000601b81905550505050505050505b50505b5050565b8373ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612f6c5750805b1561324457600080601354601454612f849190614c14565b42108015612fe05750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b156130435761300e601254613000601154876122d190919063ffffffff16565b61234c90919063ffffffff16565b915081601b60008282546130229190614c14565b9250508190555061303c828561367590919063ffffffff16565b905061306d565b61304c84611ec4565b9150613061828561367590919063ffffffff16565b905061306c84613949565b5b6130f6846040518060400160405280601f81526020017f57696e67204368756e3a20696e73756666696369656e742062616c616e636500815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9e9092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061318b81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0290919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161322b9190613e0c565b60405180910390a361323d86836139ce565b505061366f565b8273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801561329e5750805b156134a75760006132ae836121d9565b905060006132c5828561367590919063ffffffff16565b9050613350846040518060400160405280601f81526020017f57696e67204368756e3a20696e73756666696369656e742062616c616e636500815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9e9092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133e581600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0290919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134859190613e0c565b60405180910390a361349786836139ce565b6134a084613acc565b505061366e565b613530826040518060400160405280601f81526020017f57696e67204368756e3a20696e73756666696369656e742062616c616e636500815250600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9e9092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135c582600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0290919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136659190613e0c565b60405180910390a35b5b50505050565b60006136b783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a9e565b905092915050565b60008290506000600267ffffffffffffffff8111156136e1576136e0613e2c565b5b60405190808252806020026020018201604052801561370f5781602001602082028036833780820191505090505b5090503081600081518110613727576137266142af565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137d09190614d22565b816001815181106137e4576137e36142af565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c4261384d9190614c14565b6040518663ffffffff1660e01b815260040161386d959493929190614e48565b600060405180830381600087803b15801561388757600080fd5b505af115801561389b573d6000803e3d6000fd5b5050505050505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff1663f305d7198330866000808a61012c426138db9190614c14565b6040518863ffffffff1660e01b81526004016138fc96959493929190614ea2565b60606040518083038185885af115801561391a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061393f9190614f18565b5050505050505050565b613972601254613964601654846122d190919063ffffffff16565b61234c90919063ffffffff16565b601a60008282546139839190614c14565b925050819055506139b36012546139a5601754846122d190919063ffffffff16565b61234c90919063ffffffff16565b601b60008282546139c49190614c14565b9250508190555050565b613a2081600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0290919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613ac09190613e0c565b60405180910390a35050565b613af5601254613ae7601854846122d190919063ffffffff16565b61234c90919063ffffffff16565b601a6000828254613b069190614c14565b92505081905550613b36601254613b28601954846122d190919063ffffffff16565b61234c90919063ffffffff16565b601b6000828254613b479190614c14565b9250508190555050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b8b578082015181840152602081019050613b70565b83811115613b9a576000848401525b50505050565b6000601f19601f8301169050919050565b6000613bbc82613b51565b613bc68185613b5c565b9350613bd6818560208601613b6d565b613bdf81613ba0565b840191505092915050565b60006020820190508181036000830152613c048184613bb1565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613c51613c4c613c4784613c0c565b613c2c565b613c0c565b9050919050565b6000613c6382613c36565b9050919050565b6000613c7582613c58565b9050919050565b613c8581613c6a565b82525050565b6000602082019050613ca06000830184613c7c565b92915050565b6000604051905090565b600080fd5b600080fd5b6000613cc582613c0c565b9050919050565b613cd581613cba565b8114613ce057600080fd5b50565b600081359050613cf281613ccc565b92915050565b6000819050919050565b613d0b81613cf8565b8114613d1657600080fd5b50565b600081359050613d2881613d02565b92915050565b60008060408385031215613d4557613d44613cb0565b5b6000613d5385828601613ce3565b9250506020613d6485828601613d19565b9150509250929050565b60008115159050919050565b613d8381613d6e565b82525050565b6000602082019050613d9e6000830184613d7a565b92915050565b613dad81613d6e565b8114613db857600080fd5b50565b600081359050613dca81613da4565b92915050565b600060208284031215613de657613de5613cb0565b5b6000613df484828501613dbb565b91505092915050565b613e0681613cf8565b82525050565b6000602082019050613e216000830184613dfd565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613e6482613ba0565b810181811067ffffffffffffffff82111715613e8357613e82613e2c565b5b80604052505050565b6000613e96613ca6565b9050613ea28282613e5b565b919050565b600067ffffffffffffffff821115613ec257613ec1613e2c565b5b602082029050602081019050919050565b600080fd5b6000613eeb613ee684613ea7565b613e8c565b90508083825260208201905060208402830185811115613f0e57613f0d613ed3565b5b835b81811015613f375780613f238882613ce3565b845260208401935050602081019050613f10565b5050509392505050565b600082601f830112613f5657613f55613e27565b5b8135613f66848260208601613ed8565b91505092915050565b600060208284031215613f8557613f84613cb0565b5b600082013567ffffffffffffffff811115613fa357613fa2613cb5565b5b613faf84828501613f41565b91505092915050565b600080600060608486031215613fd157613fd0613cb0565b5b6000613fdf86828701613ce3565b9350506020613ff086828701613ce3565b925050604061400186828701613d19565b9150509250925092565b6000806040838503121561402257614021613cb0565b5b600061403085828601613ce3565b925050602061404185828601613dbb565b9150509250929050565b600060ff82169050919050565b6140618161404b565b82525050565b600060208201905061407c6000830184614058565b92915050565b60006020828403121561409857614097613cb0565b5b60006140a684828501613ce3565b91505092915050565b6140b881613cba565b82525050565b60006020820190506140d360008301846140af565b92915050565b6000602082840312156140ef576140ee613cb0565b5b60006140fd84828501613d19565b91505092915050565b6000806040838503121561411d5761411c613cb0565b5b600083013567ffffffffffffffff81111561413b5761413a613cb5565b5b61414785828601613f41565b925050602061415885828601613dbb565b9150509250929050565b6000806040838503121561417957614178613cb0565b5b600061418785828601613d19565b925050602061419885828601613d19565b9150509250929050565b600080604083850312156141b9576141b8613cb0565b5b60006141c785828601613ce3565b92505060206141d885828601613ce3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061422957607f821691505b6020821081141561423d5761423c6141e2565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614279602083613b5c565b915061428482614243565b602082019050919050565b600060208201905081810360008301526142a88161426c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061431882613cf8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561434b5761434a6142de565b5b600182019050919050565b7f57696e67204368756e3a2073686f756c6420626520677265617465722074686160008201527f6e20302e35250000000000000000000000000000000000000000000000000000602082015250565b60006143b2602683613b5c565b91506143bd82614356565b604082019050919050565b600060208201905081810360008301526143e1816143a5565b9050919050565b7f57696e67204368756e3a20616c726561647920656e61626c6564000000000000600082015250565b600061441e601a83613b5c565b9150614429826143e8565b602082019050919050565b6000602082019050818103600083015261444d81614411565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061448e82613cf8565b915061449983613cf8565b9250826144a9576144a8614454565b5b828204905092915050565b7f57696e67204368756e3a2073686f756c6420626520677265617465722074686160008201527f6e20302e31250000000000000000000000000000000000000000000000000000602082015250565b6000614510602683613b5c565b915061451b826144b4565b604082019050919050565b6000602082019050818103600083015261453f81614503565b9050919050565b7f57696e67204368756e3a2063616e277420626520300000000000000000000000600082015250565b600061457c601583613b5c565b915061458782614546565b602082019050919050565b600060208201905081810360008301526145ab8161456f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061460e602683613b5c565b9150614619826145b2565b604082019050919050565b6000602082019050818103600083015261463d81614601565b9050919050565b600061464f82613cf8565b915061465a83613cf8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614693576146926142de565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006146fa602183613b5c565b91506147058261469e565b604082019050919050565b60006020820190508181036000830152614729816146ed565b9050919050565b7f57696e67204368756e3a20617070726f76652066726f6d20746865207a65726f60008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b600061478c602883613b5c565b915061479782614730565b604082019050919050565b600060208201905081810360008301526147bb8161477f565b9050919050565b7f57696e67204368756e3a20617070726f766520746f20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061481e602683613b5c565b9150614829826147c2565b604082019050919050565b6000602082019050818103600083015261484d81614811565b9050919050565b7f57696e67204368756e3a207472616e736665722066726f6d20746865207a657260008201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b60006148b0602983613b5c565b91506148bb82614854565b604082019050919050565b600060208201905081810360008301526148df816148a3565b9050919050565b7f57696e67204368756e3a207472616e7366657220746f20746865207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b6000614942602783613b5c565b915061494d826148e6565b604082019050919050565b6000602082019050818103600083015261497181614935565b9050919050565b7f57696e67204368756e3a20416d6f756e74206d7573742062652067726561746560008201527f72207468616e207a65726f000000000000000000000000000000000000000000602082015250565b60006149d4602b83613b5c565b91506149df82614978565b604082019050919050565b60006020820190508181036000830152614a03816149c7565b9050919050565b7f426f742064657465637465640000000000000000000000000000000000000000600082015250565b6000614a40600c83613b5c565b9150614a4b82614a0a565b602082019050919050565b60006020820190508181036000830152614a6f81614a33565b9050919050565b7f57696e67204368756e3a206d61782074786e206c696d69742065786365656473600082015250565b6000614aac602083613b5c565b9150614ab782614a76565b602082019050919050565b60006020820190508181036000830152614adb81614a9f565b9050919050565b7f57696e67204368756e3a2074726164696e672069732064697361626c65000000600082015250565b6000614b18601d83613b5c565b9150614b2382614ae2565b602082019050919050565b60006020820190508181036000830152614b4781614b0b565b9050919050565b7f57696e67204368756e3a206d617820686f6c64206c696d69742065786365656460008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614baa602183613b5c565b9150614bb582614b4e565b604082019050919050565b60006020820190508181036000830152614bd981614b9d565b9050919050565b6000614beb82613cf8565b9150614bf683613cf8565b925082821015614c0957614c086142de565b5b828203905092915050565b6000614c1f82613cf8565b9150614c2a83613cf8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614c5f57614c5e6142de565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614ca0601b83613b5c565b9150614cab82614c6a565b602082019050919050565b60006020820190508181036000830152614ccf81614c93565b9050919050565b6000606082019050614ceb6000830186613dfd565b614cf86020830185613dfd565b614d056040830184613dfd565b949350505050565b600081519050614d1c81613ccc565b92915050565b600060208284031215614d3857614d37613cb0565b5b6000614d4684828501614d0d565b91505092915050565b6000819050919050565b6000614d74614d6f614d6a84614d4f565b613c2c565b613cf8565b9050919050565b614d8481614d59565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614dbf81613cba565b82525050565b6000614dd18383614db6565b60208301905092915050565b6000602082019050919050565b6000614df582614d8a565b614dff8185614d95565b9350614e0a83614da6565b8060005b83811015614e3b578151614e228882614dc5565b9750614e2d83614ddd565b925050600181019050614e0e565b5085935050505092915050565b600060a082019050614e5d6000830188613dfd565b614e6a6020830187614d7b565b8181036040830152614e7c8186614dea565b9050614e8b60608301856140af565b614e986080830184613dfd565b9695505050505050565b600060c082019050614eb760008301896140af565b614ec46020830188613dfd565b614ed16040830187614d7b565b614ede6060830186614d7b565b614eeb60808301856140af565b614ef860a0830184613dfd565b979650505050505050565b600081519050614f1281613d02565b92915050565b600080600060608486031215614f3157614f30613cb0565b5b6000614f3f86828701614f03565b9350506020614f5086828701614f03565b9250506040614f6186828701614f03565b915050925092509256fe57696e67204368756e3a2064656372656173656420616c6c6f77616e6365206f722062656c6f77207a65726f57696e67204368756e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122040dbb2c003cc1f66fa7266bd8882327ae94f93a814693d0cfb7ee72f193185a864736f6c634300080a0033

Deployed Bytecode Sourcemap

3277:16028:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6646:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3903:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7557:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10636:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6923:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4005:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10997:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7758:450;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9354:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6832:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4678:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8216:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3676:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3498:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11461:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4210:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7031:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2824:157;;;;;;;;;;;;;:::i;:::-;;3966:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4461:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4761:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4381;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4941:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3613:56;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9703:251;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4557:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11207:246;;;;;;;;;;;;;:::i;:::-;;2610:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9104:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6737:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3554:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4105:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9962:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8524:407;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10866:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7158:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10759:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10421:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4427:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4304:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7365:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4855:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8939:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4607:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11598:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9533:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3937:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2989:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11838:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10209:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4338:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6646:83;6683:13;6716:5;6709:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6646:83;:::o;3903:27::-;;;;;;;;;;;;;:::o;7557:193::-;7659:4;7681:39;7690:12;:10;:12::i;:::-;7704:7;7713:6;7681:8;:39::i;:::-;7738:4;7731:11;;7557:193;;;;:::o;10636:115::-;2747:12;:10;:12::i;:::-;2737:22;;:6;;;;;;;;;;:22;;;2729:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10737:6:::1;10708:26;;:35;;;;;;;;;;;;;;;;;;10636:115:::0;:::o;6923:100::-;6976:7;7003:12;;6996:19;;6923:100;:::o;4005:45::-;;;;:::o;10997:202::-;2747:12;:10;:12::i;:::-;2737:22;;:6;;;;;;;;;;:22;;;2729:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11102:9:::1;11097:95;11117:8;:15;11113:1;:19;11097:95;;;11175:5;11154;:18;11160:8;11169:1;11160:11;;;;;;;;:::i;:::-;;;;;;;;11154:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;11134:3;;;;;:::i;:::-;;;;11097:95;;;;10997:202:::0;:::o;7758:450::-;7890:4;7907:36;7917:6;7925:9;7936:6;7907:9;:36::i;:::-;7954:224;7977:6;7998:12;:10;:12::i;:::-;8025:142;8081:6;8025:142;;;;;;;;;;;;;;;;;:11;:19;8037:6;8025:19;;;;;;;;;;;;;;;:33;8045:12;:10;:12::i;:::-;8025:33;;;;;;;;;;;;;;;;:37;;:142;;;;;:::i;:::-;7954:8;:224::i;:::-;8196:4;8189:11;;7758:450;;;;;:::o;9354:171::-;2747:12;:10;:12::i;:::-;2737:22;;:6;;;;;;;;;;:22;;;2729:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9512:5:::1;9476:24;:33;9501:7;9476:33;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;9354:171:::0;;:::o;6832:83::-;6873:5;6898:9;;;;;;;;;;;6891:16;;6832:83;:::o;4678:39::-;;;;:::o;8216:300::-;8331:4;8353:133;8376:12;:10;:12::i;:::-;8403:7;8425:50;8464:10;8425:11;:25;8437:12;:10;:12::i;:::-;8425:25;;;;;;;;;;;;;;;:34;8451:7;8425:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;8353:8;:133::i;:::-;8504:4;8497:11;;8216:300;;;;:::o;3676:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;3498:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;11461:129::-;2747:12;:10;:12::i;:::-;2737:22;;:6;;;;;;;;;;:22;;;2729:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11540:9:::1;11532:27;;:50;11560:21;11532:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11461:129:::0;:::o;4210:50::-;;;;:::o;7031:119::-;7097:7;7124:9;:18;7134:7;7124:18;;;;;;;;;;;;;;;;7117:25;;7031:119;;;:::o;2824:157::-;2747:12;:10;:12::i;:::-;2737:22;;:6;;;;;;;;;;:22;;;2729:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2931:1:::1;2894:40;;2915:6;::::0;::::1;;;;;;;;2894:40;;;;;;;;;;;;2970:1;2945:6:::0;::::1;:28;;;;;;;;;;;;;;;;;;2824:157::o:0;3966:30::-;;;;;;;;;;;;;:::o;4461:38::-;;;;;;;;;;;;;:::o;4761:39::-;;;;:::o;4381:::-;;;;:::o;4941:42::-;;;;:::o;3613:56::-;;;;;;;;;;;;;;;;;;;;;;:::o;9703:251::-;2747:12;:10;:12::i;:::-;2737:22;;:6;;;;;;;;;;:22;;;2729:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9808:39:::1;9832:14;;9808:19;9825:1;9808:12;;:16;;:19;;;;:::i;:::-;:23;;:39;;;;:::i;:::-;9797:7;:50;;9775:138;;;;;;;;;;;;:::i;:::-;;;;;;;;;9939:7;9924:12;:22;;;;9703:251:::0;:::o;4557:22::-;;;;;;;;;;;;;:::o;11207:246::-;2747:12;:10;:12::i;:::-;2737:22;;:6;;;;;;;;;;:22;;;2729:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11271:7:::1;;;;;;;;;;;11270:8;11262:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11330:4;11320:7;;:14;;;;;;;;;;;;;;;;;;11358:4;11345:10;;:17;;;;;;;;;;;;;;;;;;11402:4;11373:26;;:33;;;;;;;;;;;;;;;;;;11430:15;11417:10;:28;;;;11207:246::o:0;2610:79::-;2648:7;2675:6;;;;;;;;;;;2668:13;;2610:79;:::o;9104:242::-;2747:12;:10;:12::i;:::-;2737:22;;:6;;;;;;;;;;:22;;;2729:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9236:9:::1;9231:108;9251:7;:14;9247:1;:18;9231:108;;;9322:5;9287:20;:32;9308:7;9316:1;9308:10;;;;;;;;:::i;:::-;;;;;;;;9287:32;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;9267:3;;;;;:::i;:::-;;;;9231:108;;;;9104:242:::0;;:::o;6737:87::-;6776:13;6809:7;6802:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6737:87;:::o;3554:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;4105:58::-;;;;:::o;9962:239::-;2747:12;:10;:12::i;:::-;2737:22;;:6;;;;;;;;;;:22;;;2729:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10081:14:::1;;10066:12;;:29;;;;:::i;:::-;10055:7;:40;;10033:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;10186:7;10172:11;:21;;;;9962:239:::0;:::o;8524:407::-;8644:4;8666:235;8689:12;:10;:12::i;:::-;8716:7;8738:152;8795:15;8738:152;;;;;;;;;;;;;;;;;:11;:25;8750:12;:10;:12::i;:::-;8738:25;;;;;;;;;;;;;;;:34;8764:7;8738:34;;;;;;;;;;;;;;;;:38;;:152;;;;;:::i;:::-;8666:8;:235::i;:::-;8919:4;8912:11;;8524:407;;;;:::o;10866:123::-;2747:12;:10;:12::i;:::-;2737:22;;:6;;;;;;;;;;:22;;;2729:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10965:16:::1;10947:15;;:34;;;;;;;;;;;;;;;;;;10866:123:::0;:::o;7158:199::-;7263:4;7285:42;7295:12;:10;:12::i;:::-;7309:9;7320:6;7285:9;:42::i;:::-;7345:4;7338:11;;7158:199;;;;:::o;10759:99::-;2747:12;:10;:12::i;:::-;2737:22;;:6;;;;;;;;;;:22;;;2729:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10844:6:::1;10831:10;;:19;;;;;;;;;;;;;;;;;;10759:99:::0;:::o;10421:207::-;2747:12;:10;:12::i;:::-;2737:22;;:6;;;;;;;;;;:22;;;2729:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10566:6:::1;10542:21;:30;;;;10607:13;10583:21;:37;;;;10421:207:::0;;:::o;4427:25::-;;;;:::o;4304:27::-;;;;:::o;7365:184::-;7482:7;7514:11;:18;7526:5;7514:18;;;;;;;;;;;;;;;:27;7533:7;7514:27;;;;;;;;;;;;;;;;7507:34;;7365:184;;;;:::o;4855:41::-;;;;:::o;8939:157::-;2747:12;:10;:12::i;:::-;2737:22;;:6;;;;;;;;;;:22;;;2729:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9083:5:::1;9054:17;:26;9072:7;9054:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;8939:157:::0;;:::o;4607:19::-;;;;;;;;;;;;;:::o;11598:232::-;11661:7;11681:11;11695:106;11786:14;;11695:72;11720:46;11745:20;;11720;;:24;;:46;;;;:::i;:::-;11695:6;:24;;:72;;;;:::i;:::-;:90;;:106;;;;:::i;:::-;11681:120;;11819:3;11812:10;;;11598:232;;;:::o;9533:162::-;2747:12;:10;:12::i;:::-;2737:22;;:6;;;;;;;;;;:22;;;2729:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9625:1:::1;9615:7;:11;9607:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;9680:7;9663:14;:24;;;;9533:162:::0;:::o;3937:22::-;;;;;;;;;;;;;:::o;2989:281::-;2747:12;:10;:12::i;:::-;2737:22;;:6;;;;;;;;;;:22;;;2729:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3112:1:::1;3092:22;;:8;:22;;;;3070:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;3225:8;3196:38;;3217:6;::::0;::::1;;;;;;;;3196:38;;;;;;;;;;;;3254:8;3245:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2989:281:::0;:::o;11838:235::-;11902:7;11922:11;11936:108;12029:14;;11936:74;11961:48;11987:21;;11961;;:25;;:48;;;;:::i;:::-;11936:6;:24;;:74;;;;:::i;:::-;:92;;:108;;;;:::i;:::-;11922:122;;12062:3;12055:10;;;11838:235;;;:::o;10209:204::-;2747:12;:10;:12::i;:::-;2737:22;;:6;;;;;;;;;;:22;;;2729:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10352:6:::1;10329:20;:29;;;;10392:13;10369:20;:36;;;;10209:204:::0;;:::o;4338:36::-;;;;:::o;21122:471::-;21180:7;21430:1;21425;:6;21421:47;;;21455:1;21448:8;;;;21421:47;21480:9;21496:1;21492;:5;;;;:::i;:::-;21480:17;;21525:1;21520;21516;:5;;;;:::i;:::-;:10;21508:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;21584:1;21577:8;;;21122:471;;;;;:::o;21601:132::-;21659:7;21686:39;21690:1;21693;21686:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;21679:46;;21601:132;;;;:::o;1946:115::-;1999:15;2042:10;2027:26;;1946:115;:::o;12081:379::-;12225:1;12208:19;;:5;:19;;;;12200:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12310:1;12291:21;;:7;:21;;;;12283:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12398:6;12368:11;:18;12380:5;12368:18;;;;;;;;;;;;;;;:27;12387:7;12368:27;;;;;;;;;;;;;;;:36;;;;12436:7;12420:32;;12429:5;12420:32;;;12445:6;12420:32;;;;;;:::i;:::-;;;;;;;;12081:379;;;:::o;12468:1509::-;12606:1;12590:18;;:4;:18;;;;12582:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12687:1;12673:16;;:2;:16;;;;12665:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12761:1;12752:6;:10;12744:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;12830:5;:11;12836:4;12830:11;;;;;;;;;;;;;;;;;;;;;;;;;12829:12;12821:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;12875:20;:26;12896:4;12875:26;;;;;;;;;;;;;;;;;;;;;;;;;12874:27;:56;;;;;12906:20;:24;12927:2;12906:24;;;;;;;;;;;;;;;;;;;;;;;;;12905:25;12874:56;12870:399;;;12965:11;;12955:6;:21;;12947:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;13079:7;;;;;;;;;;;13074:184;;13148:4;13137:15;;:7;;;;;;;;;;;:15;;;;:32;;;;;13167:2;13156:13;;:7;;;;;;;;;;;:13;;;;13137:32;13107:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;13074:184;12870:399;13286:24;:28;13311:2;13286:28;;;;;;;;;;;;;;;;;;;;;;;;;13281:198;;13386:12;;13357:25;13375:6;13357:13;13367:2;13357:9;:13::i;:::-;:17;;:25;;;;:::i;:::-;:41;;13331:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;13281:198;13520:30;13541:4;13547:2;13520:20;:30::i;:::-;13624:12;13639:4;13624:19;;13743:17;:23;13761:4;13743:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;13770:17;:21;13788:2;13770:21;;;;;;;;;;;;;;;;;;;;;;;;;13743:48;:63;;;;13796:10;;;;;;;;;;;13795:11;13743:63;13739:111;;;13833:5;13823:15;;13739:111;13928:41;13943:4;13949:2;13953:6;13961:7;13928:14;:41::i;:::-;12571:1406;12468:1509;;;:::o;20888:226::-;21008:7;21041:1;21036;:6;;21044:12;21028:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;21068:9;21084:1;21080;:5;;;;:::i;:::-;21068:17;;21105:1;21098:8;;;20888:226;;;;;:::o;20555:181::-;20613:7;20633:9;20649:1;20645;:5;;;;:::i;:::-;20633:17;;20674:1;20669;:6;;20661:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;20727:1;20720:8;;;20555:181;;;;:::o;21741:312::-;21861:7;21893:1;21889;:5;21896:12;21881:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;21920:9;21936:1;21932;:5;;;;:::i;:::-;21920:17;;22044:1;22037:8;;;21741:312;;;;;:::o;16845:2457::-;16971:1;16923:44;16947:19;;16923;;:23;;:44;;;;:::i;:::-;:49;16920:61;;;16974:7;;16920:61;17269:28;17300:24;17318:4;17300:9;:24::i;:::-;17269:55;;17337:15;17379:14;;17355:20;:38;;17337:56;;17424:10;:42;;;;;17459:7;;;;;;;;;;;17451:15;;:4;:15;;;;17424:42;:85;;;;;17483:26;;;;;;;;;;;17424:85;:143;;;;;17544:4;17528:21;;:4;:21;;;:38;;;;;17559:7;;;;;;;;;;;17553:13;;:2;:13;;;17528:38;17526:41;17424:143;17406:1889;;;17642:65;17659:4;17674:9;;;;;;;;;;;17686:20;17642:8;:65::i;:::-;17724:21;17748:26;17772:1;17748:19;;:23;;:26;;;;:::i;:::-;17724:50;;17789:26;17818:38;17842:13;17818:19;;:23;;:38;;;;:::i;:::-;17789:67;;17873:30;17906:76;17949:18;17906:20;:24;;:76;;;;:::i;:::-;17873:109;;17999:21;18023;17999:45;;18111:66;18142:9;;;;;;;;;;;18154:22;18111;:66::i;:::-;18194:20;18217:40;18243:13;18217:21;:25;;:40;;;;:::i;:::-;18194:63;;18274:31;18308:95;18380:22;18308:49;18343:13;18308:12;:34;;:49;;;;:::i;:::-;:71;;:95;;;;:::i;:::-;18274:129;;18487:1;18461:23;:27;18457:445;;;18509:195;18558:9;;;;;;;;;;;18591:7;:5;:7::i;:::-;18621:18;18662:23;18509:18;:195::i;:::-;18730:156;18767:13;18803:23;18849:18;18730:156;;;;;;;;:::i;:::-;;;;;;;;18457:445;18918:23;18944:82;18988:23;18944:21;:25;;:82;;;;:::i;:::-;18918:108;;19113:1;19095:15;:19;19091:75;;;19124:15;;;;;;;;;;;19116:33;;:50;19150:15;19116:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19091:75;19244:1;19222:19;:23;;;;19282:1;19260:19;:23;;;;17594:1701;;;;;;;17406:1889;16909:2393;;16845:2457;;;:::o;14058:1983::-;14224:6;14213:17;;:7;;;;;;;;;;;:17;;;:28;;;;;14234:7;14213:28;14209:1825;;;14258:14;14287:23;14402:11;;14389:10;;:24;;;;:::i;:::-;14371:15;:42;:91;;;;;14452:9;;;;;;;;;;;14434:28;;:6;:28;;;;14371:91;14349:492;;;14506:38;14529:14;;14506:18;14517:6;;14506;:10;;:18;;;;:::i;:::-;:22;;:38;;;;:::i;:::-;14497:47;;14586:6;14563:19;;:29;;;;;;;:::i;:::-;;;;;;;;14629:18;14640:6;14629;:10;;:18;;;;:::i;:::-;14611:36;;14349:492;;;14697:24;14714:6;14697:16;:24::i;:::-;14688:33;;14758:18;14769:6;14758;:10;;:18;;;;:::i;:::-;14740:36;;14795:30;14818:6;14795:22;:30::i;:::-;14349:492;14877:113;14917:6;14877:113;;;;;;;;;;;;;;;;;:9;:17;14887:6;14877:17;;;;;;;;;;;;;;;;:21;;:113;;;;;:::i;:::-;14857:9;:17;14867:6;14857:17;;;;;;;;;;;;;;;:133;;;;15028:41;15053:15;15028:9;:20;15038:9;15028:20;;;;;;;;;;;;;;;;:24;;:41;;;;:::i;:::-;15005:9;:20;15015:9;15005:20;;;;;;;;;;;;;;;:64;;;;15106:9;15089:44;;15098:6;15089:44;;;15117:15;15089:44;;;;;;:::i;:::-;;;;;;;;15150:28;15163:6;15171;15150:12;:28::i;:::-;14243:947;;14209:1825;;;15211:9;15200:20;;:7;;;;;;;;;;;:20;;;:31;;;;;15224:7;15200:31;15196:838;;;15248:14;15265:25;15283:6;15265:17;:25::i;:::-;15248:42;;15305:23;15331:18;15342:6;15331;:10;;:18;;;;:::i;:::-;15305:44;;15384:113;15424:6;15384:113;;;;;;;;;;;;;;;;;:9;:17;15394:6;15384:17;;;;;;;;;;;;;;;;:21;;:113;;;;;:::i;:::-;15364:9;:17;15374:6;15364:17;;;;;;;;;;;;;;;:133;;;;15535:41;15560:15;15535:9;:20;15545:9;15535:20;;;;;;;;;;;;;;;;:24;;:41;;;;:::i;:::-;15512:9;:20;15522:9;15512:20;;;;;;;;;;;;;;;:64;;;;15613:9;15596:44;;15605:6;15596:44;;;15624:15;15596:44;;;;;;:::i;:::-;;;;;;;;15657:28;15670:6;15678;15657:12;:28::i;:::-;15700:31;15724:6;15700:23;:31::i;:::-;15233:510;;15196:838;;;15784:113;15824:6;15784:113;;;;;;;;;;;;;;;;;:9;:17;15794:6;15784:17;;;;;;;;;;;;;;;;:21;;:113;;;;;:::i;:::-;15764:9;:17;15774:6;15764:17;;;;;;;;;;;;;;;:133;;;;15935:32;15960:6;15935:9;:20;15945:9;15935:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15912:9;:20;15922:9;15912:20;;;;;;;;;;;;;;;:55;;;;16004:9;15987:35;;15996:6;15987:35;;;16015:6;15987:35;;;;;;:::i;:::-;;;;;;;;15196:838;14209:1825;14058:1983;;;;:::o;20744:136::-;20802:7;20829:43;20833:1;20836;20829:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;20822:50;;20744:136;;;;:::o;19401:603::-;19505:20;19539:13;19505:48;;19622:21;19660:1;19646:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19622:40;;19691:4;19673;19678:1;19673:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19717:9;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19707:4;19712:1;19707:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;19772:9;:60;;;19847:11;19873:1;19917:4;19944;19982:3;19964:15;:21;;;;:::i;:::-;19772:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19494:510;;19401:603;;:::o;20012:512::-;20175:20;20209:13;20175:48;;20266:9;:25;;;20299:9;20332:4;20352:11;20378:1;20421;20464:5;20502:3;20484:15;:21;;;;:::i;:::-;20266:250;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20164:360;20012:512;;;;:::o;16258:284::-;16348:76;16399:14;;16348:32;16359:20;;16348:6;:10;;:32;;;;:::i;:::-;:36;;:76;;;;:::i;:::-;16325:19;;:99;;;;;;;:::i;:::-;;;;;;;;16458:76;16509:14;;16458:32;16469:20;;16458:6;:10;;:32;;;;:::i;:::-;:36;;:76;;;;:::i;:::-;16435:19;;:99;;;;;;;:::i;:::-;;;;;;;;16258:284;:::o;16049:201::-;16149:36;16178:6;16149:9;:24;16167:4;16149:24;;;;;;;;;;;;;;;;:28;;:36;;;;:::i;:::-;16122:9;:24;16140:4;16122:24;;;;;;;;;;;;;;;:63;;;;16228:4;16203:39;;16212:6;16203:39;;;16235:6;16203:39;;;;;;:::i;:::-;;;;;;;;16049:201;;:::o;16550:287::-;16641:77;16693:14;;16641:33;16652:21;;16641:6;:10;;:33;;;;:::i;:::-;:37;;:77;;;;:::i;:::-;16618:19;;:100;;;;;;;:::i;:::-;;;;;;;;16752:77;16804:14;;16752:33;16763:21;;16752:6;:10;;:33;;;;:::i;:::-;:37;;:77;;;;:::i;:::-;16729:19;;:100;;;;;;;:::i;:::-;;;;;;;;16550:287;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:126::-;1434:7;1474:42;1467:5;1463:54;1452:65;;1397:126;;;:::o;1529:60::-;1557:3;1578:5;1571:12;;1529:60;;;:::o;1595:142::-;1645:9;1678:53;1696:34;1705:24;1723:5;1705:24;:::i;:::-;1696:34;:::i;:::-;1678:53;:::i;:::-;1665:66;;1595:142;;;:::o;1743:126::-;1793:9;1826:37;1857:5;1826:37;:::i;:::-;1813:50;;1743:126;;;:::o;1875:144::-;1943:9;1976:37;2007:5;1976:37;:::i;:::-;1963:50;;1875:144;;;:::o;2025:167::-;2130:55;2179:5;2130:55;:::i;:::-;2125:3;2118:68;2025:167;;:::o;2198:258::-;2309:4;2347:2;2336:9;2332:18;2324:26;;2360:89;2446:1;2435:9;2431:17;2422:6;2360:89;:::i;:::-;2198:258;;;;:::o;2462:75::-;2495:6;2528:2;2522:9;2512:19;;2462:75;:::o;2543:117::-;2652:1;2649;2642:12;2666:117;2775:1;2772;2765:12;2789:96;2826:7;2855:24;2873:5;2855:24;:::i;:::-;2844:35;;2789:96;;;:::o;2891:122::-;2964:24;2982:5;2964:24;:::i;:::-;2957:5;2954:35;2944:63;;3003:1;3000;2993:12;2944:63;2891:122;:::o;3019:139::-;3065:5;3103:6;3090:20;3081:29;;3119:33;3146:5;3119:33;:::i;:::-;3019:139;;;;:::o;3164:77::-;3201:7;3230:5;3219:16;;3164:77;;;:::o;3247:122::-;3320:24;3338:5;3320:24;:::i;:::-;3313:5;3310:35;3300:63;;3359:1;3356;3349:12;3300:63;3247:122;:::o;3375:139::-;3421:5;3459:6;3446:20;3437:29;;3475:33;3502:5;3475:33;:::i;:::-;3375:139;;;;:::o;3520:474::-;3588:6;3596;3645:2;3633:9;3624:7;3620:23;3616:32;3613:119;;;3651:79;;:::i;:::-;3613:119;3771:1;3796:53;3841:7;3832:6;3821:9;3817:22;3796:53;:::i;:::-;3786:63;;3742:117;3898:2;3924:53;3969:7;3960:6;3949:9;3945:22;3924:53;:::i;:::-;3914:63;;3869:118;3520:474;;;;;:::o;4000:90::-;4034:7;4077:5;4070:13;4063:21;4052:32;;4000:90;;;:::o;4096:109::-;4177:21;4192:5;4177:21;:::i;:::-;4172:3;4165:34;4096:109;;:::o;4211:210::-;4298:4;4336:2;4325:9;4321:18;4313:26;;4349:65;4411:1;4400:9;4396:17;4387:6;4349:65;:::i;:::-;4211:210;;;;:::o;4427:116::-;4497:21;4512:5;4497:21;:::i;:::-;4490:5;4487:32;4477:60;;4533:1;4530;4523:12;4477:60;4427:116;:::o;4549:133::-;4592:5;4630:6;4617:20;4608:29;;4646:30;4670:5;4646:30;:::i;:::-;4549:133;;;;:::o;4688:323::-;4744:6;4793:2;4781:9;4772:7;4768:23;4764:32;4761:119;;;4799:79;;:::i;:::-;4761:119;4919:1;4944:50;4986:7;4977:6;4966:9;4962:22;4944:50;:::i;:::-;4934:60;;4890:114;4688:323;;;;:::o;5017:118::-;5104:24;5122:5;5104:24;:::i;:::-;5099:3;5092:37;5017:118;;:::o;5141:222::-;5234:4;5272:2;5261:9;5257:18;5249:26;;5285:71;5353:1;5342:9;5338:17;5329:6;5285:71;:::i;:::-;5141:222;;;;:::o;5369:117::-;5478:1;5475;5468:12;5492:180;5540:77;5537:1;5530:88;5637:4;5634:1;5627:15;5661:4;5658:1;5651:15;5678:281;5761:27;5783:4;5761:27;:::i;:::-;5753:6;5749:40;5891:6;5879:10;5876:22;5855:18;5843:10;5840:34;5837:62;5834:88;;;5902:18;;:::i;:::-;5834:88;5942:10;5938:2;5931:22;5721:238;5678:281;;:::o;5965:129::-;5999:6;6026:20;;:::i;:::-;6016:30;;6055:33;6083:4;6075:6;6055:33;:::i;:::-;5965:129;;;:::o;6100:311::-;6177:4;6267:18;6259:6;6256:30;6253:56;;;6289:18;;:::i;:::-;6253:56;6339:4;6331:6;6327:17;6319:25;;6399:4;6393;6389:15;6381:23;;6100:311;;;:::o;6417:117::-;6526:1;6523;6516:12;6557:710;6653:5;6678:81;6694:64;6751:6;6694:64;:::i;:::-;6678:81;:::i;:::-;6669:90;;6779:5;6808:6;6801:5;6794:21;6842:4;6835:5;6831:16;6824:23;;6895:4;6887:6;6883:17;6875:6;6871:30;6924:3;6916:6;6913:15;6910:122;;;6943:79;;:::i;:::-;6910:122;7058:6;7041:220;7075:6;7070:3;7067:15;7041:220;;;7150:3;7179:37;7212:3;7200:10;7179:37;:::i;:::-;7174:3;7167:50;7246:4;7241:3;7237:14;7230:21;;7117:144;7101:4;7096:3;7092:14;7085:21;;7041:220;;;7045:21;6659:608;;6557:710;;;;;:::o;7290:370::-;7361:5;7410:3;7403:4;7395:6;7391:17;7387:27;7377:122;;7418:79;;:::i;:::-;7377:122;7535:6;7522:20;7560:94;7650:3;7642:6;7635:4;7627:6;7623:17;7560:94;:::i;:::-;7551:103;;7367:293;7290:370;;;;:::o;7666:539::-;7750:6;7799:2;7787:9;7778:7;7774:23;7770:32;7767:119;;;7805:79;;:::i;:::-;7767:119;7953:1;7942:9;7938:17;7925:31;7983:18;7975:6;7972:30;7969:117;;;8005:79;;:::i;:::-;7969:117;8110:78;8180:7;8171:6;8160:9;8156:22;8110:78;:::i;:::-;8100:88;;7896:302;7666:539;;;;:::o;8211:619::-;8288:6;8296;8304;8353:2;8341:9;8332:7;8328:23;8324:32;8321:119;;;8359:79;;:::i;:::-;8321:119;8479:1;8504:53;8549:7;8540:6;8529:9;8525:22;8504:53;:::i;:::-;8494:63;;8450:117;8606:2;8632:53;8677:7;8668:6;8657:9;8653:22;8632:53;:::i;:::-;8622:63;;8577:118;8734:2;8760:53;8805:7;8796:6;8785:9;8781:22;8760:53;:::i;:::-;8750:63;;8705:118;8211:619;;;;;:::o;8836:468::-;8901:6;8909;8958:2;8946:9;8937:7;8933:23;8929:32;8926:119;;;8964:79;;:::i;:::-;8926:119;9084:1;9109:53;9154:7;9145:6;9134:9;9130:22;9109:53;:::i;:::-;9099:63;;9055:117;9211:2;9237:50;9279:7;9270:6;9259:9;9255:22;9237:50;:::i;:::-;9227:60;;9182:115;8836:468;;;;;:::o;9310:86::-;9345:7;9385:4;9378:5;9374:16;9363:27;;9310:86;;;:::o;9402:112::-;9485:22;9501:5;9485:22;:::i;:::-;9480:3;9473:35;9402:112;;:::o;9520:214::-;9609:4;9647:2;9636:9;9632:18;9624:26;;9660:67;9724:1;9713:9;9709:17;9700:6;9660:67;:::i;:::-;9520:214;;;;:::o;9740:329::-;9799:6;9848:2;9836:9;9827:7;9823:23;9819:32;9816:119;;;9854:79;;:::i;:::-;9816:119;9974:1;9999:53;10044:7;10035:6;10024:9;10020:22;9999:53;:::i;:::-;9989:63;;9945:117;9740:329;;;;:::o;10075:118::-;10162:24;10180:5;10162:24;:::i;:::-;10157:3;10150:37;10075:118;;:::o;10199:222::-;10292:4;10330:2;10319:9;10315:18;10307:26;;10343:71;10411:1;10400:9;10396:17;10387:6;10343:71;:::i;:::-;10199:222;;;;:::o;10427:329::-;10486:6;10535:2;10523:9;10514:7;10510:23;10506:32;10503:119;;;10541:79;;:::i;:::-;10503:119;10661:1;10686:53;10731:7;10722:6;10711:9;10707:22;10686:53;:::i;:::-;10676:63;;10632:117;10427:329;;;;:::o;10762:678::-;10852:6;10860;10909:2;10897:9;10888:7;10884:23;10880:32;10877:119;;;10915:79;;:::i;:::-;10877:119;11063:1;11052:9;11048:17;11035:31;11093:18;11085:6;11082:30;11079:117;;;11115:79;;:::i;:::-;11079:117;11220:78;11290:7;11281:6;11270:9;11266:22;11220:78;:::i;:::-;11210:88;;11006:302;11347:2;11373:50;11415:7;11406:6;11395:9;11391:22;11373:50;:::i;:::-;11363:60;;11318:115;10762:678;;;;;:::o;11446:474::-;11514:6;11522;11571:2;11559:9;11550:7;11546:23;11542:32;11539:119;;;11577:79;;:::i;:::-;11539:119;11697:1;11722:53;11767:7;11758:6;11747:9;11743:22;11722:53;:::i;:::-;11712:63;;11668:117;11824:2;11850:53;11895:7;11886:6;11875:9;11871:22;11850:53;:::i;:::-;11840:63;;11795:118;11446:474;;;;;:::o;11926:::-;11994:6;12002;12051:2;12039:9;12030:7;12026:23;12022:32;12019:119;;;12057:79;;:::i;:::-;12019:119;12177:1;12202:53;12247:7;12238:6;12227:9;12223:22;12202:53;:::i;:::-;12192:63;;12148:117;12304:2;12330:53;12375:7;12366:6;12355:9;12351:22;12330:53;:::i;:::-;12320:63;;12275:118;11926:474;;;;;:::o;12406:180::-;12454:77;12451:1;12444:88;12551:4;12548:1;12541:15;12575:4;12572:1;12565:15;12592:320;12636:6;12673:1;12667:4;12663:12;12653:22;;12720:1;12714:4;12710:12;12741:18;12731:81;;12797:4;12789:6;12785:17;12775:27;;12731:81;12859:2;12851:6;12848:14;12828:18;12825:38;12822:84;;;12878:18;;:::i;:::-;12822:84;12643:269;12592:320;;;:::o;12918:182::-;13058:34;13054:1;13046:6;13042:14;13035:58;12918:182;:::o;13106:366::-;13248:3;13269:67;13333:2;13328:3;13269:67;:::i;:::-;13262:74;;13345:93;13434:3;13345:93;:::i;:::-;13463:2;13458:3;13454:12;13447:19;;13106:366;;;:::o;13478:419::-;13644:4;13682:2;13671:9;13667:18;13659:26;;13731:9;13725:4;13721:20;13717:1;13706:9;13702:17;13695:47;13759:131;13885:4;13759:131;:::i;:::-;13751:139;;13478:419;;;:::o;13903:180::-;13951:77;13948:1;13941:88;14048:4;14045:1;14038:15;14072:4;14069:1;14062:15;14089:180;14137:77;14134:1;14127:88;14234:4;14231:1;14224:15;14258:4;14255:1;14248:15;14275:233;14314:3;14337:24;14355:5;14337:24;:::i;:::-;14328:33;;14383:66;14376:5;14373:77;14370:103;;;14453:18;;:::i;:::-;14370:103;14500:1;14493:5;14489:13;14482:20;;14275:233;;;:::o;14514:225::-;14654:34;14650:1;14642:6;14638:14;14631:58;14723:8;14718:2;14710:6;14706:15;14699:33;14514:225;:::o;14745:366::-;14887:3;14908:67;14972:2;14967:3;14908:67;:::i;:::-;14901:74;;14984:93;15073:3;14984:93;:::i;:::-;15102:2;15097:3;15093:12;15086:19;;14745:366;;;:::o;15117:419::-;15283:4;15321:2;15310:9;15306:18;15298:26;;15370:9;15364:4;15360:20;15356:1;15345:9;15341:17;15334:47;15398:131;15524:4;15398:131;:::i;:::-;15390:139;;15117:419;;;:::o;15542:176::-;15682:28;15678:1;15670:6;15666:14;15659:52;15542:176;:::o;15724:366::-;15866:3;15887:67;15951:2;15946:3;15887:67;:::i;:::-;15880:74;;15963:93;16052:3;15963:93;:::i;:::-;16081:2;16076:3;16072:12;16065:19;;15724:366;;;:::o;16096:419::-;16262:4;16300:2;16289:9;16285:18;16277:26;;16349:9;16343:4;16339:20;16335:1;16324:9;16320:17;16313:47;16377:131;16503:4;16377:131;:::i;:::-;16369:139;;16096:419;;;:::o;16521:180::-;16569:77;16566:1;16559:88;16666:4;16663:1;16656:15;16690:4;16687:1;16680:15;16707:185;16747:1;16764:20;16782:1;16764:20;:::i;:::-;16759:25;;16798:20;16816:1;16798:20;:::i;:::-;16793:25;;16837:1;16827:35;;16842:18;;:::i;:::-;16827:35;16884:1;16881;16877:9;16872:14;;16707:185;;;;:::o;16898:225::-;17038:34;17034:1;17026:6;17022:14;17015:58;17107:8;17102:2;17094:6;17090:15;17083:33;16898:225;:::o;17129:366::-;17271:3;17292:67;17356:2;17351:3;17292:67;:::i;:::-;17285:74;;17368:93;17457:3;17368:93;:::i;:::-;17486:2;17481:3;17477:12;17470:19;;17129:366;;;:::o;17501:419::-;17667:4;17705:2;17694:9;17690:18;17682:26;;17754:9;17748:4;17744:20;17740:1;17729:9;17725:17;17718:47;17782:131;17908:4;17782:131;:::i;:::-;17774:139;;17501:419;;;:::o;17926:171::-;18066:23;18062:1;18054:6;18050:14;18043:47;17926:171;:::o;18103:366::-;18245:3;18266:67;18330:2;18325:3;18266:67;:::i;:::-;18259:74;;18342:93;18431:3;18342:93;:::i;:::-;18460:2;18455:3;18451:12;18444:19;;18103:366;;;:::o;18475:419::-;18641:4;18679:2;18668:9;18664:18;18656:26;;18728:9;18722:4;18718:20;18714:1;18703:9;18699:17;18692:47;18756:131;18882:4;18756:131;:::i;:::-;18748:139;;18475:419;;;:::o;18900:225::-;19040:34;19036:1;19028:6;19024:14;19017:58;19109:8;19104:2;19096:6;19092:15;19085:33;18900:225;:::o;19131:366::-;19273:3;19294:67;19358:2;19353:3;19294:67;:::i;:::-;19287:74;;19370:93;19459:3;19370:93;:::i;:::-;19488:2;19483:3;19479:12;19472:19;;19131:366;;;:::o;19503:419::-;19669:4;19707:2;19696:9;19692:18;19684:26;;19756:9;19750:4;19746:20;19742:1;19731:9;19727:17;19720:47;19784:131;19910:4;19784:131;:::i;:::-;19776:139;;19503:419;;;:::o;19928:348::-;19968:7;19991:20;20009:1;19991:20;:::i;:::-;19986:25;;20025:20;20043:1;20025:20;:::i;:::-;20020:25;;20213:1;20145:66;20141:74;20138:1;20135:81;20130:1;20123:9;20116:17;20112:105;20109:131;;;20220:18;;:::i;:::-;20109:131;20268:1;20265;20261:9;20250:20;;19928:348;;;;:::o;20282:220::-;20422:34;20418:1;20410:6;20406:14;20399:58;20491:3;20486:2;20478:6;20474:15;20467:28;20282:220;:::o;20508:366::-;20650:3;20671:67;20735:2;20730:3;20671:67;:::i;:::-;20664:74;;20747:93;20836:3;20747:93;:::i;:::-;20865:2;20860:3;20856:12;20849:19;;20508:366;;;:::o;20880:419::-;21046:4;21084:2;21073:9;21069:18;21061:26;;21133:9;21127:4;21123:20;21119:1;21108:9;21104:17;21097:47;21161:131;21287:4;21161:131;:::i;:::-;21153:139;;20880:419;;;:::o;21305:227::-;21445:34;21441:1;21433:6;21429:14;21422:58;21514:10;21509:2;21501:6;21497:15;21490:35;21305:227;:::o;21538:366::-;21680:3;21701:67;21765:2;21760:3;21701:67;:::i;:::-;21694:74;;21777:93;21866:3;21777:93;:::i;:::-;21895:2;21890:3;21886:12;21879:19;;21538:366;;;:::o;21910:419::-;22076:4;22114:2;22103:9;22099:18;22091:26;;22163:9;22157:4;22153:20;22149:1;22138:9;22134:17;22127:47;22191:131;22317:4;22191:131;:::i;:::-;22183:139;;21910:419;;;:::o;22335:225::-;22475:34;22471:1;22463:6;22459:14;22452:58;22544:8;22539:2;22531:6;22527:15;22520:33;22335:225;:::o;22566:366::-;22708:3;22729:67;22793:2;22788:3;22729:67;:::i;:::-;22722:74;;22805:93;22894:3;22805:93;:::i;:::-;22923:2;22918:3;22914:12;22907:19;;22566:366;;;:::o;22938:419::-;23104:4;23142:2;23131:9;23127:18;23119:26;;23191:9;23185:4;23181:20;23177:1;23166:9;23162:17;23155:47;23219:131;23345:4;23219:131;:::i;:::-;23211:139;;22938:419;;;:::o;23363:228::-;23503:34;23499:1;23491:6;23487:14;23480:58;23572:11;23567:2;23559:6;23555:15;23548:36;23363:228;:::o;23597:366::-;23739:3;23760:67;23824:2;23819:3;23760:67;:::i;:::-;23753:74;;23836:93;23925:3;23836:93;:::i;:::-;23954:2;23949:3;23945:12;23938:19;;23597:366;;;:::o;23969:419::-;24135:4;24173:2;24162:9;24158:18;24150:26;;24222:9;24216:4;24212:20;24208:1;24197:9;24193:17;24186:47;24250:131;24376:4;24250:131;:::i;:::-;24242:139;;23969:419;;;:::o;24394:226::-;24534:34;24530:1;24522:6;24518:14;24511:58;24603:9;24598:2;24590:6;24586:15;24579:34;24394:226;:::o;24626:366::-;24768:3;24789:67;24853:2;24848:3;24789:67;:::i;:::-;24782:74;;24865:93;24954:3;24865:93;:::i;:::-;24983:2;24978:3;24974:12;24967:19;;24626:366;;;:::o;24998:419::-;25164:4;25202:2;25191:9;25187:18;25179:26;;25251:9;25245:4;25241:20;25237:1;25226:9;25222:17;25215:47;25279:131;25405:4;25279:131;:::i;:::-;25271:139;;24998:419;;;:::o;25423:230::-;25563:34;25559:1;25551:6;25547:14;25540:58;25632:13;25627:2;25619:6;25615:15;25608:38;25423:230;:::o;25659:366::-;25801:3;25822:67;25886:2;25881:3;25822:67;:::i;:::-;25815:74;;25898:93;25987:3;25898:93;:::i;:::-;26016:2;26011:3;26007:12;26000:19;;25659:366;;;:::o;26031:419::-;26197:4;26235:2;26224:9;26220:18;26212:26;;26284:9;26278:4;26274:20;26270:1;26259:9;26255:17;26248:47;26312:131;26438:4;26312:131;:::i;:::-;26304:139;;26031:419;;;:::o;26456:162::-;26596:14;26592:1;26584:6;26580:14;26573:38;26456:162;:::o;26624:366::-;26766:3;26787:67;26851:2;26846:3;26787:67;:::i;:::-;26780:74;;26863:93;26952:3;26863:93;:::i;:::-;26981:2;26976:3;26972:12;26965:19;;26624:366;;;:::o;26996:419::-;27162:4;27200:2;27189:9;27185:18;27177:26;;27249:9;27243:4;27239:20;27235:1;27224:9;27220:17;27213:47;27277:131;27403:4;27277:131;:::i;:::-;27269:139;;26996:419;;;:::o;27421:182::-;27561:34;27557:1;27549:6;27545:14;27538:58;27421:182;:::o;27609:366::-;27751:3;27772:67;27836:2;27831:3;27772:67;:::i;:::-;27765:74;;27848:93;27937:3;27848:93;:::i;:::-;27966:2;27961:3;27957:12;27950:19;;27609:366;;;:::o;27981:419::-;28147:4;28185:2;28174:9;28170:18;28162:26;;28234:9;28228:4;28224:20;28220:1;28209:9;28205:17;28198:47;28262:131;28388:4;28262:131;:::i;:::-;28254:139;;27981:419;;;:::o;28406:179::-;28546:31;28542:1;28534:6;28530:14;28523:55;28406:179;:::o;28591:366::-;28733:3;28754:67;28818:2;28813:3;28754:67;:::i;:::-;28747:74;;28830:93;28919:3;28830:93;:::i;:::-;28948:2;28943:3;28939:12;28932:19;;28591:366;;;:::o;28963:419::-;29129:4;29167:2;29156:9;29152:18;29144:26;;29216:9;29210:4;29206:20;29202:1;29191:9;29187:17;29180:47;29244:131;29370:4;29244:131;:::i;:::-;29236:139;;28963:419;;;:::o;29388:220::-;29528:34;29524:1;29516:6;29512:14;29505:58;29597:3;29592:2;29584:6;29580:15;29573:28;29388:220;:::o;29614:366::-;29756:3;29777:67;29841:2;29836:3;29777:67;:::i;:::-;29770:74;;29853:93;29942:3;29853:93;:::i;:::-;29971:2;29966:3;29962:12;29955:19;;29614:366;;;:::o;29986:419::-;30152:4;30190:2;30179:9;30175:18;30167:26;;30239:9;30233:4;30229:20;30225:1;30214:9;30210:17;30203:47;30267:131;30393:4;30267:131;:::i;:::-;30259:139;;29986:419;;;:::o;30411:191::-;30451:4;30471:20;30489:1;30471:20;:::i;:::-;30466:25;;30505:20;30523:1;30505:20;:::i;:::-;30500:25;;30544:1;30541;30538:8;30535:34;;;30549:18;;:::i;:::-;30535:34;30594:1;30591;30587:9;30579:17;;30411:191;;;;:::o;30608:305::-;30648:3;30667:20;30685:1;30667:20;:::i;:::-;30662:25;;30701:20;30719:1;30701:20;:::i;:::-;30696:25;;30855:1;30787:66;30783:74;30780:1;30777:81;30774:107;;;30861:18;;:::i;:::-;30774:107;30905:1;30902;30898:9;30891:16;;30608:305;;;;:::o;30919:177::-;31059:29;31055:1;31047:6;31043:14;31036:53;30919:177;:::o;31102:366::-;31244:3;31265:67;31329:2;31324:3;31265:67;:::i;:::-;31258:74;;31341:93;31430:3;31341:93;:::i;:::-;31459:2;31454:3;31450:12;31443:19;;31102:366;;;:::o;31474:419::-;31640:4;31678:2;31667:9;31663:18;31655:26;;31727:9;31721:4;31717:20;31713:1;31702:9;31698:17;31691:47;31755:131;31881:4;31755:131;:::i;:::-;31747:139;;31474:419;;;:::o;31899:442::-;32048:4;32086:2;32075:9;32071:18;32063:26;;32099:71;32167:1;32156:9;32152:17;32143:6;32099:71;:::i;:::-;32180:72;32248:2;32237:9;32233:18;32224:6;32180:72;:::i;:::-;32262;32330:2;32319:9;32315:18;32306:6;32262:72;:::i;:::-;31899:442;;;;;;:::o;32347:143::-;32404:5;32435:6;32429:13;32420:22;;32451:33;32478:5;32451:33;:::i;:::-;32347:143;;;;:::o;32496:351::-;32566:6;32615:2;32603:9;32594:7;32590:23;32586:32;32583:119;;;32621:79;;:::i;:::-;32583:119;32741:1;32766:64;32822:7;32813:6;32802:9;32798:22;32766:64;:::i;:::-;32756:74;;32712:128;32496:351;;;;:::o;32853:85::-;32898:7;32927:5;32916:16;;32853:85;;;:::o;32944:158::-;33002:9;33035:61;33053:42;33062:32;33088:5;33062:32;:::i;:::-;33053:42;:::i;:::-;33035:61;:::i;:::-;33022:74;;32944:158;;;:::o;33108:147::-;33203:45;33242:5;33203:45;:::i;:::-;33198:3;33191:58;33108:147;;:::o;33261:114::-;33328:6;33362:5;33356:12;33346:22;;33261:114;;;:::o;33381:184::-;33480:11;33514:6;33509:3;33502:19;33554:4;33549:3;33545:14;33530:29;;33381:184;;;;:::o;33571:132::-;33638:4;33661:3;33653:11;;33691:4;33686:3;33682:14;33674:22;;33571:132;;;:::o;33709:108::-;33786:24;33804:5;33786:24;:::i;:::-;33781:3;33774:37;33709:108;;:::o;33823:179::-;33892:10;33913:46;33955:3;33947:6;33913:46;:::i;:::-;33991:4;33986:3;33982:14;33968:28;;33823:179;;;;:::o;34008:113::-;34078:4;34110;34105:3;34101:14;34093:22;;34008:113;;;:::o;34157:732::-;34276:3;34305:54;34353:5;34305:54;:::i;:::-;34375:86;34454:6;34449:3;34375:86;:::i;:::-;34368:93;;34485:56;34535:5;34485:56;:::i;:::-;34564:7;34595:1;34580:284;34605:6;34602:1;34599:13;34580:284;;;34681:6;34675:13;34708:63;34767:3;34752:13;34708:63;:::i;:::-;34701:70;;34794:60;34847:6;34794:60;:::i;:::-;34784:70;;34640:224;34627:1;34624;34620:9;34615:14;;34580:284;;;34584:14;34880:3;34873:10;;34281:608;;;34157:732;;;;:::o;34895:831::-;35158:4;35196:3;35185:9;35181:19;35173:27;;35210:71;35278:1;35267:9;35263:17;35254:6;35210:71;:::i;:::-;35291:80;35367:2;35356:9;35352:18;35343:6;35291:80;:::i;:::-;35418:9;35412:4;35408:20;35403:2;35392:9;35388:18;35381:48;35446:108;35549:4;35540:6;35446:108;:::i;:::-;35438:116;;35564:72;35632:2;35621:9;35617:18;35608:6;35564:72;:::i;:::-;35646:73;35714:3;35703:9;35699:19;35690:6;35646:73;:::i;:::-;34895:831;;;;;;;;:::o;35732:807::-;35981:4;36019:3;36008:9;36004:19;35996:27;;36033:71;36101:1;36090:9;36086:17;36077:6;36033:71;:::i;:::-;36114:72;36182:2;36171:9;36167:18;36158:6;36114:72;:::i;:::-;36196:80;36272:2;36261:9;36257:18;36248:6;36196:80;:::i;:::-;36286;36362:2;36351:9;36347:18;36338:6;36286:80;:::i;:::-;36376:73;36444:3;36433:9;36429:19;36420:6;36376:73;:::i;:::-;36459;36527:3;36516:9;36512:19;36503:6;36459:73;:::i;:::-;35732:807;;;;;;;;;:::o;36545:143::-;36602:5;36633:6;36627:13;36618:22;;36649:33;36676:5;36649:33;:::i;:::-;36545:143;;;;:::o;36694:663::-;36782:6;36790;36798;36847:2;36835:9;36826:7;36822:23;36818:32;36815:119;;;36853:79;;:::i;:::-;36815:119;36973:1;36998:64;37054:7;37045:6;37034:9;37030:22;36998:64;:::i;:::-;36988:74;;36944:128;37111:2;37137:64;37193:7;37184:6;37173:9;37169:22;37137:64;:::i;:::-;37127:74;;37082:129;37250:2;37276:64;37332:7;37323:6;37312:9;37308:22;37276:64;:::i;:::-;37266:74;;37221:129;36694:663;;;;;:::o

Swarm Source

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