ETH Price: $2,285.72 (-3.30%)

Token

Elf Protocol (CAND)
 

Overview

Max Total Supply

100,000,000,000,000 CAND

Holders

52

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
Elf_Protocol

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

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) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface ERC20 {
    function getOwner() external view returns (address);
    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 Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    event Authorize_Wallet(address Wallet, bool Status);

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function authorize(address adr) external onlyOwner {
        authorizations[adr] = true;
        emit Authorize_Wallet(adr,true);
    }

    function unauthorize(address adr) external onlyOwner {
        require(adr != owner, "OWNER cant be unauthorized");
        authorizations[adr] = false;
        emit Authorize_Wallet(adr,false);
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) external onlyOwner {
        require(adr != owner, "Already the owner");
        require(adr != address(0), "Can not be zero address.");
        owner = adr;
        emit OwnershipTransferred(owner);
    }


    event OwnershipTransferred(address owner);
}

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 addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

contract Elf_Protocol is ERC20, Auth {
    using SafeMath for uint256;

    address immutable WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string public constant name = "Elf Protocol";
    string public constant symbol = "CAND";
    uint8 public constant decimals = 18;

    uint256 public constant totalSupply = 100000000000000 * 10**decimals;

    uint256 public _maxTxAmount = (totalSupply / 100) * 1;
    uint256 public _maxWalletToken = (totalSupply / 100) * 2;

    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isWalletLimitExempt;

    uint256 public liquidityFee = 20;
    uint256 public marketingFee = 20;
    uint256 public totalFee = marketingFee + liquidityFee ;
    uint256 public constant feeDenominator = 1000;

    uint256 sellMultiplier = 100;
    uint256 buyMultiplier = 100;
    uint256 transferMultiplier = 100;

    address public marketingFeeReceiver = 0x7d4913be8D8Cf4f11Ba95CD8e5324a1C7E50cE1B;

    IDEXRouter public router;
    address public immutable pair;


    bool public swapEnabled = false;
    uint256 public swapThreshold = totalSupply / 500;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D );
        WETH = router.WETH();

        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;


        isFeeExempt[msg.sender] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[ZERO] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[DEAD] = true;

        balanceOf[msg.sender] = totalSupply;
        emit Transfer(address(0), msg.sender, totalSupply);
    }

    receive() external payable { }

    function getOwner() external view override returns (address) { return owner; }
    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 setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner {
        require(maxWallPercent_base1000 >= 1,"Cannot set max wallet less than 0.1%");
        _maxWalletToken = (totalSupply * maxWallPercent_base1000 ) / 1000;
        emit config_MaxWallet(_maxWalletToken);
    }
    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner {
        require(maxTXPercentage_base1000 >= 1,"Cannot set max transaction less than 0.1%");
        _maxTxAmount = (totalSupply * maxTXPercentage_base1000 ) / 1000;
        emit config_MaxTransaction(_maxTxAmount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(!_isBlacklisted[sender] && !_isBlacklisted[recipient], "Blacklisted address");
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        

        if (!authorizations[sender] && !isWalletLimitExempt[sender] && !isWalletLimitExempt[recipient] && recipient != pair) {
            require((balanceOf[recipient] + amount) <= _maxWalletToken,"max wallet limit reached");
        }
    
        // Checks max transaction limit
        require((amount <= _maxTxAmount) || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "Max TX Limit Exceeded");

        if(shouldSwapBack()){ swapBack(); }

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

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);

        balanceOf[recipient] = balanceOf[recipient].add(amountReceived);


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

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        if(amount == 0 || totalFee == 0){
            return amount;
        }

        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        if(feeAmount > 0){
            balanceOf[address(this)] = balanceOf[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
        && balanceOf[address(this)] >= swapThreshold;
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        require(amountPercentage < 101, "Max 100%");
        uint256 amountETH = address(this).balance;
        uint256 amountToClear = ( amountETH * amountPercentage ) / 100;
        payable(msg.sender).transfer(amountToClear);
        emit BalanceClear(amountToClear);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success) {
        require(tokenAddress != address(this), "tokenAddress can not be the native token");

        if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }

        emit clearToken(tokenAddress, tokens);

        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }



    function swapBack() internal swapping {

        uint256 totalETHFee = totalFee;

        uint256 amountToLiquify = (swapThreshold * liquidityFee)/(totalETHFee * 2);
        uint256 amountToSwap = swapThreshold - amountToLiquify;

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

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

        uint256 amountETH = address(this).balance;

         totalETHFee = totalETHFee - (liquidityFee / 2);
        
        uint256 amountETHLiquidity = (amountETH * liquidityFee) / (totalETHFee * 2);
        uint256 amountETHMarketing = (amountETH * marketingFee) / totalETHFee;

        payable(marketingFeeReceiver).transfer(amountETHMarketing);
        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                address(this),
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function manage_FeeExempt(address[] calldata addresses, bool status) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isFeeExempt[addresses[i]] = status;
            emit Wallet_feeExempt(addresses[i], status);
        }
    }

    function manage_TxLimitExempt(address[] calldata addresses, bool status) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isTxLimitExempt[addresses[i]] = status;
            emit Wallet_txExempt(addresses[i], status);
        }
    }

    function manage_WalletLimitExempt(address[] calldata addresses, bool status) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isWalletLimitExempt[addresses[i]] = status;
            emit Wallet_holdingExempt(addresses[i], status);
        }
    }

    function update_fees() internal {
        
            require(totalFee.mul(buyMultiplier).div(100) <= 100, "Buy tax cannot be more than 10%");
            require(totalFee.mul(sellMultiplier).div(100) <= 150, "Sell tax cannot be more than 15%");
            require(totalFee.mul(transferMultiplier).div(100) <= 100, "Transfer Tax cannot be more than 10%");    
        

        emit UpdateFee( uint8(totalFee.mul(buyMultiplier).div(100)),
            uint8(totalFee.mul(sellMultiplier).div(100)),
            uint8(totalFee.mul(transferMultiplier).div(100))
            );
    }

    function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external authorized {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;

        update_fees();
    }

    function setFees_base1000(uint256 _liquidityFee,  uint256 _marketingFee) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        totalFee = _liquidityFee + _marketingFee ;
        
        update_fees();
    } 

    function setFeeReceivers(address _marketingFeeReceiver) external onlyOwner {
        require(_marketingFeeReceiver != address(0),"Marketing fee address cannot be zero address");

        marketingFeeReceiver = _marketingFeeReceiver;

        emit Set_Wallets(marketingFeeReceiver);
    }

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

    function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        require(_amount < (totalSupply/10), "Amount too high");

        swapEnabled = _enabled;
        swapThreshold = _amount;

        emit config_SwapSettings(swapThreshold, swapEnabled);
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return (totalSupply - balanceOf[DEAD] - balanceOf[ZERO]);
    }


function multiTransfer(address from, address[] calldata addresses, uint256[] calldata tokens) external authorized {
    

    require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
    require(addresses.length == tokens.length,"Mismatch between address and token count");

    uint256 SCCC = 0;

    for(uint i=0; i < addresses.length; i++){
        SCCC = SCCC + tokens[i];
    }

    require(balanceOf[from] >= SCCC, "Not enough tokens in wallet");

    for(uint i=0; i < addresses.length; i++){
        _basicTransfer(from,addresses[i],tokens[i]);
    }
}

event AutoLiquify(uint256 amountETH, uint256 amountTokens);
event UpdateFee(uint8 Buy, uint8 Sell, uint8 Transfer);
mapping(address => bool) public _isBlacklisted;
event Wallet_feeExempt(address Wallet, bool Status);
event Wallet_txExempt(address Wallet, bool Status);
event Wallet_holdingExempt(address Wallet, bool Status);

event BalanceClear(uint256 amount);
event clearToken(address TokenAddressCleared, uint256 Amount);

event Set_Wallets(address MarketingWallet);

event config_MaxWallet(uint256 maxWallet);
event config_MaxTransaction(uint256 maxWallet);
event config_SwapSettings(uint256 Amount, bool Enabled);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Authorize_Wallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BalanceClear","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"MarketingWallet","type":"address"}],"name":"Set_Wallets","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"Buy","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Sell","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Transfer","type":"uint8"}],"name":"UpdateFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Wallet_feeExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Wallet_holdingExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Wallet_txExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"clearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"config_MaxTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"config_MaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"Enabled","type":"bool"}],"name":"config_SwapSettings","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_FeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_TxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_WalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setFees_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","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":"view","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":[{"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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600160646012600a62000018919062000a28565b655af3107a40006200002b919062000a79565b62000037919062000af3565b62000043919062000a79565b600255600260646012600a6200005a919062000a28565b655af3107a40006200006d919062000a79565b62000079919062000af3565b62000085919062000a79565b60035560146009556014600a55600954600a54620000a4919062000b2b565b600b556064600c556064600d556064600e55737d4913be8d8cf4f11ba95cd8e5324a1c7e50ce1b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601060146101000a81548160ff0219169083151502179055506101f46012600a62000139919062000a28565b655af3107a40006200014c919062000a79565b62000158919062000af3565b6011553480156200016857600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002eb919062000bd0565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200038c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b2919062000bd0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396608051306040518363ffffffff1660e01b8152600401620003f092919062000c13565b6020604051808303816000875af115801562000410573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000436919062000bd0565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506012600a620007a8919062000a28565b655af3107a4000620007bb919062000a79565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a6200085e919062000a28565b655af3107a400062000871919062000a79565b60405162000880919062000c51565b60405180910390a362000c6e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200091c57808604811115620008f457620008f36200088e565b5b6001851615620009045780820291505b80810290506200091485620008bd565b9450620008d4565b94509492505050565b60008262000937576001905062000a0a565b8162000947576000905062000a0a565b81600181146200096057600281146200096b57620009a1565b600191505062000a0a565b60ff84111562000980576200097f6200088e565b5b8360020a9150848211156200099a57620009996200088e565b5b5062000a0a565b5060208310610133831016604e8410600b8410161715620009db5782820a905083811115620009d557620009d46200088e565b5b62000a0a565b620009ea8484846001620008ca565b9250905081840481111562000a045762000a036200088e565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000a358262000a11565b915062000a428362000a1b565b925062000a717fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000925565b905092915050565b600062000a868262000a11565b915062000a938362000a11565b925082820262000aa38162000a11565b9150828204841483151762000abd5762000abc6200088e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000b008262000a11565b915062000b0d8362000a11565b92508262000b205762000b1f62000ac4565b5b828204905092915050565b600062000b388262000a11565b915062000b458362000a11565b925082820190508082111562000b605762000b5f6200088e565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b988262000b6b565b9050919050565b62000baa8162000b8b565b811462000bb657600080fd5b50565b60008151905062000bca8162000b9f565b92915050565b60006020828403121562000be95762000be862000b66565b5b600062000bf98482850162000bb9565b91505092915050565b62000c0d8162000b8b565b82525050565b600060408201905062000c2a600083018562000c02565b62000c39602083018462000c02565b9392505050565b62000c4b8162000a11565b82525050565b600060208201905062000c68600083018462000c40565b92915050565b60805160a05161524162000cb060003960008181611c9a01528181612a760152818161314c0152818161362a01526136870152600061331b01526152416000f3fe6080604052600436106102745760003560e01c80636ddd17131161014f578063b6a5d7de116100c1578063e96fada21161007a578063e96fada2146109cd578063f0b37c04146109f8578063f2fde38b14610a21578063f7f7331b14610a4a578063f887ea4014610a73578063fe9fbb8014610a9e5761027b565b8063b6a5d7de146108af578063bd9ab537146108d8578063c867d60b14610901578063dd62ed3e1461093e578063df20fd491461097b578063e01bb688146109a45761027b565b8063893d20e811610113578063893d20e8146107895780638b42507f146107b457806395d89b41146107f157806398118cb41461081c578063a8aa1b3114610847578063a9059cbb146108725761027b565b80636ddd17131461068e57806370a08231146106b957806377b54bad146106f657806378109e54146107335780637d1db4a51461075e5761027b565b80631df4ccfc116101e85780633f4218e0116101ac5780633f4218e01461056e578063455a4396146105ab5780634be9d869146105d4578063571ac8b0146105fd5780636b67c4df1461063a5780636ce46bc3146106655761027b565b80631df4ccfc1461047357806323b872dd1461049e5780632b112e49146104db5780632f54bf6e14610506578063313ce567146105435761027b565b8063095ea7b31161023a578063095ea7b314610351578063180b0d7e1461038e57806318160ddd146103b95780631ca0a28d146103e45780631cdd3be31461040d5780631da1db5e1461044a5761027b565b806210868314610280578062bff446146102a95780630445b667146102d257806306fdde03146102fd57806309302dc6146103285761027b565b3661027b57005b600080fd5b34801561028c57600080fd5b506102a760048036038101906102a29190613a65565b610adb565b005b3480156102b557600080fd5b506102d060048036038101906102cb9190613a65565b610c6d565b005b3480156102de57600080fd5b506102e7610dff565b6040516102f49190613ade565b60405180910390f35b34801561030957600080fd5b50610312610e05565b60405161031f9190613b89565b60405180910390f35b34801561033457600080fd5b5061034f600480360381019061034a9190613bd7565b610e3e565b005b34801561035d57600080fd5b5061037860048036038101906103739190613c62565b610f43565b6040516103859190613cb1565b60405180910390f35b34801561039a57600080fd5b506103a3611035565b6040516103b09190613ade565b60405180910390f35b3480156103c557600080fd5b506103ce61103b565b6040516103db9190613ade565b60405180910390f35b3480156103f057600080fd5b5061040b60048036038101906104069190613d22565b61105d565b005b34801561041957600080fd5b50610434600480360381019061042f9190613db7565b611276565b6040516104419190613cb1565b60405180910390f35b34801561045657600080fd5b50610471600480360381019061046c9190613bd7565b611296565b005b34801561047f57600080fd5b506104886113c5565b6040516104959190613ade565b60405180910390f35b3480156104aa57600080fd5b506104c560048036038101906104c09190613de4565b6113cb565b6040516104d29190613cb1565b60405180910390f35b3480156104e757600080fd5b506104f06115cb565b6040516104fd9190613ade565b60405180910390f35b34801561051257600080fd5b5061052d60048036038101906105289190613db7565b611687565b60405161053a9190613cb1565b60405180910390f35b34801561054f57600080fd5b506105586116e0565b6040516105659190613e53565b60405180910390f35b34801561057a57600080fd5b5061059560048036038101906105909190613db7565b6116e5565b6040516105a29190613cb1565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd9190613e6e565b611705565b005b3480156105e057600080fd5b506105fb60048036038101906105f69190613a65565b6117a8565b005b34801561060957600080fd5b50610624600480360381019061061f9190613db7565b61193a565b6040516106319190613cb1565b60405180910390f35b34801561064657600080fd5b5061064f61196d565b60405161065c9190613ade565b60405180910390f35b34801561067157600080fd5b5061068c60048036038101906106879190613eae565b611973565b005b34801561069a57600080fd5b506106a36119dd565b6040516106b09190613cb1565b60405180910390f35b3480156106c557600080fd5b506106e060048036038101906106db9190613db7565b6119f0565b6040516106ed9190613ade565b60405180910390f35b34801561070257600080fd5b5061071d60048036038101906107189190613c62565b611a08565b60405161072a9190613cb1565b60405180910390f35b34801561073f57600080fd5b50610748611c04565b6040516107559190613ade565b60405180910390f35b34801561076a57600080fd5b50610773611c0a565b6040516107809190613ade565b60405180910390f35b34801561079557600080fd5b5061079e611c10565b6040516107ab9190613f10565b60405180910390f35b3480156107c057600080fd5b506107db60048036038101906107d69190613db7565b611c39565b6040516107e89190613cb1565b60405180910390f35b3480156107fd57600080fd5b50610806611c59565b6040516108139190613b89565b60405180910390f35b34801561082857600080fd5b50610831611c92565b60405161083e9190613ade565b60405180910390f35b34801561085357600080fd5b5061085c611c98565b6040516108699190613f10565b60405180910390f35b34801561087e57600080fd5b5061089960048036038101906108949190613c62565b611cbc565b6040516108a69190613cb1565b60405180910390f35b3480156108bb57600080fd5b506108d660048036038101906108d19190613db7565b611cd1565b005b3480156108e457600080fd5b506108ff60048036038101906108fa9190613bd7565b611dad565b005b34801561090d57600080fd5b5061092860048036038101906109239190613db7565b611eb2565b6040516109359190613cb1565b60405180910390f35b34801561094a57600080fd5b5061096560048036038101906109609190613f2b565b611ed2565b6040516109729190613ade565b60405180910390f35b34801561098757600080fd5b506109a2600480360381019061099d9190613f6b565b611f59565b005b3480156109b057600080fd5b506109cb60048036038101906109c69190613db7565b61207c565b005b3480156109d957600080fd5b506109e26121d0565b6040516109ef9190613f10565b60405180910390f35b348015610a0457600080fd5b50610a1f6004803603810190610a1a9190613db7565b6121f6565b005b348015610a2d57600080fd5b50610a486004803603810190610a439190613fe9565b612361565b005b348015610a5657600080fd5b50610a716004803603810190610a6c9190614016565b612540565b005b348015610a7f57600080fd5b50610a886125b4565b604051610a9591906140b5565b60405180910390f35b348015610aaa57600080fd5b50610ac56004803603810190610ac09190613db7565b6125da565b604051610ad29190613cb1565b60405180910390f35b610ae4336125da565b610b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1a9061411c565b60405180910390fd5b6101f58383905010610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b61906141ae565b60405180910390fd5b60005b83839050811015610c67578160086000868685818110610b9057610b8f6141ce565b5b9050602002016020810190610ba59190613db7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f566c2270277919680152b0734389ae919d95ff7e9024c03fc3c7c209ec8412c7848483818110610c2a57610c296141ce565b5b9050602002016020810190610c3f9190613db7565b83604051610c4e9291906141fd565b60405180910390a180610c6090614255565b9050610b6d565b50505050565b610c76336125da565b610cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cac9061411c565b60405180910390fd5b6101f58383905010610cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf3906141ae565b60405180910390fd5b60005b83839050811015610df9578160066000868685818110610d2257610d216141ce565b5b9050602002016020810190610d379190613db7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f9fbd25f95d342f2efc070b56d2fadd2341d264ef8c915dc268609b2ca1bb25de848483818110610dbc57610dbb6141ce565b5b9050602002016020810190610dd19190613db7565b83604051610de09291906141fd565b60405180910390a180610df290614255565b9050610cff565b50505050565b60115481565b6040518060400160405280600c81526020017f456c662050726f746f636f6c000000000000000000000000000000000000000081525081565b610e4733611687565b610e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7d906142e9565b60405180910390fd5b6001811015610eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec19061437b565b60405180910390fd5b6103e8816012600a610edc91906144ce565b655af3107a4000610eed9190614519565b610ef79190614519565b610f01919061458a565b6003819055507fa69fa556bf940aa0c695b9c8e1b229fdb1476830e2025e44da1028e0c1458d4a600354604051610f389190613ade565b60405180910390a150565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516110239190613ade565b60405180910390a36001905092915050565b6103e881565b6012600a61104991906144ce565b655af3107a400061105a9190614519565b81565b611066336125da565b6110a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109c9061411c565b60405180910390fd5b6101f584849050106110ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e3906141ae565b60405180910390fd5b818190508484905014611134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112b9061462d565b60405180910390fd5b6000805b8585905081101561117d57838382818110611156576111556141ce565b5b9050602002013582611168919061464d565b9150808061117590614255565b915050611138565b5080600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f7906146cd565b60405180910390fd5b60005b8585905081101561126d5761125987878784818110611225576112246141ce565b5b905060200201602081019061123a9190613db7565b86868581811061124d5761124c6141ce565b5b90506020020135612630565b50808061126590614255565b915050611203565b50505050505050565b60136020528060005260406000206000915054906101000a900460ff1681565b61129f33611687565b6112de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d5906142e9565b60405180910390fd5b60658110611321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131890614739565b60405180910390fd5b60004790506000606483836113369190614519565b611340919061458a565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611388573d6000803e3d6000fd5b507f377153983e64f72f80af47182763316780b9133be808b7082a16710202b8fbda816040516113b89190613ade565b60405180910390a1505050565b600b5481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146115b757611536826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128039092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6115c2848484612867565b90509392505050565b6000600460008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546004600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546012600a61165d91906144ce565b655af3107a400061166e9190614519565b6116789190614759565b6116829190614759565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b601281565b60066020528060005260406000206000915054906101000a900460ff1681565b61170e33611687565b61174d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611744906142e9565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6117b1336125da565b6117f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e79061411c565b60405180910390fd5b6101f58383905010611837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182e906141ae565b60405180910390fd5b60005b8383905081101561193457816007600086868581811061185d5761185c6141ce565b5b90506020020160208101906118729190613db7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f3c4f06d74861dea6c152189f2ac8853b6f789feb0e1182101b7ad9d1858f70e38484838181106118f7576118f66141ce565b5b905060200201602081019061190c9190613db7565b8360405161191b9291906141fd565b60405180910390a18061192d90614255565b905061183a565b50505050565b6000611966827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610f43565b9050919050565b600a5481565b61197c336125da565b6119bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b29061411c565b60405180910390fd5b81600c8190555082600d8190555080600e819055506119d8612eeb565b505050565b601060149054906101000a900460ff1681565b60046020528060005260406000206000915090505481565b6000611a1333611687565b611a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a49906142e9565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab7906147ff565b60405180910390fd5b60008203611b45578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b019190613f10565b602060405180830381865afa158015611b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b429190614834565b91505b7f960427a4fde284dcc8da2c51a43d210cfd7ed6f4328a24ba33eee49910db564b8383604051611b76929190614861565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401611bb9929190614861565b6020604051808303816000875af1158015611bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfc919061489f565b905092915050565b60035481565b60025481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60076020528060005260406000206000915054906101000a900460ff1681565b6040518060400160405280600481526020017f43414e440000000000000000000000000000000000000000000000000000000081525081565b60095481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000611cc9338484612867565b905092915050565b611cda33611687565b611d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d10906142e9565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b9505816001604051611da29291906141fd565b60405180910390a150565b611db633611687565b611df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dec906142e9565b60405180910390fd5b6001811015611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e309061493e565b60405180910390fd5b6103e8816012600a611e4b91906144ce565b655af3107a4000611e5c9190614519565b611e669190614519565b611e70919061458a565b6002819055507f365a2bb07537fddd750e9ac8d56970e584f83a144bb5225e77491b83bccd1183600254604051611ea79190613ade565b60405180910390a150565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f6233611687565b611fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f98906142e9565b60405180910390fd5b600a6012600a611fb191906144ce565b655af3107a4000611fc29190614519565b611fcc919061458a565b811061200d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612004906149aa565b60405180910390fd5b81601060146101000a81548160ff021916908315150217905550806011819055507f34c2d4c263b6f41223c6d30ae2e7bcb18629892587e0a4138f57ba2c523953d0601154601060149054906101000a900460ff166040516120709291906149ca565b60405180910390a15050565b61208533611687565b6120c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bb906142e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212a90614a65565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4cd5c2a72781e5b0a5efc1898c18ae3177440b4ac3d33d7ae648e89334d03b56600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516121c59190613f10565b60405180910390a150565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6121ff33611687565b61223e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612235906142e9565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036122cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c390614ad1565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b95058160006040516123569291906141fd565b60405180910390a150565b61236a33611687565b6123a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a0906142e9565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242e90614b3d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249d90614ba9565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516125359190613f10565b60405180910390a150565b61254933611687565b612588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257f906142e9565b60405180910390fd5b8160098190555080600a8190555080826125a2919061464d565b600b819055506125b0612eeb565b5050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006126bb826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128039092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061275082600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130ea90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127f09190613ade565b60405180910390a3600190509392505050565b600083831115829061284b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128429190613b89565b60405180910390fd5b506000838561285a9190614759565b9050809150509392505050565b6000601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561290d5750601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61294c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294390614c15565b60405180910390fd5b601260009054906101000a900460ff16156129735761296c848484612630565b9050612ee4565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612a175750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612a6d5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ac557507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612b5a5760035482600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b18919061464d565b1115612b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5090614c81565b60405180910390fd5b5b60025482111580612bb45750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612c085750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3e90614ced565b60405180910390fd5b612c4f613148565b15612c5d57612c5c61321d565b5b612ce6826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128039092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dcc5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612de057612ddb858486613602565b612de2565b825b9050612e3681600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130ea90919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ed69190613ade565b60405180910390a360019150505b9392505050565b6064612f176064612f09600d54600b5461384d90919063ffffffff16565b6138c790919063ffffffff16565b1115612f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4f90614d59565b60405180910390fd5b6096612f846064612f76600c54600b5461384d90919063ffffffff16565b6138c790919063ffffffff16565b1115612fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fbc90614dc5565b60405180910390fd5b6064612ff16064612fe3600e54600b5461384d90919063ffffffff16565b6138c790919063ffffffff16565b1115613032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302990614e57565b60405180910390fd5b7f375884ed7f92283ee74d8884b39a803f4aee832b15766fe016b74fc791fc2ada61307d606461306f600d54600b5461384d90919063ffffffff16565b6138c790919063ffffffff16565b6130a76064613099600c54600b5461384d90919063ffffffff16565b6138c790919063ffffffff16565b6130d160646130c3600e54600b5461384d90919063ffffffff16565b6138c790919063ffffffff16565b6040516130e093929190614e77565b60405180910390a1565b60008082846130f9919061464d565b90508381101561313e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161313590614efa565b60405180910390fd5b8091505092915050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156131b35750601260009054906101000a900460ff16155b80156131cb5750601060149054906101000a900460ff165b80156132185750601154600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601260006101000a81548160ff0219169083151502179055506000600b549050600060028261324e9190614519565b60095460115461325e9190614519565b613268919061458a565b905060008160115461327a9190614759565b90506000600267ffffffffffffffff81111561329957613298614f1a565b5b6040519080825280602002602001820160405280156132c75781602001602082028036833780820191505090505b50905030816000815181106132df576132de6141ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061334e5761334d6141ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016133ec959493929190615042565b600060405180830381600087803b15801561340657600080fd5b505af115801561341a573d6000803e3d6000fd5b5050505060004790506002600954613432919061458a565b8561343d9190614759565b9450600060028661344e9190614519565b6009548361345c9190614519565b613466919061458a565b9050600086600a54846134799190614519565b613483919061458a565b9050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156134ed573d6000803e3d6000fd5b5060008611156135de57601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308960008030426040518863ffffffff1660e01b815260040161355e9695949392919061509c565b60606040518083038185885af115801561357c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906135a191906150fd565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450682876040516135d5929190615150565b60405180910390a15b505050505050506000601260006101000a81548160ff021916908315150217905550565b60008083148061361457506000600b54145b1561362157829050613846565b6000600e5490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361368557600c5490506136df565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036136de57600d5490505b5b600061372860646103e86136f39190614519565b61371a8461370c600b548a61384d90919063ffffffff16565b61384d90919063ffffffff16565b6138c790919063ffffffff16565b9050600081111561382e5761378581600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130ea90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138259190613ade565b60405180910390a35b613841818661391190919063ffffffff16565b925050505b9392505050565b600080830361385f57600090506138c1565b6000828461386d9190614519565b905082848261387c919061458a565b146138bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138b3906151eb565b60405180910390fd5b809150505b92915050565b600061390983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061395b565b905092915050565b600061395383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612803565b905092915050565b600080831182906139a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139999190613b89565b60405180910390fd5b50600083856139b1919061458a565b9050809150509392505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126139ed576139ec6139c8565b5b8235905067ffffffffffffffff811115613a0a57613a096139cd565b5b602083019150836020820283011115613a2657613a256139d2565b5b9250929050565b60008115159050919050565b613a4281613a2d565b8114613a4d57600080fd5b50565b600081359050613a5f81613a39565b92915050565b600080600060408486031215613a7e57613a7d6139be565b5b600084013567ffffffffffffffff811115613a9c57613a9b6139c3565b5b613aa8868287016139d7565b93509350506020613abb86828701613a50565b9150509250925092565b6000819050919050565b613ad881613ac5565b82525050565b6000602082019050613af36000830184613acf565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b33578082015181840152602081019050613b18565b60008484015250505050565b6000601f19601f8301169050919050565b6000613b5b82613af9565b613b658185613b04565b9350613b75818560208601613b15565b613b7e81613b3f565b840191505092915050565b60006020820190508181036000830152613ba38184613b50565b905092915050565b613bb481613ac5565b8114613bbf57600080fd5b50565b600081359050613bd181613bab565b92915050565b600060208284031215613bed57613bec6139be565b5b6000613bfb84828501613bc2565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613c2f82613c04565b9050919050565b613c3f81613c24565b8114613c4a57600080fd5b50565b600081359050613c5c81613c36565b92915050565b60008060408385031215613c7957613c786139be565b5b6000613c8785828601613c4d565b9250506020613c9885828601613bc2565b9150509250929050565b613cab81613a2d565b82525050565b6000602082019050613cc66000830184613ca2565b92915050565b60008083601f840112613ce257613ce16139c8565b5b8235905067ffffffffffffffff811115613cff57613cfe6139cd565b5b602083019150836020820283011115613d1b57613d1a6139d2565b5b9250929050565b600080600080600060608688031215613d3e57613d3d6139be565b5b6000613d4c88828901613c4d565b955050602086013567ffffffffffffffff811115613d6d57613d6c6139c3565b5b613d79888289016139d7565b9450945050604086013567ffffffffffffffff811115613d9c57613d9b6139c3565b5b613da888828901613ccc565b92509250509295509295909350565b600060208284031215613dcd57613dcc6139be565b5b6000613ddb84828501613c4d565b91505092915050565b600080600060608486031215613dfd57613dfc6139be565b5b6000613e0b86828701613c4d565b9350506020613e1c86828701613c4d565b9250506040613e2d86828701613bc2565b9150509250925092565b600060ff82169050919050565b613e4d81613e37565b82525050565b6000602082019050613e686000830184613e44565b92915050565b60008060408385031215613e8557613e846139be565b5b6000613e9385828601613c4d565b9250506020613ea485828601613a50565b9150509250929050565b600080600060608486031215613ec757613ec66139be565b5b6000613ed586828701613bc2565b9350506020613ee686828701613bc2565b9250506040613ef786828701613bc2565b9150509250925092565b613f0a81613c24565b82525050565b6000602082019050613f256000830184613f01565b92915050565b60008060408385031215613f4257613f416139be565b5b6000613f5085828601613c4d565b9250506020613f6185828601613c4d565b9150509250929050565b60008060408385031215613f8257613f816139be565b5b6000613f9085828601613a50565b9250506020613fa185828601613bc2565b9150509250929050565b6000613fb682613c04565b9050919050565b613fc681613fab565b8114613fd157600080fd5b50565b600081359050613fe381613fbd565b92915050565b600060208284031215613fff57613ffe6139be565b5b600061400d84828501613fd4565b91505092915050565b6000806040838503121561402d5761402c6139be565b5b600061403b85828601613bc2565b925050602061404c85828601613bc2565b9150509250929050565b6000819050919050565b600061407b61407661407184613c04565b614056565b613c04565b9050919050565b600061408d82614060565b9050919050565b600061409f82614082565b9050919050565b6140af81614094565b82525050565b60006020820190506140ca60008301846140a6565b92915050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b6000614106600b83613b04565b9150614111826140d0565b602082019050919050565b60006020820190508181036000830152614135816140f9565b9050919050565b7f474153204572726f723a206d6178206c696d697420697320353030206164647260008201527f6573736573000000000000000000000000000000000000000000000000000000602082015250565b6000614198602583613b04565b91506141a38261413c565b604082019050919050565b600060208201905081810360008301526141c78161418b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040820190506142126000830185613f01565b61421f6020830184613ca2565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061426082613ac5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361429257614291614226565b5b600182019050919050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006142d3600683613b04565b91506142de8261429d565b602082019050919050565b60006020820190508181036000830152614302816142c6565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e2060008201527f302e312500000000000000000000000000000000000000000000000000000000602082015250565b6000614365602483613b04565b915061437082614309565b604082019050919050565b6000602082019050818103600083015261439481614358565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156143f2578086048111156143ce576143cd614226565b5b60018516156143dd5780820291505b80810290506143eb8561439b565b94506143b2565b94509492505050565b60008261440b57600190506144c7565b8161441957600090506144c7565b816001811461442f576002811461443957614468565b60019150506144c7565b60ff84111561444b5761444a614226565b5b8360020a91508482111561446257614461614226565b5b506144c7565b5060208310610133831016604e8410600b841016171561449d5782820a90508381111561449857614497614226565b5b6144c7565b6144aa84848460016143a8565b925090508184048111156144c1576144c0614226565b5b81810290505b9392505050565b60006144d982613ac5565b91506144e483613e37565b92506145117fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846143fb565b905092915050565b600061452482613ac5565b915061452f83613ac5565b925082820261453d81613ac5565b9150828204841483151761455457614553614226565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061459582613ac5565b91506145a083613ac5565b9250826145b0576145af61455b565b5b828204905092915050565b7f4d69736d61746368206265747765656e206164647265737320616e6420746f6b60008201527f656e20636f756e74000000000000000000000000000000000000000000000000602082015250565b6000614617602883613b04565b9150614622826145bb565b604082019050919050565b600060208201905081810360008301526146468161460a565b9050919050565b600061465882613ac5565b915061466383613ac5565b925082820190508082111561467b5761467a614226565b5b92915050565b7f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000600082015250565b60006146b7601b83613b04565b91506146c282614681565b602082019050919050565b600060208201905081810360008301526146e6816146aa565b9050919050565b7f4d61782031303025000000000000000000000000000000000000000000000000600082015250565b6000614723600883613b04565b915061472e826146ed565b602082019050919050565b6000602082019050818103600083015261475281614716565b9050919050565b600061476482613ac5565b915061476f83613ac5565b925082820390508181111561478757614786614226565b5b92915050565b7f746f6b656e416464726573732063616e206e6f7420626520746865206e61746960008201527f766520746f6b656e000000000000000000000000000000000000000000000000602082015250565b60006147e9602883613b04565b91506147f48261478d565b604082019050919050565b60006020820190508181036000830152614818816147dc565b9050919050565b60008151905061482e81613bab565b92915050565b60006020828403121561484a576148496139be565b5b60006148588482850161481f565b91505092915050565b60006040820190506148766000830185613f01565b6148836020830184613acf565b9392505050565b60008151905061489981613a39565b92915050565b6000602082840312156148b5576148b46139be565b5b60006148c38482850161488a565b91505092915050565b7f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6573732060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614928602983613b04565b9150614933826148cc565b604082019050919050565b600060208201905081810360008301526149578161491b565b9050919050565b7f416d6f756e7420746f6f20686967680000000000000000000000000000000000600082015250565b6000614994600f83613b04565b915061499f8261495e565b602082019050919050565b600060208201905081810360008301526149c381614987565b9050919050565b60006040820190506149df6000830185613acf565b6149ec6020830184613ca2565b9392505050565b7f4d61726b6574696e672066656520616464726573732063616e6e6f742062652060008201527f7a65726f20616464726573730000000000000000000000000000000000000000602082015250565b6000614a4f602c83613b04565b9150614a5a826149f3565b604082019050919050565b60006020820190508181036000830152614a7e81614a42565b9050919050565b7f4f574e45522063616e7420626520756e617574686f72697a6564000000000000600082015250565b6000614abb601a83613b04565b9150614ac682614a85565b602082019050919050565b60006020820190508181036000830152614aea81614aae565b9050919050565b7f416c726561647920746865206f776e6572000000000000000000000000000000600082015250565b6000614b27601183613b04565b9150614b3282614af1565b602082019050919050565b60006020820190508181036000830152614b5681614b1a565b9050919050565b7f43616e206e6f74206265207a65726f20616464726573732e0000000000000000600082015250565b6000614b93601883613b04565b9150614b9e82614b5d565b602082019050919050565b60006020820190508181036000830152614bc281614b86565b9050919050565b7f426c61636b6c6973746564206164647265737300000000000000000000000000600082015250565b6000614bff601383613b04565b9150614c0a82614bc9565b602082019050919050565b60006020820190508181036000830152614c2e81614bf2565b9050919050565b7f6d61782077616c6c6574206c696d697420726561636865640000000000000000600082015250565b6000614c6b601883613b04565b9150614c7682614c35565b602082019050919050565b60006020820190508181036000830152614c9a81614c5e565b9050919050565b7f4d6178205458204c696d69742045786365656465640000000000000000000000600082015250565b6000614cd7601583613b04565b9150614ce282614ca1565b602082019050919050565b60006020820190508181036000830152614d0681614cca565b9050919050565b7f427579207461782063616e6e6f74206265206d6f7265207468616e2031302500600082015250565b6000614d43601f83613b04565b9150614d4e82614d0d565b602082019050919050565b60006020820190508181036000830152614d7281614d36565b9050919050565b7f53656c6c207461782063616e6e6f74206265206d6f7265207468616e20313525600082015250565b6000614daf602083613b04565b9150614dba82614d79565b602082019050919050565b60006020820190508181036000830152614dde81614da2565b9050919050565b7f5472616e73666572205461782063616e6e6f74206265206d6f7265207468616e60008201527f2031302500000000000000000000000000000000000000000000000000000000602082015250565b6000614e41602483613b04565b9150614e4c82614de5565b604082019050919050565b60006020820190508181036000830152614e7081614e34565b9050919050565b6000606082019050614e8c6000830186613e44565b614e996020830185613e44565b614ea66040830184613e44565b949350505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614ee4601b83613b04565b9150614eef82614eae565b602082019050919050565b60006020820190508181036000830152614f1381614ed7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b6000614f6e614f69614f6484614f49565b614056565b613ac5565b9050919050565b614f7e81614f53565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614fb981613c24565b82525050565b6000614fcb8383614fb0565b60208301905092915050565b6000602082019050919050565b6000614fef82614f84565b614ff98185614f8f565b935061500483614fa0565b8060005b8381101561503557815161501c8882614fbf565b975061502783614fd7565b925050600181019050615008565b5085935050505092915050565b600060a0820190506150576000830188613acf565b6150646020830187614f75565b81810360408301526150768186614fe4565b90506150856060830185613f01565b6150926080830184613acf565b9695505050505050565b600060c0820190506150b16000830189613f01565b6150be6020830188613acf565b6150cb6040830187614f75565b6150d86060830186614f75565b6150e56080830185613f01565b6150f260a0830184613acf565b979650505050505050565b600080600060608486031215615116576151156139be565b5b60006151248682870161481f565b93505060206151358682870161481f565b92505060406151468682870161481f565b9150509250925092565b60006040820190506151656000830185613acf565b6151726020830184613acf565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006151d5602183613b04565b91506151e082615179565b604082019050919050565b60006020820190508181036000830152615204816151c8565b905091905056fea26469706673582212207af07c0c8ea04014581168fa6fcbdb49f3ff5ca0847d8312fe2a0e21bc01239f64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102745760003560e01c80636ddd17131161014f578063b6a5d7de116100c1578063e96fada21161007a578063e96fada2146109cd578063f0b37c04146109f8578063f2fde38b14610a21578063f7f7331b14610a4a578063f887ea4014610a73578063fe9fbb8014610a9e5761027b565b8063b6a5d7de146108af578063bd9ab537146108d8578063c867d60b14610901578063dd62ed3e1461093e578063df20fd491461097b578063e01bb688146109a45761027b565b8063893d20e811610113578063893d20e8146107895780638b42507f146107b457806395d89b41146107f157806398118cb41461081c578063a8aa1b3114610847578063a9059cbb146108725761027b565b80636ddd17131461068e57806370a08231146106b957806377b54bad146106f657806378109e54146107335780637d1db4a51461075e5761027b565b80631df4ccfc116101e85780633f4218e0116101ac5780633f4218e01461056e578063455a4396146105ab5780634be9d869146105d4578063571ac8b0146105fd5780636b67c4df1461063a5780636ce46bc3146106655761027b565b80631df4ccfc1461047357806323b872dd1461049e5780632b112e49146104db5780632f54bf6e14610506578063313ce567146105435761027b565b8063095ea7b31161023a578063095ea7b314610351578063180b0d7e1461038e57806318160ddd146103b95780631ca0a28d146103e45780631cdd3be31461040d5780631da1db5e1461044a5761027b565b806210868314610280578062bff446146102a95780630445b667146102d257806306fdde03146102fd57806309302dc6146103285761027b565b3661027b57005b600080fd5b34801561028c57600080fd5b506102a760048036038101906102a29190613a65565b610adb565b005b3480156102b557600080fd5b506102d060048036038101906102cb9190613a65565b610c6d565b005b3480156102de57600080fd5b506102e7610dff565b6040516102f49190613ade565b60405180910390f35b34801561030957600080fd5b50610312610e05565b60405161031f9190613b89565b60405180910390f35b34801561033457600080fd5b5061034f600480360381019061034a9190613bd7565b610e3e565b005b34801561035d57600080fd5b5061037860048036038101906103739190613c62565b610f43565b6040516103859190613cb1565b60405180910390f35b34801561039a57600080fd5b506103a3611035565b6040516103b09190613ade565b60405180910390f35b3480156103c557600080fd5b506103ce61103b565b6040516103db9190613ade565b60405180910390f35b3480156103f057600080fd5b5061040b60048036038101906104069190613d22565b61105d565b005b34801561041957600080fd5b50610434600480360381019061042f9190613db7565b611276565b6040516104419190613cb1565b60405180910390f35b34801561045657600080fd5b50610471600480360381019061046c9190613bd7565b611296565b005b34801561047f57600080fd5b506104886113c5565b6040516104959190613ade565b60405180910390f35b3480156104aa57600080fd5b506104c560048036038101906104c09190613de4565b6113cb565b6040516104d29190613cb1565b60405180910390f35b3480156104e757600080fd5b506104f06115cb565b6040516104fd9190613ade565b60405180910390f35b34801561051257600080fd5b5061052d60048036038101906105289190613db7565b611687565b60405161053a9190613cb1565b60405180910390f35b34801561054f57600080fd5b506105586116e0565b6040516105659190613e53565b60405180910390f35b34801561057a57600080fd5b5061059560048036038101906105909190613db7565b6116e5565b6040516105a29190613cb1565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd9190613e6e565b611705565b005b3480156105e057600080fd5b506105fb60048036038101906105f69190613a65565b6117a8565b005b34801561060957600080fd5b50610624600480360381019061061f9190613db7565b61193a565b6040516106319190613cb1565b60405180910390f35b34801561064657600080fd5b5061064f61196d565b60405161065c9190613ade565b60405180910390f35b34801561067157600080fd5b5061068c60048036038101906106879190613eae565b611973565b005b34801561069a57600080fd5b506106a36119dd565b6040516106b09190613cb1565b60405180910390f35b3480156106c557600080fd5b506106e060048036038101906106db9190613db7565b6119f0565b6040516106ed9190613ade565b60405180910390f35b34801561070257600080fd5b5061071d60048036038101906107189190613c62565b611a08565b60405161072a9190613cb1565b60405180910390f35b34801561073f57600080fd5b50610748611c04565b6040516107559190613ade565b60405180910390f35b34801561076a57600080fd5b50610773611c0a565b6040516107809190613ade565b60405180910390f35b34801561079557600080fd5b5061079e611c10565b6040516107ab9190613f10565b60405180910390f35b3480156107c057600080fd5b506107db60048036038101906107d69190613db7565b611c39565b6040516107e89190613cb1565b60405180910390f35b3480156107fd57600080fd5b50610806611c59565b6040516108139190613b89565b60405180910390f35b34801561082857600080fd5b50610831611c92565b60405161083e9190613ade565b60405180910390f35b34801561085357600080fd5b5061085c611c98565b6040516108699190613f10565b60405180910390f35b34801561087e57600080fd5b5061089960048036038101906108949190613c62565b611cbc565b6040516108a69190613cb1565b60405180910390f35b3480156108bb57600080fd5b506108d660048036038101906108d19190613db7565b611cd1565b005b3480156108e457600080fd5b506108ff60048036038101906108fa9190613bd7565b611dad565b005b34801561090d57600080fd5b5061092860048036038101906109239190613db7565b611eb2565b6040516109359190613cb1565b60405180910390f35b34801561094a57600080fd5b5061096560048036038101906109609190613f2b565b611ed2565b6040516109729190613ade565b60405180910390f35b34801561098757600080fd5b506109a2600480360381019061099d9190613f6b565b611f59565b005b3480156109b057600080fd5b506109cb60048036038101906109c69190613db7565b61207c565b005b3480156109d957600080fd5b506109e26121d0565b6040516109ef9190613f10565b60405180910390f35b348015610a0457600080fd5b50610a1f6004803603810190610a1a9190613db7565b6121f6565b005b348015610a2d57600080fd5b50610a486004803603810190610a439190613fe9565b612361565b005b348015610a5657600080fd5b50610a716004803603810190610a6c9190614016565b612540565b005b348015610a7f57600080fd5b50610a886125b4565b604051610a9591906140b5565b60405180910390f35b348015610aaa57600080fd5b50610ac56004803603810190610ac09190613db7565b6125da565b604051610ad29190613cb1565b60405180910390f35b610ae4336125da565b610b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1a9061411c565b60405180910390fd5b6101f58383905010610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b61906141ae565b60405180910390fd5b60005b83839050811015610c67578160086000868685818110610b9057610b8f6141ce565b5b9050602002016020810190610ba59190613db7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f566c2270277919680152b0734389ae919d95ff7e9024c03fc3c7c209ec8412c7848483818110610c2a57610c296141ce565b5b9050602002016020810190610c3f9190613db7565b83604051610c4e9291906141fd565b60405180910390a180610c6090614255565b9050610b6d565b50505050565b610c76336125da565b610cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cac9061411c565b60405180910390fd5b6101f58383905010610cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf3906141ae565b60405180910390fd5b60005b83839050811015610df9578160066000868685818110610d2257610d216141ce565b5b9050602002016020810190610d379190613db7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f9fbd25f95d342f2efc070b56d2fadd2341d264ef8c915dc268609b2ca1bb25de848483818110610dbc57610dbb6141ce565b5b9050602002016020810190610dd19190613db7565b83604051610de09291906141fd565b60405180910390a180610df290614255565b9050610cff565b50505050565b60115481565b6040518060400160405280600c81526020017f456c662050726f746f636f6c000000000000000000000000000000000000000081525081565b610e4733611687565b610e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7d906142e9565b60405180910390fd5b6001811015610eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec19061437b565b60405180910390fd5b6103e8816012600a610edc91906144ce565b655af3107a4000610eed9190614519565b610ef79190614519565b610f01919061458a565b6003819055507fa69fa556bf940aa0c695b9c8e1b229fdb1476830e2025e44da1028e0c1458d4a600354604051610f389190613ade565b60405180910390a150565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516110239190613ade565b60405180910390a36001905092915050565b6103e881565b6012600a61104991906144ce565b655af3107a400061105a9190614519565b81565b611066336125da565b6110a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109c9061411c565b60405180910390fd5b6101f584849050106110ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e3906141ae565b60405180910390fd5b818190508484905014611134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112b9061462d565b60405180910390fd5b6000805b8585905081101561117d57838382818110611156576111556141ce565b5b9050602002013582611168919061464d565b9150808061117590614255565b915050611138565b5080600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f7906146cd565b60405180910390fd5b60005b8585905081101561126d5761125987878784818110611225576112246141ce565b5b905060200201602081019061123a9190613db7565b86868581811061124d5761124c6141ce565b5b90506020020135612630565b50808061126590614255565b915050611203565b50505050505050565b60136020528060005260406000206000915054906101000a900460ff1681565b61129f33611687565b6112de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d5906142e9565b60405180910390fd5b60658110611321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131890614739565b60405180910390fd5b60004790506000606483836113369190614519565b611340919061458a565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611388573d6000803e3d6000fd5b507f377153983e64f72f80af47182763316780b9133be808b7082a16710202b8fbda816040516113b89190613ade565b60405180910390a1505050565b600b5481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146115b757611536826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128039092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6115c2848484612867565b90509392505050565b6000600460008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546004600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546012600a61165d91906144ce565b655af3107a400061166e9190614519565b6116789190614759565b6116829190614759565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b601281565b60066020528060005260406000206000915054906101000a900460ff1681565b61170e33611687565b61174d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611744906142e9565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6117b1336125da565b6117f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e79061411c565b60405180910390fd5b6101f58383905010611837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182e906141ae565b60405180910390fd5b60005b8383905081101561193457816007600086868581811061185d5761185c6141ce565b5b90506020020160208101906118729190613db7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f3c4f06d74861dea6c152189f2ac8853b6f789feb0e1182101b7ad9d1858f70e38484838181106118f7576118f66141ce565b5b905060200201602081019061190c9190613db7565b8360405161191b9291906141fd565b60405180910390a18061192d90614255565b905061183a565b50505050565b6000611966827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610f43565b9050919050565b600a5481565b61197c336125da565b6119bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b29061411c565b60405180910390fd5b81600c8190555082600d8190555080600e819055506119d8612eeb565b505050565b601060149054906101000a900460ff1681565b60046020528060005260406000206000915090505481565b6000611a1333611687565b611a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a49906142e9565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab7906147ff565b60405180910390fd5b60008203611b45578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b019190613f10565b602060405180830381865afa158015611b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b429190614834565b91505b7f960427a4fde284dcc8da2c51a43d210cfd7ed6f4328a24ba33eee49910db564b8383604051611b76929190614861565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401611bb9929190614861565b6020604051808303816000875af1158015611bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfc919061489f565b905092915050565b60035481565b60025481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60076020528060005260406000206000915054906101000a900460ff1681565b6040518060400160405280600481526020017f43414e440000000000000000000000000000000000000000000000000000000081525081565b60095481565b7f000000000000000000000000d928e5968de9eec51011ec1a9b8a1afcd6e4fcb481565b6000611cc9338484612867565b905092915050565b611cda33611687565b611d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d10906142e9565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b9505816001604051611da29291906141fd565b60405180910390a150565b611db633611687565b611df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dec906142e9565b60405180910390fd5b6001811015611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e309061493e565b60405180910390fd5b6103e8816012600a611e4b91906144ce565b655af3107a4000611e5c9190614519565b611e669190614519565b611e70919061458a565b6002819055507f365a2bb07537fddd750e9ac8d56970e584f83a144bb5225e77491b83bccd1183600254604051611ea79190613ade565b60405180910390a150565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f6233611687565b611fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f98906142e9565b60405180910390fd5b600a6012600a611fb191906144ce565b655af3107a4000611fc29190614519565b611fcc919061458a565b811061200d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612004906149aa565b60405180910390fd5b81601060146101000a81548160ff021916908315150217905550806011819055507f34c2d4c263b6f41223c6d30ae2e7bcb18629892587e0a4138f57ba2c523953d0601154601060149054906101000a900460ff166040516120709291906149ca565b60405180910390a15050565b61208533611687565b6120c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bb906142e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212a90614a65565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4cd5c2a72781e5b0a5efc1898c18ae3177440b4ac3d33d7ae648e89334d03b56600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516121c59190613f10565b60405180910390a150565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6121ff33611687565b61223e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612235906142e9565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036122cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c390614ad1565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b95058160006040516123569291906141fd565b60405180910390a150565b61236a33611687565b6123a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a0906142e9565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242e90614b3d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249d90614ba9565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516125359190613f10565b60405180910390a150565b61254933611687565b612588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257f906142e9565b60405180910390fd5b8160098190555080600a8190555080826125a2919061464d565b600b819055506125b0612eeb565b5050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006126bb826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128039092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061275082600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130ea90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127f09190613ade565b60405180910390a3600190509392505050565b600083831115829061284b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128429190613b89565b60405180910390fd5b506000838561285a9190614759565b9050809150509392505050565b6000601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561290d5750601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61294c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294390614c15565b60405180910390fd5b601260009054906101000a900460ff16156129735761296c848484612630565b9050612ee4565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612a175750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612a6d5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ac557507f000000000000000000000000d928e5968de9eec51011ec1a9b8a1afcd6e4fcb473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612b5a5760035482600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b18919061464d565b1115612b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5090614c81565b60405180910390fd5b5b60025482111580612bb45750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612c085750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3e90614ced565b60405180910390fd5b612c4f613148565b15612c5d57612c5c61321d565b5b612ce6826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128039092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dcc5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612de057612ddb858486613602565b612de2565b825b9050612e3681600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130ea90919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ed69190613ade565b60405180910390a360019150505b9392505050565b6064612f176064612f09600d54600b5461384d90919063ffffffff16565b6138c790919063ffffffff16565b1115612f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4f90614d59565b60405180910390fd5b6096612f846064612f76600c54600b5461384d90919063ffffffff16565b6138c790919063ffffffff16565b1115612fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fbc90614dc5565b60405180910390fd5b6064612ff16064612fe3600e54600b5461384d90919063ffffffff16565b6138c790919063ffffffff16565b1115613032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302990614e57565b60405180910390fd5b7f375884ed7f92283ee74d8884b39a803f4aee832b15766fe016b74fc791fc2ada61307d606461306f600d54600b5461384d90919063ffffffff16565b6138c790919063ffffffff16565b6130a76064613099600c54600b5461384d90919063ffffffff16565b6138c790919063ffffffff16565b6130d160646130c3600e54600b5461384d90919063ffffffff16565b6138c790919063ffffffff16565b6040516130e093929190614e77565b60405180910390a1565b60008082846130f9919061464d565b90508381101561313e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161313590614efa565b60405180910390fd5b8091505092915050565b60007f000000000000000000000000d928e5968de9eec51011ec1a9b8a1afcd6e4fcb473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156131b35750601260009054906101000a900460ff16155b80156131cb5750601060149054906101000a900460ff165b80156132185750601154600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601260006101000a81548160ff0219169083151502179055506000600b549050600060028261324e9190614519565b60095460115461325e9190614519565b613268919061458a565b905060008160115461327a9190614759565b90506000600267ffffffffffffffff81111561329957613298614f1a565b5b6040519080825280602002602001820160405280156132c75781602001602082028036833780820191505090505b50905030816000815181106132df576132de6141ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061334e5761334d6141ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016133ec959493929190615042565b600060405180830381600087803b15801561340657600080fd5b505af115801561341a573d6000803e3d6000fd5b5050505060004790506002600954613432919061458a565b8561343d9190614759565b9450600060028661344e9190614519565b6009548361345c9190614519565b613466919061458a565b9050600086600a54846134799190614519565b613483919061458a565b9050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156134ed573d6000803e3d6000fd5b5060008611156135de57601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308960008030426040518863ffffffff1660e01b815260040161355e9695949392919061509c565b60606040518083038185885af115801561357c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906135a191906150fd565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450682876040516135d5929190615150565b60405180910390a15b505050505050506000601260006101000a81548160ff021916908315150217905550565b60008083148061361457506000600b54145b1561362157829050613846565b6000600e5490507f000000000000000000000000d928e5968de9eec51011ec1a9b8a1afcd6e4fcb473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361368557600c5490506136df565b7f000000000000000000000000d928e5968de9eec51011ec1a9b8a1afcd6e4fcb473ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036136de57600d5490505b5b600061372860646103e86136f39190614519565b61371a8461370c600b548a61384d90919063ffffffff16565b61384d90919063ffffffff16565b6138c790919063ffffffff16565b9050600081111561382e5761378581600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130ea90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138259190613ade565b60405180910390a35b613841818661391190919063ffffffff16565b925050505b9392505050565b600080830361385f57600090506138c1565b6000828461386d9190614519565b905082848261387c919061458a565b146138bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138b3906151eb565b60405180910390fd5b809150505b92915050565b600061390983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061395b565b905092915050565b600061395383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612803565b905092915050565b600080831182906139a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139999190613b89565b60405180910390fd5b50600083856139b1919061458a565b9050809150509392505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126139ed576139ec6139c8565b5b8235905067ffffffffffffffff811115613a0a57613a096139cd565b5b602083019150836020820283011115613a2657613a256139d2565b5b9250929050565b60008115159050919050565b613a4281613a2d565b8114613a4d57600080fd5b50565b600081359050613a5f81613a39565b92915050565b600080600060408486031215613a7e57613a7d6139be565b5b600084013567ffffffffffffffff811115613a9c57613a9b6139c3565b5b613aa8868287016139d7565b93509350506020613abb86828701613a50565b9150509250925092565b6000819050919050565b613ad881613ac5565b82525050565b6000602082019050613af36000830184613acf565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b33578082015181840152602081019050613b18565b60008484015250505050565b6000601f19601f8301169050919050565b6000613b5b82613af9565b613b658185613b04565b9350613b75818560208601613b15565b613b7e81613b3f565b840191505092915050565b60006020820190508181036000830152613ba38184613b50565b905092915050565b613bb481613ac5565b8114613bbf57600080fd5b50565b600081359050613bd181613bab565b92915050565b600060208284031215613bed57613bec6139be565b5b6000613bfb84828501613bc2565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613c2f82613c04565b9050919050565b613c3f81613c24565b8114613c4a57600080fd5b50565b600081359050613c5c81613c36565b92915050565b60008060408385031215613c7957613c786139be565b5b6000613c8785828601613c4d565b9250506020613c9885828601613bc2565b9150509250929050565b613cab81613a2d565b82525050565b6000602082019050613cc66000830184613ca2565b92915050565b60008083601f840112613ce257613ce16139c8565b5b8235905067ffffffffffffffff811115613cff57613cfe6139cd565b5b602083019150836020820283011115613d1b57613d1a6139d2565b5b9250929050565b600080600080600060608688031215613d3e57613d3d6139be565b5b6000613d4c88828901613c4d565b955050602086013567ffffffffffffffff811115613d6d57613d6c6139c3565b5b613d79888289016139d7565b9450945050604086013567ffffffffffffffff811115613d9c57613d9b6139c3565b5b613da888828901613ccc565b92509250509295509295909350565b600060208284031215613dcd57613dcc6139be565b5b6000613ddb84828501613c4d565b91505092915050565b600080600060608486031215613dfd57613dfc6139be565b5b6000613e0b86828701613c4d565b9350506020613e1c86828701613c4d565b9250506040613e2d86828701613bc2565b9150509250925092565b600060ff82169050919050565b613e4d81613e37565b82525050565b6000602082019050613e686000830184613e44565b92915050565b60008060408385031215613e8557613e846139be565b5b6000613e9385828601613c4d565b9250506020613ea485828601613a50565b9150509250929050565b600080600060608486031215613ec757613ec66139be565b5b6000613ed586828701613bc2565b9350506020613ee686828701613bc2565b9250506040613ef786828701613bc2565b9150509250925092565b613f0a81613c24565b82525050565b6000602082019050613f256000830184613f01565b92915050565b60008060408385031215613f4257613f416139be565b5b6000613f5085828601613c4d565b9250506020613f6185828601613c4d565b9150509250929050565b60008060408385031215613f8257613f816139be565b5b6000613f9085828601613a50565b9250506020613fa185828601613bc2565b9150509250929050565b6000613fb682613c04565b9050919050565b613fc681613fab565b8114613fd157600080fd5b50565b600081359050613fe381613fbd565b92915050565b600060208284031215613fff57613ffe6139be565b5b600061400d84828501613fd4565b91505092915050565b6000806040838503121561402d5761402c6139be565b5b600061403b85828601613bc2565b925050602061404c85828601613bc2565b9150509250929050565b6000819050919050565b600061407b61407661407184613c04565b614056565b613c04565b9050919050565b600061408d82614060565b9050919050565b600061409f82614082565b9050919050565b6140af81614094565b82525050565b60006020820190506140ca60008301846140a6565b92915050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b6000614106600b83613b04565b9150614111826140d0565b602082019050919050565b60006020820190508181036000830152614135816140f9565b9050919050565b7f474153204572726f723a206d6178206c696d697420697320353030206164647260008201527f6573736573000000000000000000000000000000000000000000000000000000602082015250565b6000614198602583613b04565b91506141a38261413c565b604082019050919050565b600060208201905081810360008301526141c78161418b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040820190506142126000830185613f01565b61421f6020830184613ca2565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061426082613ac5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361429257614291614226565b5b600182019050919050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006142d3600683613b04565b91506142de8261429d565b602082019050919050565b60006020820190508181036000830152614302816142c6565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e2060008201527f302e312500000000000000000000000000000000000000000000000000000000602082015250565b6000614365602483613b04565b915061437082614309565b604082019050919050565b6000602082019050818103600083015261439481614358565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156143f2578086048111156143ce576143cd614226565b5b60018516156143dd5780820291505b80810290506143eb8561439b565b94506143b2565b94509492505050565b60008261440b57600190506144c7565b8161441957600090506144c7565b816001811461442f576002811461443957614468565b60019150506144c7565b60ff84111561444b5761444a614226565b5b8360020a91508482111561446257614461614226565b5b506144c7565b5060208310610133831016604e8410600b841016171561449d5782820a90508381111561449857614497614226565b5b6144c7565b6144aa84848460016143a8565b925090508184048111156144c1576144c0614226565b5b81810290505b9392505050565b60006144d982613ac5565b91506144e483613e37565b92506145117fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846143fb565b905092915050565b600061452482613ac5565b915061452f83613ac5565b925082820261453d81613ac5565b9150828204841483151761455457614553614226565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061459582613ac5565b91506145a083613ac5565b9250826145b0576145af61455b565b5b828204905092915050565b7f4d69736d61746368206265747765656e206164647265737320616e6420746f6b60008201527f656e20636f756e74000000000000000000000000000000000000000000000000602082015250565b6000614617602883613b04565b9150614622826145bb565b604082019050919050565b600060208201905081810360008301526146468161460a565b9050919050565b600061465882613ac5565b915061466383613ac5565b925082820190508082111561467b5761467a614226565b5b92915050565b7f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000600082015250565b60006146b7601b83613b04565b91506146c282614681565b602082019050919050565b600060208201905081810360008301526146e6816146aa565b9050919050565b7f4d61782031303025000000000000000000000000000000000000000000000000600082015250565b6000614723600883613b04565b915061472e826146ed565b602082019050919050565b6000602082019050818103600083015261475281614716565b9050919050565b600061476482613ac5565b915061476f83613ac5565b925082820390508181111561478757614786614226565b5b92915050565b7f746f6b656e416464726573732063616e206e6f7420626520746865206e61746960008201527f766520746f6b656e000000000000000000000000000000000000000000000000602082015250565b60006147e9602883613b04565b91506147f48261478d565b604082019050919050565b60006020820190508181036000830152614818816147dc565b9050919050565b60008151905061482e81613bab565b92915050565b60006020828403121561484a576148496139be565b5b60006148588482850161481f565b91505092915050565b60006040820190506148766000830185613f01565b6148836020830184613acf565b9392505050565b60008151905061489981613a39565b92915050565b6000602082840312156148b5576148b46139be565b5b60006148c38482850161488a565b91505092915050565b7f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6573732060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614928602983613b04565b9150614933826148cc565b604082019050919050565b600060208201905081810360008301526149578161491b565b9050919050565b7f416d6f756e7420746f6f20686967680000000000000000000000000000000000600082015250565b6000614994600f83613b04565b915061499f8261495e565b602082019050919050565b600060208201905081810360008301526149c381614987565b9050919050565b60006040820190506149df6000830185613acf565b6149ec6020830184613ca2565b9392505050565b7f4d61726b6574696e672066656520616464726573732063616e6e6f742062652060008201527f7a65726f20616464726573730000000000000000000000000000000000000000602082015250565b6000614a4f602c83613b04565b9150614a5a826149f3565b604082019050919050565b60006020820190508181036000830152614a7e81614a42565b9050919050565b7f4f574e45522063616e7420626520756e617574686f72697a6564000000000000600082015250565b6000614abb601a83613b04565b9150614ac682614a85565b602082019050919050565b60006020820190508181036000830152614aea81614aae565b9050919050565b7f416c726561647920746865206f776e6572000000000000000000000000000000600082015250565b6000614b27601183613b04565b9150614b3282614af1565b602082019050919050565b60006020820190508181036000830152614b5681614b1a565b9050919050565b7f43616e206e6f74206265207a65726f20616464726573732e0000000000000000600082015250565b6000614b93601883613b04565b9150614b9e82614b5d565b602082019050919050565b60006020820190508181036000830152614bc281614b86565b9050919050565b7f426c61636b6c6973746564206164647265737300000000000000000000000000600082015250565b6000614bff601383613b04565b9150614c0a82614bc9565b602082019050919050565b60006020820190508181036000830152614c2e81614bf2565b9050919050565b7f6d61782077616c6c6574206c696d697420726561636865640000000000000000600082015250565b6000614c6b601883613b04565b9150614c7682614c35565b602082019050919050565b60006020820190508181036000830152614c9a81614c5e565b9050919050565b7f4d6178205458204c696d69742045786365656465640000000000000000000000600082015250565b6000614cd7601583613b04565b9150614ce282614ca1565b602082019050919050565b60006020820190508181036000830152614d0681614cca565b9050919050565b7f427579207461782063616e6e6f74206265206d6f7265207468616e2031302500600082015250565b6000614d43601f83613b04565b9150614d4e82614d0d565b602082019050919050565b60006020820190508181036000830152614d7281614d36565b9050919050565b7f53656c6c207461782063616e6e6f74206265206d6f7265207468616e20313525600082015250565b6000614daf602083613b04565b9150614dba82614d79565b602082019050919050565b60006020820190508181036000830152614dde81614da2565b9050919050565b7f5472616e73666572205461782063616e6e6f74206265206d6f7265207468616e60008201527f2031302500000000000000000000000000000000000000000000000000000000602082015250565b6000614e41602483613b04565b9150614e4c82614de5565b604082019050919050565b60006020820190508181036000830152614e7081614e34565b9050919050565b6000606082019050614e8c6000830186613e44565b614e996020830185613e44565b614ea66040830184613e44565b949350505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614ee4601b83613b04565b9150614eef82614eae565b602082019050919050565b60006020820190508181036000830152614f1381614ed7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b6000614f6e614f69614f6484614f49565b614056565b613ac5565b9050919050565b614f7e81614f53565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614fb981613c24565b82525050565b6000614fcb8383614fb0565b60208301905092915050565b6000602082019050919050565b6000614fef82614f84565b614ff98185614f8f565b935061500483614fa0565b8060005b8381101561503557815161501c8882614fbf565b975061502783614fd7565b925050600181019050615008565b5085935050505092915050565b600060a0820190506150576000830188613acf565b6150646020830187614f75565b81810360408301526150768186614fe4565b90506150856060830185613f01565b6150926080830184613acf565b9695505050505050565b600060c0820190506150b16000830189613f01565b6150be6020830188613acf565b6150cb6040830187614f75565b6150d86060830186614f75565b6150e56080830185613f01565b6150f260a0830184613acf565b979650505050505050565b600080600060608486031215615116576151156139be565b5b60006151248682870161481f565b93505060206151358682870161481f565b92505060406151468682870161481f565b9150509250925092565b60006040820190506151656000830185613acf565b6151726020830184613acf565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006151d5602183613b04565b91506151e082615179565b604082019050919050565b60006020820190508181036000830152615204816151c8565b905091905056fea26469706673582212207af07c0c8ea04014581168fa6fcbdb49f3ff5ca0847d8312fe2a0e21bc01239f64736f6c63430008110033

Deployed Bytecode Sourcemap

4005:12887:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13297:373;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12568:353;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5393:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4261:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7424:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6528:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5031:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4401:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15657:593;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16372:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10474:356;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4970:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7046:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15514:137;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2710:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4357:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4725:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15084:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12929:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6752:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4931:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14277:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5355:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4603:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10838:431;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4538:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4478:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6303:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4776:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4312:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4892:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5315:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6882:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2352:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7740:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4831:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6387:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15215:287;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14783:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5195:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2498:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2936:258;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14510:264;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5284:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2821:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13297:373;2293:24;2306:10;2293:12;:24::i;:::-;2285:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13432:3:::1;13413:9;;:16;;:22;13405:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13492:9;13487:176;13509:9;;:16;;13505:1;:20;13487:176;;;13583:6;13547:19;:33;13567:9;;13577:1;13567:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13547:33;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;13609;13630:9;;13640:1;13630:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13644:6;13609:42;;;;;;;:::i;:::-;;;;;;;;13527:3;;;;:::i;:::-;;;13487:176;;;;13297:373:::0;;;:::o;12568:353::-;2293:24;2306:10;2293:12;:24::i;:::-;2285:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12695:3:::1;12676:9;;:16;;:22;12668:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12755:9;12750:164;12772:9;;:16;;12768:1;:20;12750:164;;;12838:6;12810:11;:25;12822:9;;12832:1;12822:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12810:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;12864:38;12881:9;;12891:1;12881:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12895:6;12864:38;;;;;;;:::i;:::-;;;;;;;;12790:3;;;;:::i;:::-;;;12750:164;;;;12568:353:::0;;;:::o;5393:48::-;;;;:::o;4261:44::-;;;;;;;;;;;;;;;;;;;:::o;7424:310::-;2203:19;2211:10;2203:7;:19::i;:::-;2195:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7560:1:::1;7533:23;:28;;7525:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;7673:4;7645:23;4390:2;4457;:12;;;;:::i;:::-;4439:15;:30;;;;:::i;:::-;7631:37;;;;:::i;:::-;7630:47;;;;:::i;:::-;7612:15;:65;;;;7693:33;7710:15;;7693:33;;;;;;:::i;:::-;;;;;;;;7424:310:::0;:::o;6528:216::-;6603:4;6655:6;6620:11;:23;6632:10;6620:23;;;;;;;;;;;;;;;:32;6644:7;6620:32;;;;;;;;;;;;;;;:41;;;;6698:7;6677:37;;6686:10;6677:37;;;6707:6;6677:37;;;;;;:::i;:::-;;;;;;;;6732:4;6725:11;;6528:216;;;;:::o;5031:45::-;5072:4;5031:45;:::o;4401:68::-;4390:2;4457;:12;;;;:::i;:::-;4439:15;:30;;;;:::i;:::-;4401:68;:::o;15657:593::-;2293:24;2306:10;2293:12;:24::i;:::-;2285:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15813:3:::1;15794:9;;:16;;:22;15786:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15892:6;;:13;;15872:9;;:16;;:33;15864:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;15958:12;15987:6:::0;15983:82:::1;16001:9;;:16;;15997:1;:20;15983:82;;;16048:6;;16055:1;16048:9;;;;;;;:::i;:::-;;;;;;;;16041:4;:16;;;;:::i;:::-;16034:23;;16019:3;;;;;:::i;:::-;;;;15983:82;;;;16100:4;16081:9;:15;16091:4;16081:15;;;;;;;;;;;;;;;;:23;;16073:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;16149:6;16145:102;16163:9;;:16;;16159:1;:20;16145:102;;;16196:43;16211:4;16216:9;;16226:1;16216:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16229:6;;16236:1;16229:9;;;;;;;:::i;:::-;;;;;;;;16196:14;:43::i;:::-;;16181:3;;;;;:::i;:::-;;;;16145:102;;;;15771:479;15657:593:::0;;;;;:::o;16372:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;10474:356::-;2203:19;2211:10;2203:7;:19::i;:::-;2195:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10584:3:::1;10565:16;:22;10557:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;10611:17;10631:21;10611:41;;10663:21;10722:3;10701:16;10689:9;:28;;;;:::i;:::-;10687:38;;;;:::i;:::-;10663:62;;10744:10;10736:28;;:43;10765:13;10736:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;10795:27;10808:13;10795:27;;;;;;:::i;:::-;;;;;;;;10546:284;;10474:356:::0;:::o;4970:53::-;;;;:::o;7046:370::-;7146:4;7201:17;7166:11;:19;7178:6;7166:19;;;;;;;;;;;;;;;:31;7186:10;7166:31;;;;;;;;;;;;;;;;:52;7163:186;;7268:69;7304:6;7268:69;;;;;;;;;;;;;;;;;:11;:19;7280:6;7268:19;;;;;;;;;;;;;;;:31;7288:10;7268:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;7234:11;:19;7246:6;7234:19;;;;;;;;;;;;;;;:31;7254:10;7234:31;;;;;;;;;;;;;;;:103;;;;7163:186;7368:40;7382:6;7390:9;7401:6;7368:13;:40::i;:::-;7361:47;;7046:370;;;;;:::o;15514:137::-;15567:7;15627:9;:15;4210:42;15627:15;;;;;;;;;;;;;;;;15609:9;:15;4137:42;15609:15;;;;;;;;;;;;;;;;4390:2;4457;:12;;;;:::i;:::-;4439:15;:30;;;;:::i;:::-;15595:29;;;;:::i;:::-;:47;;;;:::i;:::-;15587:56;;15514:137;:::o;2710:103::-;2765:4;2800:5;;;;;;;;;;;2789:16;;:7;:16;;;2782:23;;2710:103;;;:::o;4357:35::-;4390:2;4357:35;:::o;4725:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;15084:123::-;2203:19;2211:10;2203:7;:19::i;:::-;2195:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15194:5:::1;15168:14;:23;15183:7;15168:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;15084:123:::0;;:::o;12929:360::-;2293:24;2306:10;2293:12;:24::i;:::-;2285:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13060:3:::1;13041:9;;:16;;:22;13033:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13120:9;13115:167;13137:9;;:16;;13133:1;:20;13115:167;;;13207:6;13175:15;:29;13191:9;;13201:1;13191:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13175:29;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;13233:37;13249:9;;13259:1;13249:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13263:6;13233:37;;;;;;;:::i;:::-;;;;;;;;13155:3;;;;:::i;:::-;;;13115:167;;;;12929:360:::0;;;:::o;6752:122::-;6807:4;6831:35;6839:7;6848:17;6831:7;:35::i;:::-;6824:42;;6752:122;;;:::o;4931:32::-;;;;:::o;14277:225::-;2293:24;2306:10;2293:12;:24::i;:::-;2285:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14394:5:::1;14377:14;:22;;;;14426:4;14410:13;:20;;;;14462:6;14441:18;:27;;;;14481:13;:11;:13::i;:::-;14277:225:::0;;;:::o;5355:31::-;;;;;;;;;;;;;:::o;4603:45::-;;;;;;;;;;;;;;;;;:::o;10838:431::-;10929:12;2203:19;2211:10;2203:7;:19::i;:::-;2195:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10986:4:::1;10962:29;;:12;:29;;::::0;10954:82:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11062:1;11052:6;:11:::0;11049:95:::1;;11094:12;11088:29;;;11126:4;11088:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11079:53;;11049:95;11161:32;11172:12;11186:6;11161:32;;;;;;;:::i;:::-;;;;;;;;11219:12;11213:28;;;11242:10;11254:6;11213:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11206:55;;10838:431:::0;;;;:::o;4538:56::-;;;;:::o;4478:53::-;;;;:::o;6303:78::-;6355:7;6373:5;;;;;;;;;;;6366:12;;6303:78;:::o;4776:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;4312:38::-;;;;;;;;;;;;;;;;;;;:::o;4892:32::-;;;;:::o;5315:29::-;;;:::o;6882:156::-;6962:4;6986:44;7000:10;7012:9;7023:6;6986:13;:44::i;:::-;6979:51;;6882:156;;;;:::o;2352:138::-;2203:19;2211:10;2203:7;:19::i;:::-;2195:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2436:4:::1;2414:14:::0;:19:::1;2429:3;2414:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2456;2473:3;2477:4;2456:26;;;;;;;:::i;:::-;;;;;;;;2352:138:::0;:::o;7740:313::-;2203:19;2211:10;2203:7;:19::i;:::-;2195:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7874:1:::1;7846:24;:29;;7838:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;7990:4;7961:24;4390:2;4457;:12;;;;:::i;:::-;4439:15;:30;;;;:::i;:::-;7947:38;;;;:::i;:::-;7946:48;;;;:::i;:::-;7931:12;:63;;;;8010:35;8032:12;;8010:35;;;;;;:::i;:::-;;;;;;;;7740:313:::0;:::o;4831:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;6387:133::-;6471:7;6489:11;:19;6501:6;6489:19;;;;;;;;;;;;;;;:28;6509:7;6489:28;;;;;;;;;;;;;;;;6482:35;;6387:133;;;;:::o;15215:287::-;2203:19;2211:10;2203:7;:19::i;:::-;2195:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15337:2:::1;4390;4457;:12;;;;:::i;:::-;4439:15;:30;;;;:::i;:::-;15325:14;;;;:::i;:::-;15314:7;:26;15306:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;15387:8;15373:11;;:22;;;;;;;;;;;;;;;;;;15422:7;15406:13;:23;;;;15447:47;15467:13;;15482:11;;;;;;;;;;;15447:47;;;;;;;:::i;:::-;;;;;;;;15215:287:::0;;:::o;14783:293::-;2203:19;2211:10;2203:7;:19::i;:::-;2195:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14910:1:::1;14877:35;;:21;:35;;::::0;14869:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14996:21;14973:20;;:44;;;;;;;;;;;;;;;;;;15035:33;15047:20;;;;;;;;;;;15035:33;;;;;;:::i;:::-;;;;;;;;14783:293:::0;:::o;5195:80::-;;;;;;;;;;;;;:::o;2498:204::-;2203:19;2211:10;2203:7;:19::i;:::-;2195:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2577:5:::1;::::0;::::1;;;;;;;;2570:12;;:3;:12;;::::0;2562:51:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2646:5;2624:14;:19;2639:3;2624:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2667;2684:3;2688:5;2667:27;;;;;;;:::i;:::-;;;;;;;;2498:204:::0;:::o;2936:258::-;2203:19;2211:10;2203:7;:19::i;:::-;2195:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3029:5:::1;::::0;::::1;;;;;;;;3022:12;;:3;:12;;::::0;3014:42:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3090:1;3075:17;;:3;:17;;::::0;3067:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3140:3;3132:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3159:27;3180:5;::::0;::::1;;;;;;;;3159:27;;;;;;:::i;:::-;;;;;;;;2936:258:::0;:::o;14510:264::-;2203:19;2211:10;2203:7;:19::i;:::-;2195:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14628:13:::1;14613:12;:28;;;;14667:13;14652:12;:28;;;;14718:13;14702;:29;;;;:::i;:::-;14691:8;:40;;;;14753:13;:11;:13::i;:::-;14510:264:::0;;:::o;5284:24::-;;;;;;;;;;;;;:::o;2821:107::-;2877:4;2901:14;:19;2916:3;2901:19;;;;;;;;;;;;;;;;;;;;;;;;;2894:26;;2821:107;;;:::o;9200:330::-;9293:4;9330:53;9352:6;9330:53;;;;;;;;;;;;;;;;;:9;:17;9340:6;9330:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9310:9;:17;9320:6;9310:17;;;;;;;;;;;;;;;:73;;;;9417:32;9442:6;9417:9;:20;9427:9;9417:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9394:9;:20;9404:9;9394:20;;;;;;;;;;;;;;;:55;;;;9482:9;9465:35;;9474:6;9465:35;;;9493:6;9465:35;;;;;;:::i;:::-;;;;;;;;9518:4;9511:11;;9200:330;;;;;:::o;415:192::-;501:7;534:1;529;:6;;537:12;521:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;561:9;577:1;573;:5;;;;:::i;:::-;561:17;;598:1;591:8;;;415:192;;;;;:::o;8061:1127::-;8153:4;8179:14;:22;8194:6;8179:22;;;;;;;;;;;;;;;;;;;;;;;;;8178:23;:53;;;;;8206:14;:25;8221:9;8206:25;;;;;;;;;;;;;;;;;;;;;;;;;8205:26;8178:53;8170:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;8269:6;;;;;;;;;;;8266:63;;;8285:41;8300:6;8308:9;8319:6;8285:14;:41::i;:::-;8278:48;;;;8266:63;8358:14;:22;8373:6;8358:22;;;;;;;;;;;;;;;;;;;;;;;;;8357:23;:55;;;;;8385:19;:27;8405:6;8385:27;;;;;;;;;;;;;;;;;;;;;;;;;8384:28;8357:55;:90;;;;;8417:19;:30;8437:9;8417:30;;;;;;;;;;;;;;;;;;;;;;;;;8416:31;8357:90;:111;;;;;8464:4;8451:17;;:9;:17;;;;8357:111;8353:230;;;8528:15;;8517:6;8494:9;:20;8504:9;8494:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;8493:50;;8485:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;8353:230;8659:12;;8649:6;:22;;8648:51;;;;8676:15;:23;8692:6;8676:23;;;;;;;;;;;;;;;;;;;;;;;;;8648:51;:81;;;;8703:15;:26;8719:9;8703:26;;;;;;;;;;;;;;;;;;;;;;;;;8648:81;8640:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;8771:16;:14;:16::i;:::-;8768:35;;;8790:10;:8;:10::i;:::-;8768:35;8835:53;8857:6;8835:53;;;;;;;;;;;;;;;;;:9;:17;8845:6;8835:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;8815:9;:17;8825:6;8815:17;;;;;;;;;;;;;;;:73;;;;8901:22;8927:11;:19;8939:6;8927:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;8950:11;:22;8962:9;8950:22;;;;;;;;;;;;;;;;;;;;;;;;;8927:45;8926:93;;8985:34;8993:6;9001;9009:9;8985:7;:34::i;:::-;8926:93;;;8976:6;8926:93;8901:118;;9055:40;9080:14;9055:9;:20;9065:9;9055:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9032:9;:20;9042:9;9032:20;;;;;;;;;;;;;;;:63;;;;9132:9;9115:43;;9124:6;9115:43;;;9143:14;9115:43;;;;;;:::i;:::-;;;;;;;;9176:4;9169:11;;;8061:1127;;;;;;:::o;13678:591::-;13783:3;13743:36;13775:3;13743:27;13756:13;;13743:8;;:12;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;:43;;13735:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;13886:3;13845:37;13878:3;13845:28;13858:14;;13845:8;;:12;;:28;;;;:::i;:::-;:32;;:37;;;;:::i;:::-;:44;;13837:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;13994:3;13949:41;13986:3;13949:32;13962:18;;13949:8;;:12;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;:48;;13941:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;14070:191;14087:36;14119:3;14087:27;14100:13;;14087:8;;:12;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;14145:37;14178:3;14145:28;14158:14;;14145:8;;:12;;:28;;;;:::i;:::-;:32;;:37;;;;:::i;:::-;14204:41;14241:3;14204:32;14217:18;;14204:8;;:12;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;14070:191;;;;;;;;:::i;:::-;;;;;;;;13678:591::o;86:181::-;144:7;164:9;180:1;176;:5;;;;:::i;:::-;164:17;;205:1;200;:6;;192:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;258:1;251:8;;;86:181;;;;:::o;10269:197::-;10318:4;10356;10342:18;;:10;:18;;;;:38;;;;;10374:6;;;;;;;;;;;10373:7;10342:38;:62;;;;;10393:11;;;;;;;;;;;10342:62;:116;;;;;10445:13;;10417:9;:24;10435:4;10417:24;;;;;;;;;;;;;;;;:41;;10342:116;10335:123;;10269:197;:::o;11281:1279::-;5497:4;5488:6;;:13;;;;;;;;;;;;;;;;;;11332:19:::1;11354:8;;11332:30;;11375:23;11447:1;11433:11;:15;;;;:::i;:::-;11418:12;;11402:13;;:28;;;;:::i;:::-;11401:48;;;;:::i;:::-;11375:74;;11460:20;11499:15;11483:13;;:31;;;;:::i;:::-;11460:54;;11527:21;11565:1;11551:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11527:40;;11596:4;11578;11583:1;11578:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11622:4;11612;11617:1;11612:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;11639:6;;;;;;;;;;;:57;;;11711:12;11738:1;11754:4;11781;11801:15;11639:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11840:17;11860:21;11840:41;;11939:1;11924:12;;:16;;;;:::i;:::-;11909:11;:32;;;;:::i;:::-;11895:46;;11962:26;12035:1;12021:11;:15;;;;:::i;:::-;12004:12;;11992:9;:24;;;;:::i;:::-;11991:46;;;;:::i;:::-;11962:75;;12048:26;12106:11;12090:12;;12078:9;:24;;;;:::i;:::-;12077:40;;;;:::i;:::-;12048:69;;12138:20;;;;;;;;;;;12130:38;;:58;12169:18;12130:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12220:1;12202:15;:19;12199:354;;;12237:6;;;;;;;;;;;:22;;;12267:18;12313:4;12337:15;12371:1;12391::::0;12419:4:::1;12443:15;12237:236;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12493:48;12505:18;12525:15;12493:48;;;;;;;:::i;:::-;;;;;;;;12199:354;11319:1241;;;;;;;5515:5:::0;5506:6;;:14;;;;;;;;;;;;;;;;;;11281:1279::o;9538:723::-;9624:7;9657:1;9647:6;:11;:28;;;;9674:1;9662:8;;:13;9647:28;9644:72;;;9698:6;9691:13;;;;9644:72;9728:18;9749;;9728:39;;9796:4;9783:17;;:9;:17;;;9780:154;;9830:14;;9817:27;;9780:154;;;9875:4;9865:14;;:6;:14;;;9862:72;;9909:13;;9896:26;;9862:72;9780:154;9946:17;9966:62;10024:3;5072:4;10007:20;;;;:::i;:::-;9966:36;9991:10;9966:20;9977:8;;9966:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;9946:82;;10056:1;10044:9;:13;10041:172;;;10100:39;10129:9;10100;:24;10118:4;10100:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10073:9;:24;10091:4;10073:24;;;;;;;;;;;;;;;:66;;;;10184:4;10159:42;;10168:6;10159:42;;;10191:9;10159:42;;;;;;:::i;:::-;;;;;;;;10041:172;10232:21;10243:9;10232:6;:10;;:21;;;;:::i;:::-;10225:28;;;;9538:723;;;;;;:::o;613:250::-;671:7;700:1;695;:6;691:47;;725:1;718:8;;;;691:47;750:9;766:1;762;:5;;;;:::i;:::-;750:17;;795:1;790;786;:5;;;;:::i;:::-;:10;778:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;854:1;847:8;;;613:250;;;;;:::o;869:132::-;927:7;954:39;958:1;961;954:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;947:46;;869:132;;;;:::o;273:136::-;331:7;358:43;362:1;365;358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;351:50;;273:136;;;;:::o;1007:189::-;1093:7;1125:1;1121;:5;1128:12;1113:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1152:9;1168:1;1164;:5;;;;:::i;:::-;1152:17;;1187:1;1180:8;;;1007:189;;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;720:568;793:8;803:6;853:3;846:4;838:6;834:17;830:27;820:122;;861:79;;:::i;:::-;820:122;974:6;961:20;951:30;;1004:18;996:6;993:30;990:117;;;1026:79;;:::i;:::-;990:117;1140:4;1132:6;1128:17;1116:29;;1194:3;1186:4;1178:6;1174:17;1164:8;1160:32;1157:41;1154:128;;;1201:79;;:::i;:::-;1154:128;720:568;;;;;:::o;1294:90::-;1328:7;1371:5;1364:13;1357:21;1346:32;;1294:90;;;:::o;1390:116::-;1460:21;1475:5;1460:21;:::i;:::-;1453:5;1450:32;1440:60;;1496:1;1493;1486:12;1440:60;1390:116;:::o;1512:133::-;1555:5;1593:6;1580:20;1571:29;;1609:30;1633:5;1609:30;:::i;:::-;1512:133;;;;:::o;1651:698::-;1743:6;1751;1759;1808:2;1796:9;1787:7;1783:23;1779:32;1776:119;;;1814:79;;:::i;:::-;1776:119;1962:1;1951:9;1947:17;1934:31;1992:18;1984:6;1981:30;1978:117;;;2014:79;;:::i;:::-;1978:117;2127:80;2199:7;2190:6;2179:9;2175:22;2127:80;:::i;:::-;2109:98;;;;1905:312;2256:2;2282:50;2324:7;2315:6;2304:9;2300:22;2282:50;:::i;:::-;2272:60;;2227:115;1651:698;;;;;:::o;2355:77::-;2392:7;2421:5;2410:16;;2355:77;;;:::o;2438:118::-;2525:24;2543:5;2525:24;:::i;:::-;2520:3;2513:37;2438:118;;:::o;2562:222::-;2655:4;2693:2;2682:9;2678:18;2670:26;;2706:71;2774:1;2763:9;2759:17;2750:6;2706:71;:::i;:::-;2562:222;;;;:::o;2790:99::-;2842:6;2876:5;2870:12;2860:22;;2790:99;;;:::o;2895:169::-;2979:11;3013:6;3008:3;3001:19;3053:4;3048:3;3044:14;3029:29;;2895:169;;;;:::o;3070:246::-;3151:1;3161:113;3175:6;3172:1;3169:13;3161:113;;;3260:1;3255:3;3251:11;3245:18;3241:1;3236:3;3232:11;3225:39;3197:2;3194:1;3190:10;3185:15;;3161:113;;;3308:1;3299:6;3294:3;3290:16;3283:27;3132:184;3070:246;;;:::o;3322:102::-;3363:6;3414:2;3410:7;3405:2;3398:5;3394:14;3390:28;3380:38;;3322:102;;;:::o;3430:377::-;3518:3;3546:39;3579:5;3546:39;:::i;:::-;3601:71;3665:6;3660:3;3601:71;:::i;:::-;3594:78;;3681:65;3739:6;3734:3;3727:4;3720:5;3716:16;3681:65;:::i;:::-;3771:29;3793:6;3771:29;:::i;:::-;3766:3;3762:39;3755:46;;3522:285;3430:377;;;;:::o;3813:313::-;3926:4;3964:2;3953:9;3949:18;3941:26;;4013:9;4007:4;4003:20;3999:1;3988:9;3984:17;3977:47;4041:78;4114:4;4105:6;4041:78;:::i;:::-;4033:86;;3813:313;;;;:::o;4132:122::-;4205:24;4223:5;4205:24;:::i;:::-;4198:5;4195:35;4185:63;;4244:1;4241;4234:12;4185:63;4132:122;:::o;4260:139::-;4306:5;4344:6;4331:20;4322:29;;4360:33;4387:5;4360:33;:::i;:::-;4260:139;;;;:::o;4405:329::-;4464:6;4513:2;4501:9;4492:7;4488:23;4484:32;4481:119;;;4519:79;;:::i;:::-;4481:119;4639:1;4664:53;4709:7;4700:6;4689:9;4685:22;4664:53;:::i;:::-;4654:63;;4610:117;4405:329;;;;:::o;4740:126::-;4777:7;4817:42;4810:5;4806:54;4795:65;;4740:126;;;:::o;4872:96::-;4909:7;4938:24;4956:5;4938:24;:::i;:::-;4927:35;;4872:96;;;:::o;4974:122::-;5047:24;5065:5;5047:24;:::i;:::-;5040:5;5037:35;5027:63;;5086:1;5083;5076:12;5027:63;4974:122;:::o;5102:139::-;5148:5;5186:6;5173:20;5164:29;;5202:33;5229:5;5202:33;:::i;:::-;5102:139;;;;:::o;5247:474::-;5315:6;5323;5372:2;5360:9;5351:7;5347:23;5343:32;5340:119;;;5378:79;;:::i;:::-;5340:119;5498:1;5523:53;5568:7;5559:6;5548:9;5544:22;5523:53;:::i;:::-;5513:63;;5469:117;5625:2;5651:53;5696:7;5687:6;5676:9;5672:22;5651:53;:::i;:::-;5641:63;;5596:118;5247:474;;;;;:::o;5727:109::-;5808:21;5823:5;5808:21;:::i;:::-;5803:3;5796:34;5727:109;;:::o;5842:210::-;5929:4;5967:2;5956:9;5952:18;5944:26;;5980:65;6042:1;6031:9;6027:17;6018:6;5980:65;:::i;:::-;5842:210;;;;:::o;6075:568::-;6148:8;6158:6;6208:3;6201:4;6193:6;6189:17;6185:27;6175:122;;6216:79;;:::i;:::-;6175:122;6329:6;6316:20;6306:30;;6359:18;6351:6;6348:30;6345:117;;;6381:79;;:::i;:::-;6345:117;6495:4;6487:6;6483:17;6471:29;;6549:3;6541:4;6533:6;6529:17;6519:8;6515:32;6512:41;6509:128;;;6556:79;;:::i;:::-;6509:128;6075:568;;;;;:::o;6649:1079::-;6780:6;6788;6796;6804;6812;6861:2;6849:9;6840:7;6836:23;6832:32;6829:119;;;6867:79;;:::i;:::-;6829:119;6987:1;7012:53;7057:7;7048:6;7037:9;7033:22;7012:53;:::i;:::-;7002:63;;6958:117;7142:2;7131:9;7127:18;7114:32;7173:18;7165:6;7162:30;7159:117;;;7195:79;;:::i;:::-;7159:117;7308:80;7380:7;7371:6;7360:9;7356:22;7308:80;:::i;:::-;7290:98;;;;7085:313;7465:2;7454:9;7450:18;7437:32;7496:18;7488:6;7485:30;7482:117;;;7518:79;;:::i;:::-;7482:117;7631:80;7703:7;7694:6;7683:9;7679:22;7631:80;:::i;:::-;7613:98;;;;7408:313;6649:1079;;;;;;;;:::o;7734:329::-;7793:6;7842:2;7830:9;7821:7;7817:23;7813:32;7810:119;;;7848:79;;:::i;:::-;7810:119;7968:1;7993:53;8038:7;8029:6;8018:9;8014:22;7993:53;:::i;:::-;7983:63;;7939:117;7734:329;;;;:::o;8069:619::-;8146:6;8154;8162;8211:2;8199:9;8190:7;8186:23;8182:32;8179:119;;;8217:79;;:::i;:::-;8179:119;8337:1;8362:53;8407:7;8398:6;8387:9;8383:22;8362:53;:::i;:::-;8352:63;;8308:117;8464:2;8490:53;8535:7;8526:6;8515:9;8511:22;8490:53;:::i;:::-;8480:63;;8435:118;8592:2;8618:53;8663:7;8654:6;8643:9;8639:22;8618:53;:::i;:::-;8608:63;;8563:118;8069:619;;;;;:::o;8694:86::-;8729:7;8769:4;8762:5;8758:16;8747:27;;8694:86;;;:::o;8786:112::-;8869:22;8885:5;8869:22;:::i;:::-;8864:3;8857:35;8786:112;;:::o;8904:214::-;8993:4;9031:2;9020:9;9016:18;9008:26;;9044:67;9108:1;9097:9;9093:17;9084:6;9044:67;:::i;:::-;8904:214;;;;:::o;9124:468::-;9189:6;9197;9246:2;9234:9;9225:7;9221:23;9217:32;9214:119;;;9252:79;;:::i;:::-;9214:119;9372:1;9397:53;9442:7;9433:6;9422:9;9418:22;9397:53;:::i;:::-;9387:63;;9343:117;9499:2;9525:50;9567:7;9558:6;9547:9;9543:22;9525:50;:::i;:::-;9515:60;;9470:115;9124:468;;;;;:::o;9598:619::-;9675:6;9683;9691;9740:2;9728:9;9719:7;9715:23;9711:32;9708:119;;;9746:79;;:::i;:::-;9708:119;9866:1;9891:53;9936:7;9927:6;9916:9;9912:22;9891:53;:::i;:::-;9881:63;;9837:117;9993:2;10019:53;10064:7;10055:6;10044:9;10040:22;10019:53;:::i;:::-;10009:63;;9964:118;10121:2;10147:53;10192:7;10183:6;10172:9;10168:22;10147:53;:::i;:::-;10137:63;;10092:118;9598:619;;;;;:::o;10223:118::-;10310:24;10328:5;10310:24;:::i;:::-;10305:3;10298:37;10223:118;;:::o;10347:222::-;10440:4;10478:2;10467:9;10463:18;10455:26;;10491:71;10559:1;10548:9;10544:17;10535:6;10491:71;:::i;:::-;10347:222;;;;:::o;10575:474::-;10643:6;10651;10700:2;10688:9;10679:7;10675:23;10671:32;10668:119;;;10706:79;;:::i;:::-;10668:119;10826:1;10851:53;10896:7;10887:6;10876:9;10872:22;10851:53;:::i;:::-;10841:63;;10797:117;10953:2;10979:53;11024:7;11015:6;11004:9;11000:22;10979:53;:::i;:::-;10969:63;;10924:118;10575:474;;;;;:::o;11055:468::-;11120:6;11128;11177:2;11165:9;11156:7;11152:23;11148:32;11145:119;;;11183:79;;:::i;:::-;11145:119;11303:1;11328:50;11370:7;11361:6;11350:9;11346:22;11328:50;:::i;:::-;11318:60;;11274:114;11427:2;11453:53;11498:7;11489:6;11478:9;11474:22;11453:53;:::i;:::-;11443:63;;11398:118;11055:468;;;;;:::o;11529:104::-;11574:7;11603:24;11621:5;11603:24;:::i;:::-;11592:35;;11529:104;;;:::o;11639:138::-;11720:32;11746:5;11720:32;:::i;:::-;11713:5;11710:43;11700:71;;11767:1;11764;11757:12;11700:71;11639:138;:::o;11783:155::-;11837:5;11875:6;11862:20;11853:29;;11891:41;11926:5;11891:41;:::i;:::-;11783:155;;;;:::o;11944:345::-;12011:6;12060:2;12048:9;12039:7;12035:23;12031:32;12028:119;;;12066:79;;:::i;:::-;12028:119;12186:1;12211:61;12264:7;12255:6;12244:9;12240:22;12211:61;:::i;:::-;12201:71;;12157:125;11944:345;;;;:::o;12295:474::-;12363:6;12371;12420:2;12408:9;12399:7;12395:23;12391:32;12388:119;;;12426:79;;:::i;:::-;12388:119;12546:1;12571:53;12616:7;12607:6;12596:9;12592:22;12571:53;:::i;:::-;12561:63;;12517:117;12673:2;12699:53;12744:7;12735:6;12724:9;12720:22;12699:53;:::i;:::-;12689:63;;12644:118;12295:474;;;;;:::o;12775:60::-;12803:3;12824:5;12817:12;;12775:60;;;:::o;12841:142::-;12891:9;12924:53;12942:34;12951:24;12969:5;12951:24;:::i;:::-;12942:34;:::i;:::-;12924:53;:::i;:::-;12911:66;;12841:142;;;:::o;12989:126::-;13039:9;13072:37;13103:5;13072:37;:::i;:::-;13059:50;;12989:126;;;:::o;13121:144::-;13189:9;13222:37;13253:5;13222:37;:::i;:::-;13209:50;;13121:144;;;:::o;13271:167::-;13376:55;13425:5;13376:55;:::i;:::-;13371:3;13364:68;13271:167;;:::o;13444:258::-;13555:4;13593:2;13582:9;13578:18;13570:26;;13606:89;13692:1;13681:9;13677:17;13668:6;13606:89;:::i;:::-;13444:258;;;;:::o;13708:161::-;13848:13;13844:1;13836:6;13832:14;13825:37;13708:161;:::o;13875:366::-;14017:3;14038:67;14102:2;14097:3;14038:67;:::i;:::-;14031:74;;14114:93;14203:3;14114:93;:::i;:::-;14232:2;14227:3;14223:12;14216:19;;13875:366;;;:::o;14247:419::-;14413:4;14451:2;14440:9;14436:18;14428:26;;14500:9;14494:4;14490:20;14486:1;14475:9;14471:17;14464:47;14528:131;14654:4;14528:131;:::i;:::-;14520:139;;14247:419;;;:::o;14672:224::-;14812:34;14808:1;14800:6;14796:14;14789:58;14881:7;14876:2;14868:6;14864:15;14857:32;14672:224;:::o;14902:366::-;15044:3;15065:67;15129:2;15124:3;15065:67;:::i;:::-;15058:74;;15141:93;15230:3;15141:93;:::i;:::-;15259:2;15254:3;15250:12;15243:19;;14902:366;;;:::o;15274:419::-;15440:4;15478:2;15467:9;15463:18;15455:26;;15527:9;15521:4;15517:20;15513:1;15502:9;15498:17;15491:47;15555:131;15681:4;15555:131;:::i;:::-;15547:139;;15274:419;;;:::o;15699:180::-;15747:77;15744:1;15737:88;15844:4;15841:1;15834:15;15868:4;15865:1;15858:15;15885:320;16000:4;16038:2;16027:9;16023:18;16015:26;;16051:71;16119:1;16108:9;16104:17;16095:6;16051:71;:::i;:::-;16132:66;16194:2;16183:9;16179:18;16170:6;16132:66;:::i;:::-;15885:320;;;;;:::o;16211:180::-;16259:77;16256:1;16249:88;16356:4;16353:1;16346:15;16380:4;16377:1;16370:15;16397:233;16436:3;16459:24;16477:5;16459:24;:::i;:::-;16450:33;;16505:66;16498:5;16495:77;16492:103;;16575:18;;:::i;:::-;16492:103;16622:1;16615:5;16611:13;16604:20;;16397:233;;;:::o;16636:156::-;16776:8;16772:1;16764:6;16760:14;16753:32;16636:156;:::o;16798:365::-;16940:3;16961:66;17025:1;17020:3;16961:66;:::i;:::-;16954:73;;17036:93;17125:3;17036:93;:::i;:::-;17154:2;17149:3;17145:12;17138:19;;16798:365;;;:::o;17169:419::-;17335:4;17373:2;17362:9;17358:18;17350:26;;17422:9;17416:4;17412:20;17408:1;17397:9;17393:17;17386:47;17450:131;17576:4;17450:131;:::i;:::-;17442:139;;17169:419;;;:::o;17594:223::-;17734:34;17730:1;17722:6;17718:14;17711:58;17803:6;17798:2;17790:6;17786:15;17779:31;17594:223;:::o;17823:366::-;17965:3;17986:67;18050:2;18045:3;17986:67;:::i;:::-;17979:74;;18062:93;18151:3;18062:93;:::i;:::-;18180:2;18175:3;18171:12;18164:19;;17823:366;;;:::o;18195:419::-;18361:4;18399:2;18388:9;18384:18;18376:26;;18448:9;18442:4;18438:20;18434:1;18423:9;18419:17;18412:47;18476:131;18602:4;18476:131;:::i;:::-;18468:139;;18195:419;;;:::o;18620:102::-;18662:8;18709:5;18706:1;18702:13;18681:34;;18620:102;;;:::o;18728:848::-;18789:5;18796:4;18820:6;18811:15;;18844:5;18835:14;;18858:712;18879:1;18869:8;18866:15;18858:712;;;18974:4;18969:3;18965:14;18959:4;18956:24;18953:50;;;18983:18;;:::i;:::-;18953:50;19033:1;19023:8;19019:16;19016:451;;;19448:4;19441:5;19437:16;19428:25;;19016:451;19498:4;19492;19488:15;19480:23;;19528:32;19551:8;19528:32;:::i;:::-;19516:44;;18858:712;;;18728:848;;;;;;;:::o;19582:1073::-;19636:5;19827:8;19817:40;;19848:1;19839:10;;19850:5;;19817:40;19876:4;19866:36;;19893:1;19884:10;;19895:5;;19866:36;19962:4;20010:1;20005:27;;;;20046:1;20041:191;;;;19955:277;;20005:27;20023:1;20014:10;;20025:5;;;20041:191;20086:3;20076:8;20073:17;20070:43;;;20093:18;;:::i;:::-;20070:43;20142:8;20139:1;20135:16;20126:25;;20177:3;20170:5;20167:14;20164:40;;;20184:18;;:::i;:::-;20164:40;20217:5;;;19955:277;;20341:2;20331:8;20328:16;20322:3;20316:4;20313:13;20309:36;20291:2;20281:8;20278:16;20273:2;20267:4;20264:12;20260:35;20244:111;20241:246;;;20397:8;20391:4;20387:19;20378:28;;20432:3;20425:5;20422:14;20419:40;;;20439:18;;:::i;:::-;20419:40;20472:5;;20241:246;20512:42;20550:3;20540:8;20534:4;20531:1;20512:42;:::i;:::-;20497:57;;;;20586:4;20581:3;20577:14;20570:5;20567:25;20564:51;;;20595:18;;:::i;:::-;20564:51;20644:4;20637:5;20633:16;20624:25;;19582:1073;;;;;;:::o;20661:281::-;20719:5;20743:23;20761:4;20743:23;:::i;:::-;20735:31;;20787:25;20803:8;20787:25;:::i;:::-;20775:37;;20831:104;20868:66;20858:8;20852:4;20831:104;:::i;:::-;20822:113;;20661:281;;;;:::o;20948:410::-;20988:7;21011:20;21029:1;21011:20;:::i;:::-;21006:25;;21045:20;21063:1;21045:20;:::i;:::-;21040:25;;21100:1;21097;21093:9;21122:30;21140:11;21122:30;:::i;:::-;21111:41;;21301:1;21292:7;21288:15;21285:1;21282:22;21262:1;21255:9;21235:83;21212:139;;21331:18;;:::i;:::-;21212:139;20996:362;20948:410;;;;:::o;21364:180::-;21412:77;21409:1;21402:88;21509:4;21506:1;21499:15;21533:4;21530:1;21523:15;21550:185;21590:1;21607:20;21625:1;21607:20;:::i;:::-;21602:25;;21641:20;21659:1;21641:20;:::i;:::-;21636:25;;21680:1;21670:35;;21685:18;;:::i;:::-;21670:35;21727:1;21724;21720:9;21715:14;;21550:185;;;;:::o;21741:227::-;21881:34;21877:1;21869:6;21865:14;21858:58;21950:10;21945:2;21937:6;21933:15;21926:35;21741:227;:::o;21974:366::-;22116:3;22137:67;22201:2;22196:3;22137:67;:::i;:::-;22130:74;;22213:93;22302:3;22213:93;:::i;:::-;22331:2;22326:3;22322:12;22315:19;;21974:366;;;:::o;22346:419::-;22512:4;22550:2;22539:9;22535:18;22527:26;;22599:9;22593:4;22589:20;22585:1;22574:9;22570:17;22563:47;22627:131;22753:4;22627:131;:::i;:::-;22619:139;;22346:419;;;:::o;22771:191::-;22811:3;22830:20;22848:1;22830:20;:::i;:::-;22825:25;;22864:20;22882:1;22864:20;:::i;:::-;22859:25;;22907:1;22904;22900:9;22893:16;;22928:3;22925:1;22922:10;22919:36;;;22935:18;;:::i;:::-;22919:36;22771:191;;;;:::o;22968:177::-;23108:29;23104:1;23096:6;23092:14;23085:53;22968:177;:::o;23151:366::-;23293:3;23314:67;23378:2;23373:3;23314:67;:::i;:::-;23307:74;;23390:93;23479:3;23390:93;:::i;:::-;23508:2;23503:3;23499:12;23492:19;;23151:366;;;:::o;23523:419::-;23689:4;23727:2;23716:9;23712:18;23704:26;;23776:9;23770:4;23766:20;23762:1;23751:9;23747:17;23740:47;23804:131;23930:4;23804:131;:::i;:::-;23796:139;;23523:419;;;:::o;23948:158::-;24088:10;24084:1;24076:6;24072:14;24065:34;23948:158;:::o;24112:365::-;24254:3;24275:66;24339:1;24334:3;24275:66;:::i;:::-;24268:73;;24350:93;24439:3;24350:93;:::i;:::-;24468:2;24463:3;24459:12;24452:19;;24112:365;;;:::o;24483:419::-;24649:4;24687:2;24676:9;24672:18;24664:26;;24736:9;24730:4;24726:20;24722:1;24711:9;24707:17;24700:47;24764:131;24890:4;24764:131;:::i;:::-;24756:139;;24483:419;;;:::o;24908:194::-;24948:4;24968:20;24986:1;24968:20;:::i;:::-;24963:25;;25002:20;25020:1;25002:20;:::i;:::-;24997:25;;25046:1;25043;25039:9;25031:17;;25070:1;25064:4;25061:11;25058:37;;;25075:18;;:::i;:::-;25058:37;24908:194;;;;:::o;25108:227::-;25248:34;25244:1;25236:6;25232:14;25225:58;25317:10;25312:2;25304:6;25300:15;25293:35;25108:227;:::o;25341:366::-;25483:3;25504:67;25568:2;25563:3;25504:67;:::i;:::-;25497:74;;25580:93;25669:3;25580:93;:::i;:::-;25698:2;25693:3;25689:12;25682:19;;25341:366;;;:::o;25713:419::-;25879:4;25917:2;25906:9;25902:18;25894:26;;25966:9;25960:4;25956:20;25952:1;25941:9;25937:17;25930:47;25994:131;26120:4;25994:131;:::i;:::-;25986:139;;25713:419;;;:::o;26138:143::-;26195:5;26226:6;26220:13;26211:22;;26242:33;26269:5;26242:33;:::i;:::-;26138:143;;;;:::o;26287:351::-;26357:6;26406:2;26394:9;26385:7;26381:23;26377:32;26374:119;;;26412:79;;:::i;:::-;26374:119;26532:1;26557:64;26613:7;26604:6;26593:9;26589:22;26557:64;:::i;:::-;26547:74;;26503:128;26287:351;;;;:::o;26644:332::-;26765:4;26803:2;26792:9;26788:18;26780:26;;26816:71;26884:1;26873:9;26869:17;26860:6;26816:71;:::i;:::-;26897:72;26965:2;26954:9;26950:18;26941:6;26897:72;:::i;:::-;26644:332;;;;;:::o;26982:137::-;27036:5;27067:6;27061:13;27052:22;;27083:30;27107:5;27083:30;:::i;:::-;26982:137;;;;:::o;27125:345::-;27192:6;27241:2;27229:9;27220:7;27216:23;27212:32;27209:119;;;27247:79;;:::i;:::-;27209:119;27367:1;27392:61;27445:7;27436:6;27425:9;27421:22;27392:61;:::i;:::-;27382:71;;27338:125;27125:345;;;;:::o;27476:228::-;27616:34;27612:1;27604:6;27600:14;27593:58;27685:11;27680:2;27672:6;27668:15;27661:36;27476:228;:::o;27710:366::-;27852:3;27873:67;27937:2;27932:3;27873:67;:::i;:::-;27866:74;;27949:93;28038:3;27949:93;:::i;:::-;28067:2;28062:3;28058:12;28051:19;;27710:366;;;:::o;28082:419::-;28248:4;28286:2;28275:9;28271:18;28263:26;;28335:9;28329:4;28325:20;28321:1;28310:9;28306:17;28299:47;28363:131;28489:4;28363:131;:::i;:::-;28355:139;;28082:419;;;:::o;28507:165::-;28647:17;28643:1;28635:6;28631:14;28624:41;28507:165;:::o;28678:366::-;28820:3;28841:67;28905:2;28900:3;28841:67;:::i;:::-;28834:74;;28917:93;29006:3;28917:93;:::i;:::-;29035:2;29030:3;29026:12;29019:19;;28678:366;;;:::o;29050:419::-;29216:4;29254:2;29243:9;29239:18;29231:26;;29303:9;29297:4;29293:20;29289:1;29278:9;29274:17;29267:47;29331:131;29457:4;29331:131;:::i;:::-;29323:139;;29050:419;;;:::o;29475:320::-;29590:4;29628:2;29617:9;29613:18;29605:26;;29641:71;29709:1;29698:9;29694:17;29685:6;29641:71;:::i;:::-;29722:66;29784:2;29773:9;29769:18;29760:6;29722:66;:::i;:::-;29475:320;;;;;:::o;29801:231::-;29941:34;29937:1;29929:6;29925:14;29918:58;30010:14;30005:2;29997:6;29993:15;29986:39;29801:231;:::o;30038:366::-;30180:3;30201:67;30265:2;30260:3;30201:67;:::i;:::-;30194:74;;30277:93;30366:3;30277:93;:::i;:::-;30395:2;30390:3;30386:12;30379:19;;30038:366;;;:::o;30410:419::-;30576:4;30614:2;30603:9;30599:18;30591:26;;30663:9;30657:4;30653:20;30649:1;30638:9;30634:17;30627:47;30691:131;30817:4;30691:131;:::i;:::-;30683:139;;30410:419;;;:::o;30835:176::-;30975:28;30971:1;30963:6;30959:14;30952:52;30835:176;:::o;31017:366::-;31159:3;31180:67;31244:2;31239:3;31180:67;:::i;:::-;31173:74;;31256:93;31345:3;31256:93;:::i;:::-;31374:2;31369:3;31365:12;31358:19;;31017:366;;;:::o;31389:419::-;31555:4;31593:2;31582:9;31578:18;31570:26;;31642:9;31636:4;31632:20;31628:1;31617:9;31613:17;31606:47;31670:131;31796:4;31670:131;:::i;:::-;31662:139;;31389:419;;;:::o;31814:167::-;31954:19;31950:1;31942:6;31938:14;31931:43;31814:167;:::o;31987:366::-;32129:3;32150:67;32214:2;32209:3;32150:67;:::i;:::-;32143:74;;32226:93;32315:3;32226:93;:::i;:::-;32344:2;32339:3;32335:12;32328:19;;31987:366;;;:::o;32359:419::-;32525:4;32563:2;32552:9;32548:18;32540:26;;32612:9;32606:4;32602:20;32598:1;32587:9;32583:17;32576:47;32640:131;32766:4;32640:131;:::i;:::-;32632:139;;32359:419;;;:::o;32784:174::-;32924:26;32920:1;32912:6;32908:14;32901:50;32784:174;:::o;32964:366::-;33106:3;33127:67;33191:2;33186:3;33127:67;:::i;:::-;33120:74;;33203:93;33292:3;33203:93;:::i;:::-;33321:2;33316:3;33312:12;33305:19;;32964:366;;;:::o;33336:419::-;33502:4;33540:2;33529:9;33525:18;33517:26;;33589:9;33583:4;33579:20;33575:1;33564:9;33560:17;33553:47;33617:131;33743:4;33617:131;:::i;:::-;33609:139;;33336:419;;;:::o;33761:169::-;33901:21;33897:1;33889:6;33885:14;33878:45;33761:169;:::o;33936:366::-;34078:3;34099:67;34163:2;34158:3;34099:67;:::i;:::-;34092:74;;34175:93;34264:3;34175:93;:::i;:::-;34293:2;34288:3;34284:12;34277:19;;33936:366;;;:::o;34308:419::-;34474:4;34512:2;34501:9;34497:18;34489:26;;34561:9;34555:4;34551:20;34547:1;34536:9;34532:17;34525:47;34589:131;34715:4;34589:131;:::i;:::-;34581:139;;34308:419;;;:::o;34733:174::-;34873:26;34869:1;34861:6;34857:14;34850:50;34733:174;:::o;34913:366::-;35055:3;35076:67;35140:2;35135:3;35076:67;:::i;:::-;35069:74;;35152:93;35241:3;35152:93;:::i;:::-;35270:2;35265:3;35261:12;35254:19;;34913:366;;;:::o;35285:419::-;35451:4;35489:2;35478:9;35474:18;35466:26;;35538:9;35532:4;35528:20;35524:1;35513:9;35509:17;35502:47;35566:131;35692:4;35566:131;:::i;:::-;35558:139;;35285:419;;;:::o;35710:171::-;35850:23;35846:1;35838:6;35834:14;35827:47;35710:171;:::o;35887:366::-;36029:3;36050:67;36114:2;36109:3;36050:67;:::i;:::-;36043:74;;36126:93;36215:3;36126:93;:::i;:::-;36244:2;36239:3;36235:12;36228:19;;35887:366;;;:::o;36259:419::-;36425:4;36463:2;36452:9;36448:18;36440:26;;36512:9;36506:4;36502:20;36498:1;36487:9;36483:17;36476:47;36540:131;36666:4;36540:131;:::i;:::-;36532:139;;36259:419;;;:::o;36684:181::-;36824:33;36820:1;36812:6;36808:14;36801:57;36684:181;:::o;36871:366::-;37013:3;37034:67;37098:2;37093:3;37034:67;:::i;:::-;37027:74;;37110:93;37199:3;37110:93;:::i;:::-;37228:2;37223:3;37219:12;37212:19;;36871:366;;;:::o;37243:419::-;37409:4;37447:2;37436:9;37432:18;37424:26;;37496:9;37490:4;37486:20;37482:1;37471:9;37467:17;37460:47;37524:131;37650:4;37524:131;:::i;:::-;37516:139;;37243:419;;;:::o;37668:182::-;37808:34;37804:1;37796:6;37792:14;37785:58;37668:182;:::o;37856:366::-;37998:3;38019:67;38083:2;38078:3;38019:67;:::i;:::-;38012:74;;38095:93;38184:3;38095:93;:::i;:::-;38213:2;38208:3;38204:12;38197:19;;37856:366;;;:::o;38228:419::-;38394:4;38432:2;38421:9;38417:18;38409:26;;38481:9;38475:4;38471:20;38467:1;38456:9;38452:17;38445:47;38509:131;38635:4;38509:131;:::i;:::-;38501:139;;38228:419;;;:::o;38653:223::-;38793:34;38789:1;38781:6;38777:14;38770:58;38862:6;38857:2;38849:6;38845:15;38838:31;38653:223;:::o;38882:366::-;39024:3;39045:67;39109:2;39104:3;39045:67;:::i;:::-;39038:74;;39121:93;39210:3;39121:93;:::i;:::-;39239:2;39234:3;39230:12;39223:19;;38882:366;;;:::o;39254:419::-;39420:4;39458:2;39447:9;39443:18;39435:26;;39507:9;39501:4;39497:20;39493:1;39482:9;39478:17;39471:47;39535:131;39661:4;39535:131;:::i;:::-;39527:139;;39254:419;;;:::o;39679:418::-;39816:4;39854:2;39843:9;39839:18;39831:26;;39867:67;39931:1;39920:9;39916:17;39907:6;39867:67;:::i;:::-;39944:68;40008:2;39997:9;39993:18;39984:6;39944:68;:::i;:::-;40022;40086:2;40075:9;40071:18;40062:6;40022:68;:::i;:::-;39679:418;;;;;;:::o;40103:177::-;40243:29;40239:1;40231:6;40227:14;40220:53;40103:177;:::o;40286:366::-;40428:3;40449:67;40513:2;40508:3;40449:67;:::i;:::-;40442:74;;40525:93;40614:3;40525:93;:::i;:::-;40643:2;40638:3;40634:12;40627:19;;40286:366;;;:::o;40658:419::-;40824:4;40862:2;40851:9;40847:18;40839:26;;40911:9;40905:4;40901:20;40897:1;40886:9;40882:17;40875:47;40939:131;41065:4;40939:131;:::i;:::-;40931:139;;40658:419;;;:::o;41083:180::-;41131:77;41128:1;41121:88;41228:4;41225:1;41218:15;41252:4;41249:1;41242:15;41269:85;41314:7;41343:5;41332:16;;41269:85;;;:::o;41360:158::-;41418:9;41451:61;41469:42;41478:32;41504:5;41478:32;:::i;:::-;41469:42;:::i;:::-;41451:61;:::i;:::-;41438:74;;41360:158;;;:::o;41524:147::-;41619:45;41658:5;41619:45;:::i;:::-;41614:3;41607:58;41524:147;;:::o;41677:114::-;41744:6;41778:5;41772:12;41762:22;;41677:114;;;:::o;41797:184::-;41896:11;41930:6;41925:3;41918:19;41970:4;41965:3;41961:14;41946:29;;41797:184;;;;:::o;41987:132::-;42054:4;42077:3;42069:11;;42107:4;42102:3;42098:14;42090:22;;41987:132;;;:::o;42125:108::-;42202:24;42220:5;42202:24;:::i;:::-;42197:3;42190:37;42125:108;;:::o;42239:179::-;42308:10;42329:46;42371:3;42363:6;42329:46;:::i;:::-;42407:4;42402:3;42398:14;42384:28;;42239:179;;;;:::o;42424:113::-;42494:4;42526;42521:3;42517:14;42509:22;;42424:113;;;:::o;42573:732::-;42692:3;42721:54;42769:5;42721:54;:::i;:::-;42791:86;42870:6;42865:3;42791:86;:::i;:::-;42784:93;;42901:56;42951:5;42901:56;:::i;:::-;42980:7;43011:1;42996:284;43021:6;43018:1;43015:13;42996:284;;;43097:6;43091:13;43124:63;43183:3;43168:13;43124:63;:::i;:::-;43117:70;;43210:60;43263:6;43210:60;:::i;:::-;43200:70;;43056:224;43043:1;43040;43036:9;43031:14;;42996:284;;;43000:14;43296:3;43289:10;;42697:608;;;42573:732;;;;:::o;43311:831::-;43574:4;43612:3;43601:9;43597:19;43589:27;;43626:71;43694:1;43683:9;43679:17;43670:6;43626:71;:::i;:::-;43707:80;43783:2;43772:9;43768:18;43759:6;43707:80;:::i;:::-;43834:9;43828:4;43824:20;43819:2;43808:9;43804:18;43797:48;43862:108;43965:4;43956:6;43862:108;:::i;:::-;43854:116;;43980:72;44048:2;44037:9;44033:18;44024:6;43980:72;:::i;:::-;44062:73;44130:3;44119:9;44115:19;44106:6;44062:73;:::i;:::-;43311:831;;;;;;;;:::o;44148:807::-;44397:4;44435:3;44424:9;44420:19;44412:27;;44449:71;44517:1;44506:9;44502:17;44493:6;44449:71;:::i;:::-;44530:72;44598:2;44587:9;44583:18;44574:6;44530:72;:::i;:::-;44612:80;44688:2;44677:9;44673:18;44664:6;44612:80;:::i;:::-;44702;44778:2;44767:9;44763:18;44754:6;44702:80;:::i;:::-;44792:73;44860:3;44849:9;44845:19;44836:6;44792:73;:::i;:::-;44875;44943:3;44932:9;44928:19;44919:6;44875:73;:::i;:::-;44148:807;;;;;;;;;:::o;44961:663::-;45049:6;45057;45065;45114:2;45102:9;45093:7;45089:23;45085:32;45082:119;;;45120:79;;:::i;:::-;45082:119;45240:1;45265:64;45321:7;45312:6;45301:9;45297:22;45265:64;:::i;:::-;45255:74;;45211:128;45378:2;45404:64;45460:7;45451:6;45440:9;45436:22;45404:64;:::i;:::-;45394:74;;45349:129;45517:2;45543:64;45599:7;45590:6;45579:9;45575:22;45543:64;:::i;:::-;45533:74;;45488:129;44961:663;;;;;:::o;45630:332::-;45751:4;45789:2;45778:9;45774:18;45766:26;;45802:71;45870:1;45859:9;45855:17;45846:6;45802:71;:::i;:::-;45883:72;45951:2;45940:9;45936:18;45927:6;45883:72;:::i;:::-;45630:332;;;;;:::o;45968:220::-;46108:34;46104:1;46096:6;46092:14;46085:58;46177:3;46172:2;46164:6;46160:15;46153:28;45968:220;:::o;46194:366::-;46336:3;46357:67;46421:2;46416:3;46357:67;:::i;:::-;46350:74;;46433:93;46522:3;46433:93;:::i;:::-;46551:2;46546:3;46542:12;46535:19;;46194:366;;;:::o;46566:419::-;46732:4;46770:2;46759:9;46755:18;46747:26;;46819:9;46813:4;46809:20;46805:1;46794:9;46790:17;46783:47;46847:131;46973:4;46847:131;:::i;:::-;46839:139;;46566:419;;;:::o

Swarm Source

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