ETH Price: $2,728.07 (+1.42%)

Token

DAVINCI (DAVINCI)
 

Overview

Max Total Supply

1,801,439,850.9481984 DAVINCI

Holders

23

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
10,582,073.20895356232819829 DAVINCI

Value
$0.00
0xf74d2e806e6e8acf7672eecfa86f5446f5d932b4
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:
DAVINCI

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**

          ██████                                                                 ████                                                                                                       
        ╣██▌▓▓▓▓   ########     ###    ##     ## #### ##    ##  ######   ####    ▌╬▄╫█▓        
      ╔▓████████   ##     ##   ## ##   ##     ##  ##  ###   ## ##    ##   ##     ███████▒      
    @▌╫▓████▓█▓▓   ##     ##  ##   ##  ##     ##  ##  ####  ## ##         ##     ███████▓▓'σ,   
    ╠░╬╬██▓▓█╬▓╣   ##     ## ##     ## ##     ##  ##  ## ## ## ##         ##     ███╬▒╢▓▒  
   ε░-╣▓██▓▓▓▌█╫   ##     ## #########  ##   ##   ##  ##  #### ##         ##     ▓▓▓▓▓▌█▓▌¡▓▀  
 ]▓╬╬╢████▓█████   ##     ## ##     ##   ## ##    ##  ##   ### ##    ##   ##     █▓█████▓╫ │▌  
 ╫██▓███████████   ########  ##     ##    ###    #### ##    ##  ######   ####    █████████▒╢╣  
 ╫██████████████  ########  ##     ##    ###    #### ##    ##  ######   ####     ████████████⌐ 
 ╟██████████████  #######  ##     ##    ###    #### ##    ##  ######   ####      ████████████  
 "██████████████                                                                 ███████████▌  
  ╣▓▓███████████   -     He who keeps the keys to Heaven rules the world.     -  ██████████▌╬   
   ╚╩╫██████████                                                                 ██████████╩╚"   
      `▓█▓╣╬▓█▓█                    t.me/_____DAVINCIETH                         █▓███████▓└      
        
       
"______" Password for the Cryptex in Davinchi Code

Those who find the Secret Room first will be rewarded.              

*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        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 Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }


    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}


abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

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

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

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}




contract DAVINCI is Context,IERC20, Ownable{
    using Address for address;

    string private _name = "DAVINCI";
    string private _symbol = "DAVINCI";
    uint8 private _decimals = 18;
    uint256 totalFeeFortx = 0;
      uint256 maxWalletTreshold = 3;
    uint256 maxTxTreshold = 3;
    uint256 private swapTreshold =2;

    uint256 private currentThreshold = 20; //Once the token value goes up this number can be decreased (To reduce price impact on asset)
    uint256 private _totalSupply = (10000000 * 10**4) * 8**_decimals; //1T supply
    uint256 public requiredTokensToSwap = _totalSupply * swapTreshold /1000;
    mapping (address => uint256) private _balances;
    mapping (address => bool) private _excludedFromFees;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public automatedMarketMakerPairs;
    address _owner;
    address payable public marketingAddress = payable(0x1dCa17427E1CEd1Bfca7A64E1560f83BA48069fD);
    uint256 maxWalletAmount = _totalSupply*maxWalletTreshold/100; // starting 3%
    uint256 maxTxAmount = _totalSupply*maxTxTreshold/100;
    mapping (address => bool) botWallets;
    bool botTradeEnabled = true;
    bool checkWalletSize = true;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private presaleAddresses;
    //15% buy tax 20% sell tax

    uint256 private buyliqFee = 0; //10
    uint256 private buyprevLiqFee = 4;
    uint256 private buymktFee = 1;//4
    uint256 private buyPrevmktFee = 16;
    uint256 CrypticHourcooldown = 0;
    bool private tradeEnabled = false;

    
    uint256 private sellliqFee = 2;
    uint256 private sellprevLiqFee = 4;
    uint256 private sellmktFee = 3;
    uint256 private sellPrevmktFee = 16;
    


    bool public inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    uint256 private mktTokens = 0;
    uint256 private liqTokens = 0;

    
    event SwapAndLiquify(uint256 tokensSwapped,
		uint256 ethReceived,
		uint256 tokensIntoLiquidity
	);
    event tokensSwappedDuringTokenomics(uint256 amount);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    
    // 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
    IUniswapV2Router02 _router;
    address public uniswapV2Pair;

    //Balances tracker

    modifier lockTheSwap{
		inSwapAndLiquify = true;
		_;
		inSwapAndLiquify = false;
	}
    

    constructor(){
        _balances[_msgSender()] = _totalSupply;
        //0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D mainnet and all networks
        IUniswapV2Router02 _uniRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        uniswapV2Pair = IUniswapV2Factory(_uniRouter.factory())
            .createPair(address(this), _uniRouter.WETH());
        
        _excludedFromFees[owner()] = true;         
        _excludedFromFees[address(this)] = true;// exclude owner and contract instance from fees
        _router = _uniRouter;
        _liquidityHolders[address(_router)] = true;
        _liquidityHolders[owner()] = true;
        _liquidityHolders[address(this)] = true;
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        emit Transfer(address(0),_msgSender(),_totalSupply);




    }
    receive() external payable{}


    //general token data and tracking of balances to be swapped.
    function getOwner()external view returns(address){
            return owner();
    }
    function currentmktTokens() external view returns (uint256){
            return mktTokens;
     }

     function currentLiqTokens() external view returns (uint256){
            return liqTokens;
     }

     function totalSupply() external view override returns (uint256){
            return _totalSupply;
     }
   
    function balanceOf(address account) public view override returns (uint256){
        return _balances[account];
    }
   
    function transfer(address recipient, uint256 amount) external override returns (bool){
            _transfer(_msgSender(),recipient,amount);
            return true;

    }
   
    function allowance(address owner, address spender) external view override returns (uint256){
            return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount) external override returns (bool){
            _approve(_msgSender(),spender,amount);
            return true;
    }

    function decimals()external view returns(uint256){
        return _decimals;
    }
    function name() external view returns (string memory) {
		return _name;
	}
    function symbol() external view returns (string memory){
        return _symbol;
    }
        function updateMaxTxTreshold(uint256 newVal) public onlyOwner{
        maxTxTreshold = newVal;
        maxTxAmount = _totalSupply*maxTxTreshold/100;// 2%

    }
     function updateMaxWalletTreshold(uint256 newVal) public onlyOwner{
        maxWalletTreshold = newVal;
        maxWalletAmount = _totalSupply*maxWalletTreshold/100;

    }
    

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



    //Tokenomics related functions
    
    function CrypticHour() public onlyOwner{
         require(block.timestamp > CrypticHourcooldown, "You cant call CrypticHour more than once per day");
         buyPrevmktFee = buymktFee;
         buyprevLiqFee = buyliqFee;
       
         buyliqFee = 0;
         buymktFee = 0;
    }
    function CrypticHourOver() public onlyOwner{
         buyliqFee = buyprevLiqFee;
         buymktFee = buyPrevmktFee;
         CrypticHourcooldown = block.timestamp + 86400;
    }

    function addBotWallet (address payable detectedBot, bool isBot) public onlyOwner{
        botWallets[detectedBot] = isBot;
    }
    function currentbuyliqFee() public view returns (uint256){
            return buyliqFee;
    }
    function currentbuymktfee() public view returns (uint256){
            return buymktFee;
    }

      function currentsellLiqFee() public view returns (uint256){
            return sellliqFee;
    }
    function currentsellmktfee() public view returns (uint256){
            return sellmktFee;
    }

    function currentThresholdInt()public view returns (uint256){
        return currentThreshold;
    }
    function isExcluded(address toCheck)public view returns (bool){
            return _excludedFromFees[toCheck];
    }

    function _transfer(address from, address to, uint256 amount) internal{
        
        require(from != address(0), "ERC20: transfer from the zero address");
		require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0,"ERC20: transfered amount must be greater than zero");
        uint256 senderBalance = _balances[from];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        if(tradeEnabled == false){
            require(_liquidityHolders[to] || _liquidityHolders[from],"Cant trade, trade is disabled");
        }
        if(_liquidityHolders[to]==false && _liquidityHolders[from]==false){
        require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
         if(from == uniswapV2Pair){
                require(balanceOf(to)+amount <= maxWalletAmount);
            }
        }
        uint256 inContractBalance = balanceOf(address(this));
        if(inContractBalance >=requiredTokensToSwap && 
			!inSwapAndLiquify && 
			from != uniswapV2Pair && 
			swapAndLiquifyEnabled){
                if(inContractBalance >= requiredTokensToSwap ){
                    inContractBalance = requiredTokensToSwap;
                    swapForTokenomics(inContractBalance);
                }
            }

            bool takeFees = true;
            
            
            if(_excludedFromFees[from] || _excludedFromFees[to]) {
                totalFeeFortx = 0;
                takeFees = false;
               

            }
            uint256 mktAmount = 0;
		    uint256 liqAmount = 0;  // Amount to be added to liquidity.

            if(takeFees){
                
                
                //bot fees
                if(botWallets[from] == true||botWallets[to]==true){
                    revert("No bots can trade");
                }
                //Selling fees
                if (automatedMarketMakerPairs[to] && to != address(_router) ){
                        totalFeeFortx = 0;
                        mktAmount = amount * sellmktFee/100;
                        liqAmount = amount * sellliqFee/100;
                        totalFeeFortx = mktAmount + liqAmount;
                }
                //Buy Fees
                else if(automatedMarketMakerPairs[from] && from != address(_router)) {
                
                    totalFeeFortx = 0;
                    mktAmount = amount * buymktFee/100;
                    liqAmount = amount * buyliqFee/100;
                    totalFeeFortx = mktAmount + liqAmount ;
                }

                
            }

            _balances[from] = senderBalance - amount;
            _balances[to] += amount - mktAmount - liqAmount;

          if(liqAmount != 0) {
			_balances[address(this)] += totalFeeFortx;
			//tLiqTotal += liqAmount;
            liqTokens += liqAmount;
            mktTokens += mktAmount;
			emit Transfer(from, address(this), totalFeeFortx);
            
		    }
            emit Transfer(from, to,amount-totalFeeFortx);
            
        
    }
    function swapForTokenomics(uint256 balanceToswap) private lockTheSwap{
        swapAndLiquify(liqTokens);
        swapTokensForETHmkt(mktTokens);
        emit tokensSwappedDuringTokenomics(balanceToswap);
        mktTokens = 0;
        liqTokens = 0;
    }
     function addLimitExempt(address newAddress)external onlyOwner{
        _liquidityHolders[newAddress] = true;
     
    }
    function swapTokensForETHmkt(uint256 amount)private {
        address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _router.WETH();
		_approve(address(this), address(_router), amount);

		
		_router.swapExactTokensForETHSupportingFeeOnTransferTokens(
			amount,
			0, // Accept any amount of ETH.
			path,
			marketingAddress,
			block.timestamp
		);

    }

    function unstuckTokens (IERC20 tokenToClear, address payable destination, uint256 amount) public onlyOwner{
        //uint256 contractBalance = tokenToClear.balanceOf(address(this));
        tokenToClear.transfer(destination, amount);
    }

    function unstuckETH(address payable destination) public onlyOwner{
        uint256 ethBalance = address(this).balance;
        payable(destination).transfer(ethBalance);
    }

    function tradeStatus(bool status) public onlyOwner{
        tradeEnabled = status;
    }

    function swapAndLiquify(uint256 liqTokensPassed) private {
		uint256 half = liqTokensPassed / 2;
		uint256 otherHalf = liqTokensPassed - half;
		uint256 initialBalance = address(this).balance;

		swapTokensForETH(half);
		uint256 newBalance = address(this).balance - (initialBalance); 

		addLiquidity(otherHalf, newBalance);
		emit SwapAndLiquify(half,newBalance,otherHalf);
	}

    function swapTokensForETH(uint256 tokenAmount) private{
		address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _router.WETH();
		_approve(address(this), address(_router), tokenAmount);

		
		_router.swapExactTokensForETHSupportingFeeOnTransferTokens(
			tokenAmount,
			0, // Accept any amount of ETH.
			path,
			address(this),
			block.timestamp
		);
	}
    
    function addLiquidity(uint256 tokenAmount,uint256 ethAmount) private{
		_approve(address(this), address(_router), tokenAmount);

		_router.addLiquidityETH{value:ethAmount}(
			address(this),
			tokenAmount,
			0,
			0,
			deadAddress,// tr
			block.timestamp
		);
	}

    function _approve(address owner,address spender, uint256 amount) internal{
        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);


    }




    //Fees related functions

    function addToExcluded(address toExclude) public onlyOwner{  
        _excludedFromFees[toExclude] = true;
    }

    function removeFromExcluded(address toRemove) public onlyOwner{
        _excludedFromFees[toRemove] = false;
    }
      function excludePresaleAddresses(address router, address presale) external onlyOwner {
        
        _liquidityHolders[address(router)] = true;
        _liquidityHolders[presale] = true;
        presaleAddresses[address(router)] = true;
        presaleAddresses[presale] = true;
       
    }
    function endPresaleStatus() public onlyOwner{
        buymktFee = 4;
        buyliqFee = 1;

        sellmktFee = 4;
        sellliqFee = 1;
        setSwapAndLiquify(true);
    }

    function updateThreshold(uint newThreshold) public onlyOwner{
        currentThreshold = newThreshold;

    }

    function setSwapAndLiquify(bool _enabled) public onlyOwner{
            swapAndLiquifyEnabled = _enabled;
    }


    //Marketing related 

    function setMktAddress(address newAddress) external onlyOwner{
        marketingAddress = payable(newAddress);
    }
    function transferAssetsETH(address payable to, uint256 amount) internal{
            to.transfer(amount);
    }
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updatecurrentbuyliqFee(uint256 newAmount) public onlyOwner{
            buyliqFee = newAmount;
    }
    function updatecurrentbuymktfee(uint256 newAmount) public onlyOwner{
             buymktFee= newAmount;
    }


      function updatecurrentsellLiqFee(uint256 newAmount) public onlyOwner{
             sellliqFee= newAmount;
    }
    function updatecurrentsellmktfee(uint256 newAmount)public onlyOwner{
             sellmktFee= newAmount;
    }
    function currentMaxWallet() public view returns(uint256){
        return maxWalletAmount;
    }
    function currentMaxTx() public view returns(uint256){
        return maxTxAmount;
    }
    function updateSwapTreshold(uint256 newVal) public onlyOwner{
        swapTreshold = newVal;
        requiredTokensToSwap = _totalSupply*swapTreshold/1000;
        
    }
    function currentTradeStatus() public view returns (bool){
        return tradeEnabled;   
    }
    function currentSwapTreshold() public view returns(uint256){
        return swapTreshold;
    }
    function currentTokensToSwap() public view returns(uint256){
        return requiredTokensToSwap;
    }
}


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

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

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":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"tokensSwappedDuringTokenomics","type":"event"},{"inputs":[],"name":"CrypticHour","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"CrypticHourOver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"detectedBot","type":"address"},{"internalType":"bool","name":"isBot","type":"bool"}],"name":"addBotWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"addLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toExclude","type":"address"}],"name":"addToExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentLiqTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentSwapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentThresholdInt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTradeStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuyliqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuymktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentmktTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellLiqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellmktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endPresaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toCheck","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"removeFromExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"requiredTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMktAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquify","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":"bool","name":"status","type":"bool"}],"name":"tradeStatus","outputs":[],"stateMutability":"nonpayable","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"destination","type":"address"}],"name":"unstuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenToClear","type":"address"},{"internalType":"address payable","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxTxTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxWalletTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuyliqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuymktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellLiqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellmktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600781526020017f444156494e434900000000000000000000000000000000000000000000000000815250600190805190602001906200005192919062000997565b506040518060400160405280600781526020017f444156494e434900000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000997565b506012600360006101000a81548160ff021916908360ff16021790555060006004556003600555600360065560026007556014600855600360009054906101000a900460ff166008620000f3919062000b89565b64174876e80062000105919062000cc6565b6009556103e86007546009546200011d919062000cc6565b62000129919062000af6565b600a55731dca17427e1ced1bfca7a64e1560f83ba48069fd601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606460055460095462000195919062000cc6565b620001a1919062000af6565b6011556064600654600954620001b8919062000cc6565b620001c4919062000af6565b6012556001601460006101000a81548160ff0219169083151502179055506001601460016101000a81548160ff0219169083151502179055506000601755600460185560016019556010601a556000601b556000601c60006101000a81548160ff0219169083151502179055506002601d556004601e556003601f5560106020556001602160016101000a81548160ff02191690831515021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525060006022556000602355348015620002af57600080fd5b50620002d0620002c46200080160201b60201c565b6200080960201b60201c565b600954600b6000620002e76200080160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200038557600080fd5b505afa1580156200039a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c0919062000a5e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200042357600080fd5b505afa15801562000438573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045e919062000a5e565b6040518363ffffffff1660e01b81526004016200047d92919062000aac565b602060405180830381600087803b1580156200049857600080fd5b505af1158015620004ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d3919062000a5e565b602560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c600062000529620008cd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080602460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160156000602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160156000620006a3620008cd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000781602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620008f660201b60201c565b620007916200080160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600954604051620007f2919062000ad9565b60405180910390a35062000e5c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b828054620009a59062000d72565b90600052602060002090601f016020900481019282620009c9576000855562000a15565b82601f10620009e457805160ff191683800117855562000a15565b8280016001018555821562000a15579182015b8281111562000a14578251825591602001919060010190620009f7565b5b50905062000a24919062000a28565b5090565b5b8082111562000a4357600081600090555060010162000a29565b5090565b60008151905062000a588162000e42565b92915050565b60006020828403121562000a7157600080fd5b600062000a818482850162000a47565b91505092915050565b62000a958162000d27565b82525050565b62000aa68162000d5b565b82525050565b600060408201905062000ac3600083018562000a8a565b62000ad2602083018462000a8a565b9392505050565b600060208201905062000af0600083018462000a9b565b92915050565b600062000b038262000d5b565b915062000b108362000d5b565b92508262000b235762000b2262000dd7565b5b828204905092915050565b6000808291508390505b600185111562000b805780860481111562000b585762000b5762000da8565b5b600185161562000b685780820291505b808102905062000b788562000e35565b945062000b38565b94509492505050565b600062000b968262000d5b565b915062000ba38362000d65565b925062000bd27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000bda565b905092915050565b60008262000bec576001905062000cbf565b8162000bfc576000905062000cbf565b816001811462000c15576002811462000c205762000c56565b600191505062000cbf565b60ff84111562000c355762000c3462000da8565b5b8360020a91508482111562000c4f5762000c4e62000da8565b5b5062000cbf565b5060208310610133831016604e8410600b841016171562000c905782820a90508381111562000c8a5762000c8962000da8565b5b62000cbf565b62000c9f848484600162000b2e565b9250905081840481111562000cb95762000cb862000da8565b5b81810290505b9392505050565b600062000cd38262000d5b565b915062000ce08362000d5b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d1c5762000d1b62000da8565b5b828202905092915050565b600062000d348262000d3b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000600282049050600182168062000d8b57607f821691505b6020821081141562000da25762000da162000e06565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b62000e4d8162000d27565b811462000e5957600080fd5b50565b60805160601c614bbf62000e826000396000818161124401526139e30152614bbf6000f3fe6080604052600436106103545760003560e01c80638cd0260c116101c6578063bf9eb540116100f7578063dd62ed3e11610095578063edcf19b21161006f578063edcf19b214610c11578063f2fde38b14610c3a578063f7da678514610c63578063f953cf3a14610c8c5761035b565b8063dd62ed3e14610b7e578063ddcf9b9814610bbb578063e1370dd314610be65761035b565b8063cba0e996116100d1578063cba0e99614610ac4578063d1294d4c14610b01578063d15bcf0f14610b2a578063d7d7442f14610b555761035b565b8063bf9eb54014610a5b578063c069b38f14610a84578063cb66453414610a9b5761035b565b8063a5ece94111610164578063a9059cbb1161013e578063a9059cbb1461098d578063b4d95a93146109ca578063b62496f5146109f3578063bf9b015914610a305761035b565b8063a5ece94114610910578063a6c38f591461093b578063a7a07452146109645761035b565b806395d89b41116101a057806395d89b41146108665780639a7a23d6146108915780639b136da4146108ba578063a04bdc81146108e55761035b565b80638cd0260c146107e75780638da5cb5b1461081057806390f502831461083b5761035b565b806349bd5a5e116102a05780636573c4df1161023e578063715018a611610218578063715018a614610753578063801527ce1461076a5780638628c23f14610793578063893d20e8146107bc5761035b565b80636573c4df146106c25780636df3333a146106eb57806370a08231146107165761035b565b80634bd7ace51161027a5780634bd7ace5146106185780635297defd146106435780635be76f111461066e57806364c16163146106975761035b565b806349bd5a5e146105995780634a0e963c146105c45780634a74bb02146105ed5761035b565b8063220f66961161030d57806327c8f835116102e757806327c8f835146104ef5780632d03420b1461051a578063313ce56714610543578063487a69051461056e5761035b565b8063220f66961461045c57806322788f861461048757806323b872dd146104b25761035b565b806306fdde03146103605780630882a8631461038b578063095ea7b3146103b4578063117ad03e146103f157806313b4a7f41461040857806318160ddd146104315761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610ca3565b604051610382919061450d565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad9190613d80565b610d35565b005b3480156103c057600080fd5b506103db60048036038101906103d69190613ca3565b610dbb565b6040516103e891906144f2565b60405180910390f35b3480156103fd57600080fd5b50610406610dd9565b005b34801561041457600080fd5b5061042f600480360381019061042a9190613bdc565b610ebd565b005b34801561043d57600080fd5b5061044661109d565b60405161045391906146ef565b60405180910390f35b34801561046857600080fd5b506104716110a7565b60405161047e91906144f2565b60405180910390f35b34801561049357600080fd5b5061049c6110ba565b6040516104a991906146ef565b60405180910390f35b3480156104be57600080fd5b506104d960048036038101906104d49190613c18565b6110c4565b6040516104e691906144f2565b60405180910390f35b3480156104fb57600080fd5b50610504611242565b6040516105119190614432565b60405180910390f35b34801561052657600080fd5b50610541600480360381019061053c9190613cdf565b611266565b005b34801561054f57600080fd5b506105586112ff565b60405161056591906146ef565b60405180910390f35b34801561057a57600080fd5b50610583611319565b60405161059091906146ef565b60405180910390f35b3480156105a557600080fd5b506105ae611323565b6040516105bb9190614432565b60405180910390f35b3480156105d057600080fd5b506105eb60048036038101906105e69190613b25565b611349565b005b3480156105f957600080fd5b50610602611420565b60405161060f91906144f2565b60405180910390f35b34801561062457600080fd5b5061062d611433565b60405161063a91906146ef565b60405180910390f35b34801561064f57600080fd5b5061065861143d565b60405161066591906146ef565b60405180910390f35b34801561067a57600080fd5b5061069560048036038101906106909190613b77565b611447565b005b3480156106a357600080fd5b506106ac611513565b6040516106b991906146ef565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e49190613d80565b61151d565b005b3480156106f757600080fd5b506107006115c5565b60405161070d91906146ef565b60405180910390f35b34801561072257600080fd5b5061073d60048036038101906107389190613b25565b6115cf565b60405161074a91906146ef565b60405180910390f35b34801561075f57600080fd5b50610768611618565b005b34801561077657600080fd5b50610791600480360381019061078c9190613cdf565b6116a0565b005b34801561079f57600080fd5b506107ba60048036038101906107b59190613d80565b611739565b005b3480156107c857600080fd5b506107d16117bf565b6040516107de9190614432565b60405180910390f35b3480156107f357600080fd5b5061080e60048036038101906108099190613d80565b6117ce565b005b34801561081c57600080fd5b50610825611854565b6040516108329190614432565b60405180910390f35b34801561084757600080fd5b5061085061187d565b60405161085d91906146ef565b60405180910390f35b34801561087257600080fd5b5061087b611887565b604051610888919061450d565b60405180910390f35b34801561089d57600080fd5b506108b860048036038101906108b39190613c67565b611919565b005b3480156108c657600080fd5b506108cf611a34565b6040516108dc91906146ef565b60405180910390f35b3480156108f157600080fd5b506108fa611a3e565b60405161090791906146ef565b60405180910390f35b34801561091c57600080fd5b50610925611a44565b604051610932919061444d565b60405180910390f35b34801561094757600080fd5b50610962600480360381019061095d9190613ba0565b611a6a565b005b34801561097057600080fd5b5061098b60048036038101906109869190613d80565b611b41565b005b34801561099957600080fd5b506109b460048036038101906109af9190613ca3565b611be9565b6040516109c191906144f2565b60405180910390f35b3480156109d657600080fd5b506109f160048036038101906109ec9190613b25565b611c07565b005b3480156109ff57600080fd5b50610a1a6004803603810190610a159190613b25565b611cde565b604051610a2791906144f2565b60405180910390f35b348015610a3c57600080fd5b50610a45611cfe565b604051610a5291906146ef565b60405180910390f35b348015610a6757600080fd5b50610a826004803603810190610a7d9190613b25565b611d08565b005b348015610a9057600080fd5b50610a99611dc8565b005b348015610aa757600080fd5b50610ac26004803603810190610abd9190613b25565b611e6d565b005b348015610ad057600080fd5b50610aeb6004803603810190610ae69190613b25565b611f44565b604051610af891906144f2565b60405180910390f35b348015610b0d57600080fd5b50610b286004803603810190610b239190613d80565b611f9a565b005b348015610b3657600080fd5b50610b3f612043565b604051610b4c91906144f2565b60405180910390f35b348015610b6157600080fd5b50610b7c6004803603810190610b779190613d80565b61205a565b005b348015610b8a57600080fd5b50610ba56004803603810190610ba09190613bdc565b6120e0565b604051610bb291906146ef565b60405180910390f35b348015610bc757600080fd5b50610bd0612167565b604051610bdd91906146ef565b60405180910390f35b348015610bf257600080fd5b50610bfb612171565b604051610c0891906146ef565b60405180910390f35b348015610c1d57600080fd5b50610c386004803603810190610c339190613d80565b61217b565b005b348015610c4657600080fd5b50610c616004803603810190610c5c9190613b25565b612201565b005b348015610c6f57600080fd5b50610c8a6004803603810190610c859190613d31565b6122f9565b005b348015610c9857600080fd5b50610ca1612408565b005b606060018054610cb290614a46565b80601f0160208091040260200160405190810160405280929190818152602001828054610cde90614a46565b8015610d2b5780601f10610d0057610100808354040283529160200191610d2b565b820191906000526020600020905b815481529060010190602001808311610d0e57829003601f168201915b5050505050905090565b610d3d6124b0565b73ffffffffffffffffffffffffffffffffffffffff16610d5b611854565b73ffffffffffffffffffffffffffffffffffffffff1614610db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da89061464f565b60405180910390fd5b8060178190555050565b6000610dcf610dc86124b0565b84846124b8565b6001905092915050565b610de16124b0565b73ffffffffffffffffffffffffffffffffffffffff16610dff611854565b73ffffffffffffffffffffffffffffffffffffffff1614610e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4c9061464f565b60405180910390fd5b601b544211610e99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e909061466f565b60405180910390fd5b601954601a8190555060175460188190555060006017819055506000601981905550565b610ec56124b0565b73ffffffffffffffffffffffffffffffffffffffff16610ee3611854565b73ffffffffffffffffffffffffffffffffffffffff1614610f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f309061464f565b60405180910390fd5b6001601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600954905090565b602160009054906101000a900460ff1681565b6000600854905090565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061110f6124b0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561118c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111839061462f565b60405180910390fd5b611197848484612683565b611237846111a36124b0565b84600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111ed6124b0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611232919061492b565b6124b8565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b61126e6124b0565b73ffffffffffffffffffffffffffffffffffffffff1661128c611854565b73ffffffffffffffffffffffffffffffffffffffff16146112e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d99061464f565b60405180910390fd5b80601c60006101000a81548160ff02191690831515021790555050565b6000600360009054906101000a900460ff1660ff16905090565b6000600a54905090565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113516124b0565b73ffffffffffffffffffffffffffffffffffffffff1661136f611854565b73ffffffffffffffffffffffffffffffffffffffff16146113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc9061464f565b60405180910390fd5b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602160019054906101000a900460ff1681565b6000601754905090565b6000601f54905090565b61144f6124b0565b73ffffffffffffffffffffffffffffffffffffffff1661146d611854565b73ffffffffffffffffffffffffffffffffffffffff16146114c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ba9061464f565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561150e573d6000803e3d6000fd5b505050565b6000602354905090565b6115256124b0565b73ffffffffffffffffffffffffffffffffffffffff16611543611854565b73ffffffffffffffffffffffffffffffffffffffff1614611599576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115909061464f565b60405180910390fd5b8060058190555060646005546009546115b291906148d1565b6115bc91906148a0565b60118190555050565b6000600754905090565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116206124b0565b73ffffffffffffffffffffffffffffffffffffffff1661163e611854565b73ffffffffffffffffffffffffffffffffffffffff1614611694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168b9061464f565b60405180910390fd5b61169e6000613140565b565b6116a86124b0565b73ffffffffffffffffffffffffffffffffffffffff166116c6611854565b73ffffffffffffffffffffffffffffffffffffffff161461171c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117139061464f565b60405180910390fd5b80602160016101000a81548160ff02191690831515021790555050565b6117416124b0565b73ffffffffffffffffffffffffffffffffffffffff1661175f611854565b73ffffffffffffffffffffffffffffffffffffffff16146117b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ac9061464f565b60405180910390fd5b80601f8190555050565b60006117c9611854565b905090565b6117d66124b0565b73ffffffffffffffffffffffffffffffffffffffff166117f4611854565b73ffffffffffffffffffffffffffffffffffffffff161461184a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118419061464f565b60405180910390fd5b80601d8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601d54905090565b60606002805461189690614a46565b80601f01602080910402602001604051908101604052809291908181526020018280546118c290614a46565b801561190f5780601f106118e45761010080835404028352916020019161190f565b820191906000526020600020905b8154815290600101906020018083116118f257829003601f168201915b5050505050905090565b6119216124b0565b73ffffffffffffffffffffffffffffffffffffffff1661193f611854565b73ffffffffffffffffffffffffffffffffffffffff1614611995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198c9061464f565b60405180910390fd5b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1d9061458f565b60405180910390fd5b611a308282613204565b5050565b6000601954905090565b600a5481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a726124b0565b73ffffffffffffffffffffffffffffffffffffffff16611a90611854565b73ffffffffffffffffffffffffffffffffffffffff1614611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add9061464f565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611b496124b0565b73ffffffffffffffffffffffffffffffffffffffff16611b67611854565b73ffffffffffffffffffffffffffffffffffffffff1614611bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb49061464f565b60405180910390fd5b806006819055506064600654600954611bd691906148d1565b611be091906148a0565b60128190555050565b6000611bfd611bf66124b0565b8484612683565b6001905092915050565b611c0f6124b0565b73ffffffffffffffffffffffffffffffffffffffff16611c2d611854565b73ffffffffffffffffffffffffffffffffffffffff1614611c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7a9061464f565b60405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000601254905090565b611d106124b0565b73ffffffffffffffffffffffffffffffffffffffff16611d2e611854565b73ffffffffffffffffffffffffffffffffffffffff1614611d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7b9061464f565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611dd06124b0565b73ffffffffffffffffffffffffffffffffffffffff16611dee611854565b73ffffffffffffffffffffffffffffffffffffffff1614611e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3b9061464f565b60405180910390fd5b601854601781905550601a546019819055506201518042611e65919061484a565b601b81905550565b611e756124b0565b73ffffffffffffffffffffffffffffffffffffffff16611e93611854565b73ffffffffffffffffffffffffffffffffffffffff1614611ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee09061464f565b60405180910390fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611fa26124b0565b73ffffffffffffffffffffffffffffffffffffffff16611fc0611854565b73ffffffffffffffffffffffffffffffffffffffff1614612016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200d9061464f565b60405180910390fd5b806007819055506103e860075460095461203091906148d1565b61203a91906148a0565b600a8190555050565b6000601c60009054906101000a900460ff16905090565b6120626124b0565b73ffffffffffffffffffffffffffffffffffffffff16612080611854565b73ffffffffffffffffffffffffffffffffffffffff16146120d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd9061464f565b60405180910390fd5b8060088190555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000602254905090565b6000601154905090565b6121836124b0565b73ffffffffffffffffffffffffffffffffffffffff166121a1611854565b73ffffffffffffffffffffffffffffffffffffffff16146121f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ee9061464f565b60405180910390fd5b8060198190555050565b6122096124b0565b73ffffffffffffffffffffffffffffffffffffffff16612227611854565b73ffffffffffffffffffffffffffffffffffffffff161461227d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122749061464f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e49061454f565b60405180910390fd5b6122f681613140565b50565b6123016124b0565b73ffffffffffffffffffffffffffffffffffffffff1661231f611854565b73ffffffffffffffffffffffffffffffffffffffff1614612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236c9061464f565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016123b0929190614468565b602060405180830381600087803b1580156123ca57600080fd5b505af11580156123de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124029190613d08565b50505050565b6124106124b0565b73ffffffffffffffffffffffffffffffffffffffff1661242e611854565b73ffffffffffffffffffffffffffffffffffffffff1614612484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247b9061464f565b60405180910390fd5b600460198190555060016017819055506004601f819055506001601d819055506124ae60016116a0565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251f906146af565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258f9061456f565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161267691906146ef565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ea9061468f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275a9061452f565b60405180910390fd5b600081116127a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279d906145ef565b60405180910390fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561282d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612824906145af565b60405180910390fd5b60001515601c60009054906101000a900460ff161515141561292a57601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128ea5750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612929576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129209061460f565b60405180910390fd5b5b60001515601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480156129da575060001515601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612a9e57601254821115612a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1b906145cf565b60405180910390fd5b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a9d5760115482612a87856115cf565b612a91919061484a565b1115612a9c57600080fd5b5b5b6000612aa9306115cf565b9050600a548110158015612aca5750602160009054906101000a900460ff16155b8015612b245750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612b3c5750602160019054906101000a900460ff165b15612b5a57600a548110612b5957600a549050612b58816132a5565b5b5b600060019050600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c015750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c13576000600481905550600090505b6000808215612f0f5760011515601360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480612ccb575060011515601360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d02906146cf565b60405180910390fd5b600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612db25750602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b15612e0e5760006004819055506064601f5487612dcf91906148d1565b612dd991906148a0565b91506064601d5487612deb91906148d1565b612df591906148a0565b90508082612e03919061484a565b600481905550612f0e565b600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612eb55750602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b15612f0d576000600481905550606460195487612ed291906148d1565b612edc91906148a0565b9150606460175487612eee91906148d1565b612ef891906148a0565b90508082612f06919061484a565b6004819055505b5b5b8585612f1b919061492b565b600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808287612f6b919061492b565b612f75919061492b565b600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612fc3919061484a565b92505081905550600081146130c457600454600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613023919061484a565b92505081905550806023600082825461303c919061484a565b925050819055508160226000828254613055919061484a565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516130bb91906146ef565b60405180910390a35b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045489613121919061492b565b60405161312e91906146ef565b60405180910390a35050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001602160006101000a81548160ff0219169083151502179055506132cb60235461333b565b6132d66022546133c6565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f019048160405161330591906146ef565b60405180910390a1600060228190555060006023819055506000602160006101000a81548160ff02191690831515021790555050565b600060028261334a91906148a0565b90506000818361335a919061492b565b9050600047905061336a836136ac565b60008147613378919061492b565b90506133848382613970565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516133b7939291906147be565b60405180910390a15050505050565b6000600267ffffffffffffffff811115613409577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156134375781602001602082028036833780820191505090505b5090503081600081518110613475577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561351757600080fd5b505afa15801561352b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061354f9190613b4e565b81600181518110613589577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506135f030602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124b8565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040161367695949392919061470a565b600060405180830381600087803b15801561369057600080fd5b505af11580156136a4573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff8111156136ef577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561371d5781602001602082028036833780820191505090505b509050308160008151811061375b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156137fd57600080fd5b505afa158015613811573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138359190613b4e565b8160018151811061386f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138d630602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124b8565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161393a959493929190614764565b600060405180830381600087803b15801561395457600080fd5b505af1158015613968573d6000803e3d6000fd5b505050505050565b61399d30602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124b8565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807f0000000000000000000000000000000000000000000000000000000000000000426040518863ffffffff1660e01b8152600401613a2496959493929190614491565b6060604051808303818588803b158015613a3d57600080fd5b505af1158015613a51573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613a769190613da9565b5050505050565b600081359050613a8c81614b16565b92915050565b600081519050613aa181614b16565b92915050565b600081359050613ab681614b2d565b92915050565b600081359050613acb81614b44565b92915050565b600081519050613ae081614b44565b92915050565b600081359050613af581614b5b565b92915050565b600081359050613b0a81614b72565b92915050565b600081519050613b1f81614b72565b92915050565b600060208284031215613b3757600080fd5b6000613b4584828501613a7d565b91505092915050565b600060208284031215613b6057600080fd5b6000613b6e84828501613a92565b91505092915050565b600060208284031215613b8957600080fd5b6000613b9784828501613aa7565b91505092915050565b60008060408385031215613bb357600080fd5b6000613bc185828601613aa7565b9250506020613bd285828601613abc565b9150509250929050565b60008060408385031215613bef57600080fd5b6000613bfd85828601613a7d565b9250506020613c0e85828601613a7d565b9150509250929050565b600080600060608486031215613c2d57600080fd5b6000613c3b86828701613a7d565b9350506020613c4c86828701613a7d565b9250506040613c5d86828701613afb565b9150509250925092565b60008060408385031215613c7a57600080fd5b6000613c8885828601613a7d565b9250506020613c9985828601613abc565b9150509250929050565b60008060408385031215613cb657600080fd5b6000613cc485828601613a7d565b9250506020613cd585828601613afb565b9150509250929050565b600060208284031215613cf157600080fd5b6000613cff84828501613abc565b91505092915050565b600060208284031215613d1a57600080fd5b6000613d2884828501613ad1565b91505092915050565b600080600060608486031215613d4657600080fd5b6000613d5486828701613ae6565b9350506020613d6586828701613aa7565b9250506040613d7686828701613afb565b9150509250925092565b600060208284031215613d9257600080fd5b6000613da084828501613afb565b91505092915050565b600080600060608486031215613dbe57600080fd5b6000613dcc86828701613b10565b9350506020613ddd86828701613b10565b9250506040613dee86828701613b10565b9150509250925092565b6000613e048383613e2e565b60208301905092915050565b613e19816149cb565b82525050565b613e2881614971565b82525050565b613e378161495f565b82525050565b613e468161495f565b82525050565b6000613e5782614805565b613e618185614828565b9350613e6c836147f5565b8060005b83811015613e9d578151613e848882613df8565b9750613e8f8361481b565b925050600181019050613e70565b5085935050505092915050565b613eb381614983565b82525050565b613ec2816149dd565b82525050565b6000613ed382614810565b613edd8185614839565b9350613eed818560208601614a13565b613ef681614b05565b840191505092915050565b6000613f0e602383614839565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613f74602683614839565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613fda602283614839565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614040603983614839565b91507f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008301527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006020830152604082019050919050565b60006140a6602683614839565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061410c602883614839565b91507f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008301527f78416d6f756e742e0000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614172603283614839565b91507f45524332303a207472616e73666572656420616d6f756e74206d75737420626560008301527f2067726561746572207468616e207a65726f00000000000000000000000000006020830152604082019050919050565b60006141d8601d83614839565b91507f43616e742074726164652c2074726164652069732064697361626c65640000006000830152602082019050919050565b6000614218602883614839565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b600061427e602083614839565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006142be603083614839565b91507f596f752063616e742063616c6c2043727970746963486f7572206d6f7265207460008301527f68616e206f6e63652070657220646179000000000000000000000000000000006020830152604082019050919050565b6000614324602583614839565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061438a602483614839565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006143f0601183614839565b91507f4e6f20626f74732063616e2074726164650000000000000000000000000000006000830152602082019050919050565b61442c816149c1565b82525050565b60006020820190506144476000830184613e3d565b92915050565b60006020820190506144626000830184613e1f565b92915050565b600060408201905061447d6000830185613e10565b61448a6020830184614423565b9392505050565b600060c0820190506144a66000830189613e3d565b6144b36020830188614423565b6144c06040830187613eb9565b6144cd6060830186613eb9565b6144da6080830185613e3d565b6144e760a0830184614423565b979650505050505050565b60006020820190506145076000830184613eaa565b92915050565b600060208201905081810360008301526145278184613ec8565b905092915050565b6000602082019050818103600083015261454881613f01565b9050919050565b6000602082019050818103600083015261456881613f67565b9050919050565b6000602082019050818103600083015261458881613fcd565b9050919050565b600060208201905081810360008301526145a881614033565b9050919050565b600060208201905081810360008301526145c881614099565b9050919050565b600060208201905081810360008301526145e8816140ff565b9050919050565b6000602082019050818103600083015261460881614165565b9050919050565b60006020820190508181036000830152614628816141cb565b9050919050565b600060208201905081810360008301526146488161420b565b9050919050565b6000602082019050818103600083015261466881614271565b9050919050565b60006020820190508181036000830152614688816142b1565b9050919050565b600060208201905081810360008301526146a881614317565b9050919050565b600060208201905081810360008301526146c88161437d565b9050919050565b600060208201905081810360008301526146e8816143e3565b9050919050565b60006020820190506147046000830184614423565b92915050565b600060a08201905061471f6000830188614423565b61472c6020830187613eb9565b818103604083015261473e8186613e4c565b905061474d6060830185613e10565b61475a6080830184614423565b9695505050505050565b600060a0820190506147796000830188614423565b6147866020830187613eb9565b81810360408301526147988186613e4c565b90506147a76060830185613e3d565b6147b46080830184614423565b9695505050505050565b60006060820190506147d36000830186614423565b6147e06020830185614423565b6147ed6040830184614423565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614855826149c1565b9150614860836149c1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561489557614894614a78565b5b828201905092915050565b60006148ab826149c1565b91506148b6836149c1565b9250826148c6576148c5614aa7565b5b828204905092915050565b60006148dc826149c1565b91506148e7836149c1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156149205761491f614a78565b5b828202905092915050565b6000614936826149c1565b9150614941836149c1565b92508282101561495457614953614a78565b5b828203905092915050565b600061496a826149a1565b9050919050565b600061497c826149a1565b9050919050565b60008115159050919050565b600061499a8261495f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006149d6826149ef565b9050919050565b60006149e8826149c1565b9050919050565b60006149fa82614a01565b9050919050565b6000614a0c826149a1565b9050919050565b60005b83811015614a31578082015181840152602081019050614a16565b83811115614a40576000848401525b50505050565b60006002820490506001821680614a5e57607f821691505b60208210811415614a7257614a71614ad6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b614b1f8161495f565b8114614b2a57600080fd5b50565b614b3681614971565b8114614b4157600080fd5b50565b614b4d81614983565b8114614b5857600080fd5b50565b614b648161498f565b8114614b6f57600080fd5b50565b614b7b816149c1565b8114614b8657600080fd5b5056fea264697066735822122009c56c3f0de66d8d170ee6faa97aa860b8b74b19046f8a8229eab225b9645cab64736f6c63430008000033

Deployed Bytecode

0x6080604052600436106103545760003560e01c80638cd0260c116101c6578063bf9eb540116100f7578063dd62ed3e11610095578063edcf19b21161006f578063edcf19b214610c11578063f2fde38b14610c3a578063f7da678514610c63578063f953cf3a14610c8c5761035b565b8063dd62ed3e14610b7e578063ddcf9b9814610bbb578063e1370dd314610be65761035b565b8063cba0e996116100d1578063cba0e99614610ac4578063d1294d4c14610b01578063d15bcf0f14610b2a578063d7d7442f14610b555761035b565b8063bf9eb54014610a5b578063c069b38f14610a84578063cb66453414610a9b5761035b565b8063a5ece94111610164578063a9059cbb1161013e578063a9059cbb1461098d578063b4d95a93146109ca578063b62496f5146109f3578063bf9b015914610a305761035b565b8063a5ece94114610910578063a6c38f591461093b578063a7a07452146109645761035b565b806395d89b41116101a057806395d89b41146108665780639a7a23d6146108915780639b136da4146108ba578063a04bdc81146108e55761035b565b80638cd0260c146107e75780638da5cb5b1461081057806390f502831461083b5761035b565b806349bd5a5e116102a05780636573c4df1161023e578063715018a611610218578063715018a614610753578063801527ce1461076a5780638628c23f14610793578063893d20e8146107bc5761035b565b80636573c4df146106c25780636df3333a146106eb57806370a08231146107165761035b565b80634bd7ace51161027a5780634bd7ace5146106185780635297defd146106435780635be76f111461066e57806364c16163146106975761035b565b806349bd5a5e146105995780634a0e963c146105c45780634a74bb02146105ed5761035b565b8063220f66961161030d57806327c8f835116102e757806327c8f835146104ef5780632d03420b1461051a578063313ce56714610543578063487a69051461056e5761035b565b8063220f66961461045c57806322788f861461048757806323b872dd146104b25761035b565b806306fdde03146103605780630882a8631461038b578063095ea7b3146103b4578063117ad03e146103f157806313b4a7f41461040857806318160ddd146104315761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610ca3565b604051610382919061450d565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad9190613d80565b610d35565b005b3480156103c057600080fd5b506103db60048036038101906103d69190613ca3565b610dbb565b6040516103e891906144f2565b60405180910390f35b3480156103fd57600080fd5b50610406610dd9565b005b34801561041457600080fd5b5061042f600480360381019061042a9190613bdc565b610ebd565b005b34801561043d57600080fd5b5061044661109d565b60405161045391906146ef565b60405180910390f35b34801561046857600080fd5b506104716110a7565b60405161047e91906144f2565b60405180910390f35b34801561049357600080fd5b5061049c6110ba565b6040516104a991906146ef565b60405180910390f35b3480156104be57600080fd5b506104d960048036038101906104d49190613c18565b6110c4565b6040516104e691906144f2565b60405180910390f35b3480156104fb57600080fd5b50610504611242565b6040516105119190614432565b60405180910390f35b34801561052657600080fd5b50610541600480360381019061053c9190613cdf565b611266565b005b34801561054f57600080fd5b506105586112ff565b60405161056591906146ef565b60405180910390f35b34801561057a57600080fd5b50610583611319565b60405161059091906146ef565b60405180910390f35b3480156105a557600080fd5b506105ae611323565b6040516105bb9190614432565b60405180910390f35b3480156105d057600080fd5b506105eb60048036038101906105e69190613b25565b611349565b005b3480156105f957600080fd5b50610602611420565b60405161060f91906144f2565b60405180910390f35b34801561062457600080fd5b5061062d611433565b60405161063a91906146ef565b60405180910390f35b34801561064f57600080fd5b5061065861143d565b60405161066591906146ef565b60405180910390f35b34801561067a57600080fd5b5061069560048036038101906106909190613b77565b611447565b005b3480156106a357600080fd5b506106ac611513565b6040516106b991906146ef565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e49190613d80565b61151d565b005b3480156106f757600080fd5b506107006115c5565b60405161070d91906146ef565b60405180910390f35b34801561072257600080fd5b5061073d60048036038101906107389190613b25565b6115cf565b60405161074a91906146ef565b60405180910390f35b34801561075f57600080fd5b50610768611618565b005b34801561077657600080fd5b50610791600480360381019061078c9190613cdf565b6116a0565b005b34801561079f57600080fd5b506107ba60048036038101906107b59190613d80565b611739565b005b3480156107c857600080fd5b506107d16117bf565b6040516107de9190614432565b60405180910390f35b3480156107f357600080fd5b5061080e60048036038101906108099190613d80565b6117ce565b005b34801561081c57600080fd5b50610825611854565b6040516108329190614432565b60405180910390f35b34801561084757600080fd5b5061085061187d565b60405161085d91906146ef565b60405180910390f35b34801561087257600080fd5b5061087b611887565b604051610888919061450d565b60405180910390f35b34801561089d57600080fd5b506108b860048036038101906108b39190613c67565b611919565b005b3480156108c657600080fd5b506108cf611a34565b6040516108dc91906146ef565b60405180910390f35b3480156108f157600080fd5b506108fa611a3e565b60405161090791906146ef565b60405180910390f35b34801561091c57600080fd5b50610925611a44565b604051610932919061444d565b60405180910390f35b34801561094757600080fd5b50610962600480360381019061095d9190613ba0565b611a6a565b005b34801561097057600080fd5b5061098b60048036038101906109869190613d80565b611b41565b005b34801561099957600080fd5b506109b460048036038101906109af9190613ca3565b611be9565b6040516109c191906144f2565b60405180910390f35b3480156109d657600080fd5b506109f160048036038101906109ec9190613b25565b611c07565b005b3480156109ff57600080fd5b50610a1a6004803603810190610a159190613b25565b611cde565b604051610a2791906144f2565b60405180910390f35b348015610a3c57600080fd5b50610a45611cfe565b604051610a5291906146ef565b60405180910390f35b348015610a6757600080fd5b50610a826004803603810190610a7d9190613b25565b611d08565b005b348015610a9057600080fd5b50610a99611dc8565b005b348015610aa757600080fd5b50610ac26004803603810190610abd9190613b25565b611e6d565b005b348015610ad057600080fd5b50610aeb6004803603810190610ae69190613b25565b611f44565b604051610af891906144f2565b60405180910390f35b348015610b0d57600080fd5b50610b286004803603810190610b239190613d80565b611f9a565b005b348015610b3657600080fd5b50610b3f612043565b604051610b4c91906144f2565b60405180910390f35b348015610b6157600080fd5b50610b7c6004803603810190610b779190613d80565b61205a565b005b348015610b8a57600080fd5b50610ba56004803603810190610ba09190613bdc565b6120e0565b604051610bb291906146ef565b60405180910390f35b348015610bc757600080fd5b50610bd0612167565b604051610bdd91906146ef565b60405180910390f35b348015610bf257600080fd5b50610bfb612171565b604051610c0891906146ef565b60405180910390f35b348015610c1d57600080fd5b50610c386004803603810190610c339190613d80565b61217b565b005b348015610c4657600080fd5b50610c616004803603810190610c5c9190613b25565b612201565b005b348015610c6f57600080fd5b50610c8a6004803603810190610c859190613d31565b6122f9565b005b348015610c9857600080fd5b50610ca1612408565b005b606060018054610cb290614a46565b80601f0160208091040260200160405190810160405280929190818152602001828054610cde90614a46565b8015610d2b5780601f10610d0057610100808354040283529160200191610d2b565b820191906000526020600020905b815481529060010190602001808311610d0e57829003601f168201915b5050505050905090565b610d3d6124b0565b73ffffffffffffffffffffffffffffffffffffffff16610d5b611854565b73ffffffffffffffffffffffffffffffffffffffff1614610db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da89061464f565b60405180910390fd5b8060178190555050565b6000610dcf610dc86124b0565b84846124b8565b6001905092915050565b610de16124b0565b73ffffffffffffffffffffffffffffffffffffffff16610dff611854565b73ffffffffffffffffffffffffffffffffffffffff1614610e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4c9061464f565b60405180910390fd5b601b544211610e99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e909061466f565b60405180910390fd5b601954601a8190555060175460188190555060006017819055506000601981905550565b610ec56124b0565b73ffffffffffffffffffffffffffffffffffffffff16610ee3611854565b73ffffffffffffffffffffffffffffffffffffffff1614610f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f309061464f565b60405180910390fd5b6001601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600954905090565b602160009054906101000a900460ff1681565b6000600854905090565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061110f6124b0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561118c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111839061462f565b60405180910390fd5b611197848484612683565b611237846111a36124b0565b84600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111ed6124b0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611232919061492b565b6124b8565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b61126e6124b0565b73ffffffffffffffffffffffffffffffffffffffff1661128c611854565b73ffffffffffffffffffffffffffffffffffffffff16146112e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d99061464f565b60405180910390fd5b80601c60006101000a81548160ff02191690831515021790555050565b6000600360009054906101000a900460ff1660ff16905090565b6000600a54905090565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113516124b0565b73ffffffffffffffffffffffffffffffffffffffff1661136f611854565b73ffffffffffffffffffffffffffffffffffffffff16146113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc9061464f565b60405180910390fd5b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602160019054906101000a900460ff1681565b6000601754905090565b6000601f54905090565b61144f6124b0565b73ffffffffffffffffffffffffffffffffffffffff1661146d611854565b73ffffffffffffffffffffffffffffffffffffffff16146114c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ba9061464f565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561150e573d6000803e3d6000fd5b505050565b6000602354905090565b6115256124b0565b73ffffffffffffffffffffffffffffffffffffffff16611543611854565b73ffffffffffffffffffffffffffffffffffffffff1614611599576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115909061464f565b60405180910390fd5b8060058190555060646005546009546115b291906148d1565b6115bc91906148a0565b60118190555050565b6000600754905090565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116206124b0565b73ffffffffffffffffffffffffffffffffffffffff1661163e611854565b73ffffffffffffffffffffffffffffffffffffffff1614611694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168b9061464f565b60405180910390fd5b61169e6000613140565b565b6116a86124b0565b73ffffffffffffffffffffffffffffffffffffffff166116c6611854565b73ffffffffffffffffffffffffffffffffffffffff161461171c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117139061464f565b60405180910390fd5b80602160016101000a81548160ff02191690831515021790555050565b6117416124b0565b73ffffffffffffffffffffffffffffffffffffffff1661175f611854565b73ffffffffffffffffffffffffffffffffffffffff16146117b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ac9061464f565b60405180910390fd5b80601f8190555050565b60006117c9611854565b905090565b6117d66124b0565b73ffffffffffffffffffffffffffffffffffffffff166117f4611854565b73ffffffffffffffffffffffffffffffffffffffff161461184a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118419061464f565b60405180910390fd5b80601d8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601d54905090565b60606002805461189690614a46565b80601f01602080910402602001604051908101604052809291908181526020018280546118c290614a46565b801561190f5780601f106118e45761010080835404028352916020019161190f565b820191906000526020600020905b8154815290600101906020018083116118f257829003601f168201915b5050505050905090565b6119216124b0565b73ffffffffffffffffffffffffffffffffffffffff1661193f611854565b73ffffffffffffffffffffffffffffffffffffffff1614611995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198c9061464f565b60405180910390fd5b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1d9061458f565b60405180910390fd5b611a308282613204565b5050565b6000601954905090565b600a5481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a726124b0565b73ffffffffffffffffffffffffffffffffffffffff16611a90611854565b73ffffffffffffffffffffffffffffffffffffffff1614611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add9061464f565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611b496124b0565b73ffffffffffffffffffffffffffffffffffffffff16611b67611854565b73ffffffffffffffffffffffffffffffffffffffff1614611bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb49061464f565b60405180910390fd5b806006819055506064600654600954611bd691906148d1565b611be091906148a0565b60128190555050565b6000611bfd611bf66124b0565b8484612683565b6001905092915050565b611c0f6124b0565b73ffffffffffffffffffffffffffffffffffffffff16611c2d611854565b73ffffffffffffffffffffffffffffffffffffffff1614611c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7a9061464f565b60405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000601254905090565b611d106124b0565b73ffffffffffffffffffffffffffffffffffffffff16611d2e611854565b73ffffffffffffffffffffffffffffffffffffffff1614611d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7b9061464f565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611dd06124b0565b73ffffffffffffffffffffffffffffffffffffffff16611dee611854565b73ffffffffffffffffffffffffffffffffffffffff1614611e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3b9061464f565b60405180910390fd5b601854601781905550601a546019819055506201518042611e65919061484a565b601b81905550565b611e756124b0565b73ffffffffffffffffffffffffffffffffffffffff16611e93611854565b73ffffffffffffffffffffffffffffffffffffffff1614611ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee09061464f565b60405180910390fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611fa26124b0565b73ffffffffffffffffffffffffffffffffffffffff16611fc0611854565b73ffffffffffffffffffffffffffffffffffffffff1614612016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200d9061464f565b60405180910390fd5b806007819055506103e860075460095461203091906148d1565b61203a91906148a0565b600a8190555050565b6000601c60009054906101000a900460ff16905090565b6120626124b0565b73ffffffffffffffffffffffffffffffffffffffff16612080611854565b73ffffffffffffffffffffffffffffffffffffffff16146120d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd9061464f565b60405180910390fd5b8060088190555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000602254905090565b6000601154905090565b6121836124b0565b73ffffffffffffffffffffffffffffffffffffffff166121a1611854565b73ffffffffffffffffffffffffffffffffffffffff16146121f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ee9061464f565b60405180910390fd5b8060198190555050565b6122096124b0565b73ffffffffffffffffffffffffffffffffffffffff16612227611854565b73ffffffffffffffffffffffffffffffffffffffff161461227d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122749061464f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e49061454f565b60405180910390fd5b6122f681613140565b50565b6123016124b0565b73ffffffffffffffffffffffffffffffffffffffff1661231f611854565b73ffffffffffffffffffffffffffffffffffffffff1614612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236c9061464f565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016123b0929190614468565b602060405180830381600087803b1580156123ca57600080fd5b505af11580156123de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124029190613d08565b50505050565b6124106124b0565b73ffffffffffffffffffffffffffffffffffffffff1661242e611854565b73ffffffffffffffffffffffffffffffffffffffff1614612484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247b9061464f565b60405180910390fd5b600460198190555060016017819055506004601f819055506001601d819055506124ae60016116a0565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251f906146af565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258f9061456f565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161267691906146ef565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ea9061468f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275a9061452f565b60405180910390fd5b600081116127a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279d906145ef565b60405180910390fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561282d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612824906145af565b60405180910390fd5b60001515601c60009054906101000a900460ff161515141561292a57601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128ea5750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612929576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129209061460f565b60405180910390fd5b5b60001515601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480156129da575060001515601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612a9e57601254821115612a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1b906145cf565b60405180910390fd5b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a9d5760115482612a87856115cf565b612a91919061484a565b1115612a9c57600080fd5b5b5b6000612aa9306115cf565b9050600a548110158015612aca5750602160009054906101000a900460ff16155b8015612b245750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612b3c5750602160019054906101000a900460ff165b15612b5a57600a548110612b5957600a549050612b58816132a5565b5b5b600060019050600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c015750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c13576000600481905550600090505b6000808215612f0f5760011515601360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480612ccb575060011515601360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d02906146cf565b60405180910390fd5b600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612db25750602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b15612e0e5760006004819055506064601f5487612dcf91906148d1565b612dd991906148a0565b91506064601d5487612deb91906148d1565b612df591906148a0565b90508082612e03919061484a565b600481905550612f0e565b600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612eb55750602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b15612f0d576000600481905550606460195487612ed291906148d1565b612edc91906148a0565b9150606460175487612eee91906148d1565b612ef891906148a0565b90508082612f06919061484a565b6004819055505b5b5b8585612f1b919061492b565b600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808287612f6b919061492b565b612f75919061492b565b600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612fc3919061484a565b92505081905550600081146130c457600454600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613023919061484a565b92505081905550806023600082825461303c919061484a565b925050819055508160226000828254613055919061484a565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516130bb91906146ef565b60405180910390a35b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045489613121919061492b565b60405161312e91906146ef565b60405180910390a35050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001602160006101000a81548160ff0219169083151502179055506132cb60235461333b565b6132d66022546133c6565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f019048160405161330591906146ef565b60405180910390a1600060228190555060006023819055506000602160006101000a81548160ff02191690831515021790555050565b600060028261334a91906148a0565b90506000818361335a919061492b565b9050600047905061336a836136ac565b60008147613378919061492b565b90506133848382613970565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516133b7939291906147be565b60405180910390a15050505050565b6000600267ffffffffffffffff811115613409577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156134375781602001602082028036833780820191505090505b5090503081600081518110613475577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561351757600080fd5b505afa15801561352b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061354f9190613b4e565b81600181518110613589577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506135f030602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124b8565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040161367695949392919061470a565b600060405180830381600087803b15801561369057600080fd5b505af11580156136a4573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff8111156136ef577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561371d5781602001602082028036833780820191505090505b509050308160008151811061375b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156137fd57600080fd5b505afa158015613811573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138359190613b4e565b8160018151811061386f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138d630602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124b8565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161393a959493929190614764565b600060405180830381600087803b15801561395457600080fd5b505af1158015613968573d6000803e3d6000fd5b505050505050565b61399d30602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124b8565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807f000000000000000000000000000000000000000000000000000000000000dead426040518863ffffffff1660e01b8152600401613a2496959493929190614491565b6060604051808303818588803b158015613a3d57600080fd5b505af1158015613a51573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613a769190613da9565b5050505050565b600081359050613a8c81614b16565b92915050565b600081519050613aa181614b16565b92915050565b600081359050613ab681614b2d565b92915050565b600081359050613acb81614b44565b92915050565b600081519050613ae081614b44565b92915050565b600081359050613af581614b5b565b92915050565b600081359050613b0a81614b72565b92915050565b600081519050613b1f81614b72565b92915050565b600060208284031215613b3757600080fd5b6000613b4584828501613a7d565b91505092915050565b600060208284031215613b6057600080fd5b6000613b6e84828501613a92565b91505092915050565b600060208284031215613b8957600080fd5b6000613b9784828501613aa7565b91505092915050565b60008060408385031215613bb357600080fd5b6000613bc185828601613aa7565b9250506020613bd285828601613abc565b9150509250929050565b60008060408385031215613bef57600080fd5b6000613bfd85828601613a7d565b9250506020613c0e85828601613a7d565b9150509250929050565b600080600060608486031215613c2d57600080fd5b6000613c3b86828701613a7d565b9350506020613c4c86828701613a7d565b9250506040613c5d86828701613afb565b9150509250925092565b60008060408385031215613c7a57600080fd5b6000613c8885828601613a7d565b9250506020613c9985828601613abc565b9150509250929050565b60008060408385031215613cb657600080fd5b6000613cc485828601613a7d565b9250506020613cd585828601613afb565b9150509250929050565b600060208284031215613cf157600080fd5b6000613cff84828501613abc565b91505092915050565b600060208284031215613d1a57600080fd5b6000613d2884828501613ad1565b91505092915050565b600080600060608486031215613d4657600080fd5b6000613d5486828701613ae6565b9350506020613d6586828701613aa7565b9250506040613d7686828701613afb565b9150509250925092565b600060208284031215613d9257600080fd5b6000613da084828501613afb565b91505092915050565b600080600060608486031215613dbe57600080fd5b6000613dcc86828701613b10565b9350506020613ddd86828701613b10565b9250506040613dee86828701613b10565b9150509250925092565b6000613e048383613e2e565b60208301905092915050565b613e19816149cb565b82525050565b613e2881614971565b82525050565b613e378161495f565b82525050565b613e468161495f565b82525050565b6000613e5782614805565b613e618185614828565b9350613e6c836147f5565b8060005b83811015613e9d578151613e848882613df8565b9750613e8f8361481b565b925050600181019050613e70565b5085935050505092915050565b613eb381614983565b82525050565b613ec2816149dd565b82525050565b6000613ed382614810565b613edd8185614839565b9350613eed818560208601614a13565b613ef681614b05565b840191505092915050565b6000613f0e602383614839565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613f74602683614839565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613fda602283614839565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614040603983614839565b91507f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008301527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006020830152604082019050919050565b60006140a6602683614839565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061410c602883614839565b91507f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008301527f78416d6f756e742e0000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614172603283614839565b91507f45524332303a207472616e73666572656420616d6f756e74206d75737420626560008301527f2067726561746572207468616e207a65726f00000000000000000000000000006020830152604082019050919050565b60006141d8601d83614839565b91507f43616e742074726164652c2074726164652069732064697361626c65640000006000830152602082019050919050565b6000614218602883614839565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b600061427e602083614839565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006142be603083614839565b91507f596f752063616e742063616c6c2043727970746963486f7572206d6f7265207460008301527f68616e206f6e63652070657220646179000000000000000000000000000000006020830152604082019050919050565b6000614324602583614839565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061438a602483614839565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006143f0601183614839565b91507f4e6f20626f74732063616e2074726164650000000000000000000000000000006000830152602082019050919050565b61442c816149c1565b82525050565b60006020820190506144476000830184613e3d565b92915050565b60006020820190506144626000830184613e1f565b92915050565b600060408201905061447d6000830185613e10565b61448a6020830184614423565b9392505050565b600060c0820190506144a66000830189613e3d565b6144b36020830188614423565b6144c06040830187613eb9565b6144cd6060830186613eb9565b6144da6080830185613e3d565b6144e760a0830184614423565b979650505050505050565b60006020820190506145076000830184613eaa565b92915050565b600060208201905081810360008301526145278184613ec8565b905092915050565b6000602082019050818103600083015261454881613f01565b9050919050565b6000602082019050818103600083015261456881613f67565b9050919050565b6000602082019050818103600083015261458881613fcd565b9050919050565b600060208201905081810360008301526145a881614033565b9050919050565b600060208201905081810360008301526145c881614099565b9050919050565b600060208201905081810360008301526145e8816140ff565b9050919050565b6000602082019050818103600083015261460881614165565b9050919050565b60006020820190508181036000830152614628816141cb565b9050919050565b600060208201905081810360008301526146488161420b565b9050919050565b6000602082019050818103600083015261466881614271565b9050919050565b60006020820190508181036000830152614688816142b1565b9050919050565b600060208201905081810360008301526146a881614317565b9050919050565b600060208201905081810360008301526146c88161437d565b9050919050565b600060208201905081810360008301526146e8816143e3565b9050919050565b60006020820190506147046000830184614423565b92915050565b600060a08201905061471f6000830188614423565b61472c6020830187613eb9565b818103604083015261473e8186613e4c565b905061474d6060830185613e10565b61475a6080830184614423565b9695505050505050565b600060a0820190506147796000830188614423565b6147866020830187613eb9565b81810360408301526147988186613e4c565b90506147a76060830185613e3d565b6147b46080830184614423565b9695505050505050565b60006060820190506147d36000830186614423565b6147e06020830185614423565b6147ed6040830184614423565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614855826149c1565b9150614860836149c1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561489557614894614a78565b5b828201905092915050565b60006148ab826149c1565b91506148b6836149c1565b9250826148c6576148c5614aa7565b5b828204905092915050565b60006148dc826149c1565b91506148e7836149c1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156149205761491f614a78565b5b828202905092915050565b6000614936826149c1565b9150614941836149c1565b92508282101561495457614953614a78565b5b828203905092915050565b600061496a826149a1565b9050919050565b600061497c826149a1565b9050919050565b60008115159050919050565b600061499a8261495f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006149d6826149ef565b9050919050565b60006149e8826149c1565b9050919050565b60006149fa82614a01565b9050919050565b6000614a0c826149a1565b9050919050565b60005b83811015614a31578082015181840152602081019050614a16565b83811115614a40576000848401525b50505050565b60006002820490506001821680614a5e57607f821691505b60208210811415614a7257614a71614ad6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b614b1f8161495f565b8114614b2a57600080fd5b50565b614b3681614971565b8114614b4157600080fd5b50565b614b4d81614983565b8114614b5857600080fd5b50565b614b648161498f565b8114614b6f57600080fd5b50565b614b7b816149c1565b8114614b8657600080fd5b5056fea264697066735822122009c56c3f0de66d8d170ee6faa97aa860b8b74b19046f8a8229eab225b9645cab64736f6c63430008000033

Deployed Bytecode Sourcemap

7648:15781:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12371:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22260:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12105:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13353:290;;;;;;;;;;;;;:::i;:::-;;20800:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11515:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9476:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14393:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12911:388;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9558:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18998:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12281:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23321:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10065:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20554:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9511:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13975:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14287:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18812:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11407:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12722:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23218:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11632:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7013:94;;;;;;;;;;;;;:::i;:::-;;21422:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22619:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11207:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22500:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6362:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14183:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12453:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21816:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14077:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8210:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8561:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13839:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12551:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11761:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20676:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8475:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22840:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21573:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13649:182;;;;;;;;;;;;;:::i;:::-;;18025:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14500:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22935:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23115:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21302:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11948:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11299:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22737:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22377:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7262:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18561:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21108:186;;;;;;;;;;;;;:::i;:::-;;12371:76;12410:13;12437:5;12430:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12371:76;:::o;22260:111::-;6593:12;:10;:12::i;:::-;6582:23;;:7;:5;:7::i;:::-;:23;;;6574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22354:9:::1;22342;:21;;;;22260:111:::0;:::o;12105:168::-;12182:4;12202:37;12211:12;:10;:12::i;:::-;12224:7;12232:6;12202:8;:37::i;:::-;12261:4;12254:11;;12105:168;;;;:::o;13353:290::-;6593:12;:10;:12::i;:::-;6582:23;;:7;:5;:7::i;:::-;:23;;;6574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13430:19:::1;;13412:15;:37;13404:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;13530:9;;13514:13;:25;;;;13567:9;;13551:13;:25;;;;13609:1;13597:9;:13;;;;13634:1;13622:9;:13;;;;13353:290::o:0;20800:302::-;6593:12;:10;:12::i;:::-;6582:23;;:7;:5;:7::i;:::-;:23;;;6574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20943:4:::1;20906:17;:34;20932:6;20906:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;20987:4;20958:17;:26;20976:7;20958:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;21038:4;21002:16;:33;21027:6;21002:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;21081:4;21053:16;:25;21070:7;21053:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20800:302:::0;;:::o;11515:106::-;11570:7;11600:12;;11593:19;;11515:106;:::o;9476:28::-;;;;;;;;;;;;;:::o;14393:101::-;14444:7;14470:16;;14463:23;;14393:101;:::o;12911:388::-;13043:4;13077:11;:19;13089:6;13077:19;;;;;;;;;;;;;;;:33;13097:12;:10;:12::i;:::-;13077:33;;;;;;;;;;;;;;;;13067:6;:43;;13059:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;13160:36;13170:6;13178:9;13189:6;13160:9;:36::i;:::-;13201:74;13210:6;13218:12;:10;:12::i;:::-;13268:6;13232:11;:19;13244:6;13232:19;;;;;;;;;;;;;;;:33;13252:12;:10;:12::i;:::-;13232:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;13201:8;:74::i;:::-;13287:4;13280:11;;12911:388;;;;;:::o;9558:81::-;;;:::o;18998:90::-;6593:12;:10;:12::i;:::-;6582:23;;:7;:5;:7::i;:::-;:23;;;6574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19074:6:::1;19059:12;;:21;;;;;;;;;;;;;;;;;;18998:90:::0;:::o;12281:84::-;12322:7;12348:9;;;;;;;;;;;12341:16;;;;12281:84;:::o;23321:105::-;23372:7;23398:20;;23391:27;;23321:105;:::o;10065:28::-;;;;;;;;;;;;;:::o;20554:114::-;6593:12;:10;:12::i;:::-;6582:23;;:7;:5;:7::i;:::-;:23;;;6574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20656:4:::1;20625:17;:28;20643:9;20625:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;20554:114:::0;:::o;9511:40::-;;;;;;;;;;;;;:::o;13975:96::-;14024:7;14054:9;;14047:16;;13975:96;:::o;14287:98::-;14337:7;14367:10;;14360:17;;14287:98;:::o;18812:178::-;6593:12;:10;:12::i;:::-;6582:23;;:7;:5;:7::i;:::-;:23;;;6574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18888:18:::1;18909:21;18888:42;;18949:11;18941:29;;:41;18971:10;18941:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;6653:1;18812:178:::0;:::o;11407:99::-;11458:7;11488:9;;11481:16;;11407:99;:::o;12722:175::-;6593:12;:10;:12::i;:::-;6582:23;;:7;:5;:7::i;:::-;:23;;;6574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12818:6:::1;12798:17;:26;;;;12884:3;12866:17;;12853:12;;:30;;;;:::i;:::-;:34;;;;:::i;:::-;12835:15;:52;;;;12722:175:::0;:::o;23218:97::-;23269:7;23295:12;;23288:19;;23218:97;:::o;11632:118::-;11698:7;11724:9;:18;11734:7;11724:18;;;;;;;;;;;;;;;;11717:25;;11632:118;;;:::o;7013:94::-;6593:12;:10;:12::i;:::-;6582:23;;:7;:5;:7::i;:::-;:23;;;6574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7078:21:::1;7096:1;7078:9;:21::i;:::-;7013:94::o:0;21422:113::-;6593:12;:10;:12::i;:::-;6582:23;;:7;:5;:7::i;:::-;:23;;;6574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21519:8:::1;21495:21;;:32;;;;;;;;;;;;;;;;;;21422:113:::0;:::o;22619:112::-;6593:12;:10;:12::i;:::-;6582:23;;:7;:5;:7::i;:::-;:23;;;6574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22714:9:::1;22702:10;:21;;;;22619:112:::0;:::o;11207:86::-;11248:7;11278;:5;:7::i;:::-;11271:14;;11207:86;:::o;22500:113::-;6593:12;:10;:12::i;:::-;6582:23;;:7;:5;:7::i;:::-;:23;;;6574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22596:9:::1;22584:10;:21;;;;22500:113:::0;:::o;6362:87::-;6408:7;6435:6;;;;;;;;;;;6428:13;;6362:87;:::o;14183:98::-;14233:7;14263:10;;14256:17;;14183:98;:::o;12453:88::-;12494:13;12526:7;12519:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12453:88;:::o;21816:242::-;6593:12;:10;:12::i;:::-;6582:23;;:7;:5;:7::i;:::-;:23;;;6574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21923:13:::1;;;;;;;;;;;21915:21;;:4;:21;;;;21907:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;22009:41;22038:4;22044:5;22009:28;:41::i;:::-;21816:242:::0;;:::o;14077:96::-;14126:7;14156:9;;14149:16;;14077:96;:::o;8210:71::-;;;;:::o;8561:93::-;;;;;;;;;;;;;:::o;13839:130::-;6593:12;:10;:12::i;:::-;6582:23;;:7;:5;:7::i;:::-;:23;;;6574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13956:5:::1;13930:10;:23;13941:11;13930:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;13839:130:::0;;:::o;12551:164::-;6593:12;:10;:12::i;:::-;6582:23;;:7;:5;:7::i;:::-;:23;;;6574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12639:6:::1;12623:13;:22;;;;12697:3;12683:13;;12670:12;;:26;;;;:::i;:::-;:30;;;;:::i;:::-;12656:11;:44;;;;12551:164:::0;:::o;11761:176::-;11841:4;11861:40;11871:12;:10;:12::i;:::-;11884:9;11894:6;11861:9;:40::i;:::-;11923:4;11916:11;;11761:176;;;;:::o;20676:116::-;6593:12;:10;:12::i;:::-;6582:23;;:7;:5;:7::i;:::-;:23;;;6574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20779:5:::1;20749:17;:27;20767:8;20749:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;20676:116:::0;:::o;8475:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;22840:89::-;22884:7;22910:11;;22903:18;;22840:89;:::o;21573:118::-;6593:12;:10;:12::i;:::-;6582:23;;:7;:5;:7::i;:::-;:23;;;6574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21672:10:::1;21645:16;;:38;;;;;;;;;;;;;;;;;;21573:118:::0;:::o;13649:182::-;6593:12;:10;:12::i;:::-;6582:23;;:7;:5;:7::i;:::-;:23;;;6574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13716:13:::1;;13704:9;:25;;;;13753:13;;13741:9;:25;;;;13818:5;13800:15;:23;;;;:::i;:::-;13778:19;:45;;;;13649:182::o:0;18025:123::-;6593:12;:10;:12::i;:::-;6582:23;;:7;:5;:7::i;:::-;:23;;;6574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18129:4:::1;18097:17;:29;18115:10;18097:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18025:123:::0;:::o;14500:118::-;14557:4;14584:17;:26;14602:7;14584:26;;;;;;;;;;;;;;;;;;;;;;;;;14577:33;;14500:118;;;:::o;22935:174::-;6593:12;:10;:12::i;:::-;6582:23;;:7;:5;:7::i;:::-;:23;;;6574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23021:6:::1;23006:12;:21;;;;23087:4;23074:12;;23061;;:25;;;;:::i;:::-;:30;;;;:::i;:::-;23038:20;:53;;;;22935:174:::0;:::o;23115:97::-;23166:4;23189:12;;;;;;;;;;;23182:19;;23115:97;:::o;21302:112::-;6593:12;:10;:12::i;:::-;6582:23;;:7;:5;:7::i;:::-;:23;;;6574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21392:12:::1;21373:16;:31;;;;21302:112:::0;:::o;11948:148::-;12031:7;12061:11;:18;12073:5;12061:18;;;;;;;;;;;;;;;:27;12080:7;12061:27;;;;;;;;;;;;;;;;12054:34;;11948:148;;;;:::o;11299:99::-;11350:7;11380:9;;11373:16;;11299:99;:::o;22737:97::-;22785:7;22811:15;;22804:22;;22737:97;:::o;22377:111::-;6593:12;:10;:12::i;:::-;6582:23;;:7;:5;:7::i;:::-;:23;;;6574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22471:9:::1;22460;:20;;;;22377:111:::0;:::o;7262:192::-;6593:12;:10;:12::i;:::-;6582:23;;:7;:5;:7::i;:::-;:23;;;6574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7371:1:::1;7351:22;;:8;:22;;;;7343:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7427:19;7437:8;7427:9;:19::i;:::-;7262:192:::0;:::o;18561:243::-;6593:12;:10;:12::i;:::-;6582:23;;:7;:5;:7::i;:::-;:23;;;6574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18754:12:::1;:21;;;18776:11;18789:6;18754:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18561:243:::0;;;:::o;21108:186::-;6593:12;:10;:12::i;:::-;6582:23;;:7;:5;:7::i;:::-;:23;;;6574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21175:1:::1;21163:9;:13;;;;21199:1;21187:9;:13;;;;21226:1;21213:10;:14;;;;21251:1;21238:10;:14;;;;21263:23;21281:4;21263:17;:23::i;:::-;21108:186::o:0;2322:98::-;2375:7;2402:10;2395:17;;2322:98;:::o;20186:322::-;20295:1;20278:19;;:5;:19;;;;20270:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20370:1;20351:21;;:7;:21;;;;20343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20448:6;20418:11;:18;20430:5;20418:18;;;;;;;;;;;;;;;:27;20437:7;20418:27;;;;;;;;;;;;;;;:36;;;;20480:7;20464:32;;20473:5;20464:32;;;20489:6;20464:32;;;;;;:::i;:::-;;;;;;;;20186:322;;;:::o;14626:3124::-;14740:1;14724:18;;:4;:18;;;;14716:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14811:1;14797:16;;:2;:16;;;;14789:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14881:1;14872:6;:10;14864:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14947:21;14971:9;:15;14981:4;14971:15;;;;;;;;;;;;;;;;14947:39;;15022:6;15005:13;:23;;14997:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15101:5;15085:21;;:12;;;;;;;;;;;:21;;;15082:141;;;15130:17;:21;15148:2;15130:21;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;15155:17;:23;15173:4;15155:23;;;;;;;;;;;;;;;;;;;;;;;;;15130:48;15122:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;15082:141;15259:5;15236:28;;:17;:21;15254:2;15236:21;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;:62;;;;;15293:5;15268:30;;:17;:23;15286:4;15268:23;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;15236:62;15233:282;;;15328:11;;15318:6;:21;;15310:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15407:13;;;;;;;;;;;15399:21;;:4;:21;;;15396:108;;;15472:15;;15462:6;15448:13;15458:2;15448:9;:13::i;:::-;:20;;;;:::i;:::-;:39;;15440:48;;;;;;15396:108;15233:282;15525:25;15553:24;15571:4;15553:9;:24::i;:::-;15525:52;;15611:20;;15591:17;:40;;:66;;;;;15641:16;;;;;;;;;;;15640:17;15591:66;:96;;;;;15674:13;;;;;;;;;;;15666:21;;:4;:21;;;;15591:96;:126;;;;;15696:21;;;;;;;;;;;15591:126;15588:352;;;15761:20;;15740:17;:41;15737:188;;15826:20;;15806:40;;15869:36;15887:17;15869;:36::i;:::-;15737:188;15588:352;15956:13;15972:4;15956:20;;16022:17;:23;16040:4;16022:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;16049:17;:21;16067:2;16049:21;;;;;;;;;;;;;;;;;;;;;;;;;16022:48;16019:159;;;16107:1;16091:13;:17;;;;16138:5;16127:16;;16019:159;16192:17;16222;16300:8;16297:981;;;16415:4;16395:24;;:10;:16;16406:4;16395:16;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;:46;;;;16437:4;16421:20;;:10;:14;16432:2;16421:14;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;16395:46;16392:120;;;16465:27;;;;;;;;;;:::i;:::-;;;;;;;;16392:120;16566:25;:29;16592:2;16566:29;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;;16613:7;;;;;;;;;;;16599:22;;:2;:22;;;;16566:55;16562:681;;;16666:1;16650:13;:17;;;;16726:3;16715:10;;16706:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;16694:35;;16788:3;16777:10;;16768:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;16756:35;;16846:9;16834;:21;;;;:::i;:::-;16818:13;:37;;;;16562:681;;;16929:25;:31;16955:4;16929:31;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;16980:7;;;;;;;;;;;16964:24;;:4;:24;;;;16929:59;16926:317;;;17047:1;17031:13;:17;;;;17102:3;17092:9;;17083:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;17071:34;;17159:3;17149:9;;17140:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;17128:34;;17213:9;17201;:21;;;;:::i;:::-;17185:13;:37;;;;16926:317;16562:681;16297:981;17328:6;17312:13;:22;;;;:::i;:::-;17294:9;:15;17304:4;17294:15;;;;;;;;;;;;;;;:40;;;;17387:9;17375;17366:6;:18;;;;:::i;:::-;:30;;;;:::i;:::-;17349:9;:13;17359:2;17349:13;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;17427:1;17414:9;:14;17411:249;;17464:13;;17436:9;:24;17454:4;17436:24;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;17535:9;17522;;:22;;;;;;;:::i;:::-;;;;;;;;17572:9;17559;;:22;;;;;;;:::i;:::-;;;;;;;;17615:4;17592:44;;17601:4;17592:44;;;17622:13;;17592:44;;;;;;:::i;:::-;;;;;;;;17411:249;17694:2;17679:39;;17688:4;17679:39;;;17704:13;;17697:6;:20;;;;:::i;:::-;17679:39;;;;;;:::i;:::-;;;;;;;;14626:3124;;;;;;;;:::o;7462:173::-;7518:16;7537:6;;;;;;;;;;;7518:25;;7563:8;7554:6;;:17;;;;;;;;;;;;;;;;;;7618:8;7587:40;;7608:8;7587:40;;;;;;;;;;;;7462:173;;:::o;22064:188::-;22181:5;22147:25;:31;22173:4;22147:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22238:5;22204:40;;22232:4;22204:40;;;;;;;;;;;;22064:188;;:::o;17756:262::-;10172:4;10153:16;;:23;;;;;;;;;;;;;;;;;;17836:25:::1;17851:9;;17836:14;:25::i;:::-;17872:30;17892:9;;17872:19;:30::i;:::-;17918:44;17948:13;17918:44;;;;;;:::i;:::-;;;;;;;;17985:1;17973:9;:13;;;;18009:1;17997:9;:13;;;;10206:5:::0;10187:16;;:24;;;;;;;;;;;;;;;;;;17756:262;:::o;19096:388::-;19158:12;19191:1;19173:15;:19;;;;:::i;:::-;19158:34;;19197:17;19235:4;19217:15;:22;;;;:::i;:::-;19197:42;;19244:22;19269:21;19244:46;;19297:22;19314:4;19297:16;:22::i;:::-;19324:18;19370:14;19345:21;:40;;;;:::i;:::-;19324:61;;19393:35;19406:9;19417:10;19393:12;:35::i;:::-;19438:41;19453:4;19458:10;19469:9;19438:41;;;;;;;;:::i;:::-;;;;;;;;19096:388;;;;;:::o;18154:399::-;18217:21;18255:1;18241:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18217:40;;18280:4;18262;18267:1;18262:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;18300:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18290:4;18295:1;18290:7;;;;;;;;;;;;;;;;;;;;;:24;;;;;;;;;;;18319:49;18336:4;18351:7;;;;;;;;;;;18361:6;18319:8;:49::i;:::-;18379:7;;;;;;;;;;;:58;;;18443:6;18455:1;18491:4;18501:16;;;;;;;;;;;18523:15;18379:164;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18154:399;;:::o;19492:397::-;19551:21;19589:1;19575:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19551:40;;19614:4;19596;19601:1;19596:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;19634:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19624:4;19629:1;19624:7;;;;;;;;;;;;;;;;;;;;;:24;;;;;;;;;;;19653:54;19670:4;19685:7;;;;;;;;;;;19695:11;19653:8;:54::i;:::-;19718:7;;;;;;;;;;;:58;;;19782:11;19799:1;19835:4;19853;19864:15;19718:166;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19492:397;;:::o;19901:277::-;19974:54;19991:4;20006:7;;;;;;;;;;;20016:11;19974:8;:54::i;:::-;20035:7;;;;;;;;;;;:23;;;20065:9;20089:4;20100:11;20117:1;20124;20131:11;20153:15;20035:138;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19901:277;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:133::-;;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;511:84;;;;:::o;601:137::-;;686:6;680:13;671:22;;702:30;726:5;702:30;:::i;:::-;661:77;;;;:::o;744:165::-;;841:6;828:20;819:29;;857:46;897:5;857:46;:::i;:::-;809:100;;;;:::o;915:139::-;;999:6;986:20;977:29;;1015:33;1042:5;1015:33;:::i;:::-;967:87;;;;:::o;1060:143::-;;1148:6;1142:13;1133:22;;1164:33;1191:5;1164:33;:::i;:::-;1123:80;;;;:::o;1209:262::-;;1317:2;1305:9;1296:7;1292:23;1288:32;1285:2;;;1333:1;1330;1323:12;1285:2;1376:1;1401:53;1446:7;1437:6;1426:9;1422:22;1401:53;:::i;:::-;1391:63;;1347:117;1275:196;;;;:::o;1477:284::-;;1596:2;1584:9;1575:7;1571:23;1567:32;1564:2;;;1612:1;1609;1602:12;1564:2;1655:1;1680:64;1736:7;1727:6;1716:9;1712:22;1680:64;:::i;:::-;1670:74;;1626:128;1554:207;;;;:::o;1767:278::-;;1883:2;1871:9;1862:7;1858:23;1854:32;1851:2;;;1899:1;1896;1889:12;1851:2;1942:1;1967:61;2020:7;2011:6;2000:9;1996:22;1967:61;:::i;:::-;1957:71;;1913:125;1841:204;;;;:::o;2051:417::-;;;2181:2;2169:9;2160:7;2156:23;2152:32;2149:2;;;2197:1;2194;2187:12;2149:2;2240:1;2265:61;2318:7;2309:6;2298:9;2294:22;2265:61;:::i;:::-;2255:71;;2211:125;2375:2;2401:50;2443:7;2434:6;2423:9;2419:22;2401:50;:::i;:::-;2391:60;;2346:115;2139:329;;;;;:::o;2474:407::-;;;2599:2;2587:9;2578:7;2574:23;2570:32;2567:2;;;2615:1;2612;2605:12;2567:2;2658:1;2683:53;2728:7;2719:6;2708:9;2704:22;2683:53;:::i;:::-;2673:63;;2629:117;2785:2;2811:53;2856:7;2847:6;2836:9;2832:22;2811:53;:::i;:::-;2801:63;;2756:118;2557:324;;;;;:::o;2887:552::-;;;;3029:2;3017:9;3008:7;3004:23;3000:32;2997:2;;;3045:1;3042;3035:12;2997:2;3088:1;3113:53;3158:7;3149:6;3138:9;3134:22;3113:53;:::i;:::-;3103:63;;3059:117;3215:2;3241:53;3286:7;3277:6;3266:9;3262:22;3241:53;:::i;:::-;3231:63;;3186:118;3343:2;3369:53;3414:7;3405:6;3394:9;3390:22;3369:53;:::i;:::-;3359:63;;3314:118;2987:452;;;;;:::o;3445:401::-;;;3567:2;3555:9;3546:7;3542:23;3538:32;3535:2;;;3583:1;3580;3573:12;3535:2;3626:1;3651:53;3696:7;3687:6;3676:9;3672:22;3651:53;:::i;:::-;3641:63;;3597:117;3753:2;3779:50;3821:7;3812:6;3801:9;3797:22;3779:50;:::i;:::-;3769:60;;3724:115;3525:321;;;;;:::o;3852:407::-;;;3977:2;3965:9;3956:7;3952:23;3948:32;3945:2;;;3993:1;3990;3983:12;3945:2;4036:1;4061:53;4106:7;4097:6;4086:9;4082:22;4061:53;:::i;:::-;4051:63;;4007:117;4163:2;4189:53;4234:7;4225:6;4214:9;4210:22;4189:53;:::i;:::-;4179:63;;4134:118;3935:324;;;;;:::o;4265:256::-;;4370:2;4358:9;4349:7;4345:23;4341:32;4338:2;;;4386:1;4383;4376:12;4338:2;4429:1;4454:50;4496:7;4487:6;4476:9;4472:22;4454:50;:::i;:::-;4444:60;;4400:114;4328:193;;;;:::o;4527:278::-;;4643:2;4631:9;4622:7;4618:23;4614:32;4611:2;;;4659:1;4656;4649:12;4611:2;4702:1;4727:61;4780:7;4771:6;4760:9;4756:22;4727:61;:::i;:::-;4717:71;;4673:125;4601:204;;;;:::o;4811:594::-;;;;4974:2;4962:9;4953:7;4949:23;4945:32;4942:2;;;4990:1;4987;4980:12;4942:2;5033:1;5058:66;5116:7;5107:6;5096:9;5092:22;5058:66;:::i;:::-;5048:76;;5004:130;5173:2;5199:61;5252:7;5243:6;5232:9;5228:22;5199:61;:::i;:::-;5189:71;;5144:126;5309:2;5335:53;5380:7;5371:6;5360:9;5356:22;5335:53;:::i;:::-;5325:63;;5280:118;4932:473;;;;;:::o;5411:262::-;;5519:2;5507:9;5498:7;5494:23;5490:32;5487:2;;;5535:1;5532;5525:12;5487:2;5578:1;5603:53;5648:7;5639:6;5628:9;5624:22;5603:53;:::i;:::-;5593:63;;5549:117;5477:196;;;;:::o;5679:596::-;;;;5832:2;5820:9;5811:7;5807:23;5803:32;5800:2;;;5848:1;5845;5838:12;5800:2;5891:1;5916:64;5972:7;5963:6;5952:9;5948:22;5916:64;:::i;:::-;5906:74;;5862:128;6029:2;6055:64;6111:7;6102:6;6091:9;6087:22;6055:64;:::i;:::-;6045:74;;6000:129;6168:2;6194:64;6250:7;6241:6;6230:9;6226:22;6194:64;:::i;:::-;6184:74;;6139:129;5790:485;;;;;:::o;6281:179::-;;6371:46;6413:3;6405:6;6371:46;:::i;:::-;6449:4;6444:3;6440:14;6426:28;;6361:99;;;;:::o;6466:147::-;6561:45;6600:5;6561:45;:::i;:::-;6556:3;6549:58;6539:74;;:::o;6619:142::-;6722:32;6748:5;6722:32;:::i;:::-;6717:3;6710:45;6700:61;;:::o;6767:108::-;6844:24;6862:5;6844:24;:::i;:::-;6839:3;6832:37;6822:53;;:::o;6881:118::-;6968:24;6986:5;6968:24;:::i;:::-;6963:3;6956:37;6946:53;;:::o;7035:732::-;;7183:54;7231:5;7183:54;:::i;:::-;7253:86;7332:6;7327:3;7253:86;:::i;:::-;7246:93;;7363:56;7413:5;7363:56;:::i;:::-;7442:7;7473:1;7458:284;7483:6;7480:1;7477:13;7458:284;;;7559:6;7553:13;7586:63;7645:3;7630:13;7586:63;:::i;:::-;7579:70;;7672:60;7725:6;7672:60;:::i;:::-;7662:70;;7518:224;7505:1;7502;7498:9;7493:14;;7458:284;;;7462:14;7758:3;7751:10;;7159:608;;;;;;;:::o;7773:109::-;7854:21;7869:5;7854:21;:::i;:::-;7849:3;7842:34;7832:50;;:::o;7888:147::-;7983:45;8022:5;7983:45;:::i;:::-;7978:3;7971:58;7961:74;;:::o;8041:364::-;;8157:39;8190:5;8157:39;:::i;:::-;8212:71;8276:6;8271:3;8212:71;:::i;:::-;8205:78;;8292:52;8337:6;8332:3;8325:4;8318:5;8314:16;8292:52;:::i;:::-;8369:29;8391:6;8369:29;:::i;:::-;8364:3;8360:39;8353:46;;8133:272;;;;;:::o;8411:367::-;;8574:67;8638:2;8633:3;8574:67;:::i;:::-;8567:74;;8671:34;8667:1;8662:3;8658:11;8651:55;8737:5;8732:2;8727:3;8723:12;8716:27;8769:2;8764:3;8760:12;8753:19;;8557:221;;;:::o;8784:370::-;;8947:67;9011:2;9006:3;8947:67;:::i;:::-;8940:74;;9044:34;9040:1;9035:3;9031:11;9024:55;9110:8;9105:2;9100:3;9096:12;9089:30;9145:2;9140:3;9136:12;9129:19;;8930:224;;;:::o;9160:366::-;;9323:67;9387:2;9382:3;9323:67;:::i;:::-;9316:74;;9420:34;9416:1;9411:3;9407:11;9400:55;9486:4;9481:2;9476:3;9472:12;9465:26;9517:2;9512:3;9508:12;9501:19;;9306:220;;;:::o;9532:389::-;;9695:67;9759:2;9754:3;9695:67;:::i;:::-;9688:74;;9792:34;9788:1;9783:3;9779:11;9772:55;9858:27;9853:2;9848:3;9844:12;9837:49;9912:2;9907:3;9903:12;9896:19;;9678:243;;;:::o;9927:370::-;;10090:67;10154:2;10149:3;10090:67;:::i;:::-;10083:74;;10187:34;10183:1;10178:3;10174:11;10167:55;10253:8;10248:2;10243:3;10239:12;10232:30;10288:2;10283:3;10279:12;10272:19;;10073:224;;;:::o;10303:372::-;;10466:67;10530:2;10525:3;10466:67;:::i;:::-;10459:74;;10563:34;10559:1;10554:3;10550:11;10543:55;10629:10;10624:2;10619:3;10615:12;10608:32;10666:2;10661:3;10657:12;10650:19;;10449:226;;;:::o;10681:382::-;;10844:67;10908:2;10903:3;10844:67;:::i;:::-;10837:74;;10941:34;10937:1;10932:3;10928:11;10921:55;11007:20;11002:2;10997:3;10993:12;10986:42;11054:2;11049:3;11045:12;11038:19;;10827:236;;;:::o;11069:327::-;;11232:67;11296:2;11291:3;11232:67;:::i;:::-;11225:74;;11329:31;11325:1;11320:3;11316:11;11309:52;11387:2;11382:3;11378:12;11371:19;;11215:181;;;:::o;11402:372::-;;11565:67;11629:2;11624:3;11565:67;:::i;:::-;11558:74;;11662:34;11658:1;11653:3;11649:11;11642:55;11728:10;11723:2;11718:3;11714:12;11707:32;11765:2;11760:3;11756:12;11749:19;;11548:226;;;:::o;11780:330::-;;11943:67;12007:2;12002:3;11943:67;:::i;:::-;11936:74;;12040:34;12036:1;12031:3;12027:11;12020:55;12101:2;12096:3;12092:12;12085:19;;11926:184;;;:::o;12116:380::-;;12279:67;12343:2;12338:3;12279:67;:::i;:::-;12272:74;;12376:34;12372:1;12367:3;12363:11;12356:55;12442:18;12437:2;12432:3;12428:12;12421:40;12487:2;12482:3;12478:12;12471:19;;12262:234;;;:::o;12502:369::-;;12665:67;12729:2;12724:3;12665:67;:::i;:::-;12658:74;;12762:34;12758:1;12753:3;12749:11;12742:55;12828:7;12823:2;12818:3;12814:12;12807:29;12862:2;12857:3;12853:12;12846:19;;12648:223;;;:::o;12877:368::-;;13040:67;13104:2;13099:3;13040:67;:::i;:::-;13033:74;;13137:34;13133:1;13128:3;13124:11;13117:55;13203:6;13198:2;13193:3;13189:12;13182:28;13236:2;13231:3;13227:12;13220:19;;13023:222;;;:::o;13251:315::-;;13414:67;13478:2;13473:3;13414:67;:::i;:::-;13407:74;;13511:19;13507:1;13502:3;13498:11;13491:40;13557:2;13552:3;13548:12;13541:19;;13397:169;;;:::o;13572:118::-;13659:24;13677:5;13659:24;:::i;:::-;13654:3;13647:37;13637:53;;:::o;13696:222::-;;13827:2;13816:9;13812:18;13804:26;;13840:71;13908:1;13897:9;13893:17;13884:6;13840:71;:::i;:::-;13794:124;;;;:::o;13924:254::-;;14071:2;14060:9;14056:18;14048:26;;14084:87;14168:1;14157:9;14153:17;14144:6;14084:87;:::i;:::-;14038:140;;;;:::o;14184:348::-;;14351:2;14340:9;14336:18;14328:26;;14364:79;14440:1;14429:9;14425:17;14416:6;14364:79;:::i;:::-;14453:72;14521:2;14510:9;14506:18;14497:6;14453:72;:::i;:::-;14318:214;;;;;:::o;14538:807::-;;14825:3;14814:9;14810:19;14802:27;;14839:71;14907:1;14896:9;14892:17;14883:6;14839:71;:::i;:::-;14920:72;14988:2;14977:9;14973:18;14964:6;14920:72;:::i;:::-;15002:80;15078:2;15067:9;15063:18;15054:6;15002:80;:::i;:::-;15092;15168:2;15157:9;15153:18;15144:6;15092:80;:::i;:::-;15182:73;15250:3;15239:9;15235:19;15226:6;15182:73;:::i;:::-;15265;15333:3;15322:9;15318:19;15309:6;15265:73;:::i;:::-;14792:553;;;;;;;;;:::o;15351:210::-;;15476:2;15465:9;15461:18;15453:26;;15489:65;15551:1;15540:9;15536:17;15527:6;15489:65;:::i;:::-;15443:118;;;;:::o;15567:313::-;;15718:2;15707:9;15703:18;15695:26;;15767:9;15761:4;15757:20;15753:1;15742:9;15738:17;15731:47;15795:78;15868:4;15859:6;15795:78;:::i;:::-;15787:86;;15685:195;;;;:::o;15886:419::-;;16090:2;16079:9;16075:18;16067:26;;16139:9;16133:4;16129:20;16125:1;16114:9;16110:17;16103:47;16167:131;16293:4;16167:131;:::i;:::-;16159:139;;16057:248;;;:::o;16311:419::-;;16515:2;16504:9;16500:18;16492:26;;16564:9;16558:4;16554:20;16550:1;16539:9;16535:17;16528:47;16592:131;16718:4;16592:131;:::i;:::-;16584:139;;16482:248;;;:::o;16736:419::-;;16940:2;16929:9;16925:18;16917:26;;16989:9;16983:4;16979:20;16975:1;16964:9;16960:17;16953:47;17017:131;17143:4;17017:131;:::i;:::-;17009:139;;16907:248;;;:::o;17161:419::-;;17365:2;17354:9;17350:18;17342:26;;17414:9;17408:4;17404:20;17400:1;17389:9;17385:17;17378:47;17442:131;17568:4;17442:131;:::i;:::-;17434:139;;17332:248;;;:::o;17586:419::-;;17790:2;17779:9;17775:18;17767:26;;17839:9;17833:4;17829:20;17825:1;17814:9;17810:17;17803:47;17867:131;17993:4;17867:131;:::i;:::-;17859:139;;17757:248;;;:::o;18011:419::-;;18215:2;18204:9;18200:18;18192:26;;18264:9;18258:4;18254:20;18250:1;18239:9;18235:17;18228:47;18292:131;18418:4;18292:131;:::i;:::-;18284:139;;18182:248;;;:::o;18436:419::-;;18640:2;18629:9;18625:18;18617:26;;18689:9;18683:4;18679:20;18675:1;18664:9;18660:17;18653:47;18717:131;18843:4;18717:131;:::i;:::-;18709:139;;18607:248;;;:::o;18861:419::-;;19065:2;19054:9;19050:18;19042:26;;19114:9;19108:4;19104:20;19100:1;19089:9;19085:17;19078:47;19142:131;19268:4;19142:131;:::i;:::-;19134:139;;19032:248;;;:::o;19286:419::-;;19490:2;19479:9;19475:18;19467:26;;19539:9;19533:4;19529:20;19525:1;19514:9;19510:17;19503:47;19567:131;19693:4;19567:131;:::i;:::-;19559:139;;19457:248;;;:::o;19711:419::-;;19915:2;19904:9;19900:18;19892:26;;19964:9;19958:4;19954:20;19950:1;19939:9;19935:17;19928:47;19992:131;20118:4;19992:131;:::i;:::-;19984:139;;19882:248;;;:::o;20136:419::-;;20340:2;20329:9;20325:18;20317:26;;20389:9;20383:4;20379:20;20375:1;20364:9;20360:17;20353:47;20417:131;20543:4;20417:131;:::i;:::-;20409:139;;20307:248;;;:::o;20561:419::-;;20765:2;20754:9;20750:18;20742:26;;20814:9;20808:4;20804:20;20800:1;20789:9;20785:17;20778:47;20842:131;20968:4;20842:131;:::i;:::-;20834:139;;20732:248;;;:::o;20986:419::-;;21190:2;21179:9;21175:18;21167:26;;21239:9;21233:4;21229:20;21225:1;21214:9;21210:17;21203:47;21267:131;21393:4;21267:131;:::i;:::-;21259:139;;21157:248;;;:::o;21411:419::-;;21615:2;21604:9;21600:18;21592:26;;21664:9;21658:4;21654:20;21650:1;21639:9;21635:17;21628:47;21692:131;21818:4;21692:131;:::i;:::-;21684:139;;21582:248;;;:::o;21836:222::-;;21967:2;21956:9;21952:18;21944:26;;21980:71;22048:1;22037:9;22033:17;22024:6;21980:71;:::i;:::-;21934:124;;;;:::o;22064:847::-;;22373:3;22362:9;22358:19;22350:27;;22387:71;22455:1;22444:9;22440:17;22431:6;22387:71;:::i;:::-;22468:80;22544:2;22533:9;22529:18;22520:6;22468:80;:::i;:::-;22595:9;22589:4;22585:20;22580:2;22569:9;22565:18;22558:48;22623:108;22726:4;22717:6;22623:108;:::i;:::-;22615:116;;22741:80;22817:2;22806:9;22802:18;22793:6;22741:80;:::i;:::-;22831:73;22899:3;22888:9;22884:19;22875:6;22831:73;:::i;:::-;22340:571;;;;;;;;:::o;22917:831::-;;23218:3;23207:9;23203:19;23195:27;;23232:71;23300:1;23289:9;23285:17;23276:6;23232:71;:::i;:::-;23313:80;23389:2;23378:9;23374:18;23365:6;23313:80;:::i;:::-;23440:9;23434:4;23430:20;23425:2;23414:9;23410:18;23403:48;23468:108;23571:4;23562:6;23468:108;:::i;:::-;23460:116;;23586:72;23654:2;23643:9;23639:18;23630:6;23586:72;:::i;:::-;23668:73;23736:3;23725:9;23721:19;23712:6;23668:73;:::i;:::-;23185:563;;;;;;;;:::o;23754:442::-;;23941:2;23930:9;23926:18;23918:26;;23954:71;24022:1;24011:9;24007:17;23998:6;23954:71;:::i;:::-;24035:72;24103:2;24092:9;24088:18;24079:6;24035:72;:::i;:::-;24117;24185:2;24174:9;24170:18;24161:6;24117:72;:::i;:::-;23908:288;;;;;;:::o;24202:132::-;;24292:3;24284:11;;24322:4;24317:3;24313:14;24305:22;;24274:60;;;:::o;24340:114::-;;24441:5;24435:12;24425:22;;24414:40;;;:::o;24460:99::-;;24546:5;24540:12;24530:22;;24519:40;;;:::o;24565:113::-;;24667:4;24662:3;24658:14;24650:22;;24640:38;;;:::o;24684:184::-;;24817:6;24812:3;24805:19;24857:4;24852:3;24848:14;24833:29;;24795:73;;;;:::o;24874:169::-;;24992:6;24987:3;24980:19;25032:4;25027:3;25023:14;25008:29;;24970:73;;;;:::o;25049:305::-;;25108:20;25126:1;25108:20;:::i;:::-;25103:25;;25142:20;25160:1;25142:20;:::i;:::-;25137:25;;25296:1;25228:66;25224:74;25221:1;25218:81;25215:2;;;25302:18;;:::i;:::-;25215:2;25346:1;25343;25339:9;25332:16;;25093:261;;;;:::o;25360:185::-;;25417:20;25435:1;25417:20;:::i;:::-;25412:25;;25451:20;25469:1;25451:20;:::i;:::-;25446:25;;25490:1;25480:2;;25495:18;;:::i;:::-;25480:2;25537:1;25534;25530:9;25525:14;;25402:143;;;;:::o;25551:348::-;;25614:20;25632:1;25614:20;:::i;:::-;25609:25;;25648:20;25666:1;25648:20;:::i;:::-;25643:25;;25836:1;25768:66;25764:74;25761:1;25758:81;25753:1;25746:9;25739:17;25735:105;25732:2;;;25843:18;;:::i;:::-;25732:2;25891:1;25888;25884:9;25873:20;;25599:300;;;;:::o;25905:191::-;;25965:20;25983:1;25965:20;:::i;:::-;25960:25;;25999:20;26017:1;25999:20;:::i;:::-;25994:25;;26038:1;26035;26032:8;26029:2;;;26043:18;;:::i;:::-;26029:2;26088:1;26085;26081:9;26073:17;;25950:146;;;;:::o;26102:96::-;;26168:24;26186:5;26168:24;:::i;:::-;26157:35;;26147:51;;;:::o;26204:104::-;;26278:24;26296:5;26278:24;:::i;:::-;26267:35;;26257:51;;;:::o;26314:90::-;;26391:5;26384:13;26377:21;26366:32;;26356:48;;;:::o;26410:109::-;;26489:24;26507:5;26489:24;:::i;:::-;26478:35;;26468:51;;;:::o;26525:126::-;;26602:42;26595:5;26591:54;26580:65;;26570:81;;;:::o;26657:77::-;;26723:5;26712:16;;26702:32;;;:::o;26740:134::-;;26831:37;26862:5;26831:37;:::i;:::-;26818:50;;26808:66;;;:::o;26880:121::-;;26971:24;26989:5;26971:24;:::i;:::-;26958:37;;26948:53;;;:::o;27007:126::-;;27090:37;27121:5;27090:37;:::i;:::-;27077:50;;27067:66;;;:::o;27139:113::-;;27222:24;27240:5;27222:24;:::i;:::-;27209:37;;27199:53;;;:::o;27258:307::-;27326:1;27336:113;27350:6;27347:1;27344:13;27336:113;;;27435:1;27430:3;27426:11;27420:18;27416:1;27411:3;27407:11;27400:39;27372:2;27369:1;27365:10;27360:15;;27336:113;;;27467:6;27464:1;27461:13;27458:2;;;27547:1;27538:6;27533:3;27529:16;27522:27;27458:2;27307:258;;;;:::o;27571:320::-;;27652:1;27646:4;27642:12;27632:22;;27699:1;27693:4;27689:12;27720:18;27710:2;;27776:4;27768:6;27764:17;27754:27;;27710:2;27838;27830:6;27827:14;27807:18;27804:38;27801:2;;;27857:18;;:::i;:::-;27801:2;27622:269;;;;:::o;27897:180::-;27945:77;27942:1;27935:88;28042:4;28039:1;28032:15;28066:4;28063:1;28056:15;28083:180;28131:77;28128:1;28121:88;28228:4;28225:1;28218:15;28252:4;28249:1;28242:15;28269:180;28317:77;28314:1;28307:88;28414:4;28411:1;28404:15;28438:4;28435:1;28428:15;28455:102;;28547:2;28543:7;28538:2;28531:5;28527:14;28523:28;28513:38;;28503:54;;;:::o;28563:122::-;28636:24;28654:5;28636:24;:::i;:::-;28629:5;28626:35;28616:2;;28675:1;28672;28665:12;28616:2;28606:79;:::o;28691:138::-;28772:32;28798:5;28772:32;:::i;:::-;28765:5;28762:43;28752:2;;28819:1;28816;28809:12;28752:2;28742:87;:::o;28835:116::-;28905:21;28920:5;28905:21;:::i;:::-;28898:5;28895:32;28885:2;;28941:1;28938;28931:12;28885:2;28875:76;:::o;28957:148::-;29043:37;29074:5;29043:37;:::i;:::-;29036:5;29033:48;29023:2;;29095:1;29092;29085:12;29023:2;29013:92;:::o;29111:122::-;29184:24;29202:5;29184:24;:::i;:::-;29177:5;29174:35;29164:2;;29223:1;29220;29213:12;29164:2;29154:79;:::o

Swarm Source

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