ETH Price: $2,189.07 (+5.61%)

Token

Messierm100 (M100)
 

Overview

Max Total Supply

1,000,000,000,000 M100

Holders

53

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
chucknasty35.eth
Balance
0.889 M100

Value
$0.00
0x69b6abb47c9a9f4a741bde0e31fee7e1b3e3c73a
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Messierm100

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-26
*/

/**
Millions of miles away in the midst of the Virgo cluster lies M-100. One of the brightest members
 of this group, known as NGC 4321 and the “Mirror Galaxy”. A grand-design spiral star cluster of 
 proportions the human mind can only begin to comprehend. Home to a plethora of black holes, including 
 the youngest ever observed in our cosmic neighbourhood. The new meta of this constellational decentralised ecosystem 
 has at its core privacy, anonymity and security. M-100 takes these values and looks to expand them with its 
 multi-token staking system, advanced trading bot and trading dapp.

 website :- www.messierm100.app
 twitter :- https://twitter.com/messiermission/
 TG :- https://t.me/MessierM100

*/
//SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

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) {
        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) {
        // Solidity only automatically asserts when dividing by 0
        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;
    }
}

/**
 * BEP20 standard interface.
 */
interface IBEP20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

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

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

/**
 * Allows for contract ownership along with multi-address authorization
 */
contract Ownable is Context {
    address private _owner;
    mapping(address => bool) internal authorizations;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function setAuthorize(address adr, bool val) public onlyOwner {
        authorizations[adr] = val;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

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

interface IDEXRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

interface IDividendDistributor {
    function setDistributionCriteria(
        uint256 _minPeriod,
        uint256 _minDistribution
    ) external;

    function setShare(address shareholder, uint256 amount) external;

    function deposit() external payable;

    function process(uint256 gas) external;
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    IBEP20 ETH = IBEP20(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);
    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    IDEXRouter router;

    address[] shareholders;
    mapping(address => uint256) shareholderIndexes;
    mapping(address => uint256) shareholderClaims;

    mapping(address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10**36;

    //SETMEUP, change this to 1 hour instead of 10mins
    uint256 public minPeriod = 30 minutes;
    uint256 public minDistribution = 1 * (10**18);

    uint256 currentIndex;

    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token);
        _;
    }

    constructor(address _router) {
        router = _router != address(0)
            ? IDEXRouter(_router)
            : IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        //0x10ED43C718714eb63d5aA57B78B54704E256024E pancake
        //0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3 Test pcs
        //0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D uniswap v2
        _token = msg.sender;
    }

    function setDistributionCriteria(
        uint256 _minPeriod,
        uint256 _minDistribution
    ) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    function setShare(address shareholder, uint256 amount)
        external
        override
        onlyToken
    {
        if (shares[shareholder].amount > 0) {
            distributeDividend(shareholder);
        }

        if (amount > 0 && shares[shareholder].amount == 0) {
            addShareholder(shareholder);
        } else if (amount == 0 && shares[shareholder].amount > 0) {
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(
            shares[shareholder].amount
        );
    }

    function deposit() external payable override onlyToken {
        uint256 balanceBefore = ETH.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = WETH;
        path[1] = address(ETH);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: msg.value
        }(0, path, address(this), block.timestamp);

        uint256 amount = ETH.balanceOf(address(this)).sub(balanceBefore);

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(
            dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)
        );
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if (shareholderCount == 0) {
            return;
        }

        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        uint256 iterations = 0;

        while (gasUsed < gas && iterations < shareholderCount) {
            if (currentIndex >= shareholderCount) {
                currentIndex = 0;
            }

            if (shouldDistribute(shareholders[currentIndex])) {
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }

    function shouldDistribute(address shareholder)
        internal
        view
        returns (bool)
    {
        return
            shareholderClaims[shareholder] + minPeriod < block.timestamp &&
            getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if (shares[shareholder].amount == 0) {
            return;
        }

        uint256 amount = getUnpaidEarnings(shareholder);
        if (amount > 0) {
            totalDistributed = totalDistributed.add(amount);
            ETH.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder]
                .totalRealised
                .add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(
                shares[shareholder].amount
            );
        }
    }

    function claimDividend() external {
        distributeDividend(msg.sender);
    }

    function getUnpaidEarnings(address shareholder)
        public
        view
        returns (uint256)
    {
        if (shares[shareholder].amount == 0) {
            return 0;
        }

        uint256 shareholderTotalDividends = getCumulativeDividends(
            shares[shareholder].amount
        );
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if (shareholderTotalDividends <= shareholderTotalExcluded) {
            return 0;
        }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share)
        internal
        view
        returns (uint256)
    {
        return
            share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[
            shareholders.length - 1
        ];
        shareholderIndexes[
            shareholders[shareholders.length - 1]
        ] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

interface sERC20AntiBotInterface {
    function checkTransfer(
        uint256 _projectId,
        address _from,
        address _to
    ) external returns (bool);

    function setLpPair(
        uint256 _projectId,
        address _pair,
        bool _active
    ) external;

    function start(uint256 _projectId, uint256 _startBlock) external;
}

contract Messierm100 is IBEP20, Ownable {
    using SafeMath for uint256;

    address ETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    uint256 private sERC20AntiBotProjectId = 3;
    bool private sERC20AntiBotActive = true;
    sERC20AntiBotInterface private sERC20AntiBot;

    string constant _name = "Messierm100";
    string constant _symbol = "M100";
    uint8 constant _decimals = 18;

    uint256 _totalSupply = 1 * 10**12 * (10**_decimals);

    uint256 public _maxTxAmount = _totalSupply;

    //max wallet holding
    uint256 public _maxWalletToken = _totalSupply;

    bool public tradingActive = false;

    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) _allowances;
    mapping(address => bool) public _blackList;

    mapping(address => bool) isFeeExempt;
    mapping(address => bool) isTxLimitExempt;
    mapping(address => bool) isMaxWalletExempt;
    mapping(address => bool) isDividendExempt;

    uint256 public _feeDecimal = 0;
    // fee
    uint256 liquidityFee = 1;
    uint256 reflectionFee = 5;
    uint256 marketingFee = 4;
    uint256 public totalFee = 10;
    uint256 feeDenominator = 100;

    // Fees
    uint256 internal _rewardFeeCollected;
    uint256 internal _liqFeeCollected;
    uint256 internal _marketingFeeCollected;

    address public autoDeadWallet;
    address public marketingFeeReceiver;

    IDEXRouter public router;
    address public pair;

    DividendDistributor distributor;

    uint256 distributorGas = 500000;

    bool public swapEnabled = true;
    uint256 public swapThreshold = (_totalSupply * 10) / 100000000; // 0.01% of supply
    bool inSwap;
    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // Pcs v2 0x10ED43C718714eb63d5aA57B78B54704E256024E
        // UniSwap v2 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        // Ps test v2 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        distributor = new DividendDistributor(address(router));

        isFeeExempt[owner()] = true;
        isTxLimitExempt[owner()] = true;

        // TO DO, manually whitelist this
        //isFeeExempt[_presaleContract] = true;
        //isTxLimitExempt[_presaleContract] = true;
        //isDividendExempt[_presaleContract] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;

        sERC20AntiBot = sERC20AntiBotInterface(
            0x1690a5ED1813bE1FBeefe59b6928cE8A302aA1b6
        );

        // NICE!
        autoDeadWallet = DEAD;
        marketingFeeReceiver = 0xaCA5941C819C60bA8602e4c845029C703B8299e8; // marketing address

        _balances[owner()] = _totalSupply;
        emit Transfer(address(0), owner(), _totalSupply);
    }

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

    function decimals() external pure override returns (uint8) {
        return _decimals;
    }

    function symbol() external pure override returns (string memory) {
        return _symbol;
    }

    function name() external pure override returns (string memory) {
        return _name;
    }

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

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

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount)
        external
        override
        returns (bool)
    {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender]
                .sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function changeAntiBotSettings(bool _status) public onlyOwner {
        sERC20AntiBotActive = _status;
    }

    function enableTrading() public onlyOwner {
        tradingActive = true;

        sERC20AntiBot.start(sERC20AntiBotProjectId, block.number);
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        if (sERC20AntiBotActive) {
            bool checked;
            try
                sERC20AntiBot.checkTransfer(
                    sERC20AntiBotProjectId,
                    sender,
                    recipient
                )
            returns (bool check) {
                checked = check;
            } catch Error(string memory reason) {
                revert(reason);
            }

            if (!checked) {
                revert("Error checking antibot.");
            }
        }

        require(!_blackList[sender], "Address is blackListed");
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        // max wallet code
        if (
            !authorizations[sender] &&
            recipient != address(this) &&
            recipient != address(DEAD) &&
            msg.sender != pair &&
            recipient != marketingFeeReceiver &&
            recipient != autoDeadWallet
        ) {
            require(tradingActive, "Trading is not active yet.");

            uint256 heldTokens = balanceOf(recipient);
            require(
                (heldTokens + amount) <= _maxWalletToken,
                "Total Holding is currently limited, you can not buy that much."
            );
        }

        // Checks max transaction limit
        checkTxLimit(sender, amount);

        // Liquidity, Maintained at 25%
        if (shouldSwapBack()) {
            swapBack();
        }

        uint256 amountReceived;

        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );

        amountReceived = shouldTakeFee(sender)
            ? takeFee(sender, amount)
            : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

        // Dividend tracker
        if (!isDividendExempt[sender]) {
            try distributor.setShare(sender, _balances[sender]) {} catch {}
        }

        if (!isDividendExempt[recipient]) {
            try
                distributor.setShare(recipient, _balances[recipient])
            {} catch {}
        }

        try distributor.process(distributorGas) {} catch {}

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(
            amount <= _maxTxAmount || isTxLimitExempt[sender],
            "TX Limit Exceeded"
        );
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount)
        internal
        returns (uint256)
    {
        uint256 feeAmount = amount.mul(totalFee).div(10**(_feeDecimal + 2));

        uint256 liqFee = amount.mul(liquidityFee).div(10**(_feeDecimal + 2));
        uint256 _marketingFee = amount.mul(marketingFee).div(
            10**(_feeDecimal + 2)
        );
        uint256 rewardFee = amount.mul(reflectionFee).div(
            10**(_feeDecimal + 2)
        );

        _liqFeeCollected = _liqFeeCollected.add(liqFee);
        _marketingFeeCollected = _marketingFeeCollected.add(_marketingFee);
        _rewardFeeCollected = _rewardFeeCollected.add(rewardFee);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return
            msg.sender != pair &&
            !inSwap &&
            swapEnabled &&
            _balances[address(this)] >= swapThreshold;
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        uint256 amountBNB = address(this).balance;
        payable(marketingFeeReceiver).transfer(
            (amountBNB * amountPercentage) / 100
        );
    }

    function swapBack() internal swapping {
        uint256 _totalFee = _liqFeeCollected.add(_marketingFeeCollected).add(
            _rewardFeeCollected
        );

        if (swapThreshold > _totalFee) return;

        uint256 amountToLiquify = _totalFee
            .mul(_liqFeeCollected)
            .div(_totalFee)
            .div(2);
        uint256 amountToSwap = _totalFee.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

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

        uint256 totalBNBFee = _totalFee.sub(_liqFeeCollected.div(2));

        uint256 amountBNBLiquidity = amountBNB
            .mul(_liqFeeCollected)
            .div(totalBNBFee)
            .div(2);
        uint256 amountBNBMarketing = amountBNB.mul(_marketingFeeCollected).div(
            totalBNBFee
        );
        uint256 amountBNBReward = amountBNB.mul(_rewardFeeCollected).div(
            totalBNBFee
        );

        try distributor.deposit{value: amountBNBReward}() {} catch {}

        if (amountBNBMarketing > 0)
            payable(marketingFeeReceiver).transfer(amountBNBMarketing);

        if (amountToLiquify > 0) {
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoDeadWallet,
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, amountToLiquify);
        }

        _liqFeeCollected = 0;
        _marketingFeeCollected = 0;
        _rewardFeeCollected = 0;
    }

    function setIsDividendExempt(address holder, bool exempt)
        external
        onlyOwner
    {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if (exempt) {
            distributor.setShare(holder, 0);
        } else {
            distributor.setShare(holder, _balances[holder]);
        }
    }

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

    function exemptMaxTxAmountAddress(address _address, bool value)
        external
        onlyOwner
    {
        isTxLimitExempt[_address] = value;
    }

    function exemptMaxWalletAmountAddress(address _address, bool value)
        external
        onlyOwner
    {
        isMaxWalletExempt[_address] = value;
    }

    function setMaxWalletAmount(uint256 amount) external onlyOwner {
        _maxWalletToken = amount * (10**_decimals);
    }

    function setMaxTxAmount(uint256 amount) external onlyOwner {
        _maxTxAmount = amount * (10**_decimals);
    }

    function setFees(
        uint256 _liquidityFee,
        uint256 _reflectionFee,
        uint256 _marketingFee
    ) external onlyOwner {
        liquidityFee = _liquidityFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;

        totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee);
    }

    function setFeeReceivers(
        address _autoDeadWallet,
        address _marketingFeeReceiver
    ) external onlyOwner {
        autoDeadWallet = _autoDeadWallet;
        marketingFeeReceiver = _marketingFeeReceiver;
    }

    function setSwapBackSettings(uint256 _amount) external onlyOwner {
        swapThreshold = _amount;
    }

    function setSwapEnabled(bool _enable) external onlyOwner {
        swapEnabled = _enable;
    }

    function setDistributionCriteria(
        uint256 _minPeriod,
        uint256 _minDistribution
    ) external onlyOwner {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    function setDistributorSettings(uint256 gas) external onlyOwner {
        require(gas < 750000);
        distributorGas = gas;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function setBlackList(address add, bool value) external onlyOwner {
        _blackList[add] = value;
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

API
[{"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":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","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":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":"","type":"address"}],"name":"_blackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeDecimal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoDeadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"changeAntiBotSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"exemptMaxTxAmountAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"exemptMaxWalletAmountAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"},{"internalType":"bool","name":"val","type":"bool"}],"name":"setAuthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"add","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoDeadWallet","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","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":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060036006556001600760006101000a81548160ff0219169083151502179055506012600a62000163919062000c1e565b64e8d4a5100062000175919062000d5b565b600855600854600955600854600a556000600b60006101000a81548160ff0219169083151502179055506000601355600160145560056015556004601655600a60175560646018556207a1206021556001602260006101000a81548160ff0219169083151502179055506305f5e100600a600854620001f5919062000d5b565b62000201919062000b8b565b6023553480156200021157600080fd5b5060006200022462000a8060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003f857600080fd5b505afa1580156200040d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000433919062000ad6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200049192919062000b41565b602060405180830381600087803b158015620004ac57600080fd5b505af1158015620004c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e7919062000ad6565b601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200061b9062000ab1565b62000627919062000b24565b604051809103906000f08015801562000644573d6000803e3d6000fd5b50602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f60006200069b62000a8860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060006200070262000a8860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550731690a5ed1813be1fbeefe59b6928ce8a302aa1b6600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073aca5941c819c60ba8602e4c845029c703b8299e8601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600854600c6000620009c362000a8860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000a1162000a8860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60085460405162000a72919062000b6e565b60405180910390a362000e8c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6120db8062005c3383390190565b60008151905062000ad08162000e72565b92915050565b60006020828403121562000ae957600080fd5b600062000af98482850162000abf565b91505092915050565b62000b0d8162000dbc565b82525050565b62000b1e8162000df0565b82525050565b600060208201905062000b3b600083018462000b02565b92915050565b600060408201905062000b58600083018562000b02565b62000b67602083018462000b02565b9392505050565b600060208201905062000b85600083018462000b13565b92915050565b600062000b988262000df0565b915062000ba58362000df0565b92508262000bb85762000bb762000e36565b5b828204905092915050565b6000808291508390505b600185111562000c155780860481111562000bed5762000bec62000e07565b5b600185161562000bfd5780820291505b808102905062000c0d8562000e65565b945062000bcd565b94509492505050565b600062000c2b8262000df0565b915062000c388362000dfa565b925062000c677fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c6f565b905092915050565b60008262000c81576001905062000d54565b8162000c91576000905062000d54565b816001811462000caa576002811462000cb55762000ceb565b600191505062000d54565b60ff84111562000cca5762000cc962000e07565b5b8360020a91508482111562000ce45762000ce362000e07565b5b5062000d54565b5060208310610133831016604e8410600b841016171562000d255782820a90508381111562000d1f5762000d1e62000e07565b5b62000d54565b62000d34848484600162000bc3565b9250905081840481111562000d4e5762000d4d62000e07565b5b81810290505b9392505050565b600062000d688262000df0565b915062000d758362000df0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000db15762000db062000e07565b5b828202905092915050565b600062000dc98262000dd0565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008160011c9050919050565b62000e7d8162000dbc565b811462000e8957600080fd5b50565b614d978062000e9c6000396000f3fe6080604052600436106102605760003560e01c8063715018a611610144578063aaeac158116100b6578063e0ff58961161007a578063e0ff5896146108df578063e96fada214610908578063ec28438a14610933578063f2fde38b1461095c578063f708a64f14610985578063f887ea40146109ae57610267565b8063aaeac158146107fc578063bbc0c74214610825578063cec10c1114610850578063dd62ed3e14610879578063e01af92c146108b657610267565b80638da5cb5b116101085780638da5cb5b146106ec57806395d89b41146107175780639d1944f514610742578063a4b45c001461076b578063a8aa1b3114610794578063a9059cbb146107bf57610267565b8063715018a61461063f57806378109e5414610656578063796431d0146106815780637d1db4a5146106aa5780638a8c523c146106d557610267565b80632b112e49116101dd578063571ac8b0116101a1578063571ac8b01461050b578063595dec3c14610548578063658d4b7f1461058557806368092bd9146105ae5780636ddd1713146105d757806370a082311461060257610267565b80632b112e49146104385780632d48e89614610463578063313ce5671461048c5780633cb268aa146104b7578063442e41b5146104e257610267565b806319db457d1161022457806319db457d146103535780631da1db5e1461037e5780631df4ccfc146103a757806323b872dd146103d257806327a14fc21461040f57610267565b80630445b6671461026c57806306fdde0314610297578063095ea7b3146102c25780631292638a146102ff57806318160ddd1461032857610267565b3661026757005b600080fd5b34801561027857600080fd5b506102816109d9565b60405161028e91906144ba565b60405180910390f35b3480156102a357600080fd5b506102ac6109df565b6040516102b99190614378565b60405180910390f35b3480156102ce57600080fd5b506102e960048036038101906102e49190613e90565b610a1c565b6040516102f69190614342565b60405180910390f35b34801561030b57600080fd5b5061032660048036038101906103219190613ecc565b610b0e565b005b34801561033457600080fd5b5061033d610bc0565b60405161034a91906144ba565b60405180910390f35b34801561035f57600080fd5b50610368610bca565b60405161037591906144ba565b60405180910390f35b34801561038a57600080fd5b506103a560048036038101906103a09190613f1e565b610bd0565b005b3480156103b357600080fd5b506103bc610cee565b6040516103c991906144ba565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f49190613e05565b610cf4565b6040516104069190614342565b60405180910390f35b34801561041b57600080fd5b5061043660048036038101906104319190613f1e565b610ef4565b005b34801561044457600080fd5b5061044d610fab565b60405161045a91906144ba565b60405180910390f35b34801561046f57600080fd5b5061048a60048036038101906104859190613f47565b61102d565b005b34801561049857600080fd5b506104a1611155565b6040516104ae919061458f565b60405180910390f35b3480156104c357600080fd5b506104cc61115e565b6040516104d99190614274565b60405180910390f35b3480156104ee57600080fd5b5061050960048036038101906105049190613e54565b611184565b005b34801561051757600080fd5b50610532600480360381019061052d9190613d77565b611274565b60405161053f9190614342565b60405180910390f35b34801561055457600080fd5b5061056f600480360381019061056a9190613d77565b6112a7565b60405161057c9190614342565b60405180910390f35b34801561059157600080fd5b506105ac60048036038101906105a79190613e54565b6112c7565b005b3480156105ba57600080fd5b506105d560048036038101906105d09190613e54565b6113b7565b005b3480156105e357600080fd5b506105ec6114a7565b6040516105f99190614342565b60405180910390f35b34801561060e57600080fd5b5061062960048036038101906106249190613d77565b6114ba565b60405161063691906144ba565b60405180910390f35b34801561064b57600080fd5b50610654611503565b005b34801561066257600080fd5b5061066b611656565b60405161067891906144ba565b60405180910390f35b34801561068d57600080fd5b506106a860048036038101906106a39190613f1e565b61165c565b005b3480156106b657600080fd5b506106bf6116fb565b6040516106cc91906144ba565b60405180910390f35b3480156106e157600080fd5b506106ea611701565b005b3480156106f857600080fd5b50610701611844565b60405161070e9190614274565b60405180910390f35b34801561072357600080fd5b5061072c61186d565b6040516107399190614378565b60405180910390f35b34801561074e57600080fd5b5061076960048036038101906107649190613f1e565b6118aa565b005b34801561077757600080fd5b50610792600480360381019061078d9190613dc9565b611958565b005b3480156107a057600080fd5b506107a9611a73565b6040516107b69190614274565b60405180910390f35b3480156107cb57600080fd5b506107e660048036038101906107e19190613e90565b611a99565b6040516107f39190614342565b60405180910390f35b34801561080857600080fd5b50610823600480360381019061081e9190613e54565b611aae565b005b34801561083157600080fd5b5061083a611b9e565b6040516108479190614342565b60405180910390f35b34801561085c57600080fd5b5061087760048036038101906108729190613f83565b611bb1565b005b34801561088557600080fd5b506108a0600480360381019061089b9190613dc9565b611c8b565b6040516108ad91906144ba565b60405180910390f35b3480156108c257600080fd5b506108dd60048036038101906108d89190613ecc565b611d12565b005b3480156108eb57600080fd5b5061090660048036038101906109019190613e54565b611dc4565b005b34801561091457600080fd5b5061091d611eb4565b60405161092a9190614274565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190613f1e565b611eda565b005b34801561096857600080fd5b50610983600480360381019061097e9190613d77565b611f91565b005b34801561099157600080fd5b506109ac60048036038101906109a79190613e54565b612153565b005b3480156109ba57600080fd5b506109c3612440565b6040516109d0919061435d565b60405180910390f35b60235481565b60606040518060400160405280600b81526020017f4d6573736965726d313030000000000000000000000000000000000000000000815250905090565b600081600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610afc91906144ba565b60405180910390a36001905092915050565b610b16612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9a9061443a565b60405180910390fd5b80600760006101000a81548160ff02191690831515021790555050565b6000600854905090565b60135481565b610bd8612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5c9061443a565b60405180910390fd5b6000479050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60648484610cb4919061484c565b610cbe919061465f565b9081150290604051600060405180830381858888f19350505050158015610ce9573d6000803e3d6000fd5b505050565b60175481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ee057610e5f826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246e9092919063ffffffff16565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610eeb8484846124d2565b90509392505050565b610efc612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f809061443a565b60405180910390fd5b6012600a610f97919061472e565b81610fa2919061484c565b600a8190555050565b6000611028610fdb600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114ba565b61101a611009600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114ba565b600854612e9490919063ffffffff16565b612e9490919063ffffffff16565b905090565b611035612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b99061443a565b60405180910390fd5b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b815260040161111f929190614566565b600060405180830381600087803b15801561113957600080fd5b505af115801561114d573d6000803e3d6000fd5b505050505050565b60006012905090565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61118c612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611219576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112109061443a565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006112a0827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610a1c565b9050919050565b600e6020528060005260406000206000915054906101000a900460ff1681565b6112cf612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113539061443a565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6113bf612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461144c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114439061443a565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602260009054906101000a900460ff1681565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61150b612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158f9061443a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600a5481565b611664612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e89061443a565b60405180910390fd5b8060238190555050565b60095481565b611709612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d9061443a565b60405180910390fd5b6001600b60006101000a81548160ff021916908315150217905550600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638fb4b573600654436040518363ffffffff1660e01b8152600401611810929190614566565b600060405180830381600087803b15801561182a57600080fd5b505af115801561183e573d6000803e3d6000fd5b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4d31303000000000000000000000000000000000000000000000000000000000815250905090565b6118b2612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461193f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119369061443a565b60405180910390fd5b620b71b0811061194e57600080fd5b8060218190555050565b611960612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e49061443a565b60405180910390fd5b81601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611aa63384846124d2565b905092915050565b611ab6612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3a9061443a565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b60009054906101000a900460ff1681565b611bb9612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3d9061443a565b60405180910390fd5b826014819055508160158190555080601681905550611c8081611c728486612ede90919063ffffffff16565b612ede90919063ffffffff16565b601781905550505050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611d1a612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9e9061443a565b60405180910390fd5b80602260006101000a81548160ff02191690831515021790555050565b611dcc612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e509061443a565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ee2612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f669061443a565b60405180910390fd5b6012600a611f7d919061472e565b81611f88919061484c565b60098190555050565b611f99612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612026576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201d9061443a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208d906143ba565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61215b612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121df9061443a565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156122725750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61227b57600080fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561236d57602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b815260040161233692919061428f565b600060405180830381600087803b15801561235057600080fd5b505af1158015612364573d6000803e3d6000fd5b5050505061243c565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016124099291906142b8565b600060405180830381600087803b15801561242357600080fd5b505af1158015612437573d6000803e3d6000fd5b505050505b5050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b60008383111582906124b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ad9190614378565b60405180910390fd5b50600083856124c591906148a6565b9050809150509392505050565b6000600760009054906101000a900460ff1615612652576000600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eeb9ed7e60065487876040518463ffffffff1660e01b815260040161254c939291906144d5565b602060405180830381600087803b15801561256657600080fd5b505af192505050801561259757506040513d601f19601f820116820180604052508101906125949190613ef5565b60015b61260c576125a3614a56565b806308c379a0141561260057506125b8614c86565b806125c35750612602565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f79190614378565b60405180910390fd5b505b3d6000803e3d6000fd5b8091505080612650576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612647906143fa565b60405180910390fd5b505b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156126df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d69061447a565b60405180910390fd5b602460009054906101000a900460ff1615612706576126ff848484612f3c565b9050612e8d565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561278c57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156127e65750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156128405750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b801561289a5750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156128f45750601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156129a757600b60009054906101000a900460ff16612948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293f9061449a565b60405180910390fd5b6000612953846114ba565b9050600a5483826129649190614609565b11156129a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299c9061445a565b60405180910390fd5b505b6129b1848361310f565b6129b96131ac565b156129c7576129c6613283565b5b6000612a52836040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246e9092919063ffffffff16565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a9e856138fb565b612aa85782612ab3565b612ab28584613952565b5b9050612b0781600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ede90919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c6d57602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612c379291906142b8565b600060405180830381600087803b158015612c5157600080fd5b505af1925050508015612c62575060015b612c6b57612c6c565b5b5b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d9057602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612d5a9291906142b8565b600060405180830381600087803b158015612d7457600080fd5b505af1925050508015612d85575060015b612d8e57612d8f565b5b5b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796021546040518263ffffffff1660e01b8152600401612ded91906144ba565b600060405180830381600087803b158015612e0757600080fd5b505af1925050508015612e18575060015b612e2157612e22565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e7f91906144ba565b60405180910390a360019150505b9392505050565b6000612ed683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061246e565b905092915050565b6000808284612eed9190614609565b905083811015612f32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f29906143da565b60405180910390fd5b8091505092915050565b6000612fc7826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246e9092919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061305c82600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ede90919063ffffffff16565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130fc91906144ba565b60405180910390a3600190509392505050565b600954811115806131695750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6131a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319f9061439a565b60405180910390fd5b5050565b6000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156132195750602460009054906101000a900460ff16155b80156132315750602260009054906101000a900460ff165b801561327e5750602354600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602460006101000a81548160ff02191690831515021790555060006132cb6019546132bd601b54601a54612ede90919063ffffffff16565b612ede90919063ffffffff16565b90508060235411156132dd57506138de565b6000613319600261330b846132fd601a5487613bd190919063ffffffff16565b613c4c90919063ffffffff16565b613c4c90919063ffffffff16565b905060006133308284612e9490919063ffffffff16565b90506000600267ffffffffffffffff811115613375577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156133a35781602001602082028036833780820191505090505b50905030816000815181106133e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561348357600080fd5b505afa158015613497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134bb9190613da0565b816001815181106134f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040161359895949392919061450c565b600060405180830381600087803b1580156135b257600080fd5b505af11580156135c6573d6000803e3d6000fd5b5050505060006135df8247612e9490919063ffffffff16565b9050600061360b6135fc6002601a54613c4c90919063ffffffff16565b88612e9490919063ffffffff16565b90506000613649600261363b8461362d601a5488613bd190919063ffffffff16565b613c4c90919063ffffffff16565b613c4c90919063ffffffff16565b9050600061367483613666601b5487613bd190919063ffffffff16565b613c4c90919063ffffffff16565b9050600061369f8461369160195488613bd190919063ffffffff16565b613c4c90919063ffffffff16565b9050602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561370b57600080fd5b505af19350505050801561371d575060015b61372657613727565b5b600082111561379a57601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613798573d6000803e3d6000fd5b505b60008911156138bb57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308c600080601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161382c969594939291906142e1565b6060604051808303818588803b15801561384557600080fd5b505af1158015613859573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061387e9190613fd2565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a6040516138b2929190614566565b60405180910390a15b6000601a819055506000601b819055506000601981905550505050505050505050505b6000602460006101000a81548160ff021916908315150217905550565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008061399660026013546139679190614609565b600a61397391906146e3565b61398860175486613bd190919063ffffffff16565b613c4c90919063ffffffff16565b905060006139db60026013546139ac9190614609565b600a6139b891906146e3565b6139cd60145487613bd190919063ffffffff16565b613c4c90919063ffffffff16565b90506000613a2060026013546139f19190614609565b600a6139fd91906146e3565b613a1260165488613bd190919063ffffffff16565b613c4c90919063ffffffff16565b90506000613a656002601354613a369190614609565b600a613a4291906146e3565b613a5760155489613bd190919063ffffffff16565b613c4c90919063ffffffff16565b9050613a7c83601a54612ede90919063ffffffff16565b601a81905550613a9782601b54612ede90919063ffffffff16565b601b81905550613ab281601954612ede90919063ffffffff16565b601981905550613b0a84600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ede90919063ffffffff16565b600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613baa91906144ba565b60405180910390a3613bc58487612e9490919063ffffffff16565b94505050505092915050565b600080831415613be45760009050613c46565b60008284613bf2919061484c565b9050828482613c01919061465f565b14613c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c389061441a565b60405180910390fd5b809150505b92915050565b6000613c8e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c96565b905092915050565b60008083118290613cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cd49190614378565b60405180910390fd5b5060008385613cec919061465f565b9050809150509392505050565b600081359050613d0881614d1c565b92915050565b600081519050613d1d81614d1c565b92915050565b600081359050613d3281614d33565b92915050565b600081519050613d4781614d33565b92915050565b600081359050613d5c81614d4a565b92915050565b600081519050613d7181614d4a565b92915050565b600060208284031215613d8957600080fd5b6000613d9784828501613cf9565b91505092915050565b600060208284031215613db257600080fd5b6000613dc084828501613d0e565b91505092915050565b60008060408385031215613ddc57600080fd5b6000613dea85828601613cf9565b9250506020613dfb85828601613cf9565b9150509250929050565b600080600060608486031215613e1a57600080fd5b6000613e2886828701613cf9565b9350506020613e3986828701613cf9565b9250506040613e4a86828701613d4d565b9150509250925092565b60008060408385031215613e6757600080fd5b6000613e7585828601613cf9565b9250506020613e8685828601613d23565b9150509250929050565b60008060408385031215613ea357600080fd5b6000613eb185828601613cf9565b9250506020613ec285828601613d4d565b9150509250929050565b600060208284031215613ede57600080fd5b6000613eec84828501613d23565b91505092915050565b600060208284031215613f0757600080fd5b6000613f1584828501613d38565b91505092915050565b600060208284031215613f3057600080fd5b6000613f3e84828501613d4d565b91505092915050565b60008060408385031215613f5a57600080fd5b6000613f6885828601613d4d565b9250506020613f7985828601613d4d565b9150509250929050565b600080600060608486031215613f9857600080fd5b6000613fa686828701613d4d565b9350506020613fb786828701613d4d565b9250506040613fc886828701613d4d565b9150509250925092565b600080600060608486031215613fe757600080fd5b6000613ff586828701613d62565b935050602061400686828701613d62565b925050604061401786828701613d62565b9150509250925092565b600061402d8383614039565b60208301905092915050565b614042816148da565b82525050565b614051816148da565b82525050565b6000614062826145c4565b61406c81856145e7565b9350614077836145b4565b8060005b838110156140a857815161408f8882614021565b975061409a836145da565b92505060018101905061407b565b5085935050505092915050565b6140be816148ec565b82525050565b6140cd8161492f565b82525050565b6140dc81614953565b82525050565b60006140ed826145cf565b6140f781856145f8565b9350614107818560208601614965565b61411081614a78565b840191505092915050565b60006141286011836145f8565b915061413382614aa3565b602082019050919050565b600061414b6026836145f8565b915061415682614acc565b604082019050919050565b600061416e601b836145f8565b915061417982614b1b565b602082019050919050565b60006141916017836145f8565b915061419c82614b44565b602082019050919050565b60006141b46021836145f8565b91506141bf82614b6d565b604082019050919050565b60006141d76020836145f8565b91506141e282614bbc565b602082019050919050565b60006141fa603e836145f8565b915061420582614be5565b604082019050919050565b600061421d6016836145f8565b915061422882614c34565b602082019050919050565b6000614240601a836145f8565b915061424b82614c5d565b602082019050919050565b61425f81614918565b82525050565b61426e81614922565b82525050565b60006020820190506142896000830184614048565b92915050565b60006040820190506142a46000830185614048565b6142b160208301846140d3565b9392505050565b60006040820190506142cd6000830185614048565b6142da6020830184614256565b9392505050565b600060c0820190506142f66000830189614048565b6143036020830188614256565b61431060408301876140d3565b61431d60608301866140d3565b61432a6080830185614048565b61433760a0830184614256565b979650505050505050565b600060208201905061435760008301846140b5565b92915050565b600060208201905061437260008301846140c4565b92915050565b6000602082019050818103600083015261439281846140e2565b905092915050565b600060208201905081810360008301526143b38161411b565b9050919050565b600060208201905081810360008301526143d38161413e565b9050919050565b600060208201905081810360008301526143f381614161565b9050919050565b6000602082019050818103600083015261441381614184565b9050919050565b60006020820190508181036000830152614433816141a7565b9050919050565b60006020820190508181036000830152614453816141ca565b9050919050565b60006020820190508181036000830152614473816141ed565b9050919050565b6000602082019050818103600083015261449381614210565b9050919050565b600060208201905081810360008301526144b381614233565b9050919050565b60006020820190506144cf6000830184614256565b92915050565b60006060820190506144ea6000830186614256565b6144f76020830185614048565b6145046040830184614048565b949350505050565b600060a0820190506145216000830188614256565b61452e60208301876140d3565b81810360408301526145408186614057565b905061454f6060830185614048565b61455c6080830184614256565b9695505050505050565b600060408201905061457b6000830185614256565b6145886020830184614256565b9392505050565b60006020820190506145a46000830184614265565b92915050565b6000604051905090565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061461482614918565b915061461f83614918565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614654576146536149c9565b5b828201905092915050565b600061466a82614918565b915061467583614918565b925082614685576146846149f8565b5b828204905092915050565b6000808291508390505b60018511156146da578086048111156146b6576146b56149c9565b5b60018516156146c55780820291505b80810290506146d385614a89565b945061469a565b94509492505050565b60006146ee82614918565b91506146f983614918565b92506147267fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614779565b905092915050565b600061473982614918565b915061474483614922565b92506147717fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614779565b905092915050565b6000826147895760019050614845565b816147975760009050614845565b81600181146147ad57600281146147b7576147e6565b6001915050614845565b60ff8411156147c9576147c86149c9565b5b8360020a9150848211156147e0576147df6149c9565b5b50614845565b5060208310610133831016604e8410600b841016171561481b5782820a905083811115614816576148156149c9565b5b614845565b6148288484846001614690565b9250905081840481111561483f5761483e6149c9565b5b81810290505b9392505050565b600061485782614918565b915061486283614918565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561489b5761489a6149c9565b5b828202905092915050565b60006148b182614918565b91506148bc83614918565b9250828210156148cf576148ce6149c9565b5b828203905092915050565b60006148e5826148f8565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061493a82614941565b9050919050565b600061494c826148f8565b9050919050565b600061495e82614918565b9050919050565b60005b83811015614983578082015181840152602081019050614968565b83811115614992576000848401525b50505050565b6149a182614a78565b810181811067ffffffffffffffff821117156149c0576149bf614a27565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115614a755760046000803e614a72600051614a96565b90505b90565b6000601f19601f8301169050919050565b60008160011c9050919050565b60008160e01c9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4572726f7220636865636b696e6720616e7469626f742e000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b7f4164647265737320697320626c61636b4c697374656400000000000000000000600082015250565b7f54726164696e67206973206e6f7420616374697665207965742e000000000000600082015250565b600060443d1015614c9657614d19565b614c9e6145aa565b60043d036004823e80513d602482011167ffffffffffffffff82111715614cc6575050614d19565b808201805167ffffffffffffffff811115614ce45750505050614d19565b80602083010160043d038501811115614d01575050505050614d19565b614d1082602001850186614998565b82955050505050505b90565b614d25816148da565b8114614d3057600080fd5b50565b614d3c816148ec565b8114614d4757600080fd5b50565b614d5381614918565b8114614d5e57600080fd5b5056fea2646970667358221220d3e502314f702cd971cc9890233524e85577cf1a50c1dfff772fe96f50171a2064736f6c63430008040033608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55610708600d55670de0b6b3a7640000600e55348015620000e057600080fd5b50604051620020db380380620020db8339818101604052810190620001069190620001f7565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156200015757737a250d5630b4cf539739df2c5dacb4c659f2488d62000159565b805b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000271565b600081519050620001f18162000257565b92915050565b6000602082840312156200020a57600080fd5b60006200021a84828501620001e0565b91505092915050565b6000620002308262000237565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b620002628162000223565b81146200026e57600080fd5b50565b611e5a80620002816000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610291578063f0fc6bca146102bc578063ffb2c479146102d3578063ffd49c84146102fc576100dd565b8063ce7c2ac21461021d578063d0e30db01461025c578063e2d2e21914610266576100dd565b80632d48e896116100bb5780632d48e896146101735780633a98ef391461019c5780634fab0ae8146101c7578063997664d7146101f2576100dd565b806311ce023d146100e257806314b6ca961461010d57806328fd319814610136575b600080fd5b3480156100ee57600080fd5b506100f7610327565b6040516101049190611a66565b60405180910390f35b34801561011957600080fd5b50610134600480360381019061012f9190611750565b61032d565b005b34801561014257600080fd5b5061015d60048036038101906101589190611727565b6105ec565b60405161016a9190611a66565b60405180910390f35b34801561017f57600080fd5b5061019a60048036038101906101959190611807565b610706565b005b3480156101a857600080fd5b506101b1610770565b6040516101be9190611a66565b60405180910390f35b3480156101d357600080fd5b506101dc610776565b6040516101e99190611a66565b60405180910390f35b3480156101fe57600080fd5b5061020761077c565b6040516102149190611a66565b60405180910390f35b34801561022957600080fd5b50610244600480360381019061023f9190611727565b610782565b60405161025393929190611a81565b60405180910390f35b6102646107ac565b005b34801561027257600080fd5b5061027b610c0e565b6040516102889190611a66565b60405180910390f35b34801561029d57600080fd5b506102a6610c14565b6040516102b39190611a66565b60405180910390f35b3480156102c857600080fd5b506102d1610c1a565b005b3480156102df57600080fd5b506102fa60048036038101906102f591906117b5565b610c25565b005b34801561030857600080fd5b50610311610e05565b60405161031e9190611a66565b60405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461038557600080fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156103da576103d982610e0b565b5b60008111801561042c57506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b1561043f5761043a826110b2565b6104a1565b60008114801561049157506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156104a05761049f82611161565b5b5b61050a816104fc600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015460085461140090919063ffffffff16565b61144a90919063ffffffff16565b60088190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506105a2600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546114a8565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156106415760009050610701565b600061068e600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546114a8565b90506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116106e957600092505050610701565b6106fc818361140090919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461075e57600080fd5b81600d8190555080600e819055505050565b60085481565b600e5481565b60095481565b60076020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461080457600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108619190611974565b60206040518083038186803b15801561087957600080fd5b505afa15801561088d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b191906117de565b90506000600267ffffffffffffffff8111156108f6577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156109245781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600081518110610984577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610a1b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b8152600401610ab894939291906119b8565b6000604051808303818588803b158015610ad157600080fd5b505af1158015610ae5573d6000803e3d6000fd5b50505050506000610ba983600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b4b9190611974565b60206040518083038186803b158015610b6357600080fd5b505afa158015610b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9b91906117de565b61140090919063ffffffff16565b9050610bc08160095461144a90919063ffffffff16565b600981905550610c03610bf2600854610be484600c546114da90919063ffffffff16565b61155590919063ffffffff16565b600b5461144a90919063ffffffff16565b600b81905550505050565b600b5481565b600a5481565b610c2333610e0b565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c7d57600080fd5b600060048054905090506000811415610c965750610e02565b6000805a905060005b8483108015610cad57508381105b15610dfd5783600f5410610cc4576000600f819055505b610d336004600f5481548110610d03577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661159f565b15610da857610da76004600f5481548110610d77577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e0b565b5b610dcd610dbe5a8461140090919063ffffffff16565b8461144a90919063ffffffff16565b92505a9150600f6000815480929190610de590611caf565b91905055508080610df590611caf565b915050610c9f565b505050505b50565b600d5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610e5b576110af565b6000610e66826105ec565b905060008111156110ad57610e8681600a5461144a90919063ffffffff16565b600a81905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610ee992919061198f565b602060405180830381600087803b158015610f0357600080fd5b505af1158015610f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3b919061178c565b5042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fd581600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461144a90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611066600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546114a8565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600480549050600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460016004805490506111759190611bee565b815481106111ac577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110611250577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460056000600460016004805490506112f09190611bee565b81548110611327577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060048054806113c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600061144283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061160c565b905092915050565b60008082846114599190611b0d565b90508381101561149e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149590611a26565b60405180910390fd5b8091505092915050565b60006114d3600c546114c5600b54856114da90919063ffffffff16565b61155590919063ffffffff16565b9050919050565b6000808314156114ed576000905061154f565b600082846114fb9190611b94565b905082848261150a9190611b63565b1461154a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154190611a46565b60405180910390fd5b809150505b92915050565b600061159783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611670565b905092915050565b600042600d54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115ef9190611b0d565b1080156116055750600e54611603836105ec565b115b9050919050565b6000838311158290611654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164b9190611a04565b60405180910390fd5b50600083856116639190611bee565b9050809150509392505050565b600080831182906116b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ae9190611a04565b60405180910390fd5b50600083856116c69190611b63565b9050809150509392505050565b6000813590506116e281611ddf565b92915050565b6000815190506116f781611df6565b92915050565b60008135905061170c81611e0d565b92915050565b60008151905061172181611e0d565b92915050565b60006020828403121561173957600080fd5b6000611747848285016116d3565b91505092915050565b6000806040838503121561176357600080fd5b6000611771858286016116d3565b9250506020611782858286016116fd565b9150509250929050565b60006020828403121561179e57600080fd5b60006117ac848285016116e8565b91505092915050565b6000602082840312156117c757600080fd5b60006117d5848285016116fd565b91505092915050565b6000602082840312156117f057600080fd5b60006117fe84828501611712565b91505092915050565b6000806040838503121561181a57600080fd5b6000611828858286016116fd565b9250506020611839858286016116fd565b9150509250929050565b600061184f838361185b565b60208301905092915050565b61186481611c22565b82525050565b61187381611c22565b82525050565b600061188482611ac8565b61188e8185611aeb565b935061189983611ab8565b8060005b838110156118ca5781516118b18882611843565b97506118bc83611ade565b92505060018101905061189d565b5085935050505092915050565b6118e081611c6a565b82525050565b60006118f182611ad3565b6118fb8185611afc565b935061190b818560208601611c7c565b61191481611d56565b840191505092915050565b600061192c601b83611afc565b915061193782611d67565b602082019050919050565b600061194f602183611afc565b915061195a82611d90565b604082019050919050565b61196e81611c60565b82525050565b6000602082019050611989600083018461186a565b92915050565b60006040820190506119a4600083018561186a565b6119b16020830184611965565b9392505050565b60006080820190506119cd60008301876118d7565b81810360208301526119df8186611879565b90506119ee604083018561186a565b6119fb6060830184611965565b95945050505050565b60006020820190508181036000830152611a1e81846118e6565b905092915050565b60006020820190508181036000830152611a3f8161191f565b9050919050565b60006020820190508181036000830152611a5f81611942565b9050919050565b6000602082019050611a7b6000830184611965565b92915050565b6000606082019050611a966000830186611965565b611aa36020830185611965565b611ab06040830184611965565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611b1882611c60565b9150611b2383611c60565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611b5857611b57611cf8565b5b828201905092915050565b6000611b6e82611c60565b9150611b7983611c60565b925082611b8957611b88611d27565b5b828204905092915050565b6000611b9f82611c60565b9150611baa83611c60565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611be357611be2611cf8565b5b828202905092915050565b6000611bf982611c60565b9150611c0483611c60565b925082821015611c1757611c16611cf8565b5b828203905092915050565b6000611c2d82611c40565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611c7582611c60565b9050919050565b60005b83811015611c9a578082015181840152602081019050611c7f565b83811115611ca9576000848401525b50505050565b6000611cba82611c60565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611ced57611cec611cf8565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b611de881611c22565b8114611df357600080fd5b50565b611dff81611c34565b8114611e0a57600080fd5b50565b611e1681611c60565b8114611e2157600080fd5b5056fea2646970667358221220855d178afa72d27a93a15b465fc2b8db0f5ca0a4a759dfaf287af3a7b6feb5f664736f6c63430008040033

Deployed Bytecode

0x6080604052600436106102605760003560e01c8063715018a611610144578063aaeac158116100b6578063e0ff58961161007a578063e0ff5896146108df578063e96fada214610908578063ec28438a14610933578063f2fde38b1461095c578063f708a64f14610985578063f887ea40146109ae57610267565b8063aaeac158146107fc578063bbc0c74214610825578063cec10c1114610850578063dd62ed3e14610879578063e01af92c146108b657610267565b80638da5cb5b116101085780638da5cb5b146106ec57806395d89b41146107175780639d1944f514610742578063a4b45c001461076b578063a8aa1b3114610794578063a9059cbb146107bf57610267565b8063715018a61461063f57806378109e5414610656578063796431d0146106815780637d1db4a5146106aa5780638a8c523c146106d557610267565b80632b112e49116101dd578063571ac8b0116101a1578063571ac8b01461050b578063595dec3c14610548578063658d4b7f1461058557806368092bd9146105ae5780636ddd1713146105d757806370a082311461060257610267565b80632b112e49146104385780632d48e89614610463578063313ce5671461048c5780633cb268aa146104b7578063442e41b5146104e257610267565b806319db457d1161022457806319db457d146103535780631da1db5e1461037e5780631df4ccfc146103a757806323b872dd146103d257806327a14fc21461040f57610267565b80630445b6671461026c57806306fdde0314610297578063095ea7b3146102c25780631292638a146102ff57806318160ddd1461032857610267565b3661026757005b600080fd5b34801561027857600080fd5b506102816109d9565b60405161028e91906144ba565b60405180910390f35b3480156102a357600080fd5b506102ac6109df565b6040516102b99190614378565b60405180910390f35b3480156102ce57600080fd5b506102e960048036038101906102e49190613e90565b610a1c565b6040516102f69190614342565b60405180910390f35b34801561030b57600080fd5b5061032660048036038101906103219190613ecc565b610b0e565b005b34801561033457600080fd5b5061033d610bc0565b60405161034a91906144ba565b60405180910390f35b34801561035f57600080fd5b50610368610bca565b60405161037591906144ba565b60405180910390f35b34801561038a57600080fd5b506103a560048036038101906103a09190613f1e565b610bd0565b005b3480156103b357600080fd5b506103bc610cee565b6040516103c991906144ba565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f49190613e05565b610cf4565b6040516104069190614342565b60405180910390f35b34801561041b57600080fd5b5061043660048036038101906104319190613f1e565b610ef4565b005b34801561044457600080fd5b5061044d610fab565b60405161045a91906144ba565b60405180910390f35b34801561046f57600080fd5b5061048a60048036038101906104859190613f47565b61102d565b005b34801561049857600080fd5b506104a1611155565b6040516104ae919061458f565b60405180910390f35b3480156104c357600080fd5b506104cc61115e565b6040516104d99190614274565b60405180910390f35b3480156104ee57600080fd5b5061050960048036038101906105049190613e54565b611184565b005b34801561051757600080fd5b50610532600480360381019061052d9190613d77565b611274565b60405161053f9190614342565b60405180910390f35b34801561055457600080fd5b5061056f600480360381019061056a9190613d77565b6112a7565b60405161057c9190614342565b60405180910390f35b34801561059157600080fd5b506105ac60048036038101906105a79190613e54565b6112c7565b005b3480156105ba57600080fd5b506105d560048036038101906105d09190613e54565b6113b7565b005b3480156105e357600080fd5b506105ec6114a7565b6040516105f99190614342565b60405180910390f35b34801561060e57600080fd5b5061062960048036038101906106249190613d77565b6114ba565b60405161063691906144ba565b60405180910390f35b34801561064b57600080fd5b50610654611503565b005b34801561066257600080fd5b5061066b611656565b60405161067891906144ba565b60405180910390f35b34801561068d57600080fd5b506106a860048036038101906106a39190613f1e565b61165c565b005b3480156106b657600080fd5b506106bf6116fb565b6040516106cc91906144ba565b60405180910390f35b3480156106e157600080fd5b506106ea611701565b005b3480156106f857600080fd5b50610701611844565b60405161070e9190614274565b60405180910390f35b34801561072357600080fd5b5061072c61186d565b6040516107399190614378565b60405180910390f35b34801561074e57600080fd5b5061076960048036038101906107649190613f1e565b6118aa565b005b34801561077757600080fd5b50610792600480360381019061078d9190613dc9565b611958565b005b3480156107a057600080fd5b506107a9611a73565b6040516107b69190614274565b60405180910390f35b3480156107cb57600080fd5b506107e660048036038101906107e19190613e90565b611a99565b6040516107f39190614342565b60405180910390f35b34801561080857600080fd5b50610823600480360381019061081e9190613e54565b611aae565b005b34801561083157600080fd5b5061083a611b9e565b6040516108479190614342565b60405180910390f35b34801561085c57600080fd5b5061087760048036038101906108729190613f83565b611bb1565b005b34801561088557600080fd5b506108a0600480360381019061089b9190613dc9565b611c8b565b6040516108ad91906144ba565b60405180910390f35b3480156108c257600080fd5b506108dd60048036038101906108d89190613ecc565b611d12565b005b3480156108eb57600080fd5b5061090660048036038101906109019190613e54565b611dc4565b005b34801561091457600080fd5b5061091d611eb4565b60405161092a9190614274565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190613f1e565b611eda565b005b34801561096857600080fd5b50610983600480360381019061097e9190613d77565b611f91565b005b34801561099157600080fd5b506109ac60048036038101906109a79190613e54565b612153565b005b3480156109ba57600080fd5b506109c3612440565b6040516109d0919061435d565b60405180910390f35b60235481565b60606040518060400160405280600b81526020017f4d6573736965726d313030000000000000000000000000000000000000000000815250905090565b600081600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610afc91906144ba565b60405180910390a36001905092915050565b610b16612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9a9061443a565b60405180910390fd5b80600760006101000a81548160ff02191690831515021790555050565b6000600854905090565b60135481565b610bd8612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5c9061443a565b60405180910390fd5b6000479050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60648484610cb4919061484c565b610cbe919061465f565b9081150290604051600060405180830381858888f19350505050158015610ce9573d6000803e3d6000fd5b505050565b60175481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ee057610e5f826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246e9092919063ffffffff16565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610eeb8484846124d2565b90509392505050565b610efc612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f809061443a565b60405180910390fd5b6012600a610f97919061472e565b81610fa2919061484c565b600a8190555050565b6000611028610fdb600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114ba565b61101a611009600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114ba565b600854612e9490919063ffffffff16565b612e9490919063ffffffff16565b905090565b611035612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b99061443a565b60405180910390fd5b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b815260040161111f929190614566565b600060405180830381600087803b15801561113957600080fd5b505af115801561114d573d6000803e3d6000fd5b505050505050565b60006012905090565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61118c612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611219576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112109061443a565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006112a0827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610a1c565b9050919050565b600e6020528060005260406000206000915054906101000a900460ff1681565b6112cf612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113539061443a565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6113bf612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461144c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114439061443a565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602260009054906101000a900460ff1681565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61150b612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158f9061443a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600a5481565b611664612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e89061443a565b60405180910390fd5b8060238190555050565b60095481565b611709612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d9061443a565b60405180910390fd5b6001600b60006101000a81548160ff021916908315150217905550600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638fb4b573600654436040518363ffffffff1660e01b8152600401611810929190614566565b600060405180830381600087803b15801561182a57600080fd5b505af115801561183e573d6000803e3d6000fd5b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4d31303000000000000000000000000000000000000000000000000000000000815250905090565b6118b2612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461193f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119369061443a565b60405180910390fd5b620b71b0811061194e57600080fd5b8060218190555050565b611960612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e49061443a565b60405180910390fd5b81601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611aa63384846124d2565b905092915050565b611ab6612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3a9061443a565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b60009054906101000a900460ff1681565b611bb9612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3d9061443a565b60405180910390fd5b826014819055508160158190555080601681905550611c8081611c728486612ede90919063ffffffff16565b612ede90919063ffffffff16565b601781905550505050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611d1a612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9e9061443a565b60405180910390fd5b80602260006101000a81548160ff02191690831515021790555050565b611dcc612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e509061443a565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ee2612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f669061443a565b60405180910390fd5b6012600a611f7d919061472e565b81611f88919061484c565b60098190555050565b611f99612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612026576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201d9061443a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208d906143ba565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61215b612466565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121df9061443a565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156122725750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61227b57600080fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561236d57602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b815260040161233692919061428f565b600060405180830381600087803b15801561235057600080fd5b505af1158015612364573d6000803e3d6000fd5b5050505061243c565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016124099291906142b8565b600060405180830381600087803b15801561242357600080fd5b505af1158015612437573d6000803e3d6000fd5b505050505b5050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b60008383111582906124b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ad9190614378565b60405180910390fd5b50600083856124c591906148a6565b9050809150509392505050565b6000600760009054906101000a900460ff1615612652576000600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eeb9ed7e60065487876040518463ffffffff1660e01b815260040161254c939291906144d5565b602060405180830381600087803b15801561256657600080fd5b505af192505050801561259757506040513d601f19601f820116820180604052508101906125949190613ef5565b60015b61260c576125a3614a56565b806308c379a0141561260057506125b8614c86565b806125c35750612602565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f79190614378565b60405180910390fd5b505b3d6000803e3d6000fd5b8091505080612650576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612647906143fa565b60405180910390fd5b505b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156126df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d69061447a565b60405180910390fd5b602460009054906101000a900460ff1615612706576126ff848484612f3c565b9050612e8d565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561278c57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156127e65750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156128405750601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b801561289a5750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156128f45750601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156129a757600b60009054906101000a900460ff16612948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293f9061449a565b60405180910390fd5b6000612953846114ba565b9050600a5483826129649190614609565b11156129a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299c9061445a565b60405180910390fd5b505b6129b1848361310f565b6129b96131ac565b156129c7576129c6613283565b5b6000612a52836040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246e9092919063ffffffff16565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a9e856138fb565b612aa85782612ab3565b612ab28584613952565b5b9050612b0781600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ede90919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c6d57602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612c379291906142b8565b600060405180830381600087803b158015612c5157600080fd5b505af1925050508015612c62575060015b612c6b57612c6c565b5b5b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d9057602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612d5a9291906142b8565b600060405180830381600087803b158015612d7457600080fd5b505af1925050508015612d85575060015b612d8e57612d8f565b5b5b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796021546040518263ffffffff1660e01b8152600401612ded91906144ba565b600060405180830381600087803b158015612e0757600080fd5b505af1925050508015612e18575060015b612e2157612e22565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e7f91906144ba565b60405180910390a360019150505b9392505050565b6000612ed683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061246e565b905092915050565b6000808284612eed9190614609565b905083811015612f32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f29906143da565b60405180910390fd5b8091505092915050565b6000612fc7826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246e9092919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061305c82600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ede90919063ffffffff16565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130fc91906144ba565b60405180910390a3600190509392505050565b600954811115806131695750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6131a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319f9061439a565b60405180910390fd5b5050565b6000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156132195750602460009054906101000a900460ff16155b80156132315750602260009054906101000a900460ff165b801561327e5750602354600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602460006101000a81548160ff02191690831515021790555060006132cb6019546132bd601b54601a54612ede90919063ffffffff16565b612ede90919063ffffffff16565b90508060235411156132dd57506138de565b6000613319600261330b846132fd601a5487613bd190919063ffffffff16565b613c4c90919063ffffffff16565b613c4c90919063ffffffff16565b905060006133308284612e9490919063ffffffff16565b90506000600267ffffffffffffffff811115613375577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156133a35781602001602082028036833780820191505090505b50905030816000815181106133e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561348357600080fd5b505afa158015613497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134bb9190613da0565b816001815181106134f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040161359895949392919061450c565b600060405180830381600087803b1580156135b257600080fd5b505af11580156135c6573d6000803e3d6000fd5b5050505060006135df8247612e9490919063ffffffff16565b9050600061360b6135fc6002601a54613c4c90919063ffffffff16565b88612e9490919063ffffffff16565b90506000613649600261363b8461362d601a5488613bd190919063ffffffff16565b613c4c90919063ffffffff16565b613c4c90919063ffffffff16565b9050600061367483613666601b5487613bd190919063ffffffff16565b613c4c90919063ffffffff16565b9050600061369f8461369160195488613bd190919063ffffffff16565b613c4c90919063ffffffff16565b9050602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561370b57600080fd5b505af19350505050801561371d575060015b61372657613727565b5b600082111561379a57601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613798573d6000803e3d6000fd5b505b60008911156138bb57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308c600080601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161382c969594939291906142e1565b6060604051808303818588803b15801561384557600080fd5b505af1158015613859573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061387e9190613fd2565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a6040516138b2929190614566565b60405180910390a15b6000601a819055506000601b819055506000601981905550505050505050505050505b6000602460006101000a81548160ff021916908315150217905550565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008061399660026013546139679190614609565b600a61397391906146e3565b61398860175486613bd190919063ffffffff16565b613c4c90919063ffffffff16565b905060006139db60026013546139ac9190614609565b600a6139b891906146e3565b6139cd60145487613bd190919063ffffffff16565b613c4c90919063ffffffff16565b90506000613a2060026013546139f19190614609565b600a6139fd91906146e3565b613a1260165488613bd190919063ffffffff16565b613c4c90919063ffffffff16565b90506000613a656002601354613a369190614609565b600a613a4291906146e3565b613a5760155489613bd190919063ffffffff16565b613c4c90919063ffffffff16565b9050613a7c83601a54612ede90919063ffffffff16565b601a81905550613a9782601b54612ede90919063ffffffff16565b601b81905550613ab281601954612ede90919063ffffffff16565b601981905550613b0a84600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ede90919063ffffffff16565b600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613baa91906144ba565b60405180910390a3613bc58487612e9490919063ffffffff16565b94505050505092915050565b600080831415613be45760009050613c46565b60008284613bf2919061484c565b9050828482613c01919061465f565b14613c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c389061441a565b60405180910390fd5b809150505b92915050565b6000613c8e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c96565b905092915050565b60008083118290613cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cd49190614378565b60405180910390fd5b5060008385613cec919061465f565b9050809150509392505050565b600081359050613d0881614d1c565b92915050565b600081519050613d1d81614d1c565b92915050565b600081359050613d3281614d33565b92915050565b600081519050613d4781614d33565b92915050565b600081359050613d5c81614d4a565b92915050565b600081519050613d7181614d4a565b92915050565b600060208284031215613d8957600080fd5b6000613d9784828501613cf9565b91505092915050565b600060208284031215613db257600080fd5b6000613dc084828501613d0e565b91505092915050565b60008060408385031215613ddc57600080fd5b6000613dea85828601613cf9565b9250506020613dfb85828601613cf9565b9150509250929050565b600080600060608486031215613e1a57600080fd5b6000613e2886828701613cf9565b9350506020613e3986828701613cf9565b9250506040613e4a86828701613d4d565b9150509250925092565b60008060408385031215613e6757600080fd5b6000613e7585828601613cf9565b9250506020613e8685828601613d23565b9150509250929050565b60008060408385031215613ea357600080fd5b6000613eb185828601613cf9565b9250506020613ec285828601613d4d565b9150509250929050565b600060208284031215613ede57600080fd5b6000613eec84828501613d23565b91505092915050565b600060208284031215613f0757600080fd5b6000613f1584828501613d38565b91505092915050565b600060208284031215613f3057600080fd5b6000613f3e84828501613d4d565b91505092915050565b60008060408385031215613f5a57600080fd5b6000613f6885828601613d4d565b9250506020613f7985828601613d4d565b9150509250929050565b600080600060608486031215613f9857600080fd5b6000613fa686828701613d4d565b9350506020613fb786828701613d4d565b9250506040613fc886828701613d4d565b9150509250925092565b600080600060608486031215613fe757600080fd5b6000613ff586828701613d62565b935050602061400686828701613d62565b925050604061401786828701613d62565b9150509250925092565b600061402d8383614039565b60208301905092915050565b614042816148da565b82525050565b614051816148da565b82525050565b6000614062826145c4565b61406c81856145e7565b9350614077836145b4565b8060005b838110156140a857815161408f8882614021565b975061409a836145da565b92505060018101905061407b565b5085935050505092915050565b6140be816148ec565b82525050565b6140cd8161492f565b82525050565b6140dc81614953565b82525050565b60006140ed826145cf565b6140f781856145f8565b9350614107818560208601614965565b61411081614a78565b840191505092915050565b60006141286011836145f8565b915061413382614aa3565b602082019050919050565b600061414b6026836145f8565b915061415682614acc565b604082019050919050565b600061416e601b836145f8565b915061417982614b1b565b602082019050919050565b60006141916017836145f8565b915061419c82614b44565b602082019050919050565b60006141b46021836145f8565b91506141bf82614b6d565b604082019050919050565b60006141d76020836145f8565b91506141e282614bbc565b602082019050919050565b60006141fa603e836145f8565b915061420582614be5565b604082019050919050565b600061421d6016836145f8565b915061422882614c34565b602082019050919050565b6000614240601a836145f8565b915061424b82614c5d565b602082019050919050565b61425f81614918565b82525050565b61426e81614922565b82525050565b60006020820190506142896000830184614048565b92915050565b60006040820190506142a46000830185614048565b6142b160208301846140d3565b9392505050565b60006040820190506142cd6000830185614048565b6142da6020830184614256565b9392505050565b600060c0820190506142f66000830189614048565b6143036020830188614256565b61431060408301876140d3565b61431d60608301866140d3565b61432a6080830185614048565b61433760a0830184614256565b979650505050505050565b600060208201905061435760008301846140b5565b92915050565b600060208201905061437260008301846140c4565b92915050565b6000602082019050818103600083015261439281846140e2565b905092915050565b600060208201905081810360008301526143b38161411b565b9050919050565b600060208201905081810360008301526143d38161413e565b9050919050565b600060208201905081810360008301526143f381614161565b9050919050565b6000602082019050818103600083015261441381614184565b9050919050565b60006020820190508181036000830152614433816141a7565b9050919050565b60006020820190508181036000830152614453816141ca565b9050919050565b60006020820190508181036000830152614473816141ed565b9050919050565b6000602082019050818103600083015261449381614210565b9050919050565b600060208201905081810360008301526144b381614233565b9050919050565b60006020820190506144cf6000830184614256565b92915050565b60006060820190506144ea6000830186614256565b6144f76020830185614048565b6145046040830184614048565b949350505050565b600060a0820190506145216000830188614256565b61452e60208301876140d3565b81810360408301526145408186614057565b905061454f6060830185614048565b61455c6080830184614256565b9695505050505050565b600060408201905061457b6000830185614256565b6145886020830184614256565b9392505050565b60006020820190506145a46000830184614265565b92915050565b6000604051905090565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061461482614918565b915061461f83614918565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614654576146536149c9565b5b828201905092915050565b600061466a82614918565b915061467583614918565b925082614685576146846149f8565b5b828204905092915050565b6000808291508390505b60018511156146da578086048111156146b6576146b56149c9565b5b60018516156146c55780820291505b80810290506146d385614a89565b945061469a565b94509492505050565b60006146ee82614918565b91506146f983614918565b92506147267fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614779565b905092915050565b600061473982614918565b915061474483614922565b92506147717fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614779565b905092915050565b6000826147895760019050614845565b816147975760009050614845565b81600181146147ad57600281146147b7576147e6565b6001915050614845565b60ff8411156147c9576147c86149c9565b5b8360020a9150848211156147e0576147df6149c9565b5b50614845565b5060208310610133831016604e8410600b841016171561481b5782820a905083811115614816576148156149c9565b5b614845565b6148288484846001614690565b9250905081840481111561483f5761483e6149c9565b5b81810290505b9392505050565b600061485782614918565b915061486283614918565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561489b5761489a6149c9565b5b828202905092915050565b60006148b182614918565b91506148bc83614918565b9250828210156148cf576148ce6149c9565b5b828203905092915050565b60006148e5826148f8565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061493a82614941565b9050919050565b600061494c826148f8565b9050919050565b600061495e82614918565b9050919050565b60005b83811015614983578082015181840152602081019050614968565b83811115614992576000848401525b50505050565b6149a182614a78565b810181811067ffffffffffffffff821117156149c0576149bf614a27565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115614a755760046000803e614a72600051614a96565b90505b90565b6000601f19601f8301169050919050565b60008160011c9050919050565b60008160e01c9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4572726f7220636865636b696e6720616e7469626f742e000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b7f4164647265737320697320626c61636b4c697374656400000000000000000000600082015250565b7f54726164696e67206973206e6f7420616374697665207965742e000000000000600082015250565b600060443d1015614c9657614d19565b614c9e6145aa565b60043d036004823e80513d602482011167ffffffffffffffff82111715614cc6575050614d19565b808201805167ffffffffffffffff811115614ce45750505050614d19565b80602083010160043d038501811115614d01575050505050614d19565b614d1082602001850186614998565b82955050505050505b90565b614d25816148da565b8114614d3057600080fd5b50565b614d3c816148ec565b8114614d4757600080fd5b50565b614d5381614918565b8114614d5e57600080fd5b5056fea2646970667358221220d3e502314f702cd971cc9890233524e85577cf1a50c1dfff772fe96f50171a2064736f6c63430008040033

Deployed Bytecode Sourcemap

14438:14534:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16244:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18132:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18557:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19571:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17814:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15629:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24173:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15772:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19139:424;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27249:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28674:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28316:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17924:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15988:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26911:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18813:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15389:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26784:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28824:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16207:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18234:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5042:148;;;;;;;;;;;;;:::i;:::-;;15183:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28096:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15106:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19689:151;;;;;;;;;;;;;:::i;:::-;;4400:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18026:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28531:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27857:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16099:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18943:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4213:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15237:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27506:343;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18361:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28211:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27077:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16024:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27381:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5345:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26403:373;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16068:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16244:62;;;;:::o;18132:94::-;18180:13;18213:5;;;;;;;;;;;;;;;;;18206:12;;18132:94;:::o;18557:248::-;18659:4;18716:6;18681:11;:23;18693:10;18681:23;;;;;;;;;;;;;;;:32;18705:7;18681:32;;;;;;;;;;;;;;;:41;;;;18759:7;18738:37;;18747:10;18738:37;;;18768:6;18738:37;;;;;;:::i;:::-;;;;;;;;18793:4;18786:11;;18557:248;;;;:::o;19571:110::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19666:7:::1;19644:19;;:29;;;;;;;;;;;;;;;;;;19571:110:::0;:::o;17814:102::-;17869:7;17896:12;;17889:19;;17814:102;:::o;15629:30::-;;;;:::o;24173:243::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24256:17:::1;24276:21;24256:41;;24316:20;;;;;;;;;;;24308:38;;:100;24394:3;24374:16;24362:9;:28;;;;:::i;:::-;24361:36;;;;:::i;:::-;24308:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;4682:1;24173:243:::0;:::o;15772:28::-;;;;:::o;19139:424::-;19273:4;19329:17;19294:11;:19;19306:6;19294:19;;;;;;;;;;;;;;;:31;19314:10;19294:31;;;;;;;;;;;;;;;;:52;19290:206;;19397:87;19451:6;19397:87;;;;;;;;;;;;;;;;;:11;:19;19409:6;19397:19;;;;;;;;;;;;;;;:31;19417:10;19397:31;;;;;;;;;;;;;;;;:53;;:87;;;;;:::i;:::-;19363:11;:19;19375:6;19363:19;;;;;;;;;;;;;;;:31;19383:10;19363:31;;;;;;;;;;;;;;;:121;;;;19290:206;19515:40;19529:6;19537:9;19548:6;19515:13;:40::i;:::-;19508:47;;19139:424;;;;;:::o;27249:124::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15035:2:::1;27351;:13;;;;:::i;:::-;27341:6;:24;;;;:::i;:::-;27323:15;:42;;;;27249:124:::0;:::o;28674:142::-;28727:7;28754:54;28792:15;28802:4;;;;;;;;;;;28792:9;:15::i;:::-;28754:33;28771:15;28781:4;;;;;;;;;;;28771:9;:15::i;:::-;28754:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;28747:61;;28674:142;:::o;28316:207::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28450:11:::1;;;;;;;;;;;:35;;;28486:10;28498:16;28450:65;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28316:207:::0;;:::o;17924:94::-;17976:5;15035:2;17994:16;;17924:94;:::o;15988:29::-;;;;;;;;;;;;;:::o;26911:158::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27056:5:::1;27028:15;:25;27044:8;27028:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;26911:158:::0;;:::o;18813:122::-;18868:4;18892:35;18900:7;18909:17;18892:7;:35::i;:::-;18885:42;;18813:122;;;:::o;15389:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;26784:119::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26889:6:::1;26867:11;:19;26879:6;26867:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;26784:119:::0;;:::o;28824:108::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28919:5:::1;28901:10;:15;28912:3;28901:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;28824:108:::0;;:::o;16207:30::-;;;;;;;;;;;;;:::o;18234:119::-;18300:7;18327:9;:18;18337:7;18327:18;;;;;;;;;;;;;;;;18320:25;;18234:119;;;:::o;5042:148::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5149:1:::1;5112:40;;5133:6;::::0;::::1;;;;;;;;5112:40;;;;;;;;;;;;5180:1;5163:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5042:148::o:0;15183:45::-;;;;:::o;28096:107::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28188:7:::1;28172:13;:23;;;;28096:107:::0;:::o;15106:42::-;;;;:::o;19689:151::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19758:4:::1;19742:13;;:20;;;;;;;;;;;;;;;;;;19775:13;;;;;;;;;;;:19;;;19795:22;;19819:12;19775:57;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19689:151::o:0;4400:79::-;4438:7;4465:6;;;;;;;;;;;4458:13;;4400:79;:::o;18026:98::-;18076:13;18109:7;;;;;;;;;;;;;;;;;18102:14;;18026:98;:::o;28531:135::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28620:6:::1;28614:3;:12;28606:21;;;::::0;::::1;;28655:3;28638:14;:20;;;;28531:135:::0;:::o;27857:231::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28010:15:::1;27993:14;;:32;;;;;;;;;;;;;;;;;;28059:21;28036:20;;:44;;;;;;;;;;;;;;;;;;27857:231:::0;;:::o;16099:19::-;;;;;;;;;;;;;:::o;18943:188::-;19050:4;19079:44;19093:10;19105:9;19116:6;19079:13;:44::i;:::-;19072:51;;18943:188;;;;:::o;4213:106::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4308:3:::1;4286:14;:19;4301:3;4286:19;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;4213:106:::0;;:::o;15237:33::-;;;;;;;;;;;;;:::o;27506:343::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27672:13:::1;27657:12;:28;;;;27712:14;27696:13;:30;;;;27752:13;27737:12;:28;;;;27789:52;27827:13;27789:33;27807:14;27789:13;:17;;:33;;;;:::i;:::-;:37;;:52;;;;:::i;:::-;27778:8;:63;;;;27506:343:::0;;;:::o;18361:188::-;18481:7;18513:11;:19;18525:6;18513:19;;;;;;;;;;;;;;;:28;18533:7;18513:28;;;;;;;;;;;;;;;;18506:35;;18361:188;;;;:::o;28211:97::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28293:7:::1;28279:11;;:21;;;;;;;;;;;;;;;;;;28211:97:::0;:::o;27077:164::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27228:5:::1;27198:17;:27;27216:8;27198:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;27077:164:::0;;:::o;16024:35::-;;;;;;;;;;;;;:::o;27381:117::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15035:2:::1;27476;:13;;;;:::i;:::-;27466:6;:24;;;;:::i;:::-;27451:12;:39;;;;27381:117:::0;:::o;5345:281::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5468:1:::1;5448:22;;:8;:22;;;;5426:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;5581:8;5552:38;;5573:6;::::0;::::1;;;;;;;;5552:38;;;;;;;;;;;;5610:8;5601:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;5345:281:::0;:::o;26403:373::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26540:4:::1;26522:23;;:6;:23;;;;:41;;;;;26559:4;;;;;;;;;;;26549:14;;:6;:14;;;;26522:41;26514:50;;;::::0;::::1;;26602:6;26575:16;:24;26592:6;26575:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;26623:6;26619:150;;;26646:11;;;;;;;;;;;:20;;;26667:6;26675:1;26646:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26619:150;;;26710:11;;;;;;;;;;;:20;;;26731:6;26739:9;:17;26749:6;26739:17;;;;;;;;;;;;;;;;26710:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26619:150;26403:373:::0;;:::o;16068:24::-;;;;;;;;;;;;;:::o;3231:115::-;3284:15;3327:10;3312:26;;3231:115;:::o;1153:226::-;1273:7;1306:1;1301;:6;;1309:12;1293:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1333:9;1349:1;1345;:5;;;;:::i;:::-;1333:17;;1370:1;1363:8;;;1153:226;;;;;:::o;19848:2472::-;19974:4;19995:19;;;;;;;;;;;19991:518;;;20031:12;20079:13;;;;;;;;;;;:27;;;20129:22;;20174:6;20203:9;20079:152;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;20058:342;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;20377:6;20370:14;;;;;;;;;;;:::i;:::-;;;;;;;;20058:342;;;;;;;;;;;20295:5;20285:15;;20245:71;20421:7;20416:82;;20449:33;;;;;;;;;;:::i;:::-;;;;;;;;20416:82;19991:518;;20530:10;:18;20541:6;20530:18;;;;;;;;;;;;;;;;;;;;;;;;;20529:19;20521:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;20590:6;;;;;;;;;;;20586:87;;;20620:41;20635:6;20643:9;20654:6;20620:14;:41::i;:::-;20613:48;;;;20586:87;20732:14;:22;20747:6;20732:22;;;;;;;;;;;;;;;;;;;;;;;;;20731:23;:66;;;;;20792:4;20771:26;;:9;:26;;;;20731:66;:109;;;;;20835:4;;;;;;;;;;;20814:26;;:9;:26;;;;20731:109;:144;;;;;20871:4;;;;;;;;;;;20857:18;;:10;:18;;;;20731:144;:194;;;;;20905:20;;;;;;;;;;;20892:33;;:9;:33;;;;20731:194;:238;;;;;20955:14;;;;;;;;;;;20942:27;;:9;:27;;;;20731:238;20713:584;;;21004:13;;;;;;;;;;;20996:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;21065:18;21086:20;21096:9;21086;:20::i;:::-;21065:41;;21172:15;;21161:6;21148:10;:19;;;;:::i;:::-;21147:40;;21121:164;;;;;;;;;;;;:::i;:::-;;;;;;;;;20713:584;;21350:28;21363:6;21371;21350:12;:28::i;:::-;21436:16;:14;:16::i;:::-;21432:59;;;21469:10;:8;:10::i;:::-;21432:59;21503:22;21558:90;21594:6;21558:90;;;;;;;;;;;;;;;;;:9;:17;21568:6;21558:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;21538:9;:17;21548:6;21538:17;;;;;;;;;;;;;;;:110;;;;21678:21;21692:6;21678:13;:21::i;:::-;:82;;21754:6;21678:82;;;21715:23;21723:6;21731;21715:7;:23::i;:::-;21678:82;21661:99;;21794:40;21819:14;21794:9;:20;21804:9;21794:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;21771:9;:20;21781:9;21771:20;;;;;;;;;;;;;;;:63;;;;21881:16;:24;21898:6;21881:24;;;;;;;;;;;;;;;;;;;;;;;;;21876:120;;21926:11;;;;;;;;;;;:20;;;21947:6;21955:9;:17;21965:6;21955:17;;;;;;;;;;;;;;;;21926:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21922:63;;;;;;21876:120;22013:16;:27;22030:9;22013:27;;;;;;;;;;;;;;;;;;;;;;;;;22008:159;;22078:11;;;;;;;;;;;:20;;;22099:9;22110;:20;22120:9;22110:20;;;;;;;;;;;;;;;;22078:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22057:99;;;;;;22008:159;22183:11;;;;;;;;;;;:19;;;22203:14;;22183:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22179:51;;;;;;22264:9;22247:43;;22256:6;22247:43;;;22275:14;22247:43;;;;;;:::i;:::-;;;;;;;;22308:4;22301:11;;;19848:2472;;;;;;:::o;1009:136::-;1067:7;1094:43;1098:1;1101;1094:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1087:50;;1009:136;;;;:::o;820:181::-;878:7;898:9;914:1;910;:5;;;;:::i;:::-;898:17;;939:1;934;:6;;926:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;992:1;985:8;;;820:181;;;;:::o;22328:401::-;22455:4;22492:90;22528:6;22492:90;;;;;;;;;;;;;;;;;:9;:17;22502:6;22492:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;22472:9;:17;22482:6;22472:17;;;;;;;;;;;;;;;:110;;;;22616:32;22641:6;22616:9;:20;22626:9;22616:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;22593:9;:20;22603:9;22593:20;;;;;;;;;;;;;;;:55;;;;22681:9;22664:35;;22673:6;22664:35;;;22692:6;22664:35;;;;;;:::i;:::-;;;;;;;;22717:4;22710:11;;22328:401;;;;;:::o;22737:203::-;22848:12;;22838:6;:22;;:49;;;;22864:15;:23;22880:6;22864:23;;;;;;;;;;;;;;;;;;;;;;;;;22838:49;22816:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;22737:203;;:::o;23943:222::-;23992:4;24043;;;;;;;;;;;24029:18;;:10;:18;;;;:42;;;;;24065:6;;;;;;;;;;;24064:7;24029:42;:70;;;;;24088:11;;;;;;;;;;;24029:70;:128;;;;;24144:13;;24116:9;:24;24134:4;24116:24;;;;;;;;;;;;;;;;:41;;24029:128;24009:148;;23943:222;:::o;24424:1971::-;16452:4;16443:6;;:13;;;;;;;;;;;;;;;;;;24473:17:::1;24493:93;24556:19;;24493:44;24514:22;;24493:16;;:20;;:44;;;;:::i;:::-;:48;;:93;;;;:::i;:::-;24473:113;;24619:9;24603:13;;:25;24599:38;;;24630:7;;;24599:38;24649:23;24675:95;24768:1;24675:74;24739:9;24675:45;24703:16;;24675:9;:27;;:45;;;;:::i;:::-;:63;;:74;;;;:::i;:::-;:92;;:95;;;;:::i;:::-;24649:121;;24781:20;24804:30;24818:15;24804:9;:13;;:30;;;;:::i;:::-;24781:53;;24847:21;24885:1;24871:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24847:40;;24916:4;24898;24903:1;24898:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;24942:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24932:4;24937:1;24932:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;24968:21;24992;24968:45;;25026:6;;;;;;;;;;;:57;;;25098:12;25125:1;25141:4;25168;25188:15;25026:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25227:17;25247:40;25273:13;25247:21;:25;;:40;;;;:::i;:::-;25227:60;;25300:19;25322:38;25336:23;25357:1;25336:16;;:20;;:23;;;;:::i;:::-;25322:9;:13;;:38;;;;:::i;:::-;25300:60;;25373:26;25402:97;25497:1;25402:76;25466:11;25402:45;25430:16;;25402:9;:27;;:45;;;;:::i;:::-;:63;;:76;;;;:::i;:::-;:94;;:97;;;;:::i;:::-;25373:126;;25510:26;25539:78;25595:11;25539:37;25553:22;;25539:9;:13;;:37;;;;:::i;:::-;:41;;:78;;;;:::i;:::-;25510:107;;25628:23;25654:75;25707:11;25654:34;25668:19;;25654:9;:13;;:34;;;;:::i;:::-;:38;;:75;;;;:::i;:::-;25628:101;;25746:11;;;;;;;;;;;:19;;;25773:15;25746:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;25742:61;;;;;;25840:1;25819:18;:22;25815:99;;;25864:20;;;;;;;;;;;25856:38;;:58;25895:18;25856:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25815:99;25949:1;25931:15;:19;25927:357;;;25967:6;;;;;;;;;;;:22;;;25997:18;26043:4;26067:15;26101:1;26121::::0;26141:14:::1;;;;;;;;;;;26174:15;25967:237;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26224:48;26236:18;26256:15;26224:48;;;;;;;:::i;:::-;;;;;;;;25927:357;26315:1;26296:16;:20;;;;26352:1;26327:22;:26;;;;26386:1;26364:19;:23;;;;16467:1;;;;;;;;;;;16488:5:::0;16479:6;;:14;;;;;;;;;;;;;;;;;;24424:1971::o;22948:114::-;23010:4;23035:11;:19;23047:6;23035:19;;;;;;;;;;;;;;;;;;;;;;;;;23034:20;23027:27;;22948:114;;;:::o;23070:865::-;23155:7;23180:17;23200:47;23244:1;23230:11;;:15;;;;:::i;:::-;23225:2;:21;;;;:::i;:::-;23200:20;23211:8;;23200:6;:10;;:20;;;;:::i;:::-;:24;;:47;;;;:::i;:::-;23180:67;;23260:14;23277:51;23325:1;23311:11;;:15;;;;:::i;:::-;23306:2;:21;;;;:::i;:::-;23277:24;23288:12;;23277:6;:10;;:24;;;;:::i;:::-;:28;;:51;;;;:::i;:::-;23260:68;;23339:21;23363:75;23425:1;23411:11;;:15;;;;:::i;:::-;23406:2;:21;;;;:::i;:::-;23363:24;23374:12;;23363:6;:10;;:24;;;;:::i;:::-;:28;;:75;;;;:::i;:::-;23339:99;;23449:17;23469:76;23532:1;23518:11;;:15;;;;:::i;:::-;23513:2;:21;;;;:::i;:::-;23469:25;23480:13;;23469:6;:10;;:25;;;;:::i;:::-;:29;;:76;;;;:::i;:::-;23449:96;;23577:28;23598:6;23577:16;;:20;;:28;;;;:::i;:::-;23558:16;:47;;;;23641:41;23668:13;23641:22;;:26;;:41;;;;:::i;:::-;23616:22;:66;;;;23715:34;23739:9;23715:19;;:23;;:34;;;;:::i;:::-;23693:19;:56;;;;23789:39;23818:9;23789;:24;23807:4;23789:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;23762:9;:24;23780:4;23762:24;;;;;;;;;;;;;;;:66;;;;23869:4;23844:42;;23853:6;23844:42;;;23876:9;23844:42;;;;;;:::i;:::-;;;;;;;;23906:21;23917:9;23906:6;:10;;:21;;;;:::i;:::-;23899:28;;;;;;23070:865;;;;:::o;1387:250::-;1445:7;1474:1;1469;:6;1465:47;;;1499:1;1492:8;;;;1465:47;1524:9;1540:1;1536;:5;;;;:::i;:::-;1524:17;;1569:1;1564;1560;:5;;;;:::i;:::-;:10;1552:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1628:1;1621:8;;;1387:250;;;;;:::o;1645:132::-;1703:7;1730:39;1734:1;1737;1730:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1723:46;;1645:132;;;;:::o;1785:379::-;1905:7;2004:1;2000;:5;2007:12;1992:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2031:9;2047:1;2043;:5;;;;:::i;:::-;2031:17;;2155:1;2148:8;;;1785:379;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:137::-;494:5;525:6;519:13;510:22;;541:30;565:5;541:30;:::i;:::-;500:77;;;;:::o;583:139::-;629:5;667:6;654:20;645:29;;683:33;710:5;683:33;:::i;:::-;635:87;;;;:::o;728:143::-;785:5;816:6;810:13;801:22;;832:33;859:5;832:33;:::i;:::-;791:80;;;;:::o;877:262::-;936:6;985:2;973:9;964:7;960:23;956:32;953:2;;;1001:1;998;991:12;953:2;1044:1;1069:53;1114:7;1105:6;1094:9;1090:22;1069:53;:::i;:::-;1059:63;;1015:117;943:196;;;;:::o;1145:284::-;1215:6;1264:2;1252:9;1243:7;1239:23;1235:32;1232:2;;;1280:1;1277;1270:12;1232:2;1323:1;1348:64;1404:7;1395:6;1384:9;1380:22;1348:64;:::i;:::-;1338:74;;1294:128;1222:207;;;;:::o;1435:407::-;1503:6;1511;1560:2;1548:9;1539:7;1535:23;1531:32;1528:2;;;1576:1;1573;1566:12;1528:2;1619:1;1644:53;1689:7;1680:6;1669:9;1665:22;1644:53;:::i;:::-;1634:63;;1590:117;1746:2;1772:53;1817:7;1808:6;1797:9;1793:22;1772:53;:::i;:::-;1762:63;;1717:118;1518:324;;;;;:::o;1848:552::-;1925:6;1933;1941;1990:2;1978:9;1969:7;1965:23;1961:32;1958:2;;;2006:1;2003;1996:12;1958:2;2049:1;2074:53;2119:7;2110:6;2099:9;2095:22;2074:53;:::i;:::-;2064:63;;2020:117;2176:2;2202:53;2247:7;2238:6;2227:9;2223:22;2202:53;:::i;:::-;2192:63;;2147:118;2304:2;2330:53;2375:7;2366:6;2355:9;2351:22;2330:53;:::i;:::-;2320:63;;2275:118;1948:452;;;;;:::o;2406:401::-;2471:6;2479;2528:2;2516:9;2507:7;2503:23;2499:32;2496:2;;;2544:1;2541;2534:12;2496:2;2587:1;2612:53;2657:7;2648:6;2637:9;2633:22;2612:53;:::i;:::-;2602:63;;2558:117;2714:2;2740:50;2782:7;2773:6;2762:9;2758:22;2740:50;:::i;:::-;2730:60;;2685:115;2486:321;;;;;:::o;2813:407::-;2881:6;2889;2938:2;2926:9;2917:7;2913:23;2909:32;2906:2;;;2954:1;2951;2944:12;2906:2;2997:1;3022:53;3067:7;3058:6;3047:9;3043:22;3022:53;:::i;:::-;3012:63;;2968:117;3124:2;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3095:118;2896:324;;;;;:::o;3226:256::-;3282:6;3331:2;3319:9;3310:7;3306:23;3302:32;3299:2;;;3347:1;3344;3337:12;3299:2;3390:1;3415:50;3457:7;3448:6;3437:9;3433:22;3415:50;:::i;:::-;3405:60;;3361:114;3289:193;;;;:::o;3488:278::-;3555:6;3604:2;3592:9;3583:7;3579:23;3575:32;3572:2;;;3620:1;3617;3610:12;3572:2;3663:1;3688:61;3741:7;3732:6;3721:9;3717:22;3688:61;:::i;:::-;3678:71;;3634:125;3562:204;;;;:::o;3772:262::-;3831:6;3880:2;3868:9;3859:7;3855:23;3851:32;3848:2;;;3896:1;3893;3886:12;3848:2;3939:1;3964:53;4009:7;4000:6;3989:9;3985:22;3964:53;:::i;:::-;3954:63;;3910:117;3838:196;;;;:::o;4040:407::-;4108:6;4116;4165:2;4153:9;4144:7;4140:23;4136:32;4133:2;;;4181:1;4178;4171:12;4133:2;4224:1;4249:53;4294:7;4285:6;4274:9;4270:22;4249:53;:::i;:::-;4239:63;;4195:117;4351:2;4377:53;4422:7;4413:6;4402:9;4398:22;4377:53;:::i;:::-;4367:63;;4322:118;4123:324;;;;;:::o;4453:552::-;4530:6;4538;4546;4595:2;4583:9;4574:7;4570:23;4566:32;4563:2;;;4611:1;4608;4601:12;4563:2;4654:1;4679:53;4724:7;4715:6;4704:9;4700:22;4679:53;:::i;:::-;4669:63;;4625:117;4781:2;4807:53;4852:7;4843:6;4832:9;4828:22;4807:53;:::i;:::-;4797:63;;4752:118;4909:2;4935:53;4980:7;4971:6;4960:9;4956:22;4935:53;:::i;:::-;4925:63;;4880:118;4553:452;;;;;:::o;5011:596::-;5099:6;5107;5115;5164:2;5152:9;5143:7;5139:23;5135:32;5132:2;;;5180:1;5177;5170:12;5132:2;5223:1;5248:64;5304:7;5295:6;5284:9;5280:22;5248:64;:::i;:::-;5238:74;;5194:128;5361:2;5387:64;5443:7;5434:6;5423:9;5419:22;5387:64;:::i;:::-;5377:74;;5332:129;5500:2;5526:64;5582:7;5573:6;5562:9;5558:22;5526:64;:::i;:::-;5516:74;;5471:129;5122:485;;;;;:::o;5613:179::-;5682:10;5703:46;5745:3;5737:6;5703:46;:::i;:::-;5781:4;5776:3;5772:14;5758:28;;5693:99;;;;:::o;5798:108::-;5875:24;5893:5;5875:24;:::i;:::-;5870:3;5863:37;5853:53;;:::o;5912:118::-;5999:24;6017:5;5999:24;:::i;:::-;5994:3;5987:37;5977:53;;:::o;6066:732::-;6185:3;6214:54;6262:5;6214:54;:::i;:::-;6284:86;6363:6;6358:3;6284:86;:::i;:::-;6277:93;;6394:56;6444:5;6394:56;:::i;:::-;6473:7;6504:1;6489:284;6514:6;6511:1;6508:13;6489:284;;;6590:6;6584:13;6617:63;6676:3;6661:13;6617:63;:::i;:::-;6610:70;;6703:60;6756:6;6703:60;:::i;:::-;6693:70;;6549:224;6536:1;6533;6529:9;6524:14;;6489:284;;;6493:14;6789:3;6782:10;;6190:608;;;;;;;:::o;6804:109::-;6885:21;6900:5;6885:21;:::i;:::-;6880:3;6873:34;6863:50;;:::o;6919:167::-;7024:55;7073:5;7024:55;:::i;:::-;7019:3;7012:68;7002:84;;:::o;7092:147::-;7187:45;7226:5;7187:45;:::i;:::-;7182:3;7175:58;7165:74;;:::o;7245:364::-;7333:3;7361:39;7394:5;7361:39;:::i;:::-;7416:71;7480:6;7475:3;7416:71;:::i;:::-;7409:78;;7496:52;7541:6;7536:3;7529:4;7522:5;7518:16;7496:52;:::i;:::-;7573:29;7595:6;7573:29;:::i;:::-;7568:3;7564:39;7557:46;;7337:272;;;;;:::o;7615:366::-;7757:3;7778:67;7842:2;7837:3;7778:67;:::i;:::-;7771:74;;7854:93;7943:3;7854:93;:::i;:::-;7972:2;7967:3;7963:12;7956:19;;7761:220;;;:::o;7987:366::-;8129:3;8150:67;8214:2;8209:3;8150:67;:::i;:::-;8143:74;;8226:93;8315:3;8226:93;:::i;:::-;8344:2;8339:3;8335:12;8328:19;;8133:220;;;:::o;8359:366::-;8501:3;8522:67;8586:2;8581:3;8522:67;:::i;:::-;8515:74;;8598:93;8687:3;8598:93;:::i;:::-;8716:2;8711:3;8707:12;8700:19;;8505:220;;;:::o;8731:366::-;8873:3;8894:67;8958:2;8953:3;8894:67;:::i;:::-;8887:74;;8970:93;9059:3;8970:93;:::i;:::-;9088:2;9083:3;9079:12;9072:19;;8877:220;;;:::o;9103:366::-;9245:3;9266:67;9330:2;9325:3;9266:67;:::i;:::-;9259:74;;9342:93;9431:3;9342:93;:::i;:::-;9460:2;9455:3;9451:12;9444:19;;9249:220;;;:::o;9475:366::-;9617:3;9638:67;9702:2;9697:3;9638:67;:::i;:::-;9631:74;;9714:93;9803:3;9714:93;:::i;:::-;9832:2;9827:3;9823:12;9816:19;;9621:220;;;:::o;9847:366::-;9989:3;10010:67;10074:2;10069:3;10010:67;:::i;:::-;10003:74;;10086:93;10175:3;10086:93;:::i;:::-;10204:2;10199:3;10195:12;10188:19;;9993:220;;;:::o;10219:366::-;10361:3;10382:67;10446:2;10441:3;10382:67;:::i;:::-;10375:74;;10458:93;10547:3;10458:93;:::i;:::-;10576:2;10571:3;10567:12;10560:19;;10365:220;;;:::o;10591:366::-;10733:3;10754:67;10818:2;10813:3;10754:67;:::i;:::-;10747:74;;10830:93;10919:3;10830:93;:::i;:::-;10948:2;10943:3;10939:12;10932:19;;10737:220;;;:::o;10963:118::-;11050:24;11068:5;11050:24;:::i;:::-;11045:3;11038:37;11028:53;;:::o;11087:112::-;11170:22;11186:5;11170:22;:::i;:::-;11165:3;11158:35;11148:51;;:::o;11205:222::-;11298:4;11336:2;11325:9;11321:18;11313:26;;11349:71;11417:1;11406:9;11402:17;11393:6;11349:71;:::i;:::-;11303:124;;;;:::o;11433:348::-;11562:4;11600:2;11589:9;11585:18;11577:26;;11613:71;11681:1;11670:9;11666:17;11657:6;11613:71;:::i;:::-;11694:80;11770:2;11759:9;11755:18;11746:6;11694:80;:::i;:::-;11567:214;;;;;:::o;11787:332::-;11908:4;11946:2;11935:9;11931:18;11923:26;;11959:71;12027:1;12016:9;12012:17;12003:6;11959:71;:::i;:::-;12040:72;12108:2;12097:9;12093:18;12084:6;12040:72;:::i;:::-;11913:206;;;;;:::o;12125:807::-;12374:4;12412:3;12401:9;12397:19;12389:27;;12426:71;12494:1;12483:9;12479:17;12470:6;12426:71;:::i;:::-;12507:72;12575:2;12564:9;12560:18;12551:6;12507:72;:::i;:::-;12589:80;12665:2;12654:9;12650:18;12641:6;12589:80;:::i;:::-;12679;12755:2;12744:9;12740:18;12731:6;12679:80;:::i;:::-;12769:73;12837:3;12826:9;12822:19;12813:6;12769:73;:::i;:::-;12852;12920:3;12909:9;12905:19;12896:6;12852:73;:::i;:::-;12379:553;;;;;;;;;:::o;12938:210::-;13025:4;13063:2;13052:9;13048:18;13040:26;;13076:65;13138:1;13127:9;13123:17;13114:6;13076:65;:::i;:::-;13030:118;;;;:::o;13154:258::-;13265:4;13303:2;13292:9;13288:18;13280:26;;13316:89;13402:1;13391:9;13387:17;13378:6;13316:89;:::i;:::-;13270:142;;;;:::o;13418:313::-;13531:4;13569:2;13558:9;13554:18;13546:26;;13618:9;13612:4;13608:20;13604:1;13593:9;13589:17;13582:47;13646:78;13719:4;13710:6;13646:78;:::i;:::-;13638:86;;13536:195;;;;:::o;13737:419::-;13903:4;13941:2;13930:9;13926:18;13918:26;;13990:9;13984:4;13980:20;13976:1;13965:9;13961:17;13954:47;14018:131;14144:4;14018:131;:::i;:::-;14010:139;;13908:248;;;:::o;14162:419::-;14328:4;14366:2;14355:9;14351:18;14343:26;;14415:9;14409:4;14405:20;14401:1;14390:9;14386:17;14379:47;14443:131;14569:4;14443:131;:::i;:::-;14435:139;;14333:248;;;:::o;14587:419::-;14753:4;14791:2;14780:9;14776:18;14768:26;;14840:9;14834:4;14830:20;14826:1;14815:9;14811:17;14804:47;14868:131;14994:4;14868:131;:::i;:::-;14860:139;;14758:248;;;:::o;15012:419::-;15178:4;15216:2;15205:9;15201:18;15193:26;;15265:9;15259:4;15255:20;15251:1;15240:9;15236:17;15229:47;15293:131;15419:4;15293:131;:::i;:::-;15285:139;;15183:248;;;:::o;15437:419::-;15603:4;15641:2;15630:9;15626:18;15618:26;;15690:9;15684:4;15680:20;15676:1;15665:9;15661:17;15654:47;15718:131;15844:4;15718:131;:::i;:::-;15710:139;;15608:248;;;:::o;15862:419::-;16028:4;16066:2;16055:9;16051:18;16043:26;;16115:9;16109:4;16105:20;16101:1;16090:9;16086:17;16079:47;16143:131;16269:4;16143:131;:::i;:::-;16135:139;;16033:248;;;:::o;16287:419::-;16453:4;16491:2;16480:9;16476:18;16468:26;;16540:9;16534:4;16530:20;16526:1;16515:9;16511:17;16504:47;16568:131;16694:4;16568:131;:::i;:::-;16560:139;;16458:248;;;:::o;16712:419::-;16878:4;16916:2;16905:9;16901:18;16893:26;;16965:9;16959:4;16955:20;16951:1;16940:9;16936:17;16929:47;16993:131;17119:4;16993:131;:::i;:::-;16985:139;;16883:248;;;:::o;17137:419::-;17303:4;17341:2;17330:9;17326:18;17318:26;;17390:9;17384:4;17380:20;17376:1;17365:9;17361:17;17354:47;17418:131;17544:4;17418:131;:::i;:::-;17410:139;;17308:248;;;:::o;17562:222::-;17655:4;17693:2;17682:9;17678:18;17670:26;;17706:71;17774:1;17763:9;17759:17;17750:6;17706:71;:::i;:::-;17660:124;;;;:::o;17790:442::-;17939:4;17977:2;17966:9;17962:18;17954:26;;17990:71;18058:1;18047:9;18043:17;18034:6;17990:71;:::i;:::-;18071:72;18139:2;18128:9;18124:18;18115:6;18071:72;:::i;:::-;18153;18221:2;18210:9;18206:18;18197:6;18153:72;:::i;:::-;17944:288;;;;;;:::o;18238:831::-;18501:4;18539:3;18528:9;18524:19;18516:27;;18553:71;18621:1;18610:9;18606:17;18597:6;18553:71;:::i;:::-;18634:80;18710:2;18699:9;18695:18;18686:6;18634:80;:::i;:::-;18761:9;18755:4;18751:20;18746:2;18735:9;18731:18;18724:48;18789:108;18892:4;18883:6;18789:108;:::i;:::-;18781:116;;18907:72;18975:2;18964:9;18960:18;18951:6;18907:72;:::i;:::-;18989:73;19057:3;19046:9;19042:19;19033:6;18989:73;:::i;:::-;18506:563;;;;;;;;:::o;19075:332::-;19196:4;19234:2;19223:9;19219:18;19211:26;;19247:71;19315:1;19304:9;19300:17;19291:6;19247:71;:::i;:::-;19328:72;19396:2;19385:9;19381:18;19372:6;19328:72;:::i;:::-;19201:206;;;;;:::o;19413:214::-;19502:4;19540:2;19529:9;19525:18;19517:26;;19553:67;19617:1;19606:9;19602:17;19593:6;19553:67;:::i;:::-;19507:120;;;;:::o;19633:75::-;19666:6;19699:2;19693:9;19683:19;;19673:35;:::o;19714:132::-;19781:4;19804:3;19796:11;;19834:4;19829:3;19825:14;19817:22;;19786:60;;;:::o;19852:114::-;19919:6;19953:5;19947:12;19937:22;;19926:40;;;:::o;19972:99::-;20024:6;20058:5;20052:12;20042:22;;20031:40;;;:::o;20077:113::-;20147:4;20179;20174:3;20170:14;20162:22;;20152:38;;;:::o;20196:184::-;20295:11;20329:6;20324:3;20317:19;20369:4;20364:3;20360:14;20345:29;;20307:73;;;;:::o;20386:169::-;20470:11;20504:6;20499:3;20492:19;20544:4;20539:3;20535:14;20520:29;;20482:73;;;;:::o;20561:305::-;20601:3;20620:20;20638:1;20620:20;:::i;:::-;20615:25;;20654:20;20672:1;20654:20;:::i;:::-;20649:25;;20808:1;20740:66;20736:74;20733:1;20730:81;20727:2;;;20814:18;;:::i;:::-;20727:2;20858:1;20855;20851:9;20844:16;;20605:261;;;;:::o;20872:185::-;20912:1;20929:20;20947:1;20929:20;:::i;:::-;20924:25;;20963:20;20981:1;20963:20;:::i;:::-;20958:25;;21002:1;20992:2;;21007:18;;:::i;:::-;20992:2;21049:1;21046;21042:9;21037:14;;20914:143;;;;:::o;21063:848::-;21124:5;21131:4;21155:6;21146:15;;21179:5;21170:14;;21193:712;21214:1;21204:8;21201:15;21193:712;;;21309:4;21304:3;21300:14;21294:4;21291:24;21288:2;;;21318:18;;:::i;:::-;21288:2;21368:1;21358:8;21354:16;21351:2;;;21783:4;21776:5;21772:16;21763:25;;21351:2;21833:4;21827;21823:15;21815:23;;21863:32;21886:8;21863:32;:::i;:::-;21851:44;;21193:712;;;21136:775;;;;;;;:::o;21917:285::-;21977:5;22001:23;22019:4;22001:23;:::i;:::-;21993:31;;22045:27;22063:8;22045:27;:::i;:::-;22033:39;;22091:104;22128:66;22118:8;22112:4;22091:104;:::i;:::-;22082:113;;21983:219;;;;:::o;22208:281::-;22266:5;22290:23;22308:4;22290:23;:::i;:::-;22282:31;;22334:25;22350:8;22334:25;:::i;:::-;22322:37;;22378:104;22415:66;22405:8;22399:4;22378:104;:::i;:::-;22369:113;;22272:217;;;;:::o;22495:1073::-;22549:5;22740:8;22730:2;;22761:1;22752:10;;22763:5;;22730:2;22789:4;22779:2;;22806:1;22797:10;;22808:5;;22779:2;22875:4;22923:1;22918:27;;;;22959:1;22954:191;;;;22868:277;;22918:27;22936:1;22927:10;;22938:5;;;22954:191;22999:3;22989:8;22986:17;22983:2;;;23006:18;;:::i;:::-;22983:2;23055:8;23052:1;23048:16;23039:25;;23090:3;23083:5;23080:14;23077:2;;;23097:18;;:::i;:::-;23077:2;23130:5;;;22868:277;;23254:2;23244:8;23241:16;23235:3;23229:4;23226:13;23222:36;23204:2;23194:8;23191:16;23186:2;23180:4;23177:12;23173:35;23157:111;23154:2;;;23310:8;23304:4;23300:19;23291:28;;23345:3;23338:5;23335:14;23332:2;;;23352:18;;:::i;:::-;23332:2;23385:5;;23154:2;23425:42;23463:3;23453:8;23447:4;23444:1;23425:42;:::i;:::-;23410:57;;;;23499:4;23494:3;23490:14;23483:5;23480:25;23477:2;;;23508:18;;:::i;:::-;23477:2;23557:4;23550:5;23546:16;23537:25;;22555:1013;;;;;;:::o;23574:348::-;23614:7;23637:20;23655:1;23637:20;:::i;:::-;23632:25;;23671:20;23689:1;23671:20;:::i;:::-;23666:25;;23859:1;23791:66;23787:74;23784:1;23781:81;23776:1;23769:9;23762:17;23758:105;23755:2;;;23866:18;;:::i;:::-;23755:2;23914:1;23911;23907:9;23896:20;;23622:300;;;;:::o;23928:191::-;23968:4;23988:20;24006:1;23988:20;:::i;:::-;23983:25;;24022:20;24040:1;24022:20;:::i;:::-;24017:25;;24061:1;24058;24055:8;24052:2;;;24066:18;;:::i;:::-;24052:2;24111:1;24108;24104:9;24096:17;;23973:146;;;;:::o;24125:96::-;24162:7;24191:24;24209:5;24191:24;:::i;:::-;24180:35;;24170:51;;;:::o;24227:90::-;24261:7;24304:5;24297:13;24290:21;24279:32;;24269:48;;;:::o;24323:126::-;24360:7;24400:42;24393:5;24389:54;24378:65;;24368:81;;;:::o;24455:77::-;24492:7;24521:5;24510:16;;24500:32;;;:::o;24538:86::-;24573:7;24613:4;24606:5;24602:16;24591:27;;24581:43;;;:::o;24630:162::-;24698:9;24731:55;24780:5;24731:55;:::i;:::-;24718:68;;24708:84;;;:::o;24798:131::-;24866:9;24899:24;24917:5;24899:24;:::i;:::-;24886:37;;24876:53;;;:::o;24935:121::-;24993:9;25026:24;25044:5;25026:24;:::i;:::-;25013:37;;25003:53;;;:::o;25062:307::-;25130:1;25140:113;25154:6;25151:1;25148:13;25140:113;;;25239:1;25234:3;25230:11;25224:18;25220:1;25215:3;25211:11;25204:39;25176:2;25173:1;25169:10;25164:15;;25140:113;;;25271:6;25268:1;25265:13;25262:2;;;25351:1;25342:6;25337:3;25333:16;25326:27;25262:2;25111:258;;;;:::o;25375:281::-;25458:27;25480:4;25458:27;:::i;:::-;25450:6;25446:40;25588:6;25576:10;25573:22;25552:18;25540:10;25537:34;25534:62;25531:2;;;25599:18;;:::i;:::-;25531:2;25639:10;25635:2;25628:22;25418:238;;;:::o;25662:180::-;25710:77;25707:1;25700:88;25807:4;25804:1;25797:15;25831:4;25828:1;25821:15;25848:180;25896:77;25893:1;25886:88;25993:4;25990:1;25983:15;26017:4;26014:1;26007:15;26034:180;26082:77;26079:1;26072:88;26179:4;26176:1;26169:15;26203:4;26200:1;26193:15;26220:183;26255:3;26293:1;26275:16;26272:23;26269:2;;;26331:1;26328;26325;26310:23;26353:34;26384:1;26378:8;26353:34;:::i;:::-;26346:41;;26269:2;26259:144;:::o;26409:102::-;26450:6;26501:2;26497:7;26492:2;26485:5;26481:14;26477:28;26467:38;;26457:54;;;:::o;26517:102::-;26559:8;26606:5;26603:1;26599:13;26578:34;;26568:51;;;:::o;26625:106::-;26669:8;26718:5;26713:3;26709:15;26688:36;;26678:53;;;:::o;26737:167::-;26877:19;26873:1;26865:6;26861:14;26854:43;26843:61;:::o;26910:225::-;27050:34;27046:1;27038:6;27034:14;27027:58;27119:8;27114:2;27106:6;27102:15;27095:33;27016:119;:::o;27141:177::-;27281:29;27277:1;27269:6;27265:14;27258:53;27247:71;:::o;27324:173::-;27464:25;27460:1;27452:6;27448:14;27441:49;27430:67;:::o;27503:220::-;27643:34;27639:1;27631:6;27627:14;27620:58;27712:3;27707:2;27699:6;27695:15;27688:28;27609:114;:::o;27729:182::-;27869:34;27865:1;27857:6;27853:14;27846:58;27835:76;:::o;27917:249::-;28057:34;28053:1;28045:6;28041:14;28034:58;28126:32;28121:2;28113:6;28109:15;28102:57;28023:143;:::o;28172:172::-;28312:24;28308:1;28300:6;28296:14;28289:48;28278:66;:::o;28350:176::-;28490:28;28486:1;28478:6;28474:14;28467:52;28456:70;:::o;28532:711::-;28571:3;28609:4;28591:16;28588:26;28585:2;;;28617:5;;28585:2;28646:20;;:::i;:::-;28721:1;28703:16;28699:24;28696:1;28690:4;28675:49;28754:4;28748:11;28853:16;28846:4;28838:6;28834:17;28831:39;28798:18;28790:6;28787:30;28771:113;28768:2;;;28899:5;;;;28768:2;28945:6;28939:4;28935:17;28981:3;28975:10;29008:18;29000:6;28997:30;28994:2;;;29030:5;;;;;;28994:2;29078:6;29071:4;29066:3;29062:14;29058:27;29137:1;29119:16;29115:24;29109:4;29105:35;29100:3;29097:44;29094:2;;;29144:5;;;;;;;29094:2;29161:57;29209:6;29203:4;29199:17;29191:6;29187:30;29181:4;29161:57;:::i;:::-;29234:3;29227:10;;28575:668;;;;;;;:::o;29249:122::-;29322:24;29340:5;29322:24;:::i;:::-;29315:5;29312:35;29302:2;;29361:1;29358;29351:12;29302:2;29292:79;:::o;29377:116::-;29447:21;29462:5;29447:21;:::i;:::-;29440:5;29437:32;29427:2;;29483:1;29480;29473:12;29427:2;29417:76;:::o;29499:122::-;29572:24;29590:5;29572:24;:::i;:::-;29565:5;29562:35;29552:2;;29611:1;29608;29601:12;29552:2;29542:79;:::o

Swarm Source

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