ETH Price: $2,995.54 (-1.96%)
Gas: 2 Gwei

Token

Earnium (eEarn)
 

Overview

Max Total Supply

1,000,000 eEarn

Holders

51

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
2,770.21339697 eEarn

Value
$0.00
0x9202d5d9c4c938162c9856a4f5f0fae3da3304c1
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:
Token

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-01
*/

/*
                                                                                                                               
Telegram : https://t.me/earnium_eth
Twitter : https://twitter.com/earnium_eth
Website : https://earnium.vip/

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

abstract contract Context {

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

}

contract Ownable is Context {

    address private _owner;

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

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

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

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

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

}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IUniswapV2Router01 {
    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);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract Token is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    
    string private _name = "Earnium";
    string private _symbol = unicode"eEarn";
    uint8 private _decimals = 8;

    address public marketingWallet = 0x13ea50d2A85090aDd2639D2FD1bbd38BAF9119c9;
    address public BuyBackWallet = 0x13ea50d2A85090aDd2639D2FD1bbd38BAF9119c9;
    address public liquidityReciever;

    address public constant deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public constant zeroAddress = 0x0000000000000000000000000000000000000000;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;

    uint256 _buyLiquidityFee = 0;
    uint256 _buyMarketingFee = 300;
    uint256 _buybuybackFee = 0;
    
    uint256 _sellLiquidityFee = 0;
    uint256 _sellMarketingFee = 400;
    uint256 _sellbuybackFee = 0;

    uint256 totalBuy;
    uint256 totalSell;

    uint256 constant denominator = 1000;

    uint256 private _totalSupply = 1_000_000 * 10 ** _decimals;   

    uint256 public minimumTokensBeforeSwap = 6000 * 10 ** _decimals;

    uint256 public _maxTxAmount =  _totalSupply.mul(20).div(denominator);     //2%
    uint256 public _walletMax = _totalSupply.mul(20).div(denominator);    //2%

    bool public EnableTxLimit = true;
    bool public checkWalletLimit = true;
    bool public ActiveTrade = false;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    modifier onlyDev {
        require(msg.sender == liquidityReciever, "Ownable: caller is not the Dev");
        _; 
    }

    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
            
        address developerWallet = 0x8609e744F1d87Ff2f5b543073569F2314e6D01c9;
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 

        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0);

        liquidityReciever = developerWallet;

        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[developerWallet] = true;

        isWalletLimitExempt[developerWallet] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[developerWallet] = true;
        isTxLimitExempt[address(this)] = true;

        isMarketPair[address(uniswapPair)] = true;

        totalBuy = _buyLiquidityFee.add(_buyMarketingFee).add(_buybuybackFee);
        totalSell = _sellLiquidityFee.add(_sellMarketingFee).add(_sellbuybackFee);

        transferOwnership(developerWallet);

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

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

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

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

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

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

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

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

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

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

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

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

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

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

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20:from zero");
        require(recipient != address(0), "ERC20:to zero");
        require(amount > 0, "Invalid Amount");

        if(!ActiveTrade){
            require(isExcludedFromFee[sender] || isExcludedFromFee[recipient],"Trading is Paused!");
        }

        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {  
            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTxLimit) {
                require(amount <= _maxTxAmount,"Max Tx");
            } 

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                swapAndLiquify();
            }

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

            uint256 finalAmount = shouldTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Max Wallet");
            }

            _balances[recipient] = _balances[recipient].add(finalAmount);

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

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

    function swapAndLiquify() private lockTheSwap {
        
        uint256 contractBalance = balanceOf(address(this));

        if(contractBalance == 0) return;

        uint256 _liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee);
        uint256 _MarketingShare = _buyMarketingFee.add(_sellMarketingFee);
        // uint256 _BuyBackShare = _buybuybackFee.add(_sellbuybackFee);

        uint totalShares = totalBuy.add(totalSell);
        if(totalShares == 0) return;

        uint256 tokensForLP = contractBalance.mul(_liquidityShare).div(totalShares).div(2);
        uint256 tokensForSwap = contractBalance.sub(tokensForLP);

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance.sub(initialBalance);

        uint256 totalETHFee = totalShares.sub(_liquidityShare.div(2));

        uint256 amountETHLiquidity = amountReceived.mul(_liquidityShare).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountReceived.mul(_MarketingShare).div(totalETHFee);
        uint256 amountETHBuyBack = amountReceived.sub(amountETHLiquidity).sub(amountETHMarketing);

        if(amountETHMarketing > 0) 
            transferToAddressETH(marketingWallet,amountETHMarketing);

        if(amountETHBuyBack > 0) 
            transferToAddressETH(BuyBackWallet,amountETHBuyBack);

        if(amountETHLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountETHLiquidity);

    }

    function transferToAddressETH(address recipient, uint256 amount) private {
        payable(recipient).transfer(amount);
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) {
            return true;
        }
        else if (isMarketPair[sender] || isMarketPair[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;
        
        unchecked {

            if(isMarketPair[sender]) {

                feeAmount = amount.mul(totalBuy).div(denominator);
            
            }
            else if(isMarketPair[recipient]) {
                
                feeAmount = amount.mul(totalSell).div(denominator);
                
            }     

            if(feeAmount > 0) {
                _balances[address(this)] = _balances[address(this)].add(feeAmount);
                emit Transfer(sender, address(this), feeAmount);
            }

            return amount.sub(feeAmount);
        }
        
    }

    //To Rescue Stucked Balance
    function rescueFunds() external onlyOwner { 
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os,"Transaction Failed!!");
    }

    //To Rescue Stucked Tokens
    function rescueTokens(IERC20 adr,address recipient,uint amount) external onlyOwner {
        adr.transfer(recipient,amount);
    }

    function enableTrading(bool _status) external onlyOwner {
        ActiveTrade = _status;
    }

    function enableTxLimit(bool _status) external onlyOwner {
        EnableTxLimit = _status;
    }

    function enableWalletLimit(bool _status) external onlyOwner {
        checkWalletLimit = _status;
    }

    function removeLimits() external onlyOwner {
        checkWalletLimit = false;
        EnableTxLimit = false;
    }

    function enableLimits() external onlyOwner {
        checkWalletLimit = true;
        EnableTxLimit = true;   
    }

    function setBuyFee(uint _newLP , uint _newMarket , uint _newBB) external onlyOwner {     
        _buyLiquidityFee = _newLP;
        _buyMarketingFee = _newMarket;
        _buybuybackFee = _newBB;
        totalBuy = _buyLiquidityFee.add(_buyMarketingFee).add(_buybuybackFee);
    }

    function setSellFee(uint _newLP , uint _newMarket , uint _newBB) external onlyOwner {        
        _sellLiquidityFee = _newLP;
        _sellMarketingFee = _newMarket;
        _sellbuybackFee = _newBB;
        totalSell = _sellLiquidityFee.add(_sellMarketingFee).add(_sellbuybackFee);
    }

    function setMarketingWallets(address _newWallet) external onlyOwner {
        marketingWallet = _newWallet;
    }

    function setLiquidityWallets(address _newWallet) external onlyOwner {
        liquidityReciever = _newWallet;
    }   

    function setBuyBackWallets(address _newWallet) external onlyOwner {
        BuyBackWallet = _newWallet;
    }    

    function setExcludeFromFee(address _adr,bool _status) external onlyOwner {
        require(isExcludedFromFee[_adr] != _status,"Not Changed!!");
        isExcludedFromFee[_adr] = _status;
    }

    function ExcludeWalletLimit(address _adr,bool _status) external onlyOwner {
        require(isWalletLimitExempt[_adr] != _status,"Not Changed!!");
        isWalletLimitExempt[_adr] = _status;
    }

    function ExcludeTxLimit(address _adr,bool _status) external onlyOwner {
        require(isTxLimitExempt[_adr] != _status,"Not Changed!!");
        isTxLimitExempt[_adr] = _status;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function setMaxWalletLimit(uint256 newLimit) external onlyOwner() {
        _walletMax = newLimit;
    }

    function setTxLimit(uint256 newLimit) external onlyOwner() {
        _maxTxAmount = newLimit;
    }

    function setSwapAndLiquifyEnabled(bool _enabled) external onlyDev {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setMarketPair(address _pair, bool _status) external onlyOwner {
        isMarketPair[_pair] = _status;
        if(_status) {
            isWalletLimitExempt[address(_pair)] = true;
        }
    }

    function changeRouterVersion(address newRouterAddress) external onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0)) //Create If Doesnt exist
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address

        isMarketPair[address(uniswapPair)] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ActiveTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BuyBackWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"ExcludeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"ExcludeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"liquidityReciever","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renouncedOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"adr","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setBuyBackWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLP","type":"uint256"},{"internalType":"uint256","name":"_newMarket","type":"uint256"},{"internalType":"uint256","name":"_newBB","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setLiquidityWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setMarketingWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLP","type":"uint256"},{"internalType":"uint256","name":"_newMarket","type":"uint256"},{"internalType":"uint256","name":"_newBB","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600781526020017f4561726e69756d00000000000000000000000000000000000000000000000000815250600190816200004a9190620010b1565b506040518060400160405280600581526020017f654561726e00000000000000000000000000000000000000000000000000000081525060029081620000919190620010b1565b506008600360006101000a81548160ff021916908360ff1602179055507313ea50d2a85090add2639d2fd1bbd38baf9119c9600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507313ea50d2a85090add2639d2fd1bbd38baf9119c9600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600c5561012c600d556000600e556000600f556101906010556000601155600360009054906101000a900460ff16600a62000196919062001328565b620f4240620001a6919062001379565b601455600360009054906101000a900460ff16600a620001c7919062001328565b611770620001d6919062001379565b601555620002106103e8620001fc6014805462000ac060201b62002f1c1790919060201c565b62000b4360201b62002f961790919060201c565b6016556200024a6103e8620002366014805462000ac060201b62002f1c1790919060201c565b62000b4360201b62002f961790919060201c565b6017556001601860006101000a81548160ff0219169083151502179055506001601860016101000a81548160ff0219169083151502179055506000601860026101000a81548160ff0219169083151502179055506001601960156101000a81548160ff021916908315150217905550348015620002c657600080fd5b506000620002d962000b9560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000738609e744f1d87ff2f5b543073569f2314e6d01c990506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041b91906200142e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000483573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a991906200142e565b6040518363ffffffff1660e01b8152600401620004c892919062001471565b6020604051808303816000875af1158015620004e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200050e91906200142e565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601860039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620009b2600e546200099e600d54600c5462000b9d60201b62002fe01790919060201c565b62000b9d60201b62002fe01790919060201c565b601281905550620009f1601154620009dd601054600f5462000b9d60201b62002fe01790919060201c565b62000b9d60201b62002fe01790919060201c565b60138190555062000a088262000c0060201b60201c565b601454600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60145460405162000ab09190620014af565b60405180910390a3505062001835565b600080830362000ad4576000905062000b3d565b6000828462000ae4919062001379565b905082848262000af59190620014fb565b1462000b38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b2f90620015ba565b60405180910390fd5b809150505b92915050565b600062000b8d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000dcf60201b60201c565b905092915050565b600033905090565b600080828462000bae9190620015dc565b90508381101562000bf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bed9062001667565b60405180910390fd5b8091505092915050565b62000c1062000b9560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000ca0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c9790620016d9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000d12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d099062001771565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808311829062000e19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e10919062001811565b60405180910390fd5b506000838562000e2a9190620014fb565b9050809150509392505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000eb957607f821691505b60208210810362000ecf5762000ece62000e71565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000f397fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000efa565b62000f45868362000efa565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000f9262000f8c62000f868462000f5d565b62000f67565b62000f5d565b9050919050565b6000819050919050565b62000fae8362000f71565b62000fc662000fbd8262000f99565b84845462000f07565b825550505050565b600090565b62000fdd62000fce565b62000fea81848462000fa3565b505050565b5b8181101562001012576200100660008262000fd3565b60018101905062000ff0565b5050565b601f82111562001061576200102b8162000ed5565b620010368462000eea565b8101602085101562001046578190505b6200105e620010558562000eea565b83018262000fef565b50505b505050565b600082821c905092915050565b6000620010866000198460080262001066565b1980831691505092915050565b6000620010a1838362001073565b9150826002028217905092915050565b620010bc8262000e37565b67ffffffffffffffff811115620010d857620010d762000e42565b5b620010e4825462000ea0565b620010f182828562001016565b600060209050601f83116001811462001129576000841562001114578287015190505b62001120858262001093565b86555062001190565b601f198416620011398662000ed5565b60005b8281101562001163578489015182556001820191506020850194506020810190506200113c565b868310156200118357848901516200117f601f89168262001073565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200122657808604811115620011fe57620011fd62001198565b5b60018516156200120e5780820291505b80810290506200121e85620011c7565b9450620011de565b94509492505050565b60008262001241576001905062001314565b8162001251576000905062001314565b81600181146200126a57600281146200127557620012ab565b600191505062001314565b60ff8411156200128a576200128962001198565b5b8360020a915084821115620012a457620012a362001198565b5b5062001314565b5060208310610133831016604e8410600b8410161715620012e55782820a905083811115620012df57620012de62001198565b5b62001314565b620012f48484846001620011d4565b925090508184048111156200130e576200130d62001198565b5b81810290505b9392505050565b600060ff82169050919050565b6000620013358262000f5d565b915062001342836200131b565b9250620013717fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200122f565b905092915050565b6000620013868262000f5d565b9150620013938362000f5d565b9250828202620013a38162000f5d565b91508282048414831517620013bd57620013bc62001198565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620013f682620013c9565b9050919050565b6200140881620013e9565b81146200141457600080fd5b50565b6000815190506200142881620013fd565b92915050565b600060208284031215620014475762001446620013c4565b5b6000620014578482850162001417565b91505092915050565b6200146b81620013e9565b82525050565b600060408201905062001488600083018562001460565b62001497602083018462001460565b9392505050565b620014a98162000f5d565b82525050565b6000602082019050620014c660008301846200149e565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620015088262000f5d565b9150620015158362000f5d565b925082620015285762001527620014cc565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000620015a260218362001533565b9150620015af8262001544565b604082019050919050565b60006020820190508181036000830152620015d58162001593565b9050919050565b6000620015e98262000f5d565b9150620015f68362000f5d565b925082820190508082111562001611576200161062001198565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006200164f601b8362001533565b91506200165c8262001617565b602082019050919050565b60006020820190508181036000830152620016828162001640565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620016c160208362001533565b9150620016ce8262001689565b602082019050919050565b60006020820190508181036000830152620016f481620016b2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006200175960268362001533565b91506200176682620016fb565b604082019050919050565b600060208201905081810360008301526200178c816200174a565b9050919050565b60005b83811015620017b357808201518184015260208101905062001796565b60008484015250505050565b6000601f19601f8301169050919050565b6000620017dd8262000e37565b620017e9818562001533565b9350620017fb81856020860162001793565b6200180681620017bf565b840191505092915050565b600060208201905081810360008301526200182d8184620017d0565b905092915050565b61577c80620018456000396000f3fe6080604052600436106103545760003560e01c8063728d41c9116101c6578063c16dd4a4116100f7578063dd62ed3e11610095578063f275f64b1161006f578063f275f64b14610c5b578063f2fde38b14610c84578063f872858a14610cad578063ffc0a03114610cd85761035b565b8063dd62ed3e14610bde578063e6b2603b14610c1b578063ee828db314610c325761035b565b8063c867d60b116100d1578063c867d60b14610b24578063cb917be614610b61578063cea9d26f14610b8a578063d2d7ad8314610bb35761035b565b8063c16dd4a414610aa7578063c49b9a8014610ad0578063c816841b14610af95761035b565b80638f32d59b11610164578063a457c2d71161013e578063a457c2d7146109db578063a9059cbb14610a18578063af9549e014610a55578063c0b4d19914610a7e5761035b565b80638f32d59b1461095a57806395d89b411461098557806398e944c8146109b05761035b565b80637d1db4a5116101a05780637d1db4a51461089c578063807c2d9c146108c75780638b42507f146108f25780638da5cb5b1461092f5761035b565b8063728d41c914610831578063751039fc1461085a57806375f0a874146108715761035b565b80633187c304116102a05780635342acb41161023e5780635e42358c116102185780635e42358c146107875780636902ca61146107b25780636e94312d146107c957806370a08231146107f45761035b565b80635342acb4146106e45780635881f3ef146107215780635c85974f1461075e5761035b565b80633b97084a1161027a5780633b97084a1461062a5780633ecad271146106535780634974d88f146106905780634a74bb02146106b95761035b565b80633187c3041461059957806338ec0b11146105c457806339509351146105ed5761035b565b80631d865c301161030d57806325519cf2116102e757806325519cf2146104ef57806327c8f835146105185780632b112e4914610543578063313ce5671461056e5761035b565b80631d865c301461047257806320365d5f1461049b57806323b872dd146104b25761035b565b806306fdde03146103605780630930907b1461038b578063095ea7b3146103b657806313ea1d89146103f35780631694505e1461041c57806318160ddd146104475761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610d01565b604051610382919061460e565b60405180910390f35b34801561039757600080fd5b506103a0610d93565b6040516103ad9190614671565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d891906146f3565b610d98565b6040516103ea919061474e565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190614795565b610db6565b005b34801561042857600080fd5b50610431610f38565b60405161043e9190614834565b60405180910390f35b34801561045357600080fd5b5061045c610f5e565b604051610469919061485e565b60405180910390f35b34801561047e57600080fd5b5061049960048036038101906104949190614879565b610f68565b005b3480156104a757600080fd5b506104b0611048565b005b3480156104be57600080fd5b506104d960048036038101906104d491906148cc565b61119d565b6040516104e6919061474e565b60405180910390f35b3480156104fb57600080fd5b5061051660048036038101906105119190614879565b611277565b005b34801561052457600080fd5b5061052d611357565b60405161053a9190614671565b60405180910390f35b34801561054f57600080fd5b5061055861135d565b604051610565919061485e565b60405180910390f35b34801561057a57600080fd5b5061058361139e565b604051610590919061493b565b60405180910390f35b3480156105a557600080fd5b506105ae6113b5565b6040516105bb919061474e565b60405180910390f35b3480156105d057600080fd5b506105eb60048036038101906105e69190614795565b6113c8565b005b3480156105f957600080fd5b50610614600480360381019061060f91906146f3565b61154a565b604051610621919061474e565b60405180910390f35b34801561063657600080fd5b50610651600480360381019061064c9190614956565b6115fd565b005b34801561065f57600080fd5b5061067a60048036038101906106759190614983565b61169c565b604051610687919061474e565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b291906149b0565b6116bc565b005b3480156106c557600080fd5b506106ce61176e565b6040516106db919061474e565b60405180910390f35b3480156106f057600080fd5b5061070b60048036038101906107069190614983565b611781565b604051610718919061474e565b60405180910390f35b34801561072d57600080fd5b5061074860048036038101906107439190614983565b6117a1565b6040516107559190614671565b60405180910390f35b34801561076a57600080fd5b5061078560048036038101906107809190614956565b611ca4565b005b34801561079357600080fd5b5061079c611d43565b6040516107a9919061474e565b60405180910390f35b3480156107be57600080fd5b506107c7611d56565b005b3480156107d557600080fd5b506107de611e23565b6040516107eb9190614671565b60405180910390f35b34801561080057600080fd5b5061081b60048036038101906108169190614983565b611e49565b604051610828919061485e565b60405180910390f35b34801561083d57600080fd5b5061085860048036038101906108539190614956565b611e92565b005b34801561086657600080fd5b5061086f611f31565b005b34801561087d57600080fd5b50610886611ffe565b6040516108939190614671565b60405180910390f35b3480156108a857600080fd5b506108b1612024565b6040516108be919061485e565b60405180910390f35b3480156108d357600080fd5b506108dc61202a565b6040516108e9919061485e565b60405180910390f35b3480156108fe57600080fd5b5061091960048036038101906109149190614983565b612030565b604051610926919061474e565b60405180910390f35b34801561093b57600080fd5b50610944612050565b6040516109519190614671565b60405180910390f35b34801561096657600080fd5b5061096f612079565b60405161097c919061474e565b60405180910390f35b34801561099157600080fd5b5061099a6120d0565b6040516109a7919061460e565b60405180910390f35b3480156109bc57600080fd5b506109c5612162565b6040516109d29190614671565b60405180910390f35b3480156109e757600080fd5b50610a0260048036038101906109fd91906146f3565b612188565b604051610a0f919061474e565b60405180910390f35b348015610a2457600080fd5b50610a3f6004803603810190610a3a91906146f3565b612255565b604051610a4c919061474e565b60405180910390f35b348015610a6157600080fd5b50610a7c6004803603810190610a779190614795565b612274565b005b348015610a8a57600080fd5b50610aa56004803603810190610aa09190614983565b6123f6565b005b348015610ab357600080fd5b50610ace6004803603810190610ac99190614795565b6124cf565b005b348015610adc57600080fd5b50610af76004803603810190610af291906149b0565b61261e565b005b348015610b0557600080fd5b50610b0e612702565b604051610b1b9190614671565b60405180910390f35b348015610b3057600080fd5b50610b4b6004803603810190610b469190614983565b612728565b604051610b58919061474e565b60405180910390f35b348015610b6d57600080fd5b50610b886004803603810190610b839190614983565b612748565b005b348015610b9657600080fd5b50610bb16004803603810190610bac9190614a1b565b612821565b005b348015610bbf57600080fd5b50610bc861293a565b604051610bd5919061485e565b60405180910390f35b348015610bea57600080fd5b50610c056004803603810190610c009190614a6e565b612940565b604051610c12919061485e565b60405180910390f35b348015610c2757600080fd5b50610c306129c7565b005b348015610c3e57600080fd5b50610c596004803603810190610c5491906149b0565b612b0b565b005b348015610c6757600080fd5b50610c826004803603810190610c7d91906149b0565b612bbd565b005b348015610c9057600080fd5b50610cab6004803603810190610ca69190614983565b612c6f565b005b348015610cb957600080fd5b50610cc2612e30565b604051610ccf919061474e565b60405180910390f35b348015610ce457600080fd5b50610cff6004803603810190610cfa9190614983565b612e43565b005b606060018054610d1090614add565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3c90614add565b8015610d895780601f10610d5e57610100808354040283529160200191610d89565b820191906000526020600020905b815481529060010190602001808311610d6c57829003601f168201915b5050505050905090565b600081565b6000610dac610da561303e565b8484613046565b6001905092915050565b610dbe61303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4290614b5a565b60405180910390fd5b801515600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed490614bc6565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b610f7061303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ffd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff490614b5a565b60405180910390fd5b82600f81905550816010819055508060118190555061103d60115461102f601054600f54612fe090919063ffffffff16565b612fe090919063ffffffff16565b601381905550505050565b61105061303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d490614b5a565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006111aa84848461320f565b5061126c846111b761303e565b611267856040518060600160405280602881526020016156fa60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061121d61303e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138c59092919063ffffffff16565b613046565b600190509392505050565b61127f61303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461130c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130390614b5a565b60405180910390fd5b82600c8190555081600d8190555080600e8190555061134c600e5461133e600d54600c54612fe090919063ffffffff16565b612fe090919063ffffffff16565b601281905550505050565b61dead81565b600061139961136c6000611e49565b61138b61137a61dead611e49565b60145461392990919063ffffffff16565b61392990919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b601860029054906101000a900460ff1681565b6113d061303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461145d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145490614b5a565b60405180910390fd5b801515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036114ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e690614bc6565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006115f361155761303e565b846115ee856007600061156861303e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fe090919063ffffffff16565b613046565b6001905092915050565b61160561303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168990614b5a565b60405180910390fd5b8060158190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b6116c461303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174890614b5a565b60405180910390fd5b80601860016101000a81548160ff02191690831515021790555050565b601960159054906101000a900460ff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b60006117ab61303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182f90614b5a565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611888573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ac9190614bfb565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611913573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119379190614bfb565b6040518363ffffffff1660e01b8152600401611954929190614c28565b602060405180830381865afa158015611971573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119959190614bfb565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b28578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3a9190614bfb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac59190614bfb565b6040518363ffffffff1660e01b8152600401611ae2929190614c28565b6020604051808303816000875af1158015611b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b259190614bfb565b91505b81601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611cac61303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3090614b5a565b60405180910390fd5b8060168190555050565b601860009054906101000a900460ff1681565b611d5e61303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de290614b5a565b60405180910390fd5b6001601860016101000a81548160ff0219169083151502179055506001601860006101000a81548160ff021916908315150217905550565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611e9a61303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1e90614b5a565b60405180910390fd5b8060178190555050565b611f3961303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbd90614b5a565b60405180910390fd5b6000601860016101000a81548160ff0219169083151502179055506000601860006101000a81548160ff021916908315150217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b60175481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6060600280546120df90614add565b80601f016020809104026020016040519081016040528092919081815260200182805461210b90614add565b80156121585780601f1061212d57610100808354040283529160200191612158565b820191906000526020600020905b81548152906001019060200180831161213b57829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061224b61219561303e565b846122468560405180606001604052806025815260200161572260259139600760006121bf61303e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138c59092919063ffffffff16565b613046565b6001905092915050565b600061226961226261303e565b848461320f565b506001905092915050565b61227c61303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230090614b5a565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361239b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239290614bc6565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6123fe61303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461248b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248290614b5a565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6124d761303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255b90614b5a565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561261a576001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146126ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a590614c9d565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516126f7919061474e565b60405180910390a150565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b61275061303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d490614b5a565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61282961303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ad90614b5a565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016128f1929190614cbd565b6020604051808303816000875af1158015612910573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129349190614cfb565b50505050565b60155481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6129cf61303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5390614b5a565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612a8290614d59565b60006040518083038185875af1925050503d8060008114612abf576040519150601f19603f3d011682016040523d82523d6000602084013e612ac4565b606091505b5050905080612b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aff90614dba565b60405180910390fd5b50565b612b1361303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9790614b5a565b60405180910390fd5b80601860006101000a81548160ff02191690831515021790555050565b612bc561303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4990614b5a565b60405180910390fd5b80601860026101000a81548160ff02191690831515021790555050565b612c7761303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cfb90614b5a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6a90614e4c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601860019054906101000a900460ff1681565b612e4b61303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ecf90614b5a565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808303612f2e5760009050612f90565b60008284612f3c9190614e9b565b9050828482612f4b9190614f0c565b14612f8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8290614faf565b60405180910390fd5b809150505b92915050565b6000612fd883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613973565b905092915050565b6000808284612fef9190614fcf565b905083811015613034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302b9061504f565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036130b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ac906150e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311b90615173565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051613202919061485e565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361327f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613276906151df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036132ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e59061524b565b60405180910390fd5b60008211613331576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613328906152b7565b60405180910390fd5b601860029054906101000a900460ff1661342657600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133e65750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161341c90615323565b60405180910390fd5b5b601960149054906101000a900460ff161561344d576134468484846139d6565b90506138be565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134f15750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135095750601860009054906101000a900460ff165b1561355457601654821115613553576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161354a9061538f565b60405180910390fd5b5b600061355f30611e49565b9050600060155482101590508080156135855750601960149054906101000a900460ff16155b80156135db5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135f35750601960159054906101000a900460ff165b1561360157613600613ba9565b5b61368a846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138c59092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006136d98787613e27565b6136ed576136e8878787613f92565b6136ef565b845b9050601860019054906101000a900460ff1680156137575750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137bc5760175461377a8261376c89611e49565b612fe090919063ffffffff16565b11156137bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137b2906153fb565b60405180910390fd5b5b61380e81600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fe090919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138ae919061485e565b60405180910390a3600193505050505b9392505050565b600083831115829061390d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613904919061460e565b60405180910390fd5b506000838561391c919061541b565b9050809150509392505050565b600061396b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506138c5565b905092915050565b600080831182906139ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139b1919061460e565b60405180910390fd5b50600083856139c99190614f0c565b9050809150509392505050565b6000613a61826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138c59092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613af682600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fe090919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613b96919061485e565b60405180910390a3600190509392505050565b6001601960146101000a81548160ff0219169083151502179055506000613bcf30611e49565b905060008103613bdf5750613e0a565b6000613bf8600f54600c54612fe090919063ffffffff16565b90506000613c13601054600d54612fe090919063ffffffff16565b90506000613c2e601354601254612fe090919063ffffffff16565b905060008103613c415750505050613e0a565b6000613c7b6002613c6d84613c5f888a612f1c90919063ffffffff16565b612f9690919063ffffffff16565b612f9690919063ffffffff16565b90506000613c92828761392990919063ffffffff16565b90506000479050613ca2826141b7565b6000613cb7824761392990919063ffffffff16565b90506000613ce1613cd260028a612f9690919063ffffffff16565b8761392990919063ffffffff16565b90506000613d1d6002613d0f84613d018d88612f1c90919063ffffffff16565b612f9690919063ffffffff16565b612f9690919063ffffffff16565b90506000613d4683613d388b87612f1c90919063ffffffff16565b612f9690919063ffffffff16565b90506000613d6f82613d61858861392990919063ffffffff16565b61392990919063ffffffff16565b90506000821115613da757613da6600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683614433565b5b6000811115613ddd57613ddc600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682614433565b5b600083118015613ded5750600088115b15613dfd57613dfc888461447e565b5b5050505050505050505050505b6000601960146101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613eca5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613ed85760019050613f8c565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613f795750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613f875760009050613f8c565b600090505b92915050565b600080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614017576140106103e861400260125486612f1c90919063ffffffff16565b612f9690919063ffffffff16565b9050614096565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614095576140926103e861408460135486612f1c90919063ffffffff16565b612f9690919063ffffffff16565b90505b5b600081111561419a576140f181600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fe090919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051614191919061485e565b60405180910390a35b6141ad818461392990919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff8111156141d4576141d361544f565b5b6040519080825280602002602001820160405280156142025781602001602082028036833780820191505090505b509050308160008151811061421a5761421961547e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156142c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142e59190614bfb565b816001815181106142f9576142f861547e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061436030601860039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613046565b601860039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016143c49594939291906155a6565b600060405180830381600087803b1580156143de57600080fd5b505af11580156143f2573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051614427929190615600565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614479573d6000803e3d6000fd5b505050565b6144ab30601860039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613046565b601860039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161453496959493929190615630565b60606040518083038185885af1158015614552573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061457791906156a6565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156145b857808201518184015260208101905061459d565b60008484015250505050565b6000601f19601f8301169050919050565b60006145e08261457e565b6145ea8185614589565b93506145fa81856020860161459a565b614603816145c4565b840191505092915050565b6000602082019050818103600083015261462881846145d5565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061465b82614630565b9050919050565b61466b81614650565b82525050565b60006020820190506146866000830184614662565b92915050565b600080fd5b61469a81614650565b81146146a557600080fd5b50565b6000813590506146b781614691565b92915050565b6000819050919050565b6146d0816146bd565b81146146db57600080fd5b50565b6000813590506146ed816146c7565b92915050565b6000806040838503121561470a5761470961468c565b5b6000614718858286016146a8565b9250506020614729858286016146de565b9150509250929050565b60008115159050919050565b61474881614733565b82525050565b6000602082019050614763600083018461473f565b92915050565b61477281614733565b811461477d57600080fd5b50565b60008135905061478f81614769565b92915050565b600080604083850312156147ac576147ab61468c565b5b60006147ba858286016146a8565b92505060206147cb85828601614780565b9150509250929050565b6000819050919050565b60006147fa6147f56147f084614630565b6147d5565b614630565b9050919050565b600061480c826147df565b9050919050565b600061481e82614801565b9050919050565b61482e81614813565b82525050565b60006020820190506148496000830184614825565b92915050565b614858816146bd565b82525050565b6000602082019050614873600083018461484f565b92915050565b6000806000606084860312156148925761489161468c565b5b60006148a0868287016146de565b93505060206148b1868287016146de565b92505060406148c2868287016146de565b9150509250925092565b6000806000606084860312156148e5576148e461468c565b5b60006148f3868287016146a8565b9350506020614904868287016146a8565b9250506040614915868287016146de565b9150509250925092565b600060ff82169050919050565b6149358161491f565b82525050565b6000602082019050614950600083018461492c565b92915050565b60006020828403121561496c5761496b61468c565b5b600061497a848285016146de565b91505092915050565b6000602082840312156149995761499861468c565b5b60006149a7848285016146a8565b91505092915050565b6000602082840312156149c6576149c561468c565b5b60006149d484828501614780565b91505092915050565b60006149e882614650565b9050919050565b6149f8816149dd565b8114614a0357600080fd5b50565b600081359050614a15816149ef565b92915050565b600080600060608486031215614a3457614a3361468c565b5b6000614a4286828701614a06565b9350506020614a53868287016146a8565b9250506040614a64868287016146de565b9150509250925092565b60008060408385031215614a8557614a8461468c565b5b6000614a93858286016146a8565b9250506020614aa4858286016146a8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614af557607f821691505b602082108103614b0857614b07614aae565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b44602083614589565b9150614b4f82614b0e565b602082019050919050565b60006020820190508181036000830152614b7381614b37565b9050919050565b7f4e6f74204368616e676564212100000000000000000000000000000000000000600082015250565b6000614bb0600d83614589565b9150614bbb82614b7a565b602082019050919050565b60006020820190508181036000830152614bdf81614ba3565b9050919050565b600081519050614bf581614691565b92915050565b600060208284031215614c1157614c1061468c565b5b6000614c1f84828501614be6565b91505092915050565b6000604082019050614c3d6000830185614662565b614c4a6020830184614662565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865204465760000600082015250565b6000614c87601e83614589565b9150614c9282614c51565b602082019050919050565b60006020820190508181036000830152614cb681614c7a565b9050919050565b6000604082019050614cd26000830185614662565b614cdf602083018461484f565b9392505050565b600081519050614cf581614769565b92915050565b600060208284031215614d1157614d1061468c565b5b6000614d1f84828501614ce6565b91505092915050565b600081905092915050565b50565b6000614d43600083614d28565b9150614d4e82614d33565b600082019050919050565b6000614d6482614d36565b9150819050919050565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b6000614da4601483614589565b9150614daf82614d6e565b602082019050919050565b60006020820190508181036000830152614dd381614d97565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614e36602683614589565b9150614e4182614dda565b604082019050919050565b60006020820190508181036000830152614e6581614e29565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614ea6826146bd565b9150614eb1836146bd565b9250828202614ebf816146bd565b91508282048414831517614ed657614ed5614e6c565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614f17826146bd565b9150614f22836146bd565b925082614f3257614f31614edd565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614f99602183614589565b9150614fa482614f3d565b604082019050919050565b60006020820190508181036000830152614fc881614f8c565b9050919050565b6000614fda826146bd565b9150614fe5836146bd565b9250828201905080821115614ffd57614ffc614e6c565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615039601b83614589565b915061504482615003565b602082019050919050565b600060208201905081810360008301526150688161502c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006150cb602483614589565b91506150d68261506f565b604082019050919050565b600060208201905081810360008301526150fa816150be565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061515d602283614589565b915061516882615101565b604082019050919050565b6000602082019050818103600083015261518c81615150565b9050919050565b7f45524332303a66726f6d207a65726f0000000000000000000000000000000000600082015250565b60006151c9600f83614589565b91506151d482615193565b602082019050919050565b600060208201905081810360008301526151f8816151bc565b9050919050565b7f45524332303a746f207a65726f00000000000000000000000000000000000000600082015250565b6000615235600d83614589565b9150615240826151ff565b602082019050919050565b6000602082019050818103600083015261526481615228565b9050919050565b7f496e76616c696420416d6f756e74000000000000000000000000000000000000600082015250565b60006152a1600e83614589565b91506152ac8261526b565b602082019050919050565b600060208201905081810360008301526152d081615294565b9050919050565b7f54726164696e6720697320506175736564210000000000000000000000000000600082015250565b600061530d601283614589565b9150615318826152d7565b602082019050919050565b6000602082019050818103600083015261533c81615300565b9050919050565b7f4d61782054780000000000000000000000000000000000000000000000000000600082015250565b6000615379600683614589565b915061538482615343565b602082019050919050565b600060208201905081810360008301526153a88161536c565b9050919050565b7f4d61782057616c6c657400000000000000000000000000000000000000000000600082015250565b60006153e5600a83614589565b91506153f0826153af565b602082019050919050565b60006020820190508181036000830152615414816153d8565b9050919050565b6000615426826146bd565b9150615431836146bd565b925082820390508181111561544957615448614e6c565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006154d26154cd6154c8846154ad565b6147d5565b6146bd565b9050919050565b6154e2816154b7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61551d81614650565b82525050565b600061552f8383615514565b60208301905092915050565b6000602082019050919050565b6000615553826154e8565b61555d81856154f3565b935061556883615504565b8060005b838110156155995781516155808882615523565b975061558b8361553b565b92505060018101905061556c565b5085935050505092915050565b600060a0820190506155bb600083018861484f565b6155c860208301876154d9565b81810360408301526155da8186615548565b90506155e96060830185614662565b6155f6608083018461484f565b9695505050505050565b6000604082019050615615600083018561484f565b81810360208301526156278184615548565b90509392505050565b600060c0820190506156456000830189614662565b615652602083018861484f565b61565f60408301876154d9565b61566c60608301866154d9565b6156796080830185614662565b61568660a083018461484f565b979650505050505050565b6000815190506156a0816146c7565b92915050565b6000806000606084860312156156bf576156be61468c565b5b60006156cd86828701615691565b93505060206156de86828701615691565b92505060406156ef86828701615691565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d2efdb124604be30ce9bacf46d430b0ecab509d396e4ca65cc5dd4147b8c49e264736f6c63430008120033

Deployed Bytecode

0x6080604052600436106103545760003560e01c8063728d41c9116101c6578063c16dd4a4116100f7578063dd62ed3e11610095578063f275f64b1161006f578063f275f64b14610c5b578063f2fde38b14610c84578063f872858a14610cad578063ffc0a03114610cd85761035b565b8063dd62ed3e14610bde578063e6b2603b14610c1b578063ee828db314610c325761035b565b8063c867d60b116100d1578063c867d60b14610b24578063cb917be614610b61578063cea9d26f14610b8a578063d2d7ad8314610bb35761035b565b8063c16dd4a414610aa7578063c49b9a8014610ad0578063c816841b14610af95761035b565b80638f32d59b11610164578063a457c2d71161013e578063a457c2d7146109db578063a9059cbb14610a18578063af9549e014610a55578063c0b4d19914610a7e5761035b565b80638f32d59b1461095a57806395d89b411461098557806398e944c8146109b05761035b565b80637d1db4a5116101a05780637d1db4a51461089c578063807c2d9c146108c75780638b42507f146108f25780638da5cb5b1461092f5761035b565b8063728d41c914610831578063751039fc1461085a57806375f0a874146108715761035b565b80633187c304116102a05780635342acb41161023e5780635e42358c116102185780635e42358c146107875780636902ca61146107b25780636e94312d146107c957806370a08231146107f45761035b565b80635342acb4146106e45780635881f3ef146107215780635c85974f1461075e5761035b565b80633b97084a1161027a5780633b97084a1461062a5780633ecad271146106535780634974d88f146106905780634a74bb02146106b95761035b565b80633187c3041461059957806338ec0b11146105c457806339509351146105ed5761035b565b80631d865c301161030d57806325519cf2116102e757806325519cf2146104ef57806327c8f835146105185780632b112e4914610543578063313ce5671461056e5761035b565b80631d865c301461047257806320365d5f1461049b57806323b872dd146104b25761035b565b806306fdde03146103605780630930907b1461038b578063095ea7b3146103b657806313ea1d89146103f35780631694505e1461041c57806318160ddd146104475761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610d01565b604051610382919061460e565b60405180910390f35b34801561039757600080fd5b506103a0610d93565b6040516103ad9190614671565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d891906146f3565b610d98565b6040516103ea919061474e565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190614795565b610db6565b005b34801561042857600080fd5b50610431610f38565b60405161043e9190614834565b60405180910390f35b34801561045357600080fd5b5061045c610f5e565b604051610469919061485e565b60405180910390f35b34801561047e57600080fd5b5061049960048036038101906104949190614879565b610f68565b005b3480156104a757600080fd5b506104b0611048565b005b3480156104be57600080fd5b506104d960048036038101906104d491906148cc565b61119d565b6040516104e6919061474e565b60405180910390f35b3480156104fb57600080fd5b5061051660048036038101906105119190614879565b611277565b005b34801561052457600080fd5b5061052d611357565b60405161053a9190614671565b60405180910390f35b34801561054f57600080fd5b5061055861135d565b604051610565919061485e565b60405180910390f35b34801561057a57600080fd5b5061058361139e565b604051610590919061493b565b60405180910390f35b3480156105a557600080fd5b506105ae6113b5565b6040516105bb919061474e565b60405180910390f35b3480156105d057600080fd5b506105eb60048036038101906105e69190614795565b6113c8565b005b3480156105f957600080fd5b50610614600480360381019061060f91906146f3565b61154a565b604051610621919061474e565b60405180910390f35b34801561063657600080fd5b50610651600480360381019061064c9190614956565b6115fd565b005b34801561065f57600080fd5b5061067a60048036038101906106759190614983565b61169c565b604051610687919061474e565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b291906149b0565b6116bc565b005b3480156106c557600080fd5b506106ce61176e565b6040516106db919061474e565b60405180910390f35b3480156106f057600080fd5b5061070b60048036038101906107069190614983565b611781565b604051610718919061474e565b60405180910390f35b34801561072d57600080fd5b5061074860048036038101906107439190614983565b6117a1565b6040516107559190614671565b60405180910390f35b34801561076a57600080fd5b5061078560048036038101906107809190614956565b611ca4565b005b34801561079357600080fd5b5061079c611d43565b6040516107a9919061474e565b60405180910390f35b3480156107be57600080fd5b506107c7611d56565b005b3480156107d557600080fd5b506107de611e23565b6040516107eb9190614671565b60405180910390f35b34801561080057600080fd5b5061081b60048036038101906108169190614983565b611e49565b604051610828919061485e565b60405180910390f35b34801561083d57600080fd5b5061085860048036038101906108539190614956565b611e92565b005b34801561086657600080fd5b5061086f611f31565b005b34801561087d57600080fd5b50610886611ffe565b6040516108939190614671565b60405180910390f35b3480156108a857600080fd5b506108b1612024565b6040516108be919061485e565b60405180910390f35b3480156108d357600080fd5b506108dc61202a565b6040516108e9919061485e565b60405180910390f35b3480156108fe57600080fd5b5061091960048036038101906109149190614983565b612030565b604051610926919061474e565b60405180910390f35b34801561093b57600080fd5b50610944612050565b6040516109519190614671565b60405180910390f35b34801561096657600080fd5b5061096f612079565b60405161097c919061474e565b60405180910390f35b34801561099157600080fd5b5061099a6120d0565b6040516109a7919061460e565b60405180910390f35b3480156109bc57600080fd5b506109c5612162565b6040516109d29190614671565b60405180910390f35b3480156109e757600080fd5b50610a0260048036038101906109fd91906146f3565b612188565b604051610a0f919061474e565b60405180910390f35b348015610a2457600080fd5b50610a3f6004803603810190610a3a91906146f3565b612255565b604051610a4c919061474e565b60405180910390f35b348015610a6157600080fd5b50610a7c6004803603810190610a779190614795565b612274565b005b348015610a8a57600080fd5b50610aa56004803603810190610aa09190614983565b6123f6565b005b348015610ab357600080fd5b50610ace6004803603810190610ac99190614795565b6124cf565b005b348015610adc57600080fd5b50610af76004803603810190610af291906149b0565b61261e565b005b348015610b0557600080fd5b50610b0e612702565b604051610b1b9190614671565b60405180910390f35b348015610b3057600080fd5b50610b4b6004803603810190610b469190614983565b612728565b604051610b58919061474e565b60405180910390f35b348015610b6d57600080fd5b50610b886004803603810190610b839190614983565b612748565b005b348015610b9657600080fd5b50610bb16004803603810190610bac9190614a1b565b612821565b005b348015610bbf57600080fd5b50610bc861293a565b604051610bd5919061485e565b60405180910390f35b348015610bea57600080fd5b50610c056004803603810190610c009190614a6e565b612940565b604051610c12919061485e565b60405180910390f35b348015610c2757600080fd5b50610c306129c7565b005b348015610c3e57600080fd5b50610c596004803603810190610c5491906149b0565b612b0b565b005b348015610c6757600080fd5b50610c826004803603810190610c7d91906149b0565b612bbd565b005b348015610c9057600080fd5b50610cab6004803603810190610ca69190614983565b612c6f565b005b348015610cb957600080fd5b50610cc2612e30565b604051610ccf919061474e565b60405180910390f35b348015610ce457600080fd5b50610cff6004803603810190610cfa9190614983565b612e43565b005b606060018054610d1090614add565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3c90614add565b8015610d895780601f10610d5e57610100808354040283529160200191610d89565b820191906000526020600020905b815481529060010190602001808311610d6c57829003601f168201915b5050505050905090565b600081565b6000610dac610da561303e565b8484613046565b6001905092915050565b610dbe61303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4290614b5a565b60405180910390fd5b801515600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed490614bc6565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b610f7061303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ffd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff490614b5a565b60405180910390fd5b82600f81905550816010819055508060118190555061103d60115461102f601054600f54612fe090919063ffffffff16565b612fe090919063ffffffff16565b601381905550505050565b61105061303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d490614b5a565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006111aa84848461320f565b5061126c846111b761303e565b611267856040518060600160405280602881526020016156fa60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061121d61303e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138c59092919063ffffffff16565b613046565b600190509392505050565b61127f61303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461130c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130390614b5a565b60405180910390fd5b82600c8190555081600d8190555080600e8190555061134c600e5461133e600d54600c54612fe090919063ffffffff16565b612fe090919063ffffffff16565b601281905550505050565b61dead81565b600061139961136c6000611e49565b61138b61137a61dead611e49565b60145461392990919063ffffffff16565b61392990919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b601860029054906101000a900460ff1681565b6113d061303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461145d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145490614b5a565b60405180910390fd5b801515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036114ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e690614bc6565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006115f361155761303e565b846115ee856007600061156861303e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fe090919063ffffffff16565b613046565b6001905092915050565b61160561303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168990614b5a565b60405180910390fd5b8060158190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b6116c461303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174890614b5a565b60405180910390fd5b80601860016101000a81548160ff02191690831515021790555050565b601960159054906101000a900460ff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b60006117ab61303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182f90614b5a565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611888573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ac9190614bfb565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611913573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119379190614bfb565b6040518363ffffffff1660e01b8152600401611954929190614c28565b602060405180830381865afa158015611971573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119959190614bfb565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b28578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3a9190614bfb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac59190614bfb565b6040518363ffffffff1660e01b8152600401611ae2929190614c28565b6020604051808303816000875af1158015611b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b259190614bfb565b91505b81601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611cac61303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3090614b5a565b60405180910390fd5b8060168190555050565b601860009054906101000a900460ff1681565b611d5e61303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de290614b5a565b60405180910390fd5b6001601860016101000a81548160ff0219169083151502179055506001601860006101000a81548160ff021916908315150217905550565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611e9a61303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1e90614b5a565b60405180910390fd5b8060178190555050565b611f3961303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbd90614b5a565b60405180910390fd5b6000601860016101000a81548160ff0219169083151502179055506000601860006101000a81548160ff021916908315150217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b60175481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6060600280546120df90614add565b80601f016020809104026020016040519081016040528092919081815260200182805461210b90614add565b80156121585780601f1061212d57610100808354040283529160200191612158565b820191906000526020600020905b81548152906001019060200180831161213b57829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061224b61219561303e565b846122468560405180606001604052806025815260200161572260259139600760006121bf61303e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138c59092919063ffffffff16565b613046565b6001905092915050565b600061226961226261303e565b848461320f565b506001905092915050565b61227c61303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230090614b5a565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361239b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239290614bc6565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6123fe61303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461248b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248290614b5a565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6124d761303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255b90614b5a565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561261a576001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146126ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a590614c9d565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516126f7919061474e565b60405180910390a150565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b61275061303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d490614b5a565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61282961303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ad90614b5a565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016128f1929190614cbd565b6020604051808303816000875af1158015612910573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129349190614cfb565b50505050565b60155481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6129cf61303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5390614b5a565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612a8290614d59565b60006040518083038185875af1925050503d8060008114612abf576040519150601f19603f3d011682016040523d82523d6000602084013e612ac4565b606091505b5050905080612b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aff90614dba565b60405180910390fd5b50565b612b1361303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9790614b5a565b60405180910390fd5b80601860006101000a81548160ff02191690831515021790555050565b612bc561303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4990614b5a565b60405180910390fd5b80601860026101000a81548160ff02191690831515021790555050565b612c7761303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cfb90614b5a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6a90614e4c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601860019054906101000a900460ff1681565b612e4b61303e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ecf90614b5a565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808303612f2e5760009050612f90565b60008284612f3c9190614e9b565b9050828482612f4b9190614f0c565b14612f8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8290614faf565b60405180910390fd5b809150505b92915050565b6000612fd883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613973565b905092915050565b6000808284612fef9190614fcf565b905083811015613034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302b9061504f565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036130b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ac906150e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311b90615173565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051613202919061485e565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361327f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613276906151df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036132ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e59061524b565b60405180910390fd5b60008211613331576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613328906152b7565b60405180910390fd5b601860029054906101000a900460ff1661342657600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133e65750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161341c90615323565b60405180910390fd5b5b601960149054906101000a900460ff161561344d576134468484846139d6565b90506138be565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134f15750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135095750601860009054906101000a900460ff165b1561355457601654821115613553576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161354a9061538f565b60405180910390fd5b5b600061355f30611e49565b9050600060155482101590508080156135855750601960149054906101000a900460ff16155b80156135db5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135f35750601960159054906101000a900460ff165b1561360157613600613ba9565b5b61368a846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138c59092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006136d98787613e27565b6136ed576136e8878787613f92565b6136ef565b845b9050601860019054906101000a900460ff1680156137575750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137bc5760175461377a8261376c89611e49565b612fe090919063ffffffff16565b11156137bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137b2906153fb565b60405180910390fd5b5b61380e81600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fe090919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138ae919061485e565b60405180910390a3600193505050505b9392505050565b600083831115829061390d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613904919061460e565b60405180910390fd5b506000838561391c919061541b565b9050809150509392505050565b600061396b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506138c5565b905092915050565b600080831182906139ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139b1919061460e565b60405180910390fd5b50600083856139c99190614f0c565b9050809150509392505050565b6000613a61826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138c59092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613af682600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fe090919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613b96919061485e565b60405180910390a3600190509392505050565b6001601960146101000a81548160ff0219169083151502179055506000613bcf30611e49565b905060008103613bdf5750613e0a565b6000613bf8600f54600c54612fe090919063ffffffff16565b90506000613c13601054600d54612fe090919063ffffffff16565b90506000613c2e601354601254612fe090919063ffffffff16565b905060008103613c415750505050613e0a565b6000613c7b6002613c6d84613c5f888a612f1c90919063ffffffff16565b612f9690919063ffffffff16565b612f9690919063ffffffff16565b90506000613c92828761392990919063ffffffff16565b90506000479050613ca2826141b7565b6000613cb7824761392990919063ffffffff16565b90506000613ce1613cd260028a612f9690919063ffffffff16565b8761392990919063ffffffff16565b90506000613d1d6002613d0f84613d018d88612f1c90919063ffffffff16565b612f9690919063ffffffff16565b612f9690919063ffffffff16565b90506000613d4683613d388b87612f1c90919063ffffffff16565b612f9690919063ffffffff16565b90506000613d6f82613d61858861392990919063ffffffff16565b61392990919063ffffffff16565b90506000821115613da757613da6600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683614433565b5b6000811115613ddd57613ddc600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682614433565b5b600083118015613ded5750600088115b15613dfd57613dfc888461447e565b5b5050505050505050505050505b6000601960146101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613eca5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613ed85760019050613f8c565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613f795750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613f875760009050613f8c565b600090505b92915050565b600080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614017576140106103e861400260125486612f1c90919063ffffffff16565b612f9690919063ffffffff16565b9050614096565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614095576140926103e861408460135486612f1c90919063ffffffff16565b612f9690919063ffffffff16565b90505b5b600081111561419a576140f181600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fe090919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051614191919061485e565b60405180910390a35b6141ad818461392990919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff8111156141d4576141d361544f565b5b6040519080825280602002602001820160405280156142025781602001602082028036833780820191505090505b509050308160008151811061421a5761421961547e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156142c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142e59190614bfb565b816001815181106142f9576142f861547e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061436030601860039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613046565b601860039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016143c49594939291906155a6565b600060405180830381600087803b1580156143de57600080fd5b505af11580156143f2573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051614427929190615600565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614479573d6000803e3d6000fd5b505050565b6144ab30601860039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613046565b601860039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161453496959493929190615630565b60606040518083038185885af1158015614552573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061457791906156a6565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156145b857808201518184015260208101905061459d565b60008484015250505050565b6000601f19601f8301169050919050565b60006145e08261457e565b6145ea8185614589565b93506145fa81856020860161459a565b614603816145c4565b840191505092915050565b6000602082019050818103600083015261462881846145d5565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061465b82614630565b9050919050565b61466b81614650565b82525050565b60006020820190506146866000830184614662565b92915050565b600080fd5b61469a81614650565b81146146a557600080fd5b50565b6000813590506146b781614691565b92915050565b6000819050919050565b6146d0816146bd565b81146146db57600080fd5b50565b6000813590506146ed816146c7565b92915050565b6000806040838503121561470a5761470961468c565b5b6000614718858286016146a8565b9250506020614729858286016146de565b9150509250929050565b60008115159050919050565b61474881614733565b82525050565b6000602082019050614763600083018461473f565b92915050565b61477281614733565b811461477d57600080fd5b50565b60008135905061478f81614769565b92915050565b600080604083850312156147ac576147ab61468c565b5b60006147ba858286016146a8565b92505060206147cb85828601614780565b9150509250929050565b6000819050919050565b60006147fa6147f56147f084614630565b6147d5565b614630565b9050919050565b600061480c826147df565b9050919050565b600061481e82614801565b9050919050565b61482e81614813565b82525050565b60006020820190506148496000830184614825565b92915050565b614858816146bd565b82525050565b6000602082019050614873600083018461484f565b92915050565b6000806000606084860312156148925761489161468c565b5b60006148a0868287016146de565b93505060206148b1868287016146de565b92505060406148c2868287016146de565b9150509250925092565b6000806000606084860312156148e5576148e461468c565b5b60006148f3868287016146a8565b9350506020614904868287016146a8565b9250506040614915868287016146de565b9150509250925092565b600060ff82169050919050565b6149358161491f565b82525050565b6000602082019050614950600083018461492c565b92915050565b60006020828403121561496c5761496b61468c565b5b600061497a848285016146de565b91505092915050565b6000602082840312156149995761499861468c565b5b60006149a7848285016146a8565b91505092915050565b6000602082840312156149c6576149c561468c565b5b60006149d484828501614780565b91505092915050565b60006149e882614650565b9050919050565b6149f8816149dd565b8114614a0357600080fd5b50565b600081359050614a15816149ef565b92915050565b600080600060608486031215614a3457614a3361468c565b5b6000614a4286828701614a06565b9350506020614a53868287016146a8565b9250506040614a64868287016146de565b9150509250925092565b60008060408385031215614a8557614a8461468c565b5b6000614a93858286016146a8565b9250506020614aa4858286016146a8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614af557607f821691505b602082108103614b0857614b07614aae565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b44602083614589565b9150614b4f82614b0e565b602082019050919050565b60006020820190508181036000830152614b7381614b37565b9050919050565b7f4e6f74204368616e676564212100000000000000000000000000000000000000600082015250565b6000614bb0600d83614589565b9150614bbb82614b7a565b602082019050919050565b60006020820190508181036000830152614bdf81614ba3565b9050919050565b600081519050614bf581614691565b92915050565b600060208284031215614c1157614c1061468c565b5b6000614c1f84828501614be6565b91505092915050565b6000604082019050614c3d6000830185614662565b614c4a6020830184614662565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865204465760000600082015250565b6000614c87601e83614589565b9150614c9282614c51565b602082019050919050565b60006020820190508181036000830152614cb681614c7a565b9050919050565b6000604082019050614cd26000830185614662565b614cdf602083018461484f565b9392505050565b600081519050614cf581614769565b92915050565b600060208284031215614d1157614d1061468c565b5b6000614d1f84828501614ce6565b91505092915050565b600081905092915050565b50565b6000614d43600083614d28565b9150614d4e82614d33565b600082019050919050565b6000614d6482614d36565b9150819050919050565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b6000614da4601483614589565b9150614daf82614d6e565b602082019050919050565b60006020820190508181036000830152614dd381614d97565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614e36602683614589565b9150614e4182614dda565b604082019050919050565b60006020820190508181036000830152614e6581614e29565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614ea6826146bd565b9150614eb1836146bd565b9250828202614ebf816146bd565b91508282048414831517614ed657614ed5614e6c565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614f17826146bd565b9150614f22836146bd565b925082614f3257614f31614edd565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614f99602183614589565b9150614fa482614f3d565b604082019050919050565b60006020820190508181036000830152614fc881614f8c565b9050919050565b6000614fda826146bd565b9150614fe5836146bd565b9250828201905080821115614ffd57614ffc614e6c565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615039601b83614589565b915061504482615003565b602082019050919050565b600060208201905081810360008301526150688161502c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006150cb602483614589565b91506150d68261506f565b604082019050919050565b600060208201905081810360008301526150fa816150be565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061515d602283614589565b915061516882615101565b604082019050919050565b6000602082019050818103600083015261518c81615150565b9050919050565b7f45524332303a66726f6d207a65726f0000000000000000000000000000000000600082015250565b60006151c9600f83614589565b91506151d482615193565b602082019050919050565b600060208201905081810360008301526151f8816151bc565b9050919050565b7f45524332303a746f207a65726f00000000000000000000000000000000000000600082015250565b6000615235600d83614589565b9150615240826151ff565b602082019050919050565b6000602082019050818103600083015261526481615228565b9050919050565b7f496e76616c696420416d6f756e74000000000000000000000000000000000000600082015250565b60006152a1600e83614589565b91506152ac8261526b565b602082019050919050565b600060208201905081810360008301526152d081615294565b9050919050565b7f54726164696e6720697320506175736564210000000000000000000000000000600082015250565b600061530d601283614589565b9150615318826152d7565b602082019050919050565b6000602082019050818103600083015261533c81615300565b9050919050565b7f4d61782054780000000000000000000000000000000000000000000000000000600082015250565b6000615379600683614589565b915061538482615343565b602082019050919050565b600060208201905081810360008301526153a88161536c565b9050919050565b7f4d61782057616c6c657400000000000000000000000000000000000000000000600082015250565b60006153e5600a83614589565b91506153f0826153af565b602082019050919050565b60006020820190508181036000830152615414816153d8565b9050919050565b6000615426826146bd565b9150615431836146bd565b925082820390508181111561544957615448614e6c565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006154d26154cd6154c8846154ad565b6147d5565b6146bd565b9050919050565b6154e2816154b7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61551d81614650565b82525050565b600061552f8383615514565b60208301905092915050565b6000602082019050919050565b6000615553826154e8565b61555d81856154f3565b935061556883615504565b8060005b838110156155995781516155808882615523565b975061558b8361553b565b92505060018101905061556c565b5085935050505092915050565b600060a0820190506155bb600083018861484f565b6155c860208301876154d9565b81810360408301526155da8186615548565b90506155e96060830185614662565b6155f6608083018461484f565b9695505050505050565b6000604082019050615615600083018561484f565b81810360208301526156278184615548565b90509392505050565b600060c0820190506156456000830189614662565b615652602083018861484f565b61565f60408301876154d9565b61566c60608301866154d9565b6156796080830185614662565b61568660a083018461484f565b979650505050505050565b6000815190506156a0816146c7565b92915050565b6000806000606084860312156156bf576156be61468c565b5b60006156cd86828701615691565b93505060206156de86828701615691565b92505060406156ef86828701615691565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d2efdb124604be30ce9bacf46d430b0ecab509d396e4ca65cc5dd4147b8c49e264736f6c63430008120033

Deployed Bytecode Sourcemap

4664:16282:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8387:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5170:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9557:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19184:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6358:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8664:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18094:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3167:231;;;;;;;;;;;;;:::i;:::-;;10508:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17800:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5083:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10075:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8573:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6318:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18976:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9054:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19380:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5447:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17434:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6473:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5390:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20132:809;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19626:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6237:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17673:119;;;;;;;;;;;;;:::i;:::-;;4962:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8772:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19512:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17547:118;;;;;;;;;;;;;:::i;:::-;;4880:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6071:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6155:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5558:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2842:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3067:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8478:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5042:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9280:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10333:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18773:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18399:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19914:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19735:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6406:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5499:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18650:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17084:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5999:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8903:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16866:178;;;;;;;;;;;;;:::i;:::-;;17328:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17224:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3406:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6276:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18522:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8387:83;8424:13;8457:5;8450:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8387:83;:::o;5170:80::-;5208:42;5170:80;:::o;9557:161::-;9632:4;9649:39;9658:12;:10;:12::i;:::-;9672:7;9681:6;9649:8;:39::i;:::-;9706:4;9699:11;;9557:161;;;;:::o;19184:188::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19298:7:::1;19273:32;;:15;:21;19289:4;19273:21;;;;;;;;;;;;;;;;;;;;;;;;;:32;;::::0;19265:57:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19357:7;19333:15;:21;19349:4;19333:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;19184:188:::0;;:::o;6358:41::-;;;;;;;;;;;;;:::o;8664:100::-;8717:7;8744:12;;8737:19;;8664:100;:::o;18094:297::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18217:6:::1;18197:17;:26;;;;18254:10;18234:17;:30;;;;18293:6;18275:15;:24;;;;18322:61;18367:15;;18322:40;18344:17;;18322;;:21;;:40;;;;:::i;:::-;:44;;:61;;;;:::i;:::-;18310:9;:73;;;;18094:297:::0;;;:::o;3167:231::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3275:42:::1;3238:81;;3259:6;::::0;::::1;;;;;;;;3238:81;;;;;;;;;;;;3347:42;3330:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;3167:231::o:0;10508:313::-;10606:4;10623:36;10633:6;10641:9;10652:6;10623:9;:36::i;:::-;;10670:121;10679:6;10687:12;:10;:12::i;:::-;10701:89;10739:6;10701:89;;;;;;;;;;;;;;;;;:11;:19;10713:6;10701:19;;;;;;;;;;;;;;;:33;10721:12;:10;:12::i;:::-;10701:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10670:8;:121::i;:::-;10809:4;10802:11;;10508:313;;;;;:::o;17800:286::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17918:6:::1;17899:16;:25;;;;17954:10;17935:16;:29;;;;17992:6;17975:14;:23;;;;18020:58;18063:14;;18020:38;18041:16;;18020;;:20;;:38;;;;:::i;:::-;:42;;:58;;;;:::i;:::-;18009:8;:69;;;;17800:286:::0;;;:::o;5083:80::-;5121:42;5083:80;:::o;10075:156::-;10128:7;10155:68;10200:22;5208:42;10200:9;:22::i;:::-;10155:40;10172:22;5121:42;10172:9;:22::i;:::-;10155:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;10148:75;;10075:156;:::o;8573:83::-;8614:5;8639:9;;;;;;;;;;;8632:16;;8573:83;:::o;6318:31::-;;;;;;;;;;;;;:::o;18976:200::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19098:7:::1;19069:36;;:19;:25;19089:4;19069:25;;;;;;;;;;;;;;;;;;;;;;;;;:36;;::::0;19061:61:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19161:7;19133:19;:25;19153:4;19133:25;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;18976:200:::0;;:::o;9054:218::-;9142:4;9159:83;9168:12;:10;:12::i;:::-;9182:7;9191:50;9230:10;9191:11;:25;9203:12;:10;:12::i;:::-;9191:25;;;;;;;;;;;;;;;:34;9217:7;9191:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;9159:8;:83::i;:::-;9260:4;9253:11;;9054:218;;;;:::o;19380:124::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19488:8:::1;19462:23;:34;;;;19380:124:::0;:::o;5447:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;17434:105::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17524:7:::1;17505:16;;:26;;;;;;;;;;;;;;;;;;17434:105:::0;:::o;6473:40::-;;;;;;;;;;;;;:::o;5390:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;20132:809::-;20214:22;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20251:35:::1;20308:16;20251:74;;20374:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20356:53;;;20418:4;20425:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20356:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20339:110;;20491:1;20465:28;;:14;:28;;::::0;20462:225:::1;;20579:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20561:74;;;20644:4;20651:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20561:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20544:131;;20462:225;20713:14;20699:11;;:28;;;;;;;;;;;;;;;;;;20779:16;20761:15;;:34;;;;;;;;;;;;;;;;;;20870:4;20833:12;:34;20854:11;;;;;;;;;;;20833:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;20929:4;20885:19;:41;20913:11;;;;;;;;;;;20885:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;20238:703;20132:809:::0;;;:::o;19626:101::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19711:8:::1;19696:12;:23;;;;19626:101:::0;:::o;6237:32::-;;;;;;;;;;;;;:::o;17673:119::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17746:4:::1;17727:16;;:23;;;;;;;;;;;;;;;;;;17777:4;17761:13;;:20;;;;;;;;;;;;;;;;;;17673:119::o:0;4962:73::-;;;;;;;;;;;;;:::o;8772:123::-;8838:7;8864:9;:18;8874:7;8864:18;;;;;;;;;;;;;;;;8857:25;;8772:123;;;:::o;19512:106::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19602:8:::1;19589:10;:21;;;;19512:106:::0;:::o;17547:118::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17620:5:::1;17601:16;;:24;;;;;;;;;;;;;;;;;;17652:5;17636:13;;:21;;;;;;;;;;;;;;;;;;17547:118::o:0;4880:75::-;;;;;;;;;;;;;:::o;6071:68::-;;;;:::o;6155:65::-;;;;:::o;5558:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;2842:79::-;2880:7;2907:6;;;;;;;;;;;2900:13;;2842:79;:::o;3067:92::-;3107:4;3145:6;;;;;;;;;;;3131:20;;:10;:20;;;3124:27;;3067:92;:::o;8478:87::-;8517:13;8550:7;8543:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8478:87;:::o;5042:32::-;;;;;;;;;;;;;:::o;9280:269::-;9373:4;9390:129;9399:12;:10;:12::i;:::-;9413:7;9422:96;9461:15;9422:96;;;;;;;;;;;;;;;;;:11;:25;9434:12;:10;:12::i;:::-;9422:25;;;;;;;;;;;;;;;:34;9448:7;9422:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;9390:8;:129::i;:::-;9537:4;9530:11;;9280:269;;;;:::o;10333:167::-;10411:4;10428:42;10438:12;:10;:12::i;:::-;10452:9;10463:6;10428:9;:42::i;:::-;;10488:4;10481:11;;10333:167;;;;:::o;18773:195::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18892:7:::1;18865:34;;:17;:23;18883:4;18865:23;;;;;;;;;;;;;;;;;;;;;;;;;:34;;::::0;18857:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18953:7;18927:17;:23;18945:4;18927:23;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;18773:195:::0;;:::o;18399:115::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18496:10:::1;18478:15;;:28;;;;;;;;;;;;;;;;;;18399:115:::0;:::o;19914:210::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20018:7:::1;19996:12;:19;20009:5;19996:19;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;20039:7;20036:81;;;20101:4;20063:19;:35;20091:5;20063:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;20036:81;19914:210:::0;;:::o;19735:171::-;6768:17;;;;;;;;;;;6754:31;;:10;:31;;;6746:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;19836:8:::1;19812:21;;:32;;;;;;;;;;;;;;;;;;19860:38;19889:8;19860:38;;;;;;:::i;:::-;;;;;;;;19735:171:::0;:::o;6406:26::-;;;;;;;;;;;;;:::o;5499:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;18650:111::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18743:10:::1;18727:13;;:26;;;;;;;;;;;;;;;;;;18650:111:::0;:::o;17084:132::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17178:3:::1;:12;;;17191:9;17201:6;17178:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17084:132:::0;;;:::o;5999:63::-;;;;:::o;8903:143::-;8984:7;9011:11;:18;9023:5;9011:18;;;;;;;;;;;;;;;:27;9030:7;9011:27;;;;;;;;;;;;;;;;9004:34;;8903:143;;;;:::o;16866:178::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16921:7:::1;16941:10;16933:24;;16965:21;16933:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16920:71;;;17010:2;17002:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;16908:136;16866:178::o:0;17328:98::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17411:7:::1;17395:13;;:23;;;;;;;;;;;;;;;;;;17328:98:::0;:::o;17224:96::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17305:7:::1;17291:11;;:21;;;;;;;;;;;;;;;;;;17224:96:::0;:::o;3406:244::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3515:1:::1;3495:22;;:8;:22;;::::0;3487:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3605:8;3576:38;;3597:6;::::0;::::1;;;;;;;;3576:38;;;;;;;;;;;;3634:8;3625:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3406:244:::0;:::o;6276:35::-;;;;;;;;;;;;;:::o;18522:117::-;2986:12;:10;:12::i;:::-;2976:22;;:6;;;;;;;;;;:22;;;2968:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18621:10:::1;18601:17;;:30;;;;;;;;;;;;;;;;;;18522:117:::0;:::o;1835:250::-;1893:7;1922:1;1917;:6;1913:47;;1947:1;1940:8;;;;1913:47;1972:9;1988:1;1984;:5;;;;:::i;:::-;1972:17;;2017:1;2012;2008;:5;;;;:::i;:::-;:10;2000:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2076:1;2069:8;;;1835:250;;;;;:::o;2093:132::-;2151:7;2178:39;2182:1;2185;2178:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2171:46;;2093:132;;;;:::o;1302:181::-;1360:7;1380:9;1396:1;1392;:5;;;;:::i;:::-;1380:17;;1421:1;1416;:6;;1408:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1474:1;1467:8;;;1302:181;;;;:::o;350:115::-;403:15;446:10;431:26;;350:115;:::o;9726:337::-;9836:1;9819:19;;:5;:19;;;9811:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9917:1;9898:21;;:7;:21;;;9890:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10001:6;9971:11;:18;9983:5;9971:18;;;;;;;;;;;;;;;:27;9990:7;9971:27;;;;;;;;;;;;;;;:36;;;;10039:7;10023:32;;10032:5;10023:32;;;10048:6;10023:32;;;;;;:::i;:::-;;;;;;;;9726:337;;;:::o;10829:1645::-;10916:4;10961:1;10943:20;;:6;:20;;;10935:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;11023:1;11002:23;;:9;:23;;;10994:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;11071:1;11062:6;:10;11054:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;11108:11;;;;;;;;;;;11104:130;;11143:17;:25;11161:6;11143:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;11172:17;:28;11190:9;11172:28;;;;;;;;;;;;;;;;;;;;;;;;;11143:57;11135:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;11104:130;11249:16;;;;;;;;;;;11246:1221;;;11299:41;11314:6;11322:9;11333:6;11299:14;:41::i;:::-;11292:48;;;;11246:1221;11398:15;:23;11414:6;11398:23;;;;;;;;;;;;;;;;;;;;;;;;;11397:24;:55;;;;;11426:15;:26;11442:9;11426:26;;;;;;;;;;;;;;;;;;;;;;;;;11425:27;11397:55;:72;;;;;11456:13;;;;;;;;;;;11397:72;11394:152;;;11508:12;;11498:6;:22;;11490:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;11394:152;11563:28;11594:24;11612:4;11594:9;:24::i;:::-;11563:55;;11633:28;11688:23;;11664:20;:47;;11633:78;;11744:23;:44;;;;;11772:16;;;;;;;;;;;11771:17;11744:44;:69;;;;;11793:12;:20;11806:6;11793:20;;;;;;;;;;;;;;;;;;;;;;;;;11792:21;11744:69;:94;;;;;11817:21;;;;;;;;;;;11744:94;11740:165;;;11873:16;:14;:16::i;:::-;11740:165;11941:53;11963:6;11941:53;;;;;;;;;;;;;;;;;:9;:17;11951:6;11941:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;11921:9;:17;11931:6;11921:17;;;;;;;;;;;;;;;:73;;;;12011:19;12033:31;12047:6;12054:9;12033:13;:31::i;:::-;:77;;12076:34;12084:6;12092:9;12103:6;12076:7;:34::i;:::-;12033:77;;;12067:6;12033:77;12011:99;;12130:16;;;;;;;;;;;:51;;;;;12151:19;:30;12171:9;12151:30;;;;;;;;;;;;;;;;;;;;;;;;;12150:31;12130:51;12127:164;;;12251:10;;12210:37;12235:11;12210:20;12220:9;12210;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;12202:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;12127:164;12330:37;12355:11;12330:9;:20;12340:9;12330:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;12307:9;:20;12317:9;12307:20;;;;;;;;;;;;;;;:60;;;;12406:9;12389:40;;12398:6;12389:40;;;12417:11;12389:40;;;;;;:::i;:::-;;;;;;;;12451:4;12444:11;;;;;10829:1645;;;;;;:::o;1635:192::-;1721:7;1754:1;1749;:6;;1757:12;1741:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1781:9;1797:1;1793;:5;;;;:::i;:::-;1781:17;;1818:1;1811:8;;;1635:192;;;;;:::o;1491:136::-;1549:7;1576:43;1580:1;1583;1576:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1569:50;;1491:136;;;;:::o;2233:278::-;2319:7;2351:1;2347;:5;2354:12;2339:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2378:9;2394:1;2390;:5;;;;:::i;:::-;2378:17;;2502:1;2495:8;;;2233:278;;;;;:::o;12482:330::-;12575:4;12612:53;12634:6;12612:53;;;;;;;;;;;;;;;;;:9;:17;12622:6;12612:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;12592:9;:17;12602:6;12592:17;;;;;;;;;;;;;;;:73;;;;12699:32;12724:6;12699:9;:20;12709:9;12699:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12676:9;:20;12686:9;12676:20;;;;;;;;;;;;;;;:55;;;;12764:9;12747:35;;12756:6;12747:35;;;12775:6;12747:35;;;;;;:::i;:::-;;;;;;;;12800:4;12793:11;;12482:330;;;;;:::o;12820:1529::-;6994:4;6975:16;;:23;;;;;;;;;;;;;;;;;;12887::::1;12913:24;12931:4;12913:9;:24::i;:::-;12887:50;;12972:1;12953:15;:20:::0;12950:32:::1;;12975:7;;;12950:32;12994:23;13020:39;13041:17;;13020:16;;:20;;:39;;;;:::i;:::-;12994:65;;13070:23;13096:39;13117:17;;13096:16;;:20;;:39;;;;:::i;:::-;13070:65;;13221:16;13240:23;13253:9;;13240:8;;:12;;:23;;;;:::i;:::-;13221:42;;13292:1;13277:11;:16:::0;13274:28:::1;;13295:7;;;;;;13274:28;13314:19;13336:60;13394:1;13336:53;13377:11;13336:36;13356:15;13336;:19;;:36;;;;:::i;:::-;:40;;:53;;;;:::i;:::-;:57;;:60;;;;:::i;:::-;13314:82;;13407:21;13431:32;13451:11;13431:15;:19;;:32;;;;:::i;:::-;13407:56;;13476:22;13501:21;13476:46;;13533:31;13550:13;13533:16;:31::i;:::-;13575:22;13600:41;13626:14;13600:21;:25;;:41;;;;:::i;:::-;13575:66;;13654:19;13676:39;13692:22;13712:1;13692:15;:19;;:22;;;;:::i;:::-;13676:11;:15;;:39;;;;:::i;:::-;13654:61;;13728:26;13757:59;13814:1;13757:52;13797:11;13757:35;13776:15;13757:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;13728:88;;13827:26;13856:52;13896:11;13856:35;13875:15;13856:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;13827:81;;13919:24;13946:62;13989:18;13946:38;13965:18;13946:14;:18;;:38;;;;:::i;:::-;:42;;:62;;;;:::i;:::-;13919:89;;14045:1;14024:18;:22;14021:97;;;14062:56;14083:15;;;;;;;;;;;14099:18;14062:20;:56::i;:::-;14021:97;14153:1;14134:16;:20;14131:91;;;14170:52;14191:13;;;;;;;;;;;14205:16;14170:20;:52::i;:::-;14131:91;14259:1;14238:18;:22;:41;;;;;14278:1;14264:11;:15;14238:41;14235:104;;;14294:45;14307:11;14320:18;14294:12;:45::i;:::-;14235:104;12866:1483;;;;;;;;;;;;7009:1;7040:5:::0;7021:16;;:24;;;;;;;;;;;;;;;;;;12820:1529::o;15701:366::-;15782:4;15802:17;:25;15820:6;15802:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;15831:17;:28;15849:9;15831:28;;;;;;;;;;;;;;;;;;;;;;;;;15802:57;15799:261;;;15883:4;15876:11;;;;15799:261;15918:12;:20;15931:6;15918:20;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;15942:12;:23;15955:9;15942:23;;;;;;;;;;;;;;;;;;;;;;;;;15918:47;15914:146;;;15989:5;15982:12;;;;15914:146;16043:5;16036:12;;15701:366;;;;;:::o;16075:750::-;16161:7;16191:14;16256:12;:20;16269:6;16256:20;;;;;;;;;;;;;;;;;;;;;;;;;16253:293;;;16311:37;5916:4;16311:20;16322:8;;16311:6;:10;;:20;;;;:::i;:::-;:24;;:37;;;;:::i;:::-;16299:49;;16253:293;;;16400:12;:23;16413:9;16400:23;;;;;;;;;;;;;;;;;;;;;;;;;16397:149;;;16474:38;5916:4;16474:21;16485:9;;16474:6;:10;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;16462:50;;16397:149;16253:293;16582:1;16570:9;:13;16567:185;;;16631:39;16660:9;16631;:24;16649:4;16631:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;16604:9;:24;16622:4;16604:24;;;;;;;;;;;;;;;:66;;;;16719:4;16694:42;;16703:6;16694:42;;;16726:9;16694:42;;;;;;:::i;:::-;;;;;;;;16567:185;16775:21;16786:9;16775:6;:10;;:21;;;;:::i;:::-;16768:28;;;16075:750;;;;;:::o;14496:666::-;14622:21;14660:1;14646:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14622:40;;14691:4;14673;14678:1;14673:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14717:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14707:4;14712:1;14707:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;14752:62;14769:4;14784:15;;;;;;;;;;;14802:11;14752:8;:62::i;:::-;14853:15;;;;;;;;;;;:66;;;14934:11;14960:1;15004:4;15031;15067:15;14853:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15119:35;15136:11;15149:4;15119:35;;;;;;;:::i;:::-;;;;;;;;14551:611;14496:666;:::o;14357:127::-;14449:9;14441:27;;:35;14469:6;14441:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14357:127;;:::o;15170:523::-;15318:62;15335:4;15350:15;;;;;;;;;;;15368:11;15318:8;:62::i;:::-;15423:15;;;;;;;;;;;:31;;;15462:9;15495:4;15515:11;15541:1;15584;15627:17;;;;;;;;;;;15659:15;15423:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15170:523;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:126::-;1386:7;1426:42;1419:5;1415:54;1404:65;;1349:126;;;:::o;1481:96::-;1518:7;1547:24;1565:5;1547:24;:::i;:::-;1536:35;;1481:96;;;:::o;1583:118::-;1670:24;1688:5;1670:24;:::i;:::-;1665:3;1658:37;1583:118;;:::o;1707:222::-;1800:4;1838:2;1827:9;1823:18;1815:26;;1851:71;1919:1;1908:9;1904:17;1895:6;1851:71;:::i;:::-;1707:222;;;;:::o;2016:117::-;2125:1;2122;2115:12;2262:122;2335:24;2353:5;2335:24;:::i;:::-;2328:5;2325:35;2315:63;;2374:1;2371;2364:12;2315:63;2262:122;:::o;2390:139::-;2436:5;2474:6;2461:20;2452:29;;2490:33;2517:5;2490:33;:::i;:::-;2390:139;;;;:::o;2535:77::-;2572:7;2601:5;2590:16;;2535:77;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:116::-;3868:21;3883:5;3868:21;:::i;:::-;3861:5;3858:32;3848:60;;3904:1;3901;3894:12;3848:60;3798:116;:::o;3920:133::-;3963:5;4001:6;3988:20;3979:29;;4017:30;4041:5;4017:30;:::i;:::-;3920:133;;;;:::o;4059:468::-;4124:6;4132;4181:2;4169:9;4160:7;4156:23;4152:32;4149:119;;;4187:79;;:::i;:::-;4149:119;4307:1;4332:53;4377:7;4368:6;4357:9;4353:22;4332:53;:::i;:::-;4322:63;;4278:117;4434:2;4460:50;4502:7;4493:6;4482:9;4478:22;4460:50;:::i;:::-;4450:60;;4405:115;4059:468;;;;;:::o;4533:60::-;4561:3;4582:5;4575:12;;4533:60;;;:::o;4599:142::-;4649:9;4682:53;4700:34;4709:24;4727:5;4709:24;:::i;:::-;4700:34;:::i;:::-;4682:53;:::i;:::-;4669:66;;4599:142;;;:::o;4747:126::-;4797:9;4830:37;4861:5;4830:37;:::i;:::-;4817:50;;4747:126;;;:::o;4879:152::-;4955:9;4988:37;5019:5;4988:37;:::i;:::-;4975:50;;4879:152;;;:::o;5037:183::-;5150:63;5207:5;5150:63;:::i;:::-;5145:3;5138:76;5037:183;;:::o;5226:274::-;5345:4;5383:2;5372:9;5368:18;5360:26;;5396:97;5490:1;5479:9;5475:17;5466:6;5396:97;:::i;:::-;5226:274;;;;:::o;5506:118::-;5593:24;5611:5;5593:24;:::i;:::-;5588:3;5581:37;5506:118;;:::o;5630:222::-;5723:4;5761:2;5750:9;5746:18;5738:26;;5774:71;5842:1;5831:9;5827:17;5818:6;5774:71;:::i;:::-;5630:222;;;;:::o;5858:619::-;5935:6;5943;5951;6000:2;5988:9;5979:7;5975:23;5971:32;5968:119;;;6006:79;;:::i;:::-;5968:119;6126:1;6151:53;6196:7;6187:6;6176:9;6172:22;6151:53;:::i;:::-;6141:63;;6097:117;6253:2;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6224:118;6381:2;6407:53;6452:7;6443:6;6432:9;6428:22;6407:53;:::i;:::-;6397:63;;6352:118;5858:619;;;;;:::o;6483:::-;6560:6;6568;6576;6625:2;6613:9;6604:7;6600:23;6596:32;6593:119;;;6631:79;;:::i;:::-;6593:119;6751:1;6776:53;6821:7;6812:6;6801:9;6797:22;6776:53;:::i;:::-;6766:63;;6722:117;6878:2;6904:53;6949:7;6940:6;6929:9;6925:22;6904:53;:::i;:::-;6894:63;;6849:118;7006:2;7032:53;7077:7;7068:6;7057:9;7053:22;7032:53;:::i;:::-;7022:63;;6977:118;6483:619;;;;;:::o;7108:86::-;7143:7;7183:4;7176:5;7172:16;7161:27;;7108:86;;;:::o;7200:112::-;7283:22;7299:5;7283:22;:::i;:::-;7278:3;7271:35;7200:112;;:::o;7318:214::-;7407:4;7445:2;7434:9;7430:18;7422:26;;7458:67;7522:1;7511:9;7507:17;7498:6;7458:67;:::i;:::-;7318:214;;;;:::o;7538:329::-;7597:6;7646:2;7634:9;7625:7;7621:23;7617:32;7614:119;;;7652:79;;:::i;:::-;7614:119;7772:1;7797:53;7842:7;7833:6;7822:9;7818:22;7797:53;:::i;:::-;7787:63;;7743:117;7538:329;;;;:::o;7873:::-;7932:6;7981:2;7969:9;7960:7;7956:23;7952:32;7949:119;;;7987:79;;:::i;:::-;7949:119;8107:1;8132:53;8177:7;8168:6;8157:9;8153:22;8132:53;:::i;:::-;8122:63;;8078:117;7873:329;;;;:::o;8208:323::-;8264:6;8313:2;8301:9;8292:7;8288:23;8284:32;8281:119;;;8319:79;;:::i;:::-;8281:119;8439:1;8464:50;8506:7;8497:6;8486:9;8482:22;8464:50;:::i;:::-;8454:60;;8410:114;8208:323;;;;:::o;8537:109::-;8587:7;8616:24;8634:5;8616:24;:::i;:::-;8605:35;;8537:109;;;:::o;8652:148::-;8738:37;8769:5;8738:37;:::i;:::-;8731:5;8728:48;8718:76;;8790:1;8787;8780:12;8718:76;8652:148;:::o;8806:165::-;8865:5;8903:6;8890:20;8881:29;;8919:46;8959:5;8919:46;:::i;:::-;8806:165;;;;:::o;8977:645::-;9067:6;9075;9083;9132:2;9120:9;9111:7;9107:23;9103:32;9100:119;;;9138:79;;:::i;:::-;9100:119;9258:1;9283:66;9341:7;9332:6;9321:9;9317:22;9283:66;:::i;:::-;9273:76;;9229:130;9398:2;9424:53;9469:7;9460:6;9449:9;9445:22;9424:53;:::i;:::-;9414:63;;9369:118;9526:2;9552:53;9597:7;9588:6;9577:9;9573:22;9552:53;:::i;:::-;9542:63;;9497:118;8977:645;;;;;:::o;9628:474::-;9696:6;9704;9753:2;9741:9;9732:7;9728:23;9724:32;9721:119;;;9759:79;;:::i;:::-;9721:119;9879:1;9904:53;9949:7;9940:6;9929:9;9925:22;9904:53;:::i;:::-;9894:63;;9850:117;10006:2;10032:53;10077:7;10068:6;10057:9;10053:22;10032:53;:::i;:::-;10022:63;;9977:118;9628:474;;;;;:::o;10108:180::-;10156:77;10153:1;10146:88;10253:4;10250:1;10243:15;10277:4;10274:1;10267:15;10294:320;10338:6;10375:1;10369:4;10365:12;10355:22;;10422:1;10416:4;10412:12;10443:18;10433:81;;10499:4;10491:6;10487:17;10477:27;;10433:81;10561:2;10553:6;10550:14;10530:18;10527:38;10524:84;;10580:18;;:::i;:::-;10524:84;10345:269;10294:320;;;:::o;10620:182::-;10760:34;10756:1;10748:6;10744:14;10737:58;10620:182;:::o;10808:366::-;10950:3;10971:67;11035:2;11030:3;10971:67;:::i;:::-;10964:74;;11047:93;11136:3;11047:93;:::i;:::-;11165:2;11160:3;11156:12;11149:19;;10808:366;;;:::o;11180:419::-;11346:4;11384:2;11373:9;11369:18;11361:26;;11433:9;11427:4;11423:20;11419:1;11408:9;11404:17;11397:47;11461:131;11587:4;11461:131;:::i;:::-;11453:139;;11180:419;;;:::o;11605:163::-;11745:15;11741:1;11733:6;11729:14;11722:39;11605:163;:::o;11774:366::-;11916:3;11937:67;12001:2;11996:3;11937:67;:::i;:::-;11930:74;;12013:93;12102:3;12013:93;:::i;:::-;12131:2;12126:3;12122:12;12115:19;;11774:366;;;:::o;12146:419::-;12312:4;12350:2;12339:9;12335:18;12327:26;;12399:9;12393:4;12389:20;12385:1;12374:9;12370:17;12363:47;12427:131;12553:4;12427:131;:::i;:::-;12419:139;;12146:419;;;:::o;12571:143::-;12628:5;12659:6;12653:13;12644:22;;12675:33;12702:5;12675:33;:::i;:::-;12571:143;;;;:::o;12720:351::-;12790:6;12839:2;12827:9;12818:7;12814:23;12810:32;12807:119;;;12845:79;;:::i;:::-;12807:119;12965:1;12990:64;13046:7;13037:6;13026:9;13022:22;12990:64;:::i;:::-;12980:74;;12936:128;12720:351;;;;:::o;13077:332::-;13198:4;13236:2;13225:9;13221:18;13213:26;;13249:71;13317:1;13306:9;13302:17;13293:6;13249:71;:::i;:::-;13330:72;13398:2;13387:9;13383:18;13374:6;13330:72;:::i;:::-;13077:332;;;;;:::o;13415:180::-;13555:32;13551:1;13543:6;13539:14;13532:56;13415:180;:::o;13601:366::-;13743:3;13764:67;13828:2;13823:3;13764:67;:::i;:::-;13757:74;;13840:93;13929:3;13840:93;:::i;:::-;13958:2;13953:3;13949:12;13942:19;;13601:366;;;:::o;13973:419::-;14139:4;14177:2;14166:9;14162:18;14154:26;;14226:9;14220:4;14216:20;14212:1;14201:9;14197:17;14190:47;14254:131;14380:4;14254:131;:::i;:::-;14246:139;;13973:419;;;:::o;14398:332::-;14519:4;14557:2;14546:9;14542:18;14534:26;;14570:71;14638:1;14627:9;14623:17;14614:6;14570:71;:::i;:::-;14651:72;14719:2;14708:9;14704:18;14695:6;14651:72;:::i;:::-;14398:332;;;;;:::o;14736:137::-;14790:5;14821:6;14815:13;14806:22;;14837:30;14861:5;14837:30;:::i;:::-;14736:137;;;;:::o;14879:345::-;14946:6;14995:2;14983:9;14974:7;14970:23;14966:32;14963:119;;;15001:79;;:::i;:::-;14963:119;15121:1;15146:61;15199:7;15190:6;15179:9;15175:22;15146:61;:::i;:::-;15136:71;;15092:125;14879:345;;;;:::o;15230:147::-;15331:11;15368:3;15353:18;;15230:147;;;;:::o;15383:114::-;;:::o;15503:398::-;15662:3;15683:83;15764:1;15759:3;15683:83;:::i;:::-;15676:90;;15775:93;15864:3;15775:93;:::i;:::-;15893:1;15888:3;15884:11;15877:18;;15503:398;;;:::o;15907:379::-;16091:3;16113:147;16256:3;16113:147;:::i;:::-;16106:154;;16277:3;16270:10;;15907:379;;;:::o;16292:170::-;16432:22;16428:1;16420:6;16416:14;16409:46;16292:170;:::o;16468:366::-;16610:3;16631:67;16695:2;16690:3;16631:67;:::i;:::-;16624:74;;16707:93;16796:3;16707:93;:::i;:::-;16825:2;16820:3;16816:12;16809:19;;16468:366;;;:::o;16840:419::-;17006:4;17044:2;17033:9;17029:18;17021:26;;17093:9;17087:4;17083:20;17079:1;17068:9;17064:17;17057:47;17121:131;17247:4;17121:131;:::i;:::-;17113:139;;16840:419;;;:::o;17265:225::-;17405:34;17401:1;17393:6;17389:14;17382:58;17474:8;17469:2;17461:6;17457:15;17450:33;17265:225;:::o;17496:366::-;17638:3;17659:67;17723:2;17718:3;17659:67;:::i;:::-;17652:74;;17735:93;17824:3;17735:93;:::i;:::-;17853:2;17848:3;17844:12;17837:19;;17496:366;;;:::o;17868:419::-;18034:4;18072:2;18061:9;18057:18;18049:26;;18121:9;18115:4;18111:20;18107:1;18096:9;18092:17;18085:47;18149:131;18275:4;18149:131;:::i;:::-;18141:139;;17868:419;;;:::o;18293:180::-;18341:77;18338:1;18331:88;18438:4;18435:1;18428:15;18462:4;18459:1;18452:15;18479:410;18519:7;18542:20;18560:1;18542:20;:::i;:::-;18537:25;;18576:20;18594:1;18576:20;:::i;:::-;18571:25;;18631:1;18628;18624:9;18653:30;18671:11;18653:30;:::i;:::-;18642:41;;18832:1;18823:7;18819:15;18816:1;18813:22;18793:1;18786:9;18766:83;18743:139;;18862:18;;:::i;:::-;18743:139;18527:362;18479:410;;;;:::o;18895:180::-;18943:77;18940:1;18933:88;19040:4;19037:1;19030:15;19064:4;19061:1;19054:15;19081:185;19121:1;19138:20;19156:1;19138:20;:::i;:::-;19133:25;;19172:20;19190:1;19172:20;:::i;:::-;19167:25;;19211:1;19201:35;;19216:18;;:::i;:::-;19201:35;19258:1;19255;19251:9;19246:14;;19081:185;;;;:::o;19272:220::-;19412:34;19408:1;19400:6;19396:14;19389:58;19481:3;19476:2;19468:6;19464:15;19457:28;19272:220;:::o;19498:366::-;19640:3;19661:67;19725:2;19720:3;19661:67;:::i;:::-;19654:74;;19737:93;19826:3;19737:93;:::i;:::-;19855:2;19850:3;19846:12;19839:19;;19498:366;;;:::o;19870:419::-;20036:4;20074:2;20063:9;20059:18;20051:26;;20123:9;20117:4;20113:20;20109:1;20098:9;20094:17;20087:47;20151:131;20277:4;20151:131;:::i;:::-;20143:139;;19870:419;;;:::o;20295:191::-;20335:3;20354:20;20372:1;20354:20;:::i;:::-;20349:25;;20388:20;20406:1;20388:20;:::i;:::-;20383:25;;20431:1;20428;20424:9;20417:16;;20452:3;20449:1;20446:10;20443:36;;;20459:18;;:::i;:::-;20443:36;20295:191;;;;:::o;20492:177::-;20632:29;20628:1;20620:6;20616:14;20609:53;20492:177;:::o;20675:366::-;20817:3;20838:67;20902:2;20897:3;20838:67;:::i;:::-;20831:74;;20914:93;21003:3;20914:93;:::i;:::-;21032:2;21027:3;21023:12;21016:19;;20675:366;;;:::o;21047:419::-;21213:4;21251:2;21240:9;21236:18;21228:26;;21300:9;21294:4;21290:20;21286:1;21275:9;21271:17;21264:47;21328:131;21454:4;21328:131;:::i;:::-;21320:139;;21047:419;;;:::o;21472:223::-;21612:34;21608:1;21600:6;21596:14;21589:58;21681:6;21676:2;21668:6;21664:15;21657:31;21472:223;:::o;21701:366::-;21843:3;21864:67;21928:2;21923:3;21864:67;:::i;:::-;21857:74;;21940:93;22029:3;21940:93;:::i;:::-;22058:2;22053:3;22049:12;22042:19;;21701:366;;;:::o;22073:419::-;22239:4;22277:2;22266:9;22262:18;22254:26;;22326:9;22320:4;22316:20;22312:1;22301:9;22297:17;22290:47;22354:131;22480:4;22354:131;:::i;:::-;22346:139;;22073:419;;;:::o;22498:221::-;22638:34;22634:1;22626:6;22622:14;22615:58;22707:4;22702:2;22694:6;22690:15;22683:29;22498:221;:::o;22725:366::-;22867:3;22888:67;22952:2;22947:3;22888:67;:::i;:::-;22881:74;;22964:93;23053:3;22964:93;:::i;:::-;23082:2;23077:3;23073:12;23066:19;;22725:366;;;:::o;23097:419::-;23263:4;23301:2;23290:9;23286:18;23278:26;;23350:9;23344:4;23340:20;23336:1;23325:9;23321:17;23314:47;23378:131;23504:4;23378:131;:::i;:::-;23370:139;;23097:419;;;:::o;23522:165::-;23662:17;23658:1;23650:6;23646:14;23639:41;23522:165;:::o;23693:366::-;23835:3;23856:67;23920:2;23915:3;23856:67;:::i;:::-;23849:74;;23932:93;24021:3;23932:93;:::i;:::-;24050:2;24045:3;24041:12;24034:19;;23693:366;;;:::o;24065:419::-;24231:4;24269:2;24258:9;24254:18;24246:26;;24318:9;24312:4;24308:20;24304:1;24293:9;24289:17;24282:47;24346:131;24472:4;24346:131;:::i;:::-;24338:139;;24065:419;;;:::o;24490:163::-;24630:15;24626:1;24618:6;24614:14;24607:39;24490:163;:::o;24659:366::-;24801:3;24822:67;24886:2;24881:3;24822:67;:::i;:::-;24815:74;;24898:93;24987:3;24898:93;:::i;:::-;25016:2;25011:3;25007:12;25000:19;;24659:366;;;:::o;25031:419::-;25197:4;25235:2;25224:9;25220:18;25212:26;;25284:9;25278:4;25274:20;25270:1;25259:9;25255:17;25248:47;25312:131;25438:4;25312:131;:::i;:::-;25304:139;;25031:419;;;:::o;25456:164::-;25596:16;25592:1;25584:6;25580:14;25573:40;25456:164;:::o;25626:366::-;25768:3;25789:67;25853:2;25848:3;25789:67;:::i;:::-;25782:74;;25865:93;25954:3;25865:93;:::i;:::-;25983:2;25978:3;25974:12;25967:19;;25626:366;;;:::o;25998:419::-;26164:4;26202:2;26191:9;26187:18;26179:26;;26251:9;26245:4;26241:20;26237:1;26226:9;26222:17;26215:47;26279:131;26405:4;26279:131;:::i;:::-;26271:139;;25998:419;;;:::o;26423:168::-;26563:20;26559:1;26551:6;26547:14;26540:44;26423:168;:::o;26597:366::-;26739:3;26760:67;26824:2;26819:3;26760:67;:::i;:::-;26753:74;;26836:93;26925:3;26836:93;:::i;:::-;26954:2;26949:3;26945:12;26938:19;;26597:366;;;:::o;26969:419::-;27135:4;27173:2;27162:9;27158:18;27150:26;;27222:9;27216:4;27212:20;27208:1;27197:9;27193:17;27186:47;27250:131;27376:4;27250:131;:::i;:::-;27242:139;;26969:419;;;:::o;27394:156::-;27534:8;27530:1;27522:6;27518:14;27511:32;27394:156;:::o;27556:365::-;27698:3;27719:66;27783:1;27778:3;27719:66;:::i;:::-;27712:73;;27794:93;27883:3;27794:93;:::i;:::-;27912:2;27907:3;27903:12;27896:19;;27556:365;;;:::o;27927:419::-;28093:4;28131:2;28120:9;28116:18;28108:26;;28180:9;28174:4;28170:20;28166:1;28155:9;28151:17;28144:47;28208:131;28334:4;28208:131;:::i;:::-;28200:139;;27927:419;;;:::o;28352:160::-;28492:12;28488:1;28480:6;28476:14;28469:36;28352:160;:::o;28518:366::-;28660:3;28681:67;28745:2;28740:3;28681:67;:::i;:::-;28674:74;;28757:93;28846:3;28757:93;:::i;:::-;28875:2;28870:3;28866:12;28859:19;;28518:366;;;:::o;28890:419::-;29056:4;29094:2;29083:9;29079:18;29071:26;;29143:9;29137:4;29133:20;29129:1;29118:9;29114:17;29107:47;29171:131;29297:4;29171:131;:::i;:::-;29163:139;;28890:419;;;:::o;29315:194::-;29355:4;29375:20;29393:1;29375:20;:::i;:::-;29370:25;;29409:20;29427:1;29409:20;:::i;:::-;29404:25;;29453:1;29450;29446:9;29438:17;;29477:1;29471:4;29468:11;29465:37;;;29482:18;;:::i;:::-;29465:37;29315:194;;;;:::o;29515:180::-;29563:77;29560:1;29553:88;29660:4;29657:1;29650:15;29684:4;29681:1;29674:15;29701:180;29749:77;29746:1;29739:88;29846:4;29843:1;29836:15;29870:4;29867:1;29860:15;29887:85;29932:7;29961:5;29950:16;;29887:85;;;:::o;29978:158::-;30036:9;30069:61;30087:42;30096:32;30122:5;30096:32;:::i;:::-;30087:42;:::i;:::-;30069:61;:::i;:::-;30056:74;;29978:158;;;:::o;30142:147::-;30237:45;30276:5;30237:45;:::i;:::-;30232:3;30225:58;30142:147;;:::o;30295:114::-;30362:6;30396:5;30390:12;30380:22;;30295:114;;;:::o;30415:184::-;30514:11;30548:6;30543:3;30536:19;30588:4;30583:3;30579:14;30564:29;;30415:184;;;;:::o;30605:132::-;30672:4;30695:3;30687:11;;30725:4;30720:3;30716:14;30708:22;;30605:132;;;:::o;30743:108::-;30820:24;30838:5;30820:24;:::i;:::-;30815:3;30808:37;30743:108;;:::o;30857:179::-;30926:10;30947:46;30989:3;30981:6;30947:46;:::i;:::-;31025:4;31020:3;31016:14;31002:28;;30857:179;;;;:::o;31042:113::-;31112:4;31144;31139:3;31135:14;31127:22;;31042:113;;;:::o;31191:732::-;31310:3;31339:54;31387:5;31339:54;:::i;:::-;31409:86;31488:6;31483:3;31409:86;:::i;:::-;31402:93;;31519:56;31569:5;31519:56;:::i;:::-;31598:7;31629:1;31614:284;31639:6;31636:1;31633:13;31614:284;;;31715:6;31709:13;31742:63;31801:3;31786:13;31742:63;:::i;:::-;31735:70;;31828:60;31881:6;31828:60;:::i;:::-;31818:70;;31674:224;31661:1;31658;31654:9;31649:14;;31614:284;;;31618:14;31914:3;31907:10;;31315:608;;;31191:732;;;;:::o;31929:831::-;32192:4;32230:3;32219:9;32215:19;32207:27;;32244:71;32312:1;32301:9;32297:17;32288:6;32244:71;:::i;:::-;32325:80;32401:2;32390:9;32386:18;32377:6;32325:80;:::i;:::-;32452:9;32446:4;32442:20;32437:2;32426:9;32422:18;32415:48;32480:108;32583:4;32574:6;32480:108;:::i;:::-;32472:116;;32598:72;32666:2;32655:9;32651:18;32642:6;32598:72;:::i;:::-;32680:73;32748:3;32737:9;32733:19;32724:6;32680:73;:::i;:::-;31929:831;;;;;;;;:::o;32766:483::-;32937:4;32975:2;32964:9;32960:18;32952:26;;32988:71;33056:1;33045:9;33041:17;33032:6;32988:71;:::i;:::-;33106:9;33100:4;33096:20;33091:2;33080:9;33076:18;33069:48;33134:108;33237:4;33228:6;33134:108;:::i;:::-;33126:116;;32766:483;;;;;:::o;33255:807::-;33504:4;33542:3;33531:9;33527:19;33519:27;;33556:71;33624:1;33613:9;33609:17;33600:6;33556:71;:::i;:::-;33637:72;33705:2;33694:9;33690:18;33681:6;33637:72;:::i;:::-;33719:80;33795:2;33784:9;33780:18;33771:6;33719:80;:::i;:::-;33809;33885:2;33874:9;33870:18;33861:6;33809:80;:::i;:::-;33899:73;33967:3;33956:9;33952:19;33943:6;33899:73;:::i;:::-;33982;34050:3;34039:9;34035:19;34026:6;33982:73;:::i;:::-;33255:807;;;;;;;;;:::o;34068:143::-;34125:5;34156:6;34150:13;34141:22;;34172:33;34199:5;34172:33;:::i;:::-;34068:143;;;;:::o;34217:663::-;34305:6;34313;34321;34370:2;34358:9;34349:7;34345:23;34341:32;34338:119;;;34376:79;;:::i;:::-;34338:119;34496:1;34521:64;34577:7;34568:6;34557:9;34553:22;34521:64;:::i;:::-;34511:74;;34467:128;34634:2;34660:64;34716:7;34707:6;34696:9;34692:22;34660:64;:::i;:::-;34650:74;;34605:129;34773:2;34799:64;34855:7;34846:6;34835:9;34831:22;34799:64;:::i;:::-;34789:74;;34744:129;34217:663;;;;;:::o

Swarm Source

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