ETH Price: $2,949.73 (-5.78%)
Gas: 7 Gwei

Token

Total Reburn (TR🔥)
 

Overview

Max Total Supply

1,000,000,000 TR🔥

Holders

1

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,000,000,000 TR🔥

Value
$0.00
0xd22bdc6e47dafe4773dd3dda1da4b971256e6080
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x88185e2b...FA6E04C53
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
TotalReburnToken

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

// 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 TotalReburnToken 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 = "Total Reburn";
    string private _symbol = unicode"TR🔥";
    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.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 = 0 seconds;
    uint256 public launchedAt;

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

    uint256 public liquidityFeeOnBuying = 10;
    uint256 public marketingFeeOnBuying = 0;
    uint256 public burnFeeOnBuying = 10;

    uint256 public liquidityFeeOnSelling = 0;
    uint256 public marketingFeeOnSelling = 10;
    uint256 public burnFeeOnSelling = 10;

    uint256 liquidityFeeCounter = 0;
    uint256 marketingFeeCounter = 0;

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

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

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

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

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

        //exclude owner and this contract from max Txn
        isExcludedFromMaxTxn[owner()] = true;
        isExcludedFromMaxTxn[address(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,
                "TR: 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,
                "TR: 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, "TR: can't be 0");
        minTokenToSwap = _amount;
    }

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

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

    function setBuyFeePercent(
        uint256 _lpFee,
        uint256 _marketingFee,
        uint256 _burnFee
    ) external onlyOwner {
        marketingFeeOnBuying = _lpFee;
        liquidityFeeOnBuying = _marketingFee;
        burnFeeOnBuying = _burnFee;
        require(
            _lpFee.add(_marketingFee).add(_burnFee) <=
                percentDivider.mul(35).div(100),
            "TR: can't be more than 35%"
        );
    }

    function setSellFeePercent(
        uint256 _lpFee,
        uint256 _marketingFee,
        uint256 _burnFee
    ) external onlyOwner {
        marketingFeeOnSelling = _lpFee;
        liquidityFeeOnSelling = _marketingFee;
        burnFeeOnSelling = _burnFee;
        require(
            _lpFee.add(_marketingFee).add(_burnFee) <=
                percentDivider.mul(35).div(100),
            "TR: can't be more than 35%"
        );
    }

    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, "TR: 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).add(
                    burnFeeOnBuying
                )
            )
            .div(percentDivider);
        return fee;
    }

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "TR: approve from the zero address");
        require(spender != address(0), "TR: 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), "TR: transfer from the zero address");
        require(to != address(0), "TR: transfer to the zero address");
        require(amount > 0, "TR: Amount must be greater than zero");
        require(!isBot[from], "Bot detected");

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

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

        if (!isExcludedFromMaxHolding[to]) {
            require(
                balanceOf(to).add(amount) <= maxHoldLimit,
                "TR: 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);
                _balances[sender] = _balances[sender].sub(
                    amount,
                    "TR: insufficient balance"
                );
                _balances[recipient] = _balances[recipient].add(
                    tTransferAmount
                );
                emit Transfer(sender, recipient, tTransferAmount);

                _balances[address(this)] = _balances[address(this)].add(allFee);
                emit Transfer(sender, address(this), allFee);
            } else {
                allFee = totalBuyFeePerTx(amount);
                tTransferAmount = amount.sub(allFee);
                setFeeCountersOnBuying(amount);

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

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

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

    function takeTokenBuyFee(address sender, uint256 amount) private {
        if (burnFeeOnBuying > 0) {
            burn(sender, amount.mul(burnFeeOnBuying).div(percentDivider));
        }
        if (liquidityFeeOnBuying > 0) {
            uint256 fee = amount.mul(liquidityFeeOnBuying).div(percentDivider);
            _balances[address(this)] = _balances[address(this)].add(fee);
            emit Transfer(sender, address(this), fee);
        }
        if (marketingFeeOnBuying > 0) {
            uint256 fee = amount.mul(marketingFeeOnBuying).div(percentDivider);
            _balances[address(this)] = _balances[address(this)].add(fee);
            emit Transfer(sender, address(this), fee);
        }
    }

    function takeTokenSellFee(address sender, uint256 amount) private {
        if (burnFeeOnSelling > 0) {
            burn(sender, amount.mul(burnFeeOnSelling).div(percentDivider));
        }
        if (liquidityFeeOnSelling > 0) {
            uint256 fee = amount.mul(liquidityFeeOnSelling).div(percentDivider);
            _balances[address(this)] = _balances[address(this)].add(fee);
            emit Transfer(sender, address(this), fee);
        }
        if (marketingFeeOnSelling > 0) {
            uint256 fee = amount.mul(marketingFeeOnSelling).div(percentDivider);
            _balances[address(this)] = _balances[address(this)].add(fee);
            emit Transfer(sender, address(this), fee);
        }
    }

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

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

    function burn(address account, uint256 amount) private {
        _totalSupply -= amount;

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

    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;

            // 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":"burnFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFeeOnSelling","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"},{"internalType":"uint256","name":"_burnFee","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"},{"internalType":"uint256","name":"_burnFee","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"}]

60806040526040518060400160405280600c81526020017f546f74616c2052656275726e0000000000000000000000000000000000000000815250600790805190602001906200005192919062000adb565b506040518060400160405280600681526020017f5452f09f94a50000000000000000000000000000000000000000000000000000815250600890805190602001906200009f92919062000adb565b5060098060006101000a81548160ff021916908360ff160217905550670de0b6b3a7640000600a55655af3107a4000600e55620000ee6064600a54620009f060201b620024ac1790919060201c565b600f556200010e6064600a54620009f060201b620024ac1790919060201c565b6010556103de6011556103e86012556000601355600a6016556000601755600a6018556000601955600a601a55600a601b556000601c556000601d553480156200015757600080fd5b506200016862000a4260201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600a54600160006200023962000a4a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073f3ba4226a64cfdf927f407c6cd16635a0d182b67600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000333573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000359919062000bf5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e7919062000bf5565b6040518363ffffffff1660e01b81526004016200040692919062000c38565b6020604051808303816000875af115801562000426573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044c919062000bf5565b905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000620004e662000a4a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460006200061f62000a4a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560006200075862000a4a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200097f62000a4a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620009e0919062000c80565b60405180910390a3505062000e31565b600062000a3a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000a7360201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000abd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ab4919062000d41565b60405180910390fd5b506000838562000ace919062000d94565b9050809150509392505050565b82805462000ae99062000dfb565b90600052602060002090601f01602090048101928262000b0d576000855562000b59565b82601f1062000b2857805160ff191683800117855562000b59565b8280016001018555821562000b59579182015b8281111562000b5857825182559160200191906001019062000b3b565b5b50905062000b68919062000b6c565b5090565b5b8082111562000b8757600081600090555060010162000b6d565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000bbd8262000b90565b9050919050565b62000bcf8162000bb0565b811462000bdb57600080fd5b50565b60008151905062000bef8162000bc4565b92915050565b60006020828403121562000c0e5762000c0d62000b8b565b5b600062000c1e8482850162000bde565b91505092915050565b62000c328162000bb0565b82525050565b600060408201905062000c4f600083018562000c27565b62000c5e602083018462000c27565b9392505050565b6000819050919050565b62000c7a8162000c65565b82525050565b600060208201905062000c97600083018462000c6f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562000cd957808201518184015260208101905062000cbc565b8381111562000ce9576000848401525b50505050565b6000601f19601f8301169050919050565b600062000d0d8262000c9d565b62000d19818562000ca8565b935062000d2b81856020860162000cb9565b62000d368162000cef565b840191505092915050565b6000602082019050818103600083015262000d5d818462000d00565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000da18262000c65565b915062000dae8362000c65565b92508262000dc15762000dc062000d65565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e1457607f821691505b6020821081141562000e2b5762000e2a62000dcc565b5b50919050565b6158d28062000e416000396000f3fe60806040526004361061031e5760003560e01c80638756aabd116101ab578063b0bc2a2d116100f7578063ec44acf211610095578063f242ab411161006f578063f242ab4114610bfb578063f2fde38b14610c26578063f4b3dbc314610c4f578063fe6f1b0514610c8c57610325565b8063ec44acf214610b6a578063ed42142914610b95578063f097ea1a14610bd257610325565b8063bf862391116100d1578063bf86239114610aae578063dd62ed3e14610ad9578063e6c84dc614610b16578063ea5b9e8514610b4157610325565b8063b0bc2a2d14610a31578063be19674b14610a5a578063bf56b37114610a8357610325565b806399b102b5116101645780639d3feb9a1161013e5780639d3feb9a14610963578063a457c2d71461098e578063a643c1a0146109cb578063a9059cbb146109f457610325565b806399b102b5146108d25780639a36dfa11461090f5780639b6a27501461093a57610325565b80638756aabd146107e8578063879dd3c5146108115780638a8c523c1461083c5780638da5cb5b1461085357806391ce43ac1461087e57806395d89b41146108a757610325565b80633bbac5791161026a578063715018a6116102235780637c6a9a9c116101fd5780637c6a9a9c1461072a5780637d99c66d14610755578063844af78e1461078057806384ea21bc146107ab57610325565b8063715018a6146106bd57806375f0a874146106d457806379777b4e146106ff57610325565b80633bbac579146105875780635342acb4146105c4578063679a3c5914610601578063681aa3621461062a5780636d2682671461065557806370a082311461068057610325565b80631884f1e6116102d75780632d129390116102b15780632d129390146104cb578063313ce567146104f45780633326d7f21461051f578063395093511461054a57610325565b80631884f1e61461043a5780631c237b0e1461046557806323b872dd1461048e57610325565b806306fdde031461032a5780630758d92414610355578063095ea7b3146103805780630a2d140c146103bd578063151cd1c2146103e657806318160ddd1461040f57610325565b3661032557005b600080fd5b34801561033657600080fd5b5061033f610cb7565b60405161034c919061457c565b60405180910390f35b34801561036157600080fd5b5061036a610d49565b604051610377919061461d565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a291906146c0565b610d6f565b6040516103b4919061471b565b60405180910390f35b3480156103c957600080fd5b506103e460048036038101906103df9190614762565b610d8d565b005b3480156103f257600080fd5b5061040d6004803603810190610408919061478f565b610e3f565b005b34801561041b57600080fd5b50610424610f7d565b60405161043191906147f1565b60405180910390f35b34801561044657600080fd5b5061044f610f87565b60405161045c91906147f1565b60405180910390f35b34801561047157600080fd5b5061048c60048036038101906104879190614954565b610f8d565b005b34801561049a57600080fd5b506104b560048036038101906104b0919061499d565b6110b7565b6040516104c2919061471b565b60405180910390f35b3480156104d757600080fd5b506104f260048036038101906104ed91906149f0565b611190565b005b34801561050057600080fd5b50610509611280565b6040516105169190614a4c565b60405180910390f35b34801561052b57600080fd5b50610534611297565b60405161054191906147f1565b60405180910390f35b34801561055657600080fd5b50610571600480360381019061056c91906146c0565b61129d565b60405161057e919061471b565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a99190614a67565b611350565b6040516105bb919061471b565b60405180910390f35b3480156105d057600080fd5b506105eb60048036038101906105e69190614a67565b611370565b6040516105f8919061471b565b60405180910390f35b34801561060d57600080fd5b5061062860048036038101906106239190614a67565b611390565b005b34801561063657600080fd5b5061063f61146f565b60405161064c91906147f1565b60405180910390f35b34801561066157600080fd5b5061066a611475565b60405161067791906147f1565b60405180910390f35b34801561068c57600080fd5b506106a760048036038101906106a29190614a67565b61147b565b6040516106b491906147f1565b60405180910390f35b3480156106c957600080fd5b506106d26114c4565b005b3480156106e057600080fd5b506106e9611617565b6040516106f69190614aa3565b60405180910390f35b34801561070b57600080fd5b5061071461163d565b604051610721919061471b565b60405180910390f35b34801561073657600080fd5b5061073f611650565b60405161074c91906147f1565b60405180910390f35b34801561076157600080fd5b5061076a611656565b60405161077791906147f1565b60405180910390f35b34801561078c57600080fd5b5061079561165c565b6040516107a291906147f1565b60405180910390f35b3480156107b757600080fd5b506107d260048036038101906107cd9190614a67565b611662565b6040516107df919061471b565b60405180910390f35b3480156107f457600080fd5b5061080f600480360381019061080a9190614abe565b611682565b005b34801561081d57600080fd5b5061082661177a565b604051610833919061471b565b60405180910390f35b34801561084857600080fd5b5061085161178d565b005b34801561085f57600080fd5b506108686118cc565b6040516108759190614aa3565b60405180910390f35b34801561088a57600080fd5b506108a560048036038101906108a09190614aeb565b6118f5565b005b3480156108b357600080fd5b506108bc611a1f565b6040516108c9919061457c565b60405180910390f35b3480156108de57600080fd5b506108f960048036038101906108f49190614a67565b611ab1565b604051610906919061471b565b60405180910390f35b34801561091b57600080fd5b50610924611ad1565b60405161093191906147f1565b60405180910390f35b34801561094657600080fd5b50610961600480360381019061095c9190614abe565b611ad7565b005b34801561096f57600080fd5b50610978611bc8565b60405161098591906147f1565b60405180910390f35b34801561099a57600080fd5b506109b560048036038101906109b091906146c0565b611bce565b6040516109c2919061471b565b60405180910390f35b3480156109d757600080fd5b506109f260048036038101906109ed9190614a67565b611c9b565b005b348015610a0057600080fd5b50610a1b6004803603810190610a1691906146c0565b611d74565b604051610a28919061471b565b60405180910390f35b348015610a3d57600080fd5b50610a586004803603810190610a539190614762565b611d92565b005b348015610a6657600080fd5b50610a816004803603810190610a7c919061478f565b611e44565b005b348015610a8f57600080fd5b50610a98611f82565b604051610aa591906147f1565b60405180910390f35b348015610aba57600080fd5b50610ac3611f88565b604051610ad091906147f1565b60405180910390f35b348015610ae557600080fd5b50610b006004803603810190610afb9190614b47565b611f8e565b604051610b0d91906147f1565b60405180910390f35b348015610b2257600080fd5b50610b2b612015565b604051610b3891906147f1565b60405180910390f35b348015610b4d57600080fd5b50610b686004803603810190610b6391906149f0565b61201b565b005b348015610b7657600080fd5b50610b7f61210b565b604051610b8c919061471b565b60405180910390f35b348015610ba157600080fd5b50610bbc6004803603810190610bb79190614abe565b61211e565b604051610bc991906147f1565b60405180910390f35b348015610bde57600080fd5b50610bf96004803603810190610bf49190614abe565b61217d565b005b348015610c0757600080fd5b50610c1061225f565b604051610c1d9190614aa3565b60405180910390f35b348015610c3257600080fd5b50610c4d6004803603810190610c489190614a67565b612285565b005b348015610c5b57600080fd5b50610c766004803603810190610c719190614abe565b612447565b604051610c8391906147f1565b60405180910390f35b348015610c9857600080fd5b50610ca16124a6565b604051610cae91906147f1565b60405180910390f35b606060078054610cc690614bb6565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf290614bb6565b8015610d3f5780601f10610d1457610100808354040283529160200191610d3f565b820191906000526020600020905b815481529060010190602001808311610d2257829003601f168201915b5050505050905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610d83610d7c6124f6565b84846124fe565b6001905092915050565b610d956124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1990614c34565b60405180910390fd5b80601560006101000a81548160ff02191690831515021790555050565b610e476124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecb90614c34565b60405180910390fd5b82601a819055508160198190555080601b81905550610f126064610f0460236012546126c990919063ffffffff16565b6124ac90919063ffffffff16565b610f3782610f29858761274490919063ffffffff16565b61274490919063ffffffff16565b1115610f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6f90614ca0565b60405180910390fd5b505050565b6000600a54905090565b600e5481565b610f956124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101990614c34565b60405180910390fd5b60005b81518110156110b35760006006600084848151811061104757611046614cc0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110ab90614d1e565b915050611025565b5050565b60006110c48484846127a2565b611185846110d06124f6565b6111808560405180606001604052806025815260200161587860259139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111366124f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cd79092919063ffffffff16565b6124fe565b600190509392505050565b6111986124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c90614c34565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600960009054906101000a900460ff16905090565b60165481565b60006113466112aa6124f6565b8461134185600260006112bb6124f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274490919063ffffffff16565b6124fe565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b6113986124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c90614c34565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561146b573d6000803e3d6000fd5b5050565b60105481565b60185481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114cc6124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155090614c34565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560009054906101000a900460ff1681565b60175481565b60135481565b601a5481565b60056020528060005260406000206000915054906101000a900460ff1681565b61168a6124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170e90614c34565b60405180910390fd5b61172e601254600a546124ac90919063ffffffff16565b811015611770576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176790614db3565b60405180910390fd5b80600f8190555050565b601560019054906101000a900460ff1681565b6117956124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181990614c34565b60405180910390fd5b601560029054906101000a900460ff1615611872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186990614e1f565b60405180910390fd5b6001601560026101000a81548160ff0219169083151502179055506001601560016101000a81548160ff0219169083151502179055506001601560006101000a81548160ff02191690831515021790555042601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6118fd6124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461198a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198190614c34565b60405180910390fd5b60005b8251811015611a1a5781600460008584815181106119ae576119ad614cc0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611a1290614d1e565b91505061198d565b505050565b606060088054611a2e90614bb6565b80601f0160208091040260200160405190810160405280929190818152602001828054611a5a90614bb6565b8015611aa75780601f10611a7c57610100808354040283529160200191611aa7565b820191906000526020600020905b815481529060010190602001808311611a8a57829003601f168201915b5050505050905090565b60046020528060005260406000206000915054906101000a900460ff1681565b600f5481565b611adf6124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6390614c34565b60405180910390fd5b601254600a54611b7c9190614e6e565b811015611bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb590614db3565b60405180910390fd5b8060108190555050565b601b5481565b6000611c91611bdb6124f6565b84611c8c856040518060600160405280602581526020016158536025913960026000611c056124f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cd79092919063ffffffff16565b6124fe565b6001905092915050565b611ca36124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2790614c34565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611d88611d816124f6565b84846127a2565b6001905092915050565b611d9a6124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1e90614c34565b60405180910390fd5b80601560016101000a81548160ff02191690831515021790555050565b611e4c6124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed090614c34565b60405180910390fd5b826017819055508160168190555080601881905550611f176064611f0960236012546126c990919063ffffffff16565b6124ac90919063ffffffff16565b611f3c82611f2e858761274490919063ffffffff16565b61274490919063ffffffff16565b1115611f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7490614ca0565b60405180910390fd5b505050565b60145481565b60115481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60195481565b6120236124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a790614c34565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601560029054906101000a900460ff1681565b60008061217260125461216461215560185461214760165460175461274490919063ffffffff16565b61274490919063ffffffff16565b866126c990919063ffffffff16565b6124ac90919063ffffffff16565b905080915050919050565b6121856124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220990614c34565b60405180910390fd5b60008111612255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224c90614eeb565b60405180910390fd5b80600e8190555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61228d6124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461231a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231190614c34565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561238a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238190614f7d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008061249b60125461248d61247e601b54612470601954601a5461274490919063ffffffff16565b61274490919063ffffffff16565b866126c990919063ffffffff16565b6124ac90919063ffffffff16565b905080915050919050565b60125481565b60006124ee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612d3b565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561256e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125659061500f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d59061507b565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126bc91906147f1565b60405180910390a3505050565b6000808314156126dc576000905061273e565b600082846126ea919061509b565b90508284826126f99190614e6e565b14612739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273090615167565b60405180910390fd5b809150505b92915050565b60008082846127539190615187565b905083811015612798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278f90615229565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612809906152bb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287990615327565b60405180910390fd5b600081116128c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128bc906153b9565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294990615425565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129f65750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b4157601054811115612a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3790615491565b60405180910390fd5b601560029054906101000a900460ff16612b40578273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612b0057508173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b612b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b36906154fd565b60405180910390fd5b5b5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612bf257600f54612bb082612ba28561147b565b61274490919063ffffffff16565b1115612bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be890615569565b60405180910390fd5b5b612bfc8383612d9e565b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ca35750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612cbb5750601560019054906101000a900460ff16155b15612cc557600090505b612cd1848484846130db565b50505050565b6000838311158290612d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d16919061457c565b60405180910390fd5b5060008385612d2e9190615589565b9050809150509392505050565b60008083118290612d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d79919061457c565b60405180910390fd5b5060008385612d919190614e6e565b9050809150509392505050565b6000612db7601d54601c5461274490919063ffffffff16565b1415612dc2576130d7565b6000612dcd3061147b565b90506000600e548210159050808015612e345750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612e4c5750601560009054906101000a900460ff165b8015612edd57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612edb5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b156130d457612f0f30600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124fe565b6000612f276002601c546124ac90919063ffffffff16565b90506000612f4082601c54613afe90919063ffffffff16565b90506000612f578286613afe90919063ffffffff16565b90506000479050612f8a600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613b48565b6000612f9f8247613afe90919063ffffffff16565b90506000612fc884612fba88856126c990919063ffffffff16565b6124ac90919063ffffffff16565b9050600081111561304457613008600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166130016118cc565b8784613d2e565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56186828760405161303b939291906155bd565b60405180910390a15b600047905060008111156130bc57600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156130ba573d6000803e3d6000fd5b505b6000601c819055506000601d81905550505050505050505b50505b5050565b8373ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156131355750805b156136cd5760008060135460145461314d9190615187565b421080156131a95750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b156134cc576131d76012546131c9601154876126c990919063ffffffff16565b6124ac90919063ffffffff16565b915081601d60008282546131eb9190615187565b925050819055506132058285613afe90919063ffffffff16565b9050613290846040518060400160405280601881526020017f54523a20696e73756666696369656e742062616c616e63650000000000000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cd79092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061332581600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133c591906147f1565b60405180910390a361341f82600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274490919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134bf91906147f1565b60405180910390a36136c6565b6134d58461211e565b91506134ea8285613afe90919063ffffffff16565b90506134f584613dd2565b61357e846040518060400160405280601881526020017f54523a20696e73756666696369656e742062616c616e63650000000000000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cd79092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061361381600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136b391906147f1565b60405180910390a36136c58685613e6f565b5b5050613af8565b8273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156137275750805b1561393057600061373783612447565b9050600061374e8285613afe90919063ffffffff16565b90506137d9846040518060400160405280601881526020017f54523a20696e73756666696369656e742062616c616e63650000000000000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cd79092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061386e81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161390e91906147f1565b60405180910390a36139208685614119565b613929846143c3565b5050613af7565b6139b9826040518060400160405280601881526020017f54523a20696e73756666696369656e742062616c616e63650000000000000000815250600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cd79092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a4e82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274490919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613aee91906147f1565b60405180910390a35b5b50505050565b6000613b4083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612cd7565b905092915050565b60008290506000600267ffffffffffffffff811115613b6a57613b69614811565b5b604051908082528060200260200182016040528015613b985781602001602082028036833780820191505090505b5090503081600081518110613bb057613baf614cc0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c599190615609565b81600181518110613c6d57613c6c614cc0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c42613cd69190615187565b6040518663ffffffff1660e01b8152600401613cf695949392919061572f565b600060405180830381600087803b158015613d1057600080fd5b505af1158015613d24573d6000803e3d6000fd5b5050505050505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff1663f305d7198330866000808a61012c42613d649190615187565b6040518863ffffffff1660e01b8152600401613d8596959493929190615789565b60606040518083038185885af1158015613da3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613dc891906157ff565b5050505050505050565b60006016541115613e1f57613e06601254613df8601654846126c990919063ffffffff16565b6124ac90919063ffffffff16565b601c6000828254613e179190615187565b925050819055505b60006017541115613e6c57613e53601254613e45601754846126c990919063ffffffff16565b6124ac90919063ffffffff16565b601d6000828254613e649190615187565b925050819055505b50565b60006018541115613ead57613eac82613ea7601254613e99601854866126c990919063ffffffff16565b6124ac90919063ffffffff16565b614460565b5b60006016541115613fe1576000613ee3601254613ed5601654856126c990919063ffffffff16565b6124ac90919063ffffffff16565b9050613f3781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274490919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613fd791906147f1565b60405180910390a3505b60006017541115614115576000614017601254614009601754856126c990919063ffffffff16565b6124ac90919063ffffffff16565b905061406b81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274490919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161410b91906147f1565b60405180910390a3505b5050565b6000601b5411156141575761415682614151601254614143601b54866126c990919063ffffffff16565b6124ac90919063ffffffff16565b614460565b5b6000601954111561428b57600061418d60125461417f601954856126c990919063ffffffff16565b6124ac90919063ffffffff16565b90506141e181600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274490919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161428191906147f1565b60405180910390a3505b6000601a5411156143bf5760006142c16012546142b3601a54856126c990919063ffffffff16565b6124ac90919063ffffffff16565b905061431581600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274490919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516143b591906147f1565b60405180910390a3505b5050565b60006019541115614410576143f76012546143e9601954846126c990919063ffffffff16565b6124ac90919063ffffffff16565b601c60008282546144089190615187565b925050819055505b6000601a54111561445d57614444601254614436601a54846126c990919063ffffffff16565b6124ac90919063ffffffff16565b601d60008282546144559190615187565b925050819055505b50565b80600a60008282546144729190615589565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516144d791906147f1565b60405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561451d578082015181840152602081019050614502565b8381111561452c576000848401525b50505050565b6000601f19601f8301169050919050565b600061454e826144e3565b61455881856144ee565b93506145688185602086016144ff565b61457181614532565b840191505092915050565b600060208201905081810360008301526145968184614543565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006145e36145de6145d98461459e565b6145be565b61459e565b9050919050565b60006145f5826145c8565b9050919050565b6000614607826145ea565b9050919050565b614617816145fc565b82525050565b6000602082019050614632600083018461460e565b92915050565b6000604051905090565b600080fd5b600080fd5b60006146578261459e565b9050919050565b6146678161464c565b811461467257600080fd5b50565b6000813590506146848161465e565b92915050565b6000819050919050565b61469d8161468a565b81146146a857600080fd5b50565b6000813590506146ba81614694565b92915050565b600080604083850312156146d7576146d6614642565b5b60006146e585828601614675565b92505060206146f6858286016146ab565b9150509250929050565b60008115159050919050565b61471581614700565b82525050565b6000602082019050614730600083018461470c565b92915050565b61473f81614700565b811461474a57600080fd5b50565b60008135905061475c81614736565b92915050565b60006020828403121561477857614777614642565b5b60006147868482850161474d565b91505092915050565b6000806000606084860312156147a8576147a7614642565b5b60006147b6868287016146ab565b93505060206147c7868287016146ab565b92505060406147d8868287016146ab565b9150509250925092565b6147eb8161468a565b82525050565b600060208201905061480660008301846147e2565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61484982614532565b810181811067ffffffffffffffff8211171561486857614867614811565b5b80604052505050565b600061487b614638565b90506148878282614840565b919050565b600067ffffffffffffffff8211156148a7576148a6614811565b5b602082029050602081019050919050565b600080fd5b60006148d06148cb8461488c565b614871565b905080838252602082019050602084028301858111156148f3576148f26148b8565b5b835b8181101561491c57806149088882614675565b8452602084019350506020810190506148f5565b5050509392505050565b600082601f83011261493b5761493a61480c565b5b813561494b8482602086016148bd565b91505092915050565b60006020828403121561496a57614969614642565b5b600082013567ffffffffffffffff81111561498857614987614647565b5b61499484828501614926565b91505092915050565b6000806000606084860312156149b6576149b5614642565b5b60006149c486828701614675565b93505060206149d586828701614675565b92505060406149e6868287016146ab565b9150509250925092565b60008060408385031215614a0757614a06614642565b5b6000614a1585828601614675565b9250506020614a268582860161474d565b9150509250929050565b600060ff82169050919050565b614a4681614a30565b82525050565b6000602082019050614a616000830184614a3d565b92915050565b600060208284031215614a7d57614a7c614642565b5b6000614a8b84828501614675565b91505092915050565b614a9d8161464c565b82525050565b6000602082019050614ab86000830184614a94565b92915050565b600060208284031215614ad457614ad3614642565b5b6000614ae2848285016146ab565b91505092915050565b60008060408385031215614b0257614b01614642565b5b600083013567ffffffffffffffff811115614b2057614b1f614647565b5b614b2c85828601614926565b9250506020614b3d8582860161474d565b9150509250929050565b60008060408385031215614b5e57614b5d614642565b5b6000614b6c85828601614675565b9250506020614b7d85828601614675565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614bce57607f821691505b60208210811415614be257614be1614b87565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614c1e6020836144ee565b9150614c2982614be8565b602082019050919050565b60006020820190508181036000830152614c4d81614c11565b9050919050565b7f54523a2063616e2774206265206d6f7265207468616e20333525000000000000600082015250565b6000614c8a601a836144ee565b9150614c9582614c54565b602082019050919050565b60006020820190508181036000830152614cb981614c7d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614d298261468a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d5c57614d5b614cef565b5b600182019050919050565b7f54523a2073686f756c642062652067726561746572207468616e20302e312500600082015250565b6000614d9d601f836144ee565b9150614da882614d67565b602082019050919050565b60006020820190508181036000830152614dcc81614d90565b9050919050565b7f54523a20616c726561647920656e61626c656400000000000000000000000000600082015250565b6000614e096013836144ee565b9150614e1482614dd3565b602082019050919050565b60006020820190508181036000830152614e3881614dfc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614e798261468a565b9150614e848361468a565b925082614e9457614e93614e3f565b5b828204905092915050565b7f54523a2063616e27742062652030000000000000000000000000000000000000600082015250565b6000614ed5600e836144ee565b9150614ee082614e9f565b602082019050919050565b60006020820190508181036000830152614f0481614ec8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614f676026836144ee565b9150614f7282614f0b565b604082019050919050565b60006020820190508181036000830152614f9681614f5a565b9050919050565b7f54523a20617070726f76652066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614ff96021836144ee565b915061500482614f9d565b604082019050919050565b6000602082019050818103600083015261502881614fec565b9050919050565b7f54523a20617070726f766520746f20746865207a65726f206164647265737300600082015250565b6000615065601f836144ee565b91506150708261502f565b602082019050919050565b6000602082019050818103600083015261509481615058565b9050919050565b60006150a68261468a565b91506150b18361468a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156150ea576150e9614cef565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006151516021836144ee565b915061515c826150f5565b604082019050919050565b6000602082019050818103600083015261518081615144565b9050919050565b60006151928261468a565b915061519d8361468a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156151d2576151d1614cef565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615213601b836144ee565b915061521e826151dd565b602082019050919050565b6000602082019050818103600083015261524281615206565b9050919050565b7f54523a207472616e736665722066726f6d20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006152a56022836144ee565b91506152b082615249565b604082019050919050565b600060208201905081810360008301526152d481615298565b9050919050565b7f54523a207472616e7366657220746f20746865207a65726f2061646472657373600082015250565b60006153116020836144ee565b915061531c826152db565b602082019050919050565b6000602082019050818103600083015261534081615304565b9050919050565b7f54523a20416d6f756e74206d7573742062652067726561746572207468616e2060008201527f7a65726f00000000000000000000000000000000000000000000000000000000602082015250565b60006153a36024836144ee565b91506153ae82615347565b604082019050919050565b600060208201905081810360008301526153d281615396565b9050919050565b7f426f742064657465637465640000000000000000000000000000000000000000600082015250565b600061540f600c836144ee565b915061541a826153d9565b602082019050919050565b6000602082019050818103600083015261543e81615402565b9050919050565b7f54523a206d61782074786e206c696d6974206578636565647300000000000000600082015250565b600061547b6019836144ee565b915061548682615445565b602082019050919050565b600060208201905081810360008301526154aa8161546e565b9050919050565b7f54523a2074726164696e672069732064697361626c6500000000000000000000600082015250565b60006154e76016836144ee565b91506154f2826154b1565b602082019050919050565b60006020820190508181036000830152615516816154da565b9050919050565b7f54523a206d617820686f6c64206c696d69742065786365656473000000000000600082015250565b6000615553601a836144ee565b915061555e8261551d565b602082019050919050565b6000602082019050818103600083015261558281615546565b9050919050565b60006155948261468a565b915061559f8361468a565b9250828210156155b2576155b1614cef565b5b828203905092915050565b60006060820190506155d260008301866147e2565b6155df60208301856147e2565b6155ec60408301846147e2565b949350505050565b6000815190506156038161465e565b92915050565b60006020828403121561561f5761561e614642565b5b600061562d848285016155f4565b91505092915050565b6000819050919050565b600061565b61565661565184615636565b6145be565b61468a565b9050919050565b61566b81615640565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6156a68161464c565b82525050565b60006156b8838361569d565b60208301905092915050565b6000602082019050919050565b60006156dc82615671565b6156e6818561567c565b93506156f18361568d565b8060005b8381101561572257815161570988826156ac565b9750615714836156c4565b9250506001810190506156f5565b5085935050505092915050565b600060a08201905061574460008301886147e2565b6157516020830187615662565b818103604083015261576381866156d1565b90506157726060830185614a94565b61577f60808301846147e2565b9695505050505050565b600060c08201905061579e6000830189614a94565b6157ab60208301886147e2565b6157b86040830187615662565b6157c56060830186615662565b6157d26080830185614a94565b6157df60a08301846147e2565b979650505050505050565b6000815190506157f981614694565b92915050565b60008060006060848603121561581857615817614642565b5b6000615826868287016157ea565b9350506020615837868287016157ea565b9250506040615848868287016157ea565b915050925092509256fe54523a2064656372656173656420616c6c6f77616e6365206f722062656c6f77207a65726f54523a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205b4a1f4b34e021a2b0775e922a00192f14e6816db323364b02772a9088c2a43b64736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061031e5760003560e01c80638756aabd116101ab578063b0bc2a2d116100f7578063ec44acf211610095578063f242ab411161006f578063f242ab4114610bfb578063f2fde38b14610c26578063f4b3dbc314610c4f578063fe6f1b0514610c8c57610325565b8063ec44acf214610b6a578063ed42142914610b95578063f097ea1a14610bd257610325565b8063bf862391116100d1578063bf86239114610aae578063dd62ed3e14610ad9578063e6c84dc614610b16578063ea5b9e8514610b4157610325565b8063b0bc2a2d14610a31578063be19674b14610a5a578063bf56b37114610a8357610325565b806399b102b5116101645780639d3feb9a1161013e5780639d3feb9a14610963578063a457c2d71461098e578063a643c1a0146109cb578063a9059cbb146109f457610325565b806399b102b5146108d25780639a36dfa11461090f5780639b6a27501461093a57610325565b80638756aabd146107e8578063879dd3c5146108115780638a8c523c1461083c5780638da5cb5b1461085357806391ce43ac1461087e57806395d89b41146108a757610325565b80633bbac5791161026a578063715018a6116102235780637c6a9a9c116101fd5780637c6a9a9c1461072a5780637d99c66d14610755578063844af78e1461078057806384ea21bc146107ab57610325565b8063715018a6146106bd57806375f0a874146106d457806379777b4e146106ff57610325565b80633bbac579146105875780635342acb4146105c4578063679a3c5914610601578063681aa3621461062a5780636d2682671461065557806370a082311461068057610325565b80631884f1e6116102d75780632d129390116102b15780632d129390146104cb578063313ce567146104f45780633326d7f21461051f578063395093511461054a57610325565b80631884f1e61461043a5780631c237b0e1461046557806323b872dd1461048e57610325565b806306fdde031461032a5780630758d92414610355578063095ea7b3146103805780630a2d140c146103bd578063151cd1c2146103e657806318160ddd1461040f57610325565b3661032557005b600080fd5b34801561033657600080fd5b5061033f610cb7565b60405161034c919061457c565b60405180910390f35b34801561036157600080fd5b5061036a610d49565b604051610377919061461d565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a291906146c0565b610d6f565b6040516103b4919061471b565b60405180910390f35b3480156103c957600080fd5b506103e460048036038101906103df9190614762565b610d8d565b005b3480156103f257600080fd5b5061040d6004803603810190610408919061478f565b610e3f565b005b34801561041b57600080fd5b50610424610f7d565b60405161043191906147f1565b60405180910390f35b34801561044657600080fd5b5061044f610f87565b60405161045c91906147f1565b60405180910390f35b34801561047157600080fd5b5061048c60048036038101906104879190614954565b610f8d565b005b34801561049a57600080fd5b506104b560048036038101906104b0919061499d565b6110b7565b6040516104c2919061471b565b60405180910390f35b3480156104d757600080fd5b506104f260048036038101906104ed91906149f0565b611190565b005b34801561050057600080fd5b50610509611280565b6040516105169190614a4c565b60405180910390f35b34801561052b57600080fd5b50610534611297565b60405161054191906147f1565b60405180910390f35b34801561055657600080fd5b50610571600480360381019061056c91906146c0565b61129d565b60405161057e919061471b565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a99190614a67565b611350565b6040516105bb919061471b565b60405180910390f35b3480156105d057600080fd5b506105eb60048036038101906105e69190614a67565b611370565b6040516105f8919061471b565b60405180910390f35b34801561060d57600080fd5b5061062860048036038101906106239190614a67565b611390565b005b34801561063657600080fd5b5061063f61146f565b60405161064c91906147f1565b60405180910390f35b34801561066157600080fd5b5061066a611475565b60405161067791906147f1565b60405180910390f35b34801561068c57600080fd5b506106a760048036038101906106a29190614a67565b61147b565b6040516106b491906147f1565b60405180910390f35b3480156106c957600080fd5b506106d26114c4565b005b3480156106e057600080fd5b506106e9611617565b6040516106f69190614aa3565b60405180910390f35b34801561070b57600080fd5b5061071461163d565b604051610721919061471b565b60405180910390f35b34801561073657600080fd5b5061073f611650565b60405161074c91906147f1565b60405180910390f35b34801561076157600080fd5b5061076a611656565b60405161077791906147f1565b60405180910390f35b34801561078c57600080fd5b5061079561165c565b6040516107a291906147f1565b60405180910390f35b3480156107b757600080fd5b506107d260048036038101906107cd9190614a67565b611662565b6040516107df919061471b565b60405180910390f35b3480156107f457600080fd5b5061080f600480360381019061080a9190614abe565b611682565b005b34801561081d57600080fd5b5061082661177a565b604051610833919061471b565b60405180910390f35b34801561084857600080fd5b5061085161178d565b005b34801561085f57600080fd5b506108686118cc565b6040516108759190614aa3565b60405180910390f35b34801561088a57600080fd5b506108a560048036038101906108a09190614aeb565b6118f5565b005b3480156108b357600080fd5b506108bc611a1f565b6040516108c9919061457c565b60405180910390f35b3480156108de57600080fd5b506108f960048036038101906108f49190614a67565b611ab1565b604051610906919061471b565b60405180910390f35b34801561091b57600080fd5b50610924611ad1565b60405161093191906147f1565b60405180910390f35b34801561094657600080fd5b50610961600480360381019061095c9190614abe565b611ad7565b005b34801561096f57600080fd5b50610978611bc8565b60405161098591906147f1565b60405180910390f35b34801561099a57600080fd5b506109b560048036038101906109b091906146c0565b611bce565b6040516109c2919061471b565b60405180910390f35b3480156109d757600080fd5b506109f260048036038101906109ed9190614a67565b611c9b565b005b348015610a0057600080fd5b50610a1b6004803603810190610a1691906146c0565b611d74565b604051610a28919061471b565b60405180910390f35b348015610a3d57600080fd5b50610a586004803603810190610a539190614762565b611d92565b005b348015610a6657600080fd5b50610a816004803603810190610a7c919061478f565b611e44565b005b348015610a8f57600080fd5b50610a98611f82565b604051610aa591906147f1565b60405180910390f35b348015610aba57600080fd5b50610ac3611f88565b604051610ad091906147f1565b60405180910390f35b348015610ae557600080fd5b50610b006004803603810190610afb9190614b47565b611f8e565b604051610b0d91906147f1565b60405180910390f35b348015610b2257600080fd5b50610b2b612015565b604051610b3891906147f1565b60405180910390f35b348015610b4d57600080fd5b50610b686004803603810190610b6391906149f0565b61201b565b005b348015610b7657600080fd5b50610b7f61210b565b604051610b8c919061471b565b60405180910390f35b348015610ba157600080fd5b50610bbc6004803603810190610bb79190614abe565b61211e565b604051610bc991906147f1565b60405180910390f35b348015610bde57600080fd5b50610bf96004803603810190610bf49190614abe565b61217d565b005b348015610c0757600080fd5b50610c1061225f565b604051610c1d9190614aa3565b60405180910390f35b348015610c3257600080fd5b50610c4d6004803603810190610c489190614a67565b612285565b005b348015610c5b57600080fd5b50610c766004803603810190610c719190614abe565b612447565b604051610c8391906147f1565b60405180910390f35b348015610c9857600080fd5b50610ca16124a6565b604051610cae91906147f1565b60405180910390f35b606060078054610cc690614bb6565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf290614bb6565b8015610d3f5780601f10610d1457610100808354040283529160200191610d3f565b820191906000526020600020905b815481529060010190602001808311610d2257829003601f168201915b5050505050905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610d83610d7c6124f6565b84846124fe565b6001905092915050565b610d956124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1990614c34565b60405180910390fd5b80601560006101000a81548160ff02191690831515021790555050565b610e476124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecb90614c34565b60405180910390fd5b82601a819055508160198190555080601b81905550610f126064610f0460236012546126c990919063ffffffff16565b6124ac90919063ffffffff16565b610f3782610f29858761274490919063ffffffff16565b61274490919063ffffffff16565b1115610f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6f90614ca0565b60405180910390fd5b505050565b6000600a54905090565b600e5481565b610f956124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101990614c34565b60405180910390fd5b60005b81518110156110b35760006006600084848151811061104757611046614cc0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110ab90614d1e565b915050611025565b5050565b60006110c48484846127a2565b611185846110d06124f6565b6111808560405180606001604052806025815260200161587860259139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111366124f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cd79092919063ffffffff16565b6124fe565b600190509392505050565b6111986124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c90614c34565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600960009054906101000a900460ff16905090565b60165481565b60006113466112aa6124f6565b8461134185600260006112bb6124f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274490919063ffffffff16565b6124fe565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b6113986124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c90614c34565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561146b573d6000803e3d6000fd5b5050565b60105481565b60185481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114cc6124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155090614c34565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560009054906101000a900460ff1681565b60175481565b60135481565b601a5481565b60056020528060005260406000206000915054906101000a900460ff1681565b61168a6124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170e90614c34565b60405180910390fd5b61172e601254600a546124ac90919063ffffffff16565b811015611770576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176790614db3565b60405180910390fd5b80600f8190555050565b601560019054906101000a900460ff1681565b6117956124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181990614c34565b60405180910390fd5b601560029054906101000a900460ff1615611872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186990614e1f565b60405180910390fd5b6001601560026101000a81548160ff0219169083151502179055506001601560016101000a81548160ff0219169083151502179055506001601560006101000a81548160ff02191690831515021790555042601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6118fd6124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461198a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198190614c34565b60405180910390fd5b60005b8251811015611a1a5781600460008584815181106119ae576119ad614cc0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611a1290614d1e565b91505061198d565b505050565b606060088054611a2e90614bb6565b80601f0160208091040260200160405190810160405280929190818152602001828054611a5a90614bb6565b8015611aa75780601f10611a7c57610100808354040283529160200191611aa7565b820191906000526020600020905b815481529060010190602001808311611a8a57829003601f168201915b5050505050905090565b60046020528060005260406000206000915054906101000a900460ff1681565b600f5481565b611adf6124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6390614c34565b60405180910390fd5b601254600a54611b7c9190614e6e565b811015611bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb590614db3565b60405180910390fd5b8060108190555050565b601b5481565b6000611c91611bdb6124f6565b84611c8c856040518060600160405280602581526020016158536025913960026000611c056124f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cd79092919063ffffffff16565b6124fe565b6001905092915050565b611ca36124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2790614c34565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611d88611d816124f6565b84846127a2565b6001905092915050565b611d9a6124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1e90614c34565b60405180910390fd5b80601560016101000a81548160ff02191690831515021790555050565b611e4c6124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed090614c34565b60405180910390fd5b826017819055508160168190555080601881905550611f176064611f0960236012546126c990919063ffffffff16565b6124ac90919063ffffffff16565b611f3c82611f2e858761274490919063ffffffff16565b61274490919063ffffffff16565b1115611f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7490614ca0565b60405180910390fd5b505050565b60145481565b60115481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60195481565b6120236124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a790614c34565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601560029054906101000a900460ff1681565b60008061217260125461216461215560185461214760165460175461274490919063ffffffff16565b61274490919063ffffffff16565b866126c990919063ffffffff16565b6124ac90919063ffffffff16565b905080915050919050565b6121856124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220990614c34565b60405180910390fd5b60008111612255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224c90614eeb565b60405180910390fd5b80600e8190555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61228d6124f6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461231a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231190614c34565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561238a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238190614f7d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008061249b60125461248d61247e601b54612470601954601a5461274490919063ffffffff16565b61274490919063ffffffff16565b866126c990919063ffffffff16565b6124ac90919063ffffffff16565b905080915050919050565b60125481565b60006124ee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612d3b565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561256e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125659061500f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d59061507b565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126bc91906147f1565b60405180910390a3505050565b6000808314156126dc576000905061273e565b600082846126ea919061509b565b90508284826126f99190614e6e565b14612739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273090615167565b60405180910390fd5b809150505b92915050565b60008082846127539190615187565b905083811015612798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278f90615229565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612809906152bb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287990615327565b60405180910390fd5b600081116128c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128bc906153b9565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294990615425565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129f65750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b4157601054811115612a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3790615491565b60405180910390fd5b601560029054906101000a900460ff16612b40578273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612b0057508173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b612b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b36906154fd565b60405180910390fd5b5b5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612bf257600f54612bb082612ba28561147b565b61274490919063ffffffff16565b1115612bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be890615569565b60405180910390fd5b5b612bfc8383612d9e565b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ca35750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612cbb5750601560019054906101000a900460ff16155b15612cc557600090505b612cd1848484846130db565b50505050565b6000838311158290612d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d16919061457c565b60405180910390fd5b5060008385612d2e9190615589565b9050809150509392505050565b60008083118290612d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d79919061457c565b60405180910390fd5b5060008385612d919190614e6e565b9050809150509392505050565b6000612db7601d54601c5461274490919063ffffffff16565b1415612dc2576130d7565b6000612dcd3061147b565b90506000600e548210159050808015612e345750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612e4c5750601560009054906101000a900460ff165b8015612edd57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612edb5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b156130d457612f0f30600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124fe565b6000612f276002601c546124ac90919063ffffffff16565b90506000612f4082601c54613afe90919063ffffffff16565b90506000612f578286613afe90919063ffffffff16565b90506000479050612f8a600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613b48565b6000612f9f8247613afe90919063ffffffff16565b90506000612fc884612fba88856126c990919063ffffffff16565b6124ac90919063ffffffff16565b9050600081111561304457613008600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166130016118cc565b8784613d2e565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56186828760405161303b939291906155bd565b60405180910390a15b600047905060008111156130bc57600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156130ba573d6000803e3d6000fd5b505b6000601c819055506000601d81905550505050505050505b50505b5050565b8373ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156131355750805b156136cd5760008060135460145461314d9190615187565b421080156131a95750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b156134cc576131d76012546131c9601154876126c990919063ffffffff16565b6124ac90919063ffffffff16565b915081601d60008282546131eb9190615187565b925050819055506132058285613afe90919063ffffffff16565b9050613290846040518060400160405280601881526020017f54523a20696e73756666696369656e742062616c616e63650000000000000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cd79092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061332581600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133c591906147f1565b60405180910390a361341f82600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274490919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134bf91906147f1565b60405180910390a36136c6565b6134d58461211e565b91506134ea8285613afe90919063ffffffff16565b90506134f584613dd2565b61357e846040518060400160405280601881526020017f54523a20696e73756666696369656e742062616c616e63650000000000000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cd79092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061361381600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136b391906147f1565b60405180910390a36136c58685613e6f565b5b5050613af8565b8273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156137275750805b1561393057600061373783612447565b9050600061374e8285613afe90919063ffffffff16565b90506137d9846040518060400160405280601881526020017f54523a20696e73756666696369656e742062616c616e63650000000000000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cd79092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061386e81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161390e91906147f1565b60405180910390a36139208685614119565b613929846143c3565b5050613af7565b6139b9826040518060400160405280601881526020017f54523a20696e73756666696369656e742062616c616e63650000000000000000815250600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cd79092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a4e82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274490919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613aee91906147f1565b60405180910390a35b5b50505050565b6000613b4083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612cd7565b905092915050565b60008290506000600267ffffffffffffffff811115613b6a57613b69614811565b5b604051908082528060200260200182016040528015613b985781602001602082028036833780820191505090505b5090503081600081518110613bb057613baf614cc0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c599190615609565b81600181518110613c6d57613c6c614cc0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c42613cd69190615187565b6040518663ffffffff1660e01b8152600401613cf695949392919061572f565b600060405180830381600087803b158015613d1057600080fd5b505af1158015613d24573d6000803e3d6000fd5b5050505050505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff1663f305d7198330866000808a61012c42613d649190615187565b6040518863ffffffff1660e01b8152600401613d8596959493929190615789565b60606040518083038185885af1158015613da3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613dc891906157ff565b5050505050505050565b60006016541115613e1f57613e06601254613df8601654846126c990919063ffffffff16565b6124ac90919063ffffffff16565b601c6000828254613e179190615187565b925050819055505b60006017541115613e6c57613e53601254613e45601754846126c990919063ffffffff16565b6124ac90919063ffffffff16565b601d6000828254613e649190615187565b925050819055505b50565b60006018541115613ead57613eac82613ea7601254613e99601854866126c990919063ffffffff16565b6124ac90919063ffffffff16565b614460565b5b60006016541115613fe1576000613ee3601254613ed5601654856126c990919063ffffffff16565b6124ac90919063ffffffff16565b9050613f3781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274490919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613fd791906147f1565b60405180910390a3505b60006017541115614115576000614017601254614009601754856126c990919063ffffffff16565b6124ac90919063ffffffff16565b905061406b81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274490919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161410b91906147f1565b60405180910390a3505b5050565b6000601b5411156141575761415682614151601254614143601b54866126c990919063ffffffff16565b6124ac90919063ffffffff16565b614460565b5b6000601954111561428b57600061418d60125461417f601954856126c990919063ffffffff16565b6124ac90919063ffffffff16565b90506141e181600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274490919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161428191906147f1565b60405180910390a3505b6000601a5411156143bf5760006142c16012546142b3601a54856126c990919063ffffffff16565b6124ac90919063ffffffff16565b905061431581600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274490919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516143b591906147f1565b60405180910390a3505b5050565b60006019541115614410576143f76012546143e9601954846126c990919063ffffffff16565b6124ac90919063ffffffff16565b601c60008282546144089190615187565b925050819055505b6000601a54111561445d57614444601254614436601a54846126c990919063ffffffff16565b6124ac90919063ffffffff16565b601d60008282546144559190615187565b925050819055505b50565b80600a60008282546144729190615589565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516144d791906147f1565b60405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561451d578082015181840152602081019050614502565b8381111561452c576000848401525b50505050565b6000601f19601f8301169050919050565b600061454e826144e3565b61455881856144ee565b93506145688185602086016144ff565b61457181614532565b840191505092915050565b600060208201905081810360008301526145968184614543565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006145e36145de6145d98461459e565b6145be565b61459e565b9050919050565b60006145f5826145c8565b9050919050565b6000614607826145ea565b9050919050565b614617816145fc565b82525050565b6000602082019050614632600083018461460e565b92915050565b6000604051905090565b600080fd5b600080fd5b60006146578261459e565b9050919050565b6146678161464c565b811461467257600080fd5b50565b6000813590506146848161465e565b92915050565b6000819050919050565b61469d8161468a565b81146146a857600080fd5b50565b6000813590506146ba81614694565b92915050565b600080604083850312156146d7576146d6614642565b5b60006146e585828601614675565b92505060206146f6858286016146ab565b9150509250929050565b60008115159050919050565b61471581614700565b82525050565b6000602082019050614730600083018461470c565b92915050565b61473f81614700565b811461474a57600080fd5b50565b60008135905061475c81614736565b92915050565b60006020828403121561477857614777614642565b5b60006147868482850161474d565b91505092915050565b6000806000606084860312156147a8576147a7614642565b5b60006147b6868287016146ab565b93505060206147c7868287016146ab565b92505060406147d8868287016146ab565b9150509250925092565b6147eb8161468a565b82525050565b600060208201905061480660008301846147e2565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61484982614532565b810181811067ffffffffffffffff8211171561486857614867614811565b5b80604052505050565b600061487b614638565b90506148878282614840565b919050565b600067ffffffffffffffff8211156148a7576148a6614811565b5b602082029050602081019050919050565b600080fd5b60006148d06148cb8461488c565b614871565b905080838252602082019050602084028301858111156148f3576148f26148b8565b5b835b8181101561491c57806149088882614675565b8452602084019350506020810190506148f5565b5050509392505050565b600082601f83011261493b5761493a61480c565b5b813561494b8482602086016148bd565b91505092915050565b60006020828403121561496a57614969614642565b5b600082013567ffffffffffffffff81111561498857614987614647565b5b61499484828501614926565b91505092915050565b6000806000606084860312156149b6576149b5614642565b5b60006149c486828701614675565b93505060206149d586828701614675565b92505060406149e6868287016146ab565b9150509250925092565b60008060408385031215614a0757614a06614642565b5b6000614a1585828601614675565b9250506020614a268582860161474d565b9150509250929050565b600060ff82169050919050565b614a4681614a30565b82525050565b6000602082019050614a616000830184614a3d565b92915050565b600060208284031215614a7d57614a7c614642565b5b6000614a8b84828501614675565b91505092915050565b614a9d8161464c565b82525050565b6000602082019050614ab86000830184614a94565b92915050565b600060208284031215614ad457614ad3614642565b5b6000614ae2848285016146ab565b91505092915050565b60008060408385031215614b0257614b01614642565b5b600083013567ffffffffffffffff811115614b2057614b1f614647565b5b614b2c85828601614926565b9250506020614b3d8582860161474d565b9150509250929050565b60008060408385031215614b5e57614b5d614642565b5b6000614b6c85828601614675565b9250506020614b7d85828601614675565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614bce57607f821691505b60208210811415614be257614be1614b87565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614c1e6020836144ee565b9150614c2982614be8565b602082019050919050565b60006020820190508181036000830152614c4d81614c11565b9050919050565b7f54523a2063616e2774206265206d6f7265207468616e20333525000000000000600082015250565b6000614c8a601a836144ee565b9150614c9582614c54565b602082019050919050565b60006020820190508181036000830152614cb981614c7d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614d298261468a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d5c57614d5b614cef565b5b600182019050919050565b7f54523a2073686f756c642062652067726561746572207468616e20302e312500600082015250565b6000614d9d601f836144ee565b9150614da882614d67565b602082019050919050565b60006020820190508181036000830152614dcc81614d90565b9050919050565b7f54523a20616c726561647920656e61626c656400000000000000000000000000600082015250565b6000614e096013836144ee565b9150614e1482614dd3565b602082019050919050565b60006020820190508181036000830152614e3881614dfc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614e798261468a565b9150614e848361468a565b925082614e9457614e93614e3f565b5b828204905092915050565b7f54523a2063616e27742062652030000000000000000000000000000000000000600082015250565b6000614ed5600e836144ee565b9150614ee082614e9f565b602082019050919050565b60006020820190508181036000830152614f0481614ec8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614f676026836144ee565b9150614f7282614f0b565b604082019050919050565b60006020820190508181036000830152614f9681614f5a565b9050919050565b7f54523a20617070726f76652066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614ff96021836144ee565b915061500482614f9d565b604082019050919050565b6000602082019050818103600083015261502881614fec565b9050919050565b7f54523a20617070726f766520746f20746865207a65726f206164647265737300600082015250565b6000615065601f836144ee565b91506150708261502f565b602082019050919050565b6000602082019050818103600083015261509481615058565b9050919050565b60006150a68261468a565b91506150b18361468a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156150ea576150e9614cef565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006151516021836144ee565b915061515c826150f5565b604082019050919050565b6000602082019050818103600083015261518081615144565b9050919050565b60006151928261468a565b915061519d8361468a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156151d2576151d1614cef565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615213601b836144ee565b915061521e826151dd565b602082019050919050565b6000602082019050818103600083015261524281615206565b9050919050565b7f54523a207472616e736665722066726f6d20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006152a56022836144ee565b91506152b082615249565b604082019050919050565b600060208201905081810360008301526152d481615298565b9050919050565b7f54523a207472616e7366657220746f20746865207a65726f2061646472657373600082015250565b60006153116020836144ee565b915061531c826152db565b602082019050919050565b6000602082019050818103600083015261534081615304565b9050919050565b7f54523a20416d6f756e74206d7573742062652067726561746572207468616e2060008201527f7a65726f00000000000000000000000000000000000000000000000000000000602082015250565b60006153a36024836144ee565b91506153ae82615347565b604082019050919050565b600060208201905081810360008301526153d281615396565b9050919050565b7f426f742064657465637465640000000000000000000000000000000000000000600082015250565b600061540f600c836144ee565b915061541a826153d9565b602082019050919050565b6000602082019050818103600083015261543e81615402565b9050919050565b7f54523a206d61782074786e206c696d6974206578636565647300000000000000600082015250565b600061547b6019836144ee565b915061548682615445565b602082019050919050565b600060208201905081810360008301526154aa8161546e565b9050919050565b7f54523a2074726164696e672069732064697361626c6500000000000000000000600082015250565b60006154e76016836144ee565b91506154f2826154b1565b602082019050919050565b60006020820190508181036000830152615516816154da565b9050919050565b7f54523a206d617820686f6c64206c696d69742065786365656473000000000000600082015250565b6000615553601a836144ee565b915061555e8261551d565b602082019050919050565b6000602082019050818103600083015261558281615546565b9050919050565b60006155948261468a565b915061559f8361468a565b9250828210156155b2576155b1614cef565b5b828203905092915050565b60006060820190506155d260008301866147e2565b6155df60208301856147e2565b6155ec60408301846147e2565b949350505050565b6000815190506156038161465e565b92915050565b60006020828403121561561f5761561e614642565b5b600061562d848285016155f4565b91505092915050565b6000819050919050565b600061565b61565661565184615636565b6145be565b61468a565b9050919050565b61566b81615640565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6156a68161464c565b82525050565b60006156b8838361569d565b60208301905092915050565b6000602082019050919050565b60006156dc82615671565b6156e6818561567c565b93506156f18361568d565b8060005b8381101561572257815161570988826156ac565b9750615714836156c4565b9250506001810190506156f5565b5085935050505092915050565b600060a08201905061574460008301886147e2565b6157516020830187615662565b818103604083015261576381866156d1565b90506157726060830185614a94565b61577f60808301846147e2565b9695505050505050565b600060c08201905061579e6000830189614a94565b6157ab60208301886147e2565b6157b86040830187615662565b6157c56060830186615662565b6157d26080830185614a94565b6157df60a08301846147e2565b979650505050505050565b6000815190506157f981614694565b92915050565b60008060006060848603121561581857615817614642565b5b6000615826868287016157ea565b9350506020615837868287016157ea565b9250506040615848868287016157ea565b915050925092509256fe54523a2064656372656173656420616c6c6f77616e6365206f722062656c6f77207a65726f54523a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205b4a1f4b34e021a2b0775e922a00192f14e6816db323364b02772a9088c2a43b64736f6c634300080a0033

Deployed Bytecode Sourcemap

3138:18654:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6509:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3770:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7397:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10904:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10446:450;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6786:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3872:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11265:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7591:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9163:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6695:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4537:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8042:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3540:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3362:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11699:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4070:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4630:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6894:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2685:157;;;;;;;;;;;;;:::i;:::-;;3833:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4320:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4584:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4241:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4721:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3477:56;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9507:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4416:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11452:239;;;;;;;;;;;;;:::i;:::-;;2471:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8911:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6600:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3418:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3972:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9752:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4769:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8343:393;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11134:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7021:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11027:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9992:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4286:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4164:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7221:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4674:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8744:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4466:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11836:325;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9344:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3804:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2850:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12169:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4198:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6509:83;6546:13;6579:5;6572:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6509:83;:::o;3770:27::-;;;;;;;;;;;;;:::o;7397:186::-;7497:4;7514:39;7523:12;:10;:12::i;:::-;7537:7;7546:6;7514:8;:39::i;:::-;7571:4;7564:11;;7397:186;;;;:::o;10904:115::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11005:6:::1;10976:26;;:35;;;;;;;;;;;;;;;;;;10904:115:::0;:::o;10446:450::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10618:6:::1;10594:21;:30;;;;10659:13;10635:21;:37;;;;10702:8;10683:16;:27;;;;10803:31;10830:3;10803:22;10822:2;10803:14;;:18;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;10743:39;10773:8;10743:25;10754:13;10743:6;:10;;:25;;;;:::i;:::-;:29;;:39;;;;:::i;:::-;:91;;10721:167;;;;;;;;;;;;:::i;:::-;;;;;;;;;10446:450:::0;;;:::o;6786:100::-;6839:7;6866:12;;6859:19;;6786:100;:::o;3872:45::-;;;;:::o;11265:179::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11347:9:::1;11342:95;11362:8;:15;11358:1;:19;11342:95;;;11420:5;11399;:18;11405:8;11414:1;11405:11;;;;;;;;:::i;:::-;;;;;;;;11399:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;11379:3;;;;;:::i;:::-;;;;11342:95;;;;11265:179:::0;:::o;7591:443::-;7723:4;7740:36;7750:6;7758:9;7769:6;7740:9;:36::i;:::-;7787:217;7810:6;7831:12;:10;:12::i;:::-;7858:135;7914:6;7858:135;;;;;;;;;;;;;;;;;:11;:19;7870:6;7858:19;;;;;;;;;;;;;;;:33;7878:12;:10;:12::i;:::-;7858:33;;;;;;;;;;;;;;;;:37;;:135;;;;;:::i;:::-;7787:8;:217::i;:::-;8022:4;8015:11;;7591:443;;;;;:::o;9163:173::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9323:5:::1;9287:24;:33;9312:7;9287:33;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;9163:173:::0;;:::o;6695:83::-;6736:5;6761:9;;;;;;;;;;;6754:16;;6695:83;:::o;4537:40::-;;;;:::o;8042:293::-;8155:4;8172:133;8195:12;:10;:12::i;:::-;8222:7;8244:50;8283:10;8244:11;:25;8256:12;:10;:12::i;:::-;8244:25;;;;;;;;;;;;;;;:34;8270:7;8244:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;8172:8;:133::i;:::-;8323:4;8316:11;;8042:293;;;;:::o;3540:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;3362:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;11699:129::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11778:9:::1;11770:27;;:50;11798:21;11770:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11699:129:::0;:::o;4070:50::-;;;;:::o;4630:35::-;;;;:::o;6894:119::-;6960:7;6987:9;:18;6997:7;6987:18;;;;;;;;;;;;;;;;6980:25;;6894:119;;;:::o;2685:157::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2792:1:::1;2755:40;;2776:6;::::0;::::1;;;;;;;;2755:40;;;;;;;;;;;;2831:1;2806:6:::0;::::1;:28;;;;;;;;;;;;;;;;;;2685:157::o:0;3833:30::-;;;;;;;;;;;;;:::o;4320:38::-;;;;;;;;;;;;;:::o;4584:39::-;;;;:::o;4241:38::-;;;;:::o;4721:41::-;;;;:::o;3477:56::-;;;;;;;;;;;;;;;;;;;;;;:::o;9507:237::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9612:32:::1;9629:14;;9612:12;;:16;;:32;;;;:::i;:::-;9601:7;:43;;9579:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;9729:7;9714:12;:22;;;;9507:237:::0;:::o;4416:22::-;;;;;;;;;;;;;:::o;11452:239::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11516:7:::1;;;;;;;;;;;11515:8;11507:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;11568:4;11558:7;;:14;;;;;;;;;;;;;;;;;;11596:4;11583:10;;:17;;;;;;;;;;;;;;;;;;11640:4;11611:26;;:33;;;;;;;;;;;;;;;;;;11668:15;11655:10;:28;;;;11452:239::o:0;2471:79::-;2509:7;2536:6;;;;;;;;;;;2529:13;;2471:79;:::o;8911:244::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9045:9:::1;9040:108;9060:7;:14;9056:1;:18;9040:108;;;9131:5;9096:20;:32;9117:7;9125:1;9117:10;;;;;;;;:::i;:::-;;;;;;;;9096:32;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;9076:3;;;;;:::i;:::-;;;;9040:108;;;;8911:244:::0;;:::o;6600:87::-;6639:13;6672:7;6665:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6600:87;:::o;3418:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;3972:51::-;;;;:::o;9752:232::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9871:14:::1;;9856:12;;:29;;;;:::i;:::-;9845:7;:40;;9823:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;9969:7;9955:11;:21;;;;9752:232:::0;:::o;4769:36::-;;;;:::o;8343:393::-;8461:4;8478:228;8501:12;:10;:12::i;:::-;8528:7;8550:145;8607:15;8550:145;;;;;;;;;;;;;;;;;:11;:25;8562:12;:10;:12::i;:::-;8550:25;;;;;;;;;;;;;;;:34;8576:7;8550:34;;;;;;;;;;;;;;;;:38;;:145;;;;;:::i;:::-;8478:8;:228::i;:::-;8724:4;8717:11;;8343:393;;;;:::o;11134:123::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11233:16:::1;11215:15;;:34;;;;;;;;;;;;;;;;;;11134:123:::0;:::o;7021:192::-;7124:4;7141:42;7151:12;:10;:12::i;:::-;7165:9;7176:6;7141:9;:42::i;:::-;7201:4;7194:11;;7021:192;;;;:::o;11027:99::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11112:6:::1;11099:10;;:19;;;;;;;;;;;;;;;;;;11027:99:::0;:::o;9992:446::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10162:6:::1;10139:20;:29;;;;10202:13;10179:20;:36;;;;10244:8;10226:15;:26;;;;10345:31;10372:3;10345:22;10364:2;10345:14;;:18;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;10285:39;10315:8;10285:25;10296:13;10285:6;:10;;:25;;;;:::i;:::-;:29;;:39;;;;:::i;:::-;:91;;10263:167;;;;;;;;;;;;:::i;:::-;;;;;;;;;9992:446:::0;;;:::o;4286:25::-;;;;:::o;4164:27::-;;;;:::o;7221:168::-;7327:7;7354:11;:18;7366:5;7354:18;;;;;;;;;;;;;;;:27;7373:7;7354:27;;;;;;;;;;;;;;;;7347:34;;7221:168;;;;:::o;4674:40::-;;;;:::o;8744:159::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8890:5:::1;8861:17;:26;8879:7;8861:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;8744:159:::0;;:::o;4466:19::-;;;;;;;;;;;;;:::o;11836:325::-;11899:7;11919:11;11933:199;12117:14;;11933:165;11976:107;12049:15;;11976:46;12001:20;;11976;;:24;;:46;;;;:::i;:::-;:50;;:107;;;;:::i;:::-;11933:6;:24;;:165;;;;:::i;:::-;:183;;:199;;;;:::i;:::-;11919:213;;12150:3;12143:10;;;11836:325;;;:::o;9344:155::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9436:1:::1;9426:7;:11;9418:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9484:7;9467:14;:24;;;;9344:155:::0;:::o;3804:22::-;;;;;;;;;;;;;:::o;2850:281::-;2608:12;:10;:12::i;:::-;2598:22;;:6;;;;;;;;;;:22;;;2590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2973:1:::1;2953:22;;:8;:22;;;;2931:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;3086:8;3057:38;;3078:6;::::0;::::1;;;;;;;;3057:38;;;;;;;;;;;;3115:8;3106:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2850:281:::0;:::o;12169:329::-;12233:7;12253:11;12267:202;12454:14;;12267:168;12310:110;12385:16;;12310:48;12336:21;;12310;;:25;;:48;;;;:::i;:::-;:52;;:110;;;;:::i;:::-;12267:6;:24;;:168;;;;:::i;:::-;:186;;:202;;;;:::i;:::-;12253:216;;12487:3;12480:10;;;12169:329;;;:::o;4198:36::-;;;;:::o;24099:132::-;24157:7;24184:39;24188:1;24191;24184:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;24177:46;;24099:132;;;;:::o;1807:115::-;1860:15;1903:10;1888:26;;1807:115;:::o;12506:331::-;12616:1;12599:19;;:5;:19;;;;12591:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12694:1;12675:21;;:7;:21;;;;12667:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12775:6;12745:11;:18;12757:5;12745:18;;;;;;;;;;;;;;;:27;12764:7;12745:27;;;;;;;;;;;;;;;:36;;;;12813:7;12797:32;;12806:5;12797:32;;;12822:6;12797:32;;;;;;:::i;:::-;;;;;;;;12506:331;;;:::o;23620:471::-;23678:7;23928:1;23923;:6;23919:47;;;23953:1;23946:8;;;;23919:47;23978:9;23994:1;23990;:5;;;;:::i;:::-;23978:17;;24023:1;24018;24014;:5;;;;:::i;:::-;:10;24006:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;24082:1;24075:8;;;23620:471;;;;;:::o;23053:181::-;23111:7;23131:9;23147:1;23143;:5;;;;:::i;:::-;23131:17;;23172:1;23167;:6;;23159:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;23225:1;23218:8;;;23053:181;;;;:::o;12845:1434::-;12949:1;12933:18;;:4;:18;;;;12925:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;13023:1;13009:16;;:2;:16;;;;13001:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;13090:1;13081:6;:10;13073:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13152:5;:11;13158:4;13152:11;;;;;;;;;;;;;;;;;;;;;;;;;13151:12;13143:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;13198:20;:26;13219:4;13198:26;;;;;;;;;;;;;;;;;;;;;;;;;13197:27;:56;;;;;13229:20;:24;13250:2;13229:24;;;;;;;;;;;;;;;;;;;;;;;;;13228:25;13197:56;13193:385;;;13288:11;;13278:6;:21;;13270:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13395:7;;;;;;;;;;;13390:177;;13464:4;13453:15;;:7;;;;;;;;;;;:15;;;;:32;;;;;13483:2;13472:13;;:7;;;;;;;;;;;:13;;;;13453:32;13423:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;13390:177;13193:385;13595:24;:28;13620:2;13595:28;;;;;;;;;;;;;;;;;;;;;;;;;13590:191;;13695:12;;13666:25;13684:6;13666:13;13676:2;13666:9;:13::i;:::-;:17;;:25;;;;:::i;:::-;:41;;13640:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;13590:191;13822:30;13843:4;13849:2;13822:20;:30::i;:::-;13926:12;13941:4;13926:19;;14045:17;:23;14063:4;14045:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;14072:17;:21;14090:2;14072:21;;;;;;;;;;;;;;;;;;;;;;;;;14045:48;:63;;;;14098:10;;;;;;;;;;;14097:11;14045:63;14041:111;;;14135:5;14125:15;;14041:111;14230:41;14245:4;14251:2;14255:6;14263:7;14230:14;:41::i;:::-;12914:1365;12845:1434;;;:::o;23386:226::-;23506:7;23539:1;23534;:6;;23542:12;23526:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;23566:9;23582:1;23578;:5;;;;:::i;:::-;23566:17;;23603:1;23596:8;;;23386:226;;;;;:::o;24239:312::-;24359:7;24391:1;24387;:5;24394:12;24379:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;24418:9;24434:1;24430;:5;;;;:::i;:::-;24418:17;;24542:1;24535:8;;;24239:312;;;;;:::o;19375:2414::-;19502:1;19454:44;19478:19;;19454;;:23;;:44;;;;:::i;:::-;:49;19450:62;;;19505:7;;19450:62;19800:28;19831:24;19849:4;19831:9;:24::i;:::-;19800:55;;19868:15;19910:14;;19886:20;:38;;19868:56;;19955:10;:42;;;;;19990:7;;;;;;;;;;;19982:15;;:4;:15;;;;19955:42;:85;;;;;20014:26;;;;;;;;;;;19955:85;:143;;;;;20075:4;20059:21;;:4;:21;;;:38;;;;;20090:7;;;;;;;;;;;20084:13;;:2;:13;;;20059:38;20057:41;19955:143;19937:1845;;;20173:65;20190:4;20205:9;;;;;;;;;;;20217:20;20173:8;:65::i;:::-;20255:21;20279:26;20303:1;20279:19;;:23;;:26;;;;:::i;:::-;20255:50;;20320:26;20349:38;20373:13;20349:19;;:23;;:38;;;;:::i;:::-;20320:67;;20404:30;20437:76;20480:18;20437:20;:24;;:76;;;;:::i;:::-;20404:109;;20530:21;20554;20530:45;;20642:66;20673:9;;;;;;;;;;;20685:22;20642;:66::i;:::-;20725:20;20748:40;20774:13;20748:21;:25;;:40;;;;:::i;:::-;20725:63;;20805:31;20839:95;20911:22;20839:49;20874:13;20839:12;:34;;:49;;;;:::i;:::-;:71;;:95;;;;:::i;:::-;20805:129;;21018:1;20992:23;:27;20988:445;;;21040:195;21089:9;;;;;;;;;;;21122:7;:5;:7::i;:::-;21152:18;21193:23;21040:18;:195::i;:::-;21261:156;21298:13;21334:23;21380:18;21261:156;;;;;;;;:::i;:::-;;;;;;;;20988:445;21449:23;21475:21;21449:47;;21583:1;21565:15;:19;21561:92;;;21611:15;;;;;;;;;;;21603:33;;:50;21637:15;21603:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21561:92;21731:1;21709:19;:23;;;;21769:1;21747:19;:23;;;;20125:1657;;;;;;;19937:1845;19439:2350;;19375:2414;;;:::o;14360:2532::-;14526:6;14515:17;;:7;;;;;;;;;;;:17;;;:28;;;;;14536:7;14515:28;14511:2374;;;14560:14;14589:23;14704:11;;14691:10;;:24;;;;:::i;:::-;14673:15;:42;:91;;;;;14754:9;;;;;;;;;;;14736:28;;:6;:28;;;;14673:91;14651:1389;;;14808:38;14831:14;;14808:18;14819:6;;14808;:10;;:18;;;;:::i;:::-;:22;;:38;;;;:::i;:::-;14799:47;;14888:6;14865:19;;:29;;;;;;;:::i;:::-;;;;;;;;14931:18;14942:6;14931;:10;;:18;;;;:::i;:::-;14913:36;;14988:118;15032:6;14988:118;;;;;;;;;;;;;;;;;:9;:17;14998:6;14988:17;;;;;;;;;;;;;;;;:21;;:118;;;;;:::i;:::-;14968:9;:17;14978:6;14968:17;;;;;;;;;;;;;;;:138;;;;15148:81;15195:15;15148:9;:20;15158:9;15148:20;;;;;;;;;;;;;;;;:24;;:81;;;;:::i;:::-;15125:9;:20;15135:9;15125:20;;;;;;;;;;;;;;;:104;;;;15270:9;15253:44;;15262:6;15253:44;;;15281:15;15253:44;;;;;;:::i;:::-;;;;;;;;15345:36;15374:6;15345:9;:24;15363:4;15345:24;;;;;;;;;;;;;;;;:28;;:36;;;;:::i;:::-;15318:9;:24;15336:4;15318:24;;;;;;;;;;;;;;;:63;;;;15430:4;15405:39;;15414:6;15405:39;;;15437:6;15405:39;;;;;;:::i;:::-;;;;;;;;14651:1389;;;15494:24;15511:6;15494:16;:24::i;:::-;15485:33;;15555:18;15566:6;15555;:10;;:18;;;;:::i;:::-;15537:36;;15592:30;15615:6;15592:22;:30::i;:::-;15663:118;15707:6;15663:118;;;;;;;;;;;;;;;;;:9;:17;15673:6;15663:17;;;;;;;;;;;;;;;;:21;;:118;;;;;:::i;:::-;15643:9;:17;15653:6;15643:17;;;;;;;;;;;;;;;:138;;;;15823:81;15870:15;15823:9;:20;15833:9;15823:20;;;;;;;;;;;;;;;;:24;;:81;;;;:::i;:::-;15800:9;:20;15810:9;15800:20;;;;;;;;;;;;;;;:104;;;;15945:9;15928:44;;15937:6;15928:44;;;15956:15;15928:44;;;;;;:::i;:::-;;;;;;;;15993:31;16009:6;16017;15993:15;:31::i;:::-;14651:1389;14545:1506;;14511:2374;;;16072:9;16061:20;;:7;;;;;;;;;;;:20;;;:31;;;;;16085:7;16061:31;16057:828;;;16109:14;16126:25;16144:6;16126:17;:25::i;:::-;16109:42;;16166:23;16192:18;16203:6;16192;:10;;:18;;;;:::i;:::-;16166:44;;16245:106;16285:6;16245:106;;;;;;;;;;;;;;;;;:9;:17;16255:6;16245:17;;;;;;;;;;;;;;;;:21;;:106;;;;;:::i;:::-;16225:9;:17;16235:6;16225:17;;;;;;;;;;;;;;;:126;;;;16389:41;16414:15;16389:9;:20;16399:9;16389:20;;;;;;;;;;;;;;;;:24;;:41;;;;:::i;:::-;16366:9;:20;16376:9;16366:20;;;;;;;;;;;;;;;:64;;;;16467:9;16450:44;;16459:6;16450:44;;;16478:15;16450:44;;;;;;:::i;:::-;;;;;;;;16511:32;16528:6;16536;16511:16;:32::i;:::-;16558:31;16582:6;16558:23;:31::i;:::-;16094:507;;16057:828;;;16642:106;16682:6;16642:106;;;;;;;;;;;;;;;;;:9;:17;16652:6;16642:17;;;;;;;;;;;;;;;;:21;;:106;;;;;:::i;:::-;16622:9;:17;16632:6;16622:17;;;;;;;;;;;;;;;:126;;;;16786:32;16811:6;16786:9;:20;16796:9;16786:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;16763:9;:20;16773:9;16763:20;;;;;;;;;;;;;;;:55;;;;16855:9;16838:35;;16847:6;16838:35;;;16866:6;16838:35;;;;;;:::i;:::-;;;;;;;;16057:828;14511:2374;14360:2532;;;;:::o;23242:136::-;23300:7;23327:43;23331:1;23334;23327:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;23320:50;;23242:136;;;;:::o;21888:614::-;22003:20;22037:13;22003:48;;22120:21;22158:1;22144:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22120:40;;22189:4;22171;22176:1;22171:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22215:9;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22205:4;22210:1;22205:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;22270:9;:60;;;22345:11;22371:1;22415:4;22442;22480:3;22462:15;:21;;;;:::i;:::-;22270:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21992:510;;21888:614;;:::o;22510:512::-;22673:20;22707:13;22673:48;;22764:9;:25;;;22797:9;22830:4;22850:11;22876:1;22919;22962:5;23000:3;22982:15;:21;;;;:::i;:::-;22764:250;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22662:360;22510:512;;;;:::o;18371:412::-;18465:1;18442:20;;:24;18438:164;;;18506:84;18561:14;;18506:32;18517:20;;18506:6;:10;;:32;;;;:::i;:::-;:36;;:84;;;;:::i;:::-;18483:19;;:107;;;;;;;:::i;:::-;;;;;;;;18438:164;18639:1;18616:20;;:24;18612:164;;;18680:84;18735:14;;18680:32;18691:20;;18680:6;:10;;:32;;;;:::i;:::-;:36;;:84;;;;:::i;:::-;18657:19;;:107;;;;;;;:::i;:::-;;;;;;;;18612:164;18371:412;:::o;16900:724::-;16998:1;16980:15;;:19;16976:113;;;17016:61;17021:6;17029:47;17061:14;;17029:27;17040:15;;17029:6;:10;;:27;;;;:::i;:::-;:31;;:47;;;;:::i;:::-;17016:4;:61::i;:::-;16976:113;17126:1;17103:20;;:24;17099:254;;;17144:11;17158:52;17195:14;;17158:32;17169:20;;17158:6;:10;;:32;;;;:::i;:::-;:36;;:52;;;;:::i;:::-;17144:66;;17252:33;17281:3;17252:9;:24;17270:4;17252:24;;;;;;;;;;;;;;;;:28;;:33;;;;:::i;:::-;17225:9;:24;17243:4;17225:24;;;;;;;;;;;;;;;:60;;;;17330:4;17305:36;;17314:6;17305:36;;;17337:3;17305:36;;;;;;:::i;:::-;;;;;;;;17129:224;17099:254;17390:1;17367:20;;:24;17363:254;;;17408:11;17422:52;17459:14;;17422:32;17433:20;;17422:6;:10;;:32;;;;:::i;:::-;:36;;:52;;;;:::i;:::-;17408:66;;17516:33;17545:3;17516:9;:24;17534:4;17516:24;;;;;;;;;;;;;;;;:28;;:33;;;;:::i;:::-;17489:9;:24;17507:4;17489:24;;;;;;;;;;;;;;;:60;;;;17594:4;17569:36;;17578:6;17569:36;;;17601:3;17569:36;;;;;;:::i;:::-;;;;;;;;17393:224;17363:254;16900:724;;:::o;17632:731::-;17732:1;17713:16;;:20;17709:115;;;17750:62;17755:6;17763:48;17796:14;;17763:28;17774:16;;17763:6;:10;;:28;;;;:::i;:::-;:32;;:48;;;;:::i;:::-;17750:4;:62::i;:::-;17709:115;17862:1;17838:21;;:25;17834:256;;;17880:11;17894:53;17932:14;;17894:33;17905:21;;17894:6;:10;;:33;;;;:::i;:::-;:37;;:53;;;;:::i;:::-;17880:67;;17989:33;18018:3;17989:9;:24;18007:4;17989:24;;;;;;;;;;;;;;;;:28;;:33;;;;:::i;:::-;17962:9;:24;17980:4;17962:24;;;;;;;;;;;;;;;:60;;;;18067:4;18042:36;;18051:6;18042:36;;;18074:3;18042:36;;;;;;:::i;:::-;;;;;;;;17865:225;17834:256;18128:1;18104:21;;:25;18100:256;;;18146:11;18160:53;18198:14;;18160:33;18171:21;;18160:6;:10;;:33;;;;:::i;:::-;:37;;:53;;;;:::i;:::-;18146:67;;18255:33;18284:3;18255:9;:24;18273:4;18255:24;;;;;;;;;;;;;;;;:28;;:33;;;;:::i;:::-;18228:9;:24;18246:4;18228:24;;;;;;;;;;;;;;;:60;;;;18333:4;18308:36;;18317:6;18308:36;;;18340:3;18308:36;;;;;;:::i;:::-;;;;;;;;18131:225;18100:256;17632:731;;:::o;18791:417::-;18887:1;18863:21;;:25;18859:166;;;18928:85;18984:14;;18928:33;18939:21;;18928:6;:10;;:33;;;;:::i;:::-;:37;;:85;;;;:::i;:::-;18905:19;;:108;;;;;;;:::i;:::-;;;;;;;;18859:166;19063:1;19039:21;;:25;19035:166;;;19104:85;19160:14;;19104:33;19115:21;;19104:6;:10;;:33;;;;:::i;:::-;:37;;:85;;;;:::i;:::-;19081:19;;:108;;;;;;;:::i;:::-;;;;;;;;19035:166;18791:417;:::o;19216:151::-;19298:6;19282:12;;:22;;;;;;;:::i;:::-;;;;;;;;19348:1;19322:37;;19331:7;19322:37;;;19352:6;19322:37;;;;;;:::i;:::-;;;;;;;;19216:151;;:::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:619::-;5094:6;5102;5110;5159:2;5147:9;5138:7;5134:23;5130:32;5127:119;;;5165:79;;:::i;:::-;5127:119;5285:1;5310:53;5355:7;5346:6;5335:9;5331:22;5310:53;:::i;:::-;5300:63;;5256:117;5412:2;5438:53;5483:7;5474:6;5463:9;5459:22;5438:53;:::i;:::-;5428:63;;5383:118;5540:2;5566:53;5611:7;5602:6;5591:9;5587:22;5566:53;:::i;:::-;5556:63;;5511:118;5017:619;;;;;:::o;5642:118::-;5729:24;5747:5;5729:24;:::i;:::-;5724:3;5717:37;5642:118;;:::o;5766:222::-;5859:4;5897:2;5886:9;5882:18;5874:26;;5910:71;5978:1;5967:9;5963:17;5954:6;5910:71;:::i;:::-;5766:222;;;;:::o;5994:117::-;6103:1;6100;6093:12;6117:180;6165:77;6162:1;6155:88;6262:4;6259:1;6252:15;6286:4;6283:1;6276:15;6303:281;6386:27;6408:4;6386:27;:::i;:::-;6378:6;6374:40;6516:6;6504:10;6501:22;6480:18;6468:10;6465:34;6462:62;6459:88;;;6527:18;;:::i;:::-;6459:88;6567:10;6563:2;6556:22;6346:238;6303:281;;:::o;6590:129::-;6624:6;6651:20;;:::i;:::-;6641:30;;6680:33;6708:4;6700:6;6680:33;:::i;:::-;6590:129;;;:::o;6725:311::-;6802:4;6892:18;6884:6;6881:30;6878:56;;;6914:18;;:::i;:::-;6878:56;6964:4;6956:6;6952:17;6944:25;;7024:4;7018;7014:15;7006:23;;6725:311;;;:::o;7042:117::-;7151:1;7148;7141:12;7182:710;7278:5;7303:81;7319:64;7376:6;7319:64;:::i;:::-;7303:81;:::i;:::-;7294:90;;7404:5;7433:6;7426:5;7419:21;7467:4;7460:5;7456:16;7449:23;;7520:4;7512:6;7508:17;7500:6;7496:30;7549:3;7541:6;7538:15;7535:122;;;7568:79;;:::i;:::-;7535:122;7683:6;7666:220;7700:6;7695:3;7692:15;7666:220;;;7775:3;7804:37;7837:3;7825:10;7804:37;:::i;:::-;7799:3;7792:50;7871:4;7866:3;7862:14;7855:21;;7742:144;7726:4;7721:3;7717:14;7710:21;;7666:220;;;7670:21;7284:608;;7182:710;;;;;:::o;7915:370::-;7986:5;8035:3;8028:4;8020:6;8016:17;8012:27;8002:122;;8043:79;;:::i;:::-;8002:122;8160:6;8147:20;8185:94;8275:3;8267:6;8260:4;8252:6;8248:17;8185:94;:::i;:::-;8176:103;;7992:293;7915:370;;;;:::o;8291:539::-;8375:6;8424:2;8412:9;8403:7;8399:23;8395:32;8392:119;;;8430:79;;:::i;:::-;8392:119;8578:1;8567:9;8563:17;8550:31;8608:18;8600:6;8597:30;8594:117;;;8630:79;;:::i;:::-;8594:117;8735:78;8805:7;8796:6;8785:9;8781:22;8735:78;:::i;:::-;8725:88;;8521:302;8291:539;;;;:::o;8836:619::-;8913:6;8921;8929;8978:2;8966:9;8957:7;8953:23;8949:32;8946:119;;;8984:79;;:::i;:::-;8946:119;9104:1;9129:53;9174:7;9165:6;9154:9;9150:22;9129:53;:::i;:::-;9119:63;;9075:117;9231:2;9257:53;9302:7;9293:6;9282:9;9278:22;9257:53;:::i;:::-;9247:63;;9202:118;9359:2;9385:53;9430:7;9421:6;9410:9;9406:22;9385:53;:::i;:::-;9375:63;;9330:118;8836:619;;;;;:::o;9461:468::-;9526:6;9534;9583:2;9571:9;9562:7;9558:23;9554:32;9551:119;;;9589:79;;:::i;:::-;9551:119;9709:1;9734:53;9779:7;9770:6;9759:9;9755:22;9734:53;:::i;:::-;9724:63;;9680:117;9836:2;9862:50;9904:7;9895:6;9884:9;9880:22;9862:50;:::i;:::-;9852:60;;9807:115;9461:468;;;;;:::o;9935:86::-;9970:7;10010:4;10003:5;9999:16;9988:27;;9935:86;;;:::o;10027:112::-;10110:22;10126:5;10110:22;:::i;:::-;10105:3;10098:35;10027:112;;:::o;10145:214::-;10234:4;10272:2;10261:9;10257:18;10249:26;;10285:67;10349:1;10338:9;10334:17;10325:6;10285:67;:::i;:::-;10145:214;;;;:::o;10365:329::-;10424:6;10473:2;10461:9;10452:7;10448:23;10444:32;10441:119;;;10479:79;;:::i;:::-;10441:119;10599:1;10624:53;10669:7;10660:6;10649:9;10645:22;10624:53;:::i;:::-;10614:63;;10570:117;10365:329;;;;:::o;10700:118::-;10787:24;10805:5;10787:24;:::i;:::-;10782:3;10775:37;10700:118;;:::o;10824:222::-;10917:4;10955:2;10944:9;10940:18;10932:26;;10968:71;11036:1;11025:9;11021:17;11012:6;10968:71;:::i;:::-;10824:222;;;;:::o;11052:329::-;11111:6;11160:2;11148:9;11139:7;11135:23;11131:32;11128:119;;;11166:79;;:::i;:::-;11128:119;11286:1;11311:53;11356:7;11347:6;11336:9;11332:22;11311:53;:::i;:::-;11301:63;;11257:117;11052:329;;;;:::o;11387:678::-;11477:6;11485;11534:2;11522:9;11513:7;11509:23;11505:32;11502:119;;;11540:79;;:::i;:::-;11502:119;11688:1;11677:9;11673:17;11660:31;11718:18;11710:6;11707:30;11704:117;;;11740:79;;:::i;:::-;11704:117;11845:78;11915:7;11906:6;11895:9;11891:22;11845:78;:::i;:::-;11835:88;;11631:302;11972:2;11998:50;12040:7;12031:6;12020:9;12016:22;11998:50;:::i;:::-;11988:60;;11943:115;11387:678;;;;;:::o;12071:474::-;12139:6;12147;12196:2;12184:9;12175:7;12171:23;12167:32;12164:119;;;12202:79;;:::i;:::-;12164:119;12322:1;12347:53;12392:7;12383:6;12372:9;12368:22;12347:53;:::i;:::-;12337:63;;12293:117;12449:2;12475:53;12520:7;12511:6;12500:9;12496:22;12475:53;:::i;:::-;12465:63;;12420:118;12071:474;;;;;:::o;12551:180::-;12599:77;12596:1;12589:88;12696:4;12693:1;12686:15;12720:4;12717:1;12710:15;12737:320;12781:6;12818:1;12812:4;12808:12;12798:22;;12865:1;12859:4;12855:12;12886:18;12876:81;;12942:4;12934:6;12930:17;12920:27;;12876:81;13004:2;12996:6;12993:14;12973:18;12970:38;12967:84;;;13023:18;;:::i;:::-;12967:84;12788:269;12737:320;;;:::o;13063:182::-;13203:34;13199:1;13191:6;13187:14;13180:58;13063:182;:::o;13251:366::-;13393:3;13414:67;13478:2;13473:3;13414:67;:::i;:::-;13407:74;;13490:93;13579:3;13490:93;:::i;:::-;13608:2;13603:3;13599:12;13592:19;;13251:366;;;:::o;13623:419::-;13789:4;13827:2;13816:9;13812:18;13804:26;;13876:9;13870:4;13866:20;13862:1;13851:9;13847:17;13840:47;13904:131;14030:4;13904:131;:::i;:::-;13896:139;;13623:419;;;:::o;14048:176::-;14188:28;14184:1;14176:6;14172:14;14165:52;14048:176;:::o;14230:366::-;14372:3;14393:67;14457:2;14452:3;14393:67;:::i;:::-;14386:74;;14469:93;14558:3;14469:93;:::i;:::-;14587:2;14582:3;14578:12;14571:19;;14230:366;;;:::o;14602:419::-;14768:4;14806:2;14795:9;14791:18;14783:26;;14855:9;14849:4;14845:20;14841:1;14830:9;14826:17;14819:47;14883:131;15009:4;14883:131;:::i;:::-;14875:139;;14602:419;;;:::o;15027:180::-;15075:77;15072:1;15065:88;15172:4;15169:1;15162:15;15196:4;15193:1;15186:15;15213:180;15261:77;15258:1;15251:88;15358:4;15355:1;15348:15;15382:4;15379:1;15372:15;15399:233;15438:3;15461:24;15479:5;15461:24;:::i;:::-;15452:33;;15507:66;15500:5;15497:77;15494:103;;;15577:18;;:::i;:::-;15494:103;15624:1;15617:5;15613:13;15606:20;;15399:233;;;:::o;15638:181::-;15778:33;15774:1;15766:6;15762:14;15755:57;15638:181;:::o;15825:366::-;15967:3;15988:67;16052:2;16047:3;15988:67;:::i;:::-;15981:74;;16064:93;16153:3;16064:93;:::i;:::-;16182:2;16177:3;16173:12;16166:19;;15825:366;;;:::o;16197:419::-;16363:4;16401:2;16390:9;16386:18;16378:26;;16450:9;16444:4;16440:20;16436:1;16425:9;16421:17;16414:47;16478:131;16604:4;16478:131;:::i;:::-;16470:139;;16197:419;;;:::o;16622:169::-;16762:21;16758:1;16750:6;16746:14;16739:45;16622:169;:::o;16797:366::-;16939:3;16960:67;17024:2;17019:3;16960:67;:::i;:::-;16953:74;;17036:93;17125:3;17036:93;:::i;:::-;17154:2;17149:3;17145:12;17138:19;;16797:366;;;:::o;17169:419::-;17335:4;17373:2;17362:9;17358:18;17350:26;;17422:9;17416:4;17412:20;17408:1;17397:9;17393:17;17386:47;17450:131;17576:4;17450:131;:::i;:::-;17442:139;;17169:419;;;:::o;17594:180::-;17642:77;17639:1;17632:88;17739:4;17736:1;17729:15;17763:4;17760:1;17753:15;17780:185;17820:1;17837:20;17855:1;17837:20;:::i;:::-;17832:25;;17871:20;17889:1;17871:20;:::i;:::-;17866:25;;17910:1;17900:35;;17915:18;;:::i;:::-;17900:35;17957:1;17954;17950:9;17945:14;;17780:185;;;;:::o;17971:164::-;18111:16;18107:1;18099:6;18095:14;18088:40;17971:164;:::o;18141:366::-;18283:3;18304:67;18368:2;18363:3;18304:67;:::i;:::-;18297:74;;18380:93;18469:3;18380:93;:::i;:::-;18498:2;18493:3;18489:12;18482:19;;18141:366;;;:::o;18513:419::-;18679:4;18717:2;18706:9;18702:18;18694:26;;18766:9;18760:4;18756:20;18752:1;18741:9;18737:17;18730:47;18794:131;18920:4;18794:131;:::i;:::-;18786:139;;18513:419;;;:::o;18938:225::-;19078:34;19074:1;19066:6;19062:14;19055:58;19147:8;19142:2;19134:6;19130:15;19123:33;18938:225;:::o;19169:366::-;19311:3;19332:67;19396:2;19391:3;19332:67;:::i;:::-;19325:74;;19408:93;19497:3;19408:93;:::i;:::-;19526:2;19521:3;19517:12;19510:19;;19169:366;;;:::o;19541:419::-;19707:4;19745:2;19734:9;19730:18;19722:26;;19794:9;19788:4;19784:20;19780:1;19769:9;19765:17;19758:47;19822:131;19948:4;19822:131;:::i;:::-;19814:139;;19541:419;;;:::o;19966:220::-;20106:34;20102:1;20094:6;20090:14;20083:58;20175:3;20170:2;20162:6;20158:15;20151:28;19966:220;:::o;20192:366::-;20334:3;20355:67;20419:2;20414:3;20355:67;:::i;:::-;20348:74;;20431:93;20520:3;20431:93;:::i;:::-;20549:2;20544:3;20540:12;20533:19;;20192:366;;;:::o;20564:419::-;20730:4;20768:2;20757:9;20753:18;20745:26;;20817:9;20811:4;20807:20;20803:1;20792:9;20788:17;20781:47;20845:131;20971:4;20845:131;:::i;:::-;20837:139;;20564:419;;;:::o;20989:181::-;21129:33;21125:1;21117:6;21113:14;21106:57;20989:181;:::o;21176:366::-;21318:3;21339:67;21403:2;21398:3;21339:67;:::i;:::-;21332:74;;21415:93;21504:3;21415:93;:::i;:::-;21533:2;21528:3;21524:12;21517:19;;21176:366;;;:::o;21548:419::-;21714:4;21752:2;21741:9;21737:18;21729:26;;21801:9;21795:4;21791:20;21787:1;21776:9;21772:17;21765:47;21829:131;21955:4;21829:131;:::i;:::-;21821:139;;21548:419;;;:::o;21973:348::-;22013:7;22036:20;22054:1;22036:20;:::i;:::-;22031:25;;22070:20;22088:1;22070:20;:::i;:::-;22065:25;;22258:1;22190:66;22186:74;22183:1;22180:81;22175:1;22168:9;22161:17;22157:105;22154:131;;;22265:18;;:::i;:::-;22154:131;22313:1;22310;22306:9;22295:20;;21973:348;;;;:::o;22327:220::-;22467:34;22463:1;22455:6;22451:14;22444:58;22536:3;22531:2;22523:6;22519:15;22512:28;22327:220;:::o;22553:366::-;22695:3;22716:67;22780:2;22775:3;22716:67;:::i;:::-;22709:74;;22792:93;22881:3;22792:93;:::i;:::-;22910:2;22905:3;22901:12;22894:19;;22553:366;;;:::o;22925:419::-;23091:4;23129:2;23118:9;23114:18;23106:26;;23178:9;23172:4;23168:20;23164:1;23153:9;23149:17;23142:47;23206:131;23332:4;23206:131;:::i;:::-;23198:139;;22925:419;;;:::o;23350:305::-;23390:3;23409:20;23427:1;23409:20;:::i;:::-;23404:25;;23443:20;23461:1;23443:20;:::i;:::-;23438:25;;23597:1;23529:66;23525:74;23522:1;23519:81;23516:107;;;23603:18;;:::i;:::-;23516:107;23647:1;23644;23640:9;23633:16;;23350:305;;;;:::o;23661:177::-;23801:29;23797:1;23789:6;23785:14;23778:53;23661:177;:::o;23844:366::-;23986:3;24007:67;24071:2;24066:3;24007:67;:::i;:::-;24000:74;;24083:93;24172:3;24083:93;:::i;:::-;24201:2;24196:3;24192:12;24185:19;;23844:366;;;:::o;24216:419::-;24382:4;24420:2;24409:9;24405:18;24397:26;;24469:9;24463:4;24459:20;24455:1;24444:9;24440:17;24433:47;24497:131;24623:4;24497:131;:::i;:::-;24489:139;;24216:419;;;:::o;24641:221::-;24781:34;24777:1;24769:6;24765:14;24758:58;24850:4;24845:2;24837:6;24833:15;24826:29;24641:221;:::o;24868:366::-;25010:3;25031:67;25095:2;25090:3;25031:67;:::i;:::-;25024:74;;25107:93;25196:3;25107:93;:::i;:::-;25225:2;25220:3;25216:12;25209:19;;24868:366;;;:::o;25240:419::-;25406:4;25444:2;25433:9;25429:18;25421:26;;25493:9;25487:4;25483:20;25479:1;25468:9;25464:17;25457:47;25521:131;25647:4;25521:131;:::i;:::-;25513:139;;25240:419;;;:::o;25665:182::-;25805:34;25801:1;25793:6;25789:14;25782:58;25665:182;:::o;25853:366::-;25995:3;26016:67;26080:2;26075:3;26016:67;:::i;:::-;26009:74;;26092:93;26181:3;26092:93;:::i;:::-;26210:2;26205:3;26201:12;26194:19;;25853:366;;;:::o;26225:419::-;26391:4;26429:2;26418:9;26414:18;26406:26;;26478:9;26472:4;26468:20;26464:1;26453:9;26449:17;26442:47;26506:131;26632:4;26506:131;:::i;:::-;26498:139;;26225:419;;;:::o;26650:223::-;26790:34;26786:1;26778:6;26774:14;26767:58;26859:6;26854:2;26846:6;26842:15;26835:31;26650:223;:::o;26879:366::-;27021:3;27042:67;27106:2;27101:3;27042:67;:::i;:::-;27035:74;;27118:93;27207:3;27118:93;:::i;:::-;27236:2;27231:3;27227:12;27220:19;;26879:366;;;:::o;27251:419::-;27417:4;27455:2;27444:9;27440:18;27432:26;;27504:9;27498:4;27494:20;27490:1;27479:9;27475:17;27468:47;27532:131;27658:4;27532:131;:::i;:::-;27524:139;;27251:419;;;:::o;27676:162::-;27816:14;27812:1;27804:6;27800:14;27793:38;27676:162;:::o;27844:366::-;27986:3;28007:67;28071:2;28066:3;28007:67;:::i;:::-;28000:74;;28083:93;28172:3;28083:93;:::i;:::-;28201:2;28196:3;28192:12;28185:19;;27844:366;;;:::o;28216:419::-;28382:4;28420:2;28409:9;28405:18;28397:26;;28469:9;28463:4;28459:20;28455:1;28444:9;28440:17;28433:47;28497:131;28623:4;28497:131;:::i;:::-;28489:139;;28216:419;;;:::o;28641:175::-;28781:27;28777:1;28769:6;28765:14;28758:51;28641:175;:::o;28822:366::-;28964:3;28985:67;29049:2;29044:3;28985:67;:::i;:::-;28978:74;;29061:93;29150:3;29061:93;:::i;:::-;29179:2;29174:3;29170:12;29163:19;;28822:366;;;:::o;29194:419::-;29360:4;29398:2;29387:9;29383:18;29375:26;;29447:9;29441:4;29437:20;29433:1;29422:9;29418:17;29411:47;29475:131;29601:4;29475:131;:::i;:::-;29467:139;;29194:419;;;:::o;29619:172::-;29759:24;29755:1;29747:6;29743:14;29736:48;29619:172;:::o;29797:366::-;29939:3;29960:67;30024:2;30019:3;29960:67;:::i;:::-;29953:74;;30036:93;30125:3;30036:93;:::i;:::-;30154:2;30149:3;30145:12;30138:19;;29797:366;;;:::o;30169:419::-;30335:4;30373:2;30362:9;30358:18;30350:26;;30422:9;30416:4;30412:20;30408:1;30397:9;30393:17;30386:47;30450:131;30576:4;30450:131;:::i;:::-;30442:139;;30169:419;;;:::o;30594:176::-;30734:28;30730:1;30722:6;30718:14;30711:52;30594:176;:::o;30776:366::-;30918:3;30939:67;31003:2;30998:3;30939:67;:::i;:::-;30932:74;;31015:93;31104:3;31015:93;:::i;:::-;31133:2;31128:3;31124:12;31117:19;;30776:366;;;:::o;31148:419::-;31314:4;31352:2;31341:9;31337:18;31329:26;;31401:9;31395:4;31391:20;31387:1;31376:9;31372:17;31365:47;31429:131;31555:4;31429:131;:::i;:::-;31421:139;;31148:419;;;:::o;31573:191::-;31613:4;31633:20;31651:1;31633:20;:::i;:::-;31628:25;;31667:20;31685:1;31667:20;:::i;:::-;31662:25;;31706:1;31703;31700:8;31697:34;;;31711:18;;:::i;:::-;31697:34;31756:1;31753;31749:9;31741:17;;31573:191;;;;:::o;31770:442::-;31919:4;31957:2;31946:9;31942:18;31934:26;;31970:71;32038:1;32027:9;32023:17;32014:6;31970:71;:::i;:::-;32051:72;32119:2;32108:9;32104:18;32095:6;32051:72;:::i;:::-;32133;32201:2;32190:9;32186:18;32177:6;32133:72;:::i;:::-;31770:442;;;;;;:::o;32218:143::-;32275:5;32306:6;32300:13;32291:22;;32322:33;32349:5;32322:33;:::i;:::-;32218:143;;;;:::o;32367:351::-;32437:6;32486:2;32474:9;32465:7;32461:23;32457:32;32454:119;;;32492:79;;:::i;:::-;32454:119;32612:1;32637:64;32693:7;32684:6;32673:9;32669:22;32637:64;:::i;:::-;32627:74;;32583:128;32367:351;;;;:::o;32724:85::-;32769:7;32798:5;32787:16;;32724:85;;;:::o;32815:158::-;32873:9;32906:61;32924:42;32933:32;32959:5;32933:32;:::i;:::-;32924:42;:::i;:::-;32906:61;:::i;:::-;32893:74;;32815:158;;;:::o;32979:147::-;33074:45;33113:5;33074:45;:::i;:::-;33069:3;33062:58;32979:147;;:::o;33132:114::-;33199:6;33233:5;33227:12;33217:22;;33132:114;;;:::o;33252:184::-;33351:11;33385:6;33380:3;33373:19;33425:4;33420:3;33416:14;33401:29;;33252:184;;;;:::o;33442:132::-;33509:4;33532:3;33524:11;;33562:4;33557:3;33553:14;33545:22;;33442:132;;;:::o;33580:108::-;33657:24;33675:5;33657:24;:::i;:::-;33652:3;33645:37;33580:108;;:::o;33694:179::-;33763:10;33784:46;33826:3;33818:6;33784:46;:::i;:::-;33862:4;33857:3;33853:14;33839:28;;33694:179;;;;:::o;33879:113::-;33949:4;33981;33976:3;33972:14;33964:22;;33879:113;;;:::o;34028:732::-;34147:3;34176:54;34224:5;34176:54;:::i;:::-;34246:86;34325:6;34320:3;34246:86;:::i;:::-;34239:93;;34356:56;34406:5;34356:56;:::i;:::-;34435:7;34466:1;34451:284;34476:6;34473:1;34470:13;34451:284;;;34552:6;34546:13;34579:63;34638:3;34623:13;34579:63;:::i;:::-;34572:70;;34665:60;34718:6;34665:60;:::i;:::-;34655:70;;34511:224;34498:1;34495;34491:9;34486:14;;34451:284;;;34455:14;34751:3;34744:10;;34152:608;;;34028:732;;;;:::o;34766:831::-;35029:4;35067:3;35056:9;35052:19;35044:27;;35081:71;35149:1;35138:9;35134:17;35125:6;35081:71;:::i;:::-;35162:80;35238:2;35227:9;35223:18;35214:6;35162:80;:::i;:::-;35289:9;35283:4;35279:20;35274:2;35263:9;35259:18;35252:48;35317:108;35420:4;35411:6;35317:108;:::i;:::-;35309:116;;35435:72;35503:2;35492:9;35488:18;35479:6;35435:72;:::i;:::-;35517:73;35585:3;35574:9;35570:19;35561:6;35517:73;:::i;:::-;34766:831;;;;;;;;:::o;35603:807::-;35852:4;35890:3;35879:9;35875:19;35867:27;;35904:71;35972:1;35961:9;35957:17;35948:6;35904:71;:::i;:::-;35985:72;36053:2;36042:9;36038:18;36029:6;35985:72;:::i;:::-;36067:80;36143:2;36132:9;36128:18;36119:6;36067:80;:::i;:::-;36157;36233:2;36222:9;36218:18;36209:6;36157:80;:::i;:::-;36247:73;36315:3;36304:9;36300:19;36291:6;36247:73;:::i;:::-;36330;36398:3;36387:9;36383:19;36374:6;36330:73;:::i;:::-;35603:807;;;;;;;;;:::o;36416:143::-;36473:5;36504:6;36498:13;36489:22;;36520:33;36547:5;36520:33;:::i;:::-;36416:143;;;;:::o;36565:663::-;36653:6;36661;36669;36718:2;36706:9;36697:7;36693:23;36689:32;36686:119;;;36724:79;;:::i;:::-;36686:119;36844:1;36869:64;36925:7;36916:6;36905:9;36901:22;36869:64;:::i;:::-;36859:74;;36815:128;36982:2;37008:64;37064:7;37055:6;37044:9;37040:22;37008:64;:::i;:::-;36998:74;;36953:129;37121:2;37147:64;37203:7;37194:6;37183:9;37179:22;37147:64;:::i;:::-;37137:74;;37092:129;36565:663;;;;;:::o

Swarm Source

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