ETH Price: $3,715.70 (+4.31%)

Token

ERC-20: DONT BE A JEET (WAGYU)
 

Overview

Max Total Supply

10,000,000,000,000 WAGYU

Holders

10

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
150,097,860,000.990002880951109853 WAGYU

Value
$0.00
0x49a7ebd400fb6ab8f59a56375c03d7e9cff059ff
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:
WAGYU

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-01
*/

/**

          _____                    _____                    _____                _____                    _____          
         /\    \                  /\    \                  /\    \              |\    \                  /\    \         
        /::\____\                /::\    \                /::\    \             |:\____\                /::\____\        
       /:::/    /               /::::\    \              /::::\    \            |::|   |               /:::/    /        
      /:::/   _/___            /::::::\    \            /::::::\    \           |::|   |              /:::/    /         
     /:::/   /\    \          /:::/\:::\    \          /:::/\:::\    \          |::|   |             /:::/    /          
    /:::/   /::\____\        /:::/__\:::\    \        /:::/  \:::\    \         |::|   |            /:::/    /           
   /:::/   /:::/    /       /::::\   \:::\    \      /:::/    \:::\    \        |::|   |           /:::/    /            
  /:::/   /:::/   _/___    /::::::\   \:::\    \    /:::/    / \:::\    \       |::|___|______    /:::/    /      _____  
 /:::/___/:::/   /\    \  /:::/\:::\   \:::\    \  /:::/    /   \:::\ ___\      /::::::::\    \  /:::/____/      /\    \ 
|:::|   /:::/   /::\____\/:::/  \:::\   \:::\____\/:::/____/  ___\:::|    |    /::::::::::\____\|:::|    /      /::\____\
|:::|__/:::/   /:::/    /\::/    \:::\  /:::/    /\:::\    \ /\  /:::|____|   /:::/~~~~/~~      |:::|____\     /:::/    /
 \:::\/:::/   /:::/    /  \/____/ \:::\/:::/    /  \:::\    /::\ \::/    /   /:::/    /          \:::\    \   /:::/    / 
  \::::::/   /:::/    /            \::::::/    /    \:::\   \:::\ \/____/   /:::/    /            \:::\    \ /:::/    /  
   \::::/___/:::/    /              \::::/    /      \:::\   \:::\____\    /:::/    /              \:::\    /:::/    /   
    \:::\__/:::/    /               /:::/    /        \:::\  /:::/    /    \::/    /                \:::\__/:::/    /    
     \::::::::/    /               /:::/    /          \:::\/:::/    /      \/____/                  \::::::::/    /     
      \::::::/    /               /:::/    /            \::::::/    /                                 \::::::/    /      
       \::::/    /               /:::/    /              \::::/    /                                   \::::/    /       
        \::/____/                \::/    /                \::/____/                                     \::/____/        
         ~~                       \/____/                                                                ~~              

                          x WE EATING WAGYU FOR BREAKFAST LUNCH AND DINNER EVEN DURING A BEAR MARKET x
                         x COMMUNITY CAN CREATE A TELEGRAM IF YOU WOULD LIKE BUT DEV TEAM WE WILL STICK TO DISCORD x
                                            ___   ___  _  _ _____   ___ ___     _        _ ___ ___ _____ 
 |   \ / _ \| \| |_   _| | _ ) __|   /_\    _ | | __| __|_   _|
 | |) | (_) | .` | | |   | _ \ _|   / _ \  | || | _|| _|  | |  
 |___/ \___/|_|\_| |_|   |___/___| /_/ \_\  \__/|___|___| |_|  
                                                                                                                                                                                             

https://discord.gg/6Gm57FV


*/

// 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 WAGYU is Context,IERC20, Ownable{
    using Address for address;

    string private _name = "DONT BE A JEET";
    string private _symbol = "WAGYU";
    uint8 private _decimals = 18;
    uint256 totalFeeFortx = 0;
      uint256 maxWalletTreshold = 4;
    uint256 maxTxTreshold = 4;
    uint256 private swapTreshold =4;

    uint256 private currentThreshold = 20; //Once the token value goes up this number can be decreased (To reduce price impact on asset)
    uint256 private _totalSupply = (1000000000 * 10**4) * 10**_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(0x6192C65a68b2dfd4F3dF833738275ba6DDE003C8);
    uint256 maxWalletAmount = _totalSupply*maxWalletTreshold/100; // starting 1%
    uint256 maxTxAmount = _totalSupply*maxTxTreshold/100;
    mapping (address => bool) botWallets;
    bool botTradeEnabled = false;
    bool checkWalletSize = true;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private presaleAddresses;
    //15% buy tax 20% sell tax

    uint256 private buyliqFee = 1; //3
    uint256 private buyprevLiqFee = 1;
    uint256 private buymktFee = 0;//1
    uint256 private buyPrevmktFee = 1;
    uint256 WAGYUcooldown = 0;
    bool private tradeEnabled = false;

    
    uint256 private sellliqFee = 1;
    uint256 private sellprevLiqFee = 1;
    uint256 private sellmktFee = 0;
    uint256 private sellPrevmktFee = 1;
    


    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;// 1%

    }
     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 WAGYUU() public onlyOwner{
         require(block.timestamp > WAGYUcooldown, "You cant call WAGYU more than once per day");
         buyPrevmktFee = buymktFee;
         buyprevLiqFee = buyliqFee;
       
         buyliqFee = 0;
         buymktFee = 0;
    }
    function WAGYUOver() public onlyOwner{
         buyliqFee = buyprevLiqFee;
         buymktFee = buyPrevmktFee;
         WAGYUcooldown = 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 = 1;
        buyliqFee = 1;

        sellmktFee = 1;
        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":"WAGYUOver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"WAGYUU","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"}]

60a06040526040518060400160405280600e81526020017f444f4e542042452041204a454554000000000000000000000000000000000000815250600190805190602001906200005192919062000998565b506040518060400160405280600581526020017f5741475955000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000998565b506012600360006101000a81548160ff021916908360ff16021790555060006004556004600555600460065560046007556014600855600360009054906101000a900460ff16600a620000f3919062000b90565b6509184e72a00062000106919062000ccd565b6009556103e86007546009546200011e919062000ccd565b6200012a919062000afd565b600a55736192c65a68b2dfd4f3df833738275ba6dde003c8601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606460055460095462000196919062000ccd565b620001a2919062000afd565b6011556064600654600954620001b9919062000ccd565b620001c5919062000afd565b6012556000601460006101000a81548160ff0219169083151502179055506001601460016101000a81548160ff0219169083151502179055506001601755600160185560006019556001601a556000601b556000601c60006101000a81548160ff0219169083151502179055506001601d556001601e556000601f5560016020556001602160016101000a81548160ff02191690831515021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525060006022556000602355348015620002b057600080fd5b50620002d1620002c56200080260201b60201c565b6200080a60201b60201c565b600954600b6000620002e86200080260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200038657600080fd5b505afa1580156200039b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c1919062000a5f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200042457600080fd5b505afa15801562000439573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045f919062000a5f565b6040518363ffffffff1660e01b81526004016200047e92919062000ab3565b602060405180830381600087803b1580156200049957600080fd5b505af1158015620004ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d4919062000a5f565b602560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60006200052a620008ce60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080602460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160156000602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160156000620006a4620008ce60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000782602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620008f760201b60201c565b620007926200080260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600954604051620007f3919062000ae0565b60405180910390a35062000e68565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b828054620009a69062000d79565b90600052602060002090601f016020900481019282620009ca576000855562000a16565b82601f10620009e557805160ff191683800117855562000a16565b8280016001018555821562000a16579182015b8281111562000a15578251825591602001919060010190620009f8565b5b50905062000a25919062000a29565b5090565b5b8082111562000a4457600081600090555060010162000a2a565b5090565b60008151905062000a598162000e4e565b92915050565b60006020828403121562000a785762000a7762000e3c565b5b600062000a888482850162000a48565b91505092915050565b62000a9c8162000d2e565b82525050565b62000aad8162000d62565b82525050565b600060408201905062000aca600083018562000a91565b62000ad9602083018462000a91565b9392505050565b600060208201905062000af7600083018462000aa2565b92915050565b600062000b0a8262000d62565b915062000b178362000d62565b92508262000b2a5762000b2962000dde565b5b828204905092915050565b6000808291508390505b600185111562000b875780860481111562000b5f5762000b5e62000daf565b5b600185161562000b6f5780820291505b808102905062000b7f8562000e41565b945062000b3f565b94509492505050565b600062000b9d8262000d62565b915062000baa8362000d6c565b925062000bd97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000be1565b905092915050565b60008262000bf3576001905062000cc6565b8162000c03576000905062000cc6565b816001811462000c1c576002811462000c275762000c5d565b600191505062000cc6565b60ff84111562000c3c5762000c3b62000daf565b5b8360020a91508482111562000c565762000c5562000daf565b5b5062000cc6565b5060208310610133831016604e8410600b841016171562000c975782820a90508381111562000c915762000c9062000daf565b5b62000cc6565b62000ca6848484600162000b35565b9250905081840481111562000cc05762000cbf62000daf565b5b81810290505b9392505050565b600062000cda8262000d62565b915062000ce78362000d62565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d235762000d2262000daf565b5b828202905092915050565b600062000d3b8262000d42565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000600282049050600182168062000d9257607f821691505b6020821081141562000da95762000da862000e0d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b60008160011c9050919050565b62000e598162000d2e565b811462000e6557600080fd5b50565b60805160601c614c1a62000e8e6000396000818161120501526138ff0152614c1a6000f3fe6080604052600436106103545760003560e01c8063893d20e8116101c6578063bf9b0159116100f7578063dd62ed3e11610095578063edcf19b21161006f578063edcf19b214610c11578063f2fde38b14610c3a578063f7da678514610c63578063f953cf3a14610c8c5761035b565b8063dd62ed3e14610b7e578063ddcf9b9814610bbb578063e1370dd314610be65761035b565b8063cba0e996116100d1578063cba0e99614610ac4578063d1294d4c14610b01578063d15bcf0f14610b2a578063d7d7442f14610b555761035b565b8063bf9b015914610a47578063bf9eb54014610a72578063cb66453414610a9b5761035b565b8063a04bdc8111610164578063a7a074521161013e578063a7a074521461097b578063a9059cbb146109a4578063b4d95a93146109e1578063b62496f514610a0a5761035b565b8063a04bdc81146108fc578063a5ece94114610927578063a6c38f59146109525761035b565b806390f50283116101a057806390f502831461085257806395d89b411461087d5780639a7a23d6146108a85780639b136da4146108d15761035b565b8063893d20e8146107d35780638cd0260c146107fe5780638da5cb5b146108275761035b565b806349bd5a5e116102a05780636573c4df1161023e57806370a082311161021857806370a082311461072d578063715018a61461076a578063801527ce146107815780638628c23f146107aa5761035b565b80636573c4df146106c25780636df3333a146106eb578063702583d4146107165761035b565b80634bd7ace51161027a5780634bd7ace5146106185780635297defd146106435780635be76f111461066e57806364c16163146106975761035b565b806349bd5a5e146105995780634a0e963c146105c45780634a74bb02146105ed5761035b565b806322788f861161030d57806327c8f835116102e757806327c8f835146104ef5780632d03420b1461051a578063313ce56714610543578063487a69051461056e5761035b565b806322788f861461047057806323b872dd1461049b57806324d2531f146104d85761035b565b806306fdde03146103605780630882a8631461038b578063095ea7b3146103b457806313b4a7f4146103f157806318160ddd1461041a578063220f6696146104455761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610ca3565b6040516103829190614125565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad9190613cc8565b610d35565b005b3480156103c057600080fd5b506103db60048036038101906103d69190613bdb565b610dbb565b6040516103e8919061410a565b60405180910390f35b3480156103fd57600080fd5b5061041860048036038101906104139190613b08565b610dd9565b005b34801561042657600080fd5b5061042f610fb9565b60405161043c9190614307565b60405180910390f35b34801561045157600080fd5b5061045a610fc3565b604051610467919061410a565b60405180910390f35b34801561047c57600080fd5b50610485610fd6565b6040516104929190614307565b60405180910390f35b3480156104a757600080fd5b506104c260048036038101906104bd9190613b48565b610fe0565b6040516104cf919061410a565b60405180910390f35b3480156104e457600080fd5b506104ed61115e565b005b3480156104fb57600080fd5b50610504611203565b604051610511919061404a565b60405180910390f35b34801561052657600080fd5b50610541600480360381019061053c9190613c1b565b611227565b005b34801561054f57600080fd5b506105586112c0565b6040516105659190614307565b60405180910390f35b34801561057a57600080fd5b506105836112da565b6040516105909190614307565b60405180910390f35b3480156105a557600080fd5b506105ae6112e4565b6040516105bb919061404a565b60405180910390f35b3480156105d057600080fd5b506105eb60048036038101906105e69190613a41565b61130a565b005b3480156105f957600080fd5b506106026113e1565b60405161060f919061410a565b60405180910390f35b34801561062457600080fd5b5061062d6113f4565b60405161063a9190614307565b60405180910390f35b34801561064f57600080fd5b506106586113fe565b6040516106659190614307565b60405180910390f35b34801561067a57600080fd5b5061069560048036038101906106909190613a9b565b611408565b005b3480156106a357600080fd5b506106ac6114d4565b6040516106b99190614307565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e49190613cc8565b6114de565b005b3480156106f757600080fd5b50610700611586565b60405161070d9190614307565b60405180910390f35b34801561072257600080fd5b5061072b611590565b005b34801561073957600080fd5b50610754600480360381019061074f9190613a41565b611674565b6040516107619190614307565b60405180910390f35b34801561077657600080fd5b5061077f6116bd565b005b34801561078d57600080fd5b506107a860048036038101906107a39190613c1b565b611745565b005b3480156107b657600080fd5b506107d160048036038101906107cc9190613cc8565b6117de565b005b3480156107df57600080fd5b506107e8611864565b6040516107f5919061404a565b60405180910390f35b34801561080a57600080fd5b5061082560048036038101906108209190613cc8565b611873565b005b34801561083357600080fd5b5061083c6118f9565b604051610849919061404a565b60405180910390f35b34801561085e57600080fd5b50610867611922565b6040516108749190614307565b60405180910390f35b34801561088957600080fd5b5061089261192c565b60405161089f9190614125565b60405180910390f35b3480156108b457600080fd5b506108cf60048036038101906108ca9190613b9b565b6119be565b005b3480156108dd57600080fd5b506108e6611ad9565b6040516108f39190614307565b60405180910390f35b34801561090857600080fd5b50610911611ae3565b60405161091e9190614307565b60405180910390f35b34801561093357600080fd5b5061093c611ae9565b6040516109499190614065565b60405180910390f35b34801561095e57600080fd5b5061097960048036038101906109749190613ac8565b611b0f565b005b34801561098757600080fd5b506109a2600480360381019061099d9190613cc8565b611be6565b005b3480156109b057600080fd5b506109cb60048036038101906109c69190613bdb565b611c8e565b6040516109d8919061410a565b60405180910390f35b3480156109ed57600080fd5b50610a086004803603810190610a039190613a41565b611cac565b005b348015610a1657600080fd5b50610a316004803603810190610a2c9190613a41565b611d83565b604051610a3e919061410a565b60405180910390f35b348015610a5357600080fd5b50610a5c611da3565b604051610a699190614307565b60405180910390f35b348015610a7e57600080fd5b50610a996004803603810190610a949190613a41565b611dad565b005b348015610aa757600080fd5b50610ac26004803603810190610abd9190613a41565b611e6d565b005b348015610ad057600080fd5b50610aeb6004803603810190610ae69190613a41565b611f44565b604051610af8919061410a565b60405180910390f35b348015610b0d57600080fd5b50610b286004803603810190610b239190613cc8565b611f9a565b005b348015610b3657600080fd5b50610b3f612043565b604051610b4c919061410a565b60405180910390f35b348015610b6157600080fd5b50610b7c6004803603810190610b779190613cc8565b61205a565b005b348015610b8a57600080fd5b50610ba56004803603810190610ba09190613b08565b6120e0565b604051610bb29190614307565b60405180910390f35b348015610bc757600080fd5b50610bd0612167565b604051610bdd9190614307565b60405180910390f35b348015610bf257600080fd5b50610bfb612171565b604051610c089190614307565b60405180910390f35b348015610c1d57600080fd5b50610c386004803603810190610c339190613cc8565b61217b565b005b348015610c4657600080fd5b50610c616004803603810190610c5c9190613a41565b612201565b005b348015610c6f57600080fd5b50610c8a6004803603810190610c859190613c75565b6122f9565b005b348015610c9857600080fd5b50610ca1612408565b005b606060018054610cb29061465e565b80601f0160208091040260200160405190810160405280929190818152602001828054610cde9061465e565b8015610d2b5780601f10610d0057610100808354040283529160200191610d2b565b820191906000526020600020905b815481529060010190602001808311610d0e57829003601f168201915b5050505050905090565b610d3d6124b0565b73ffffffffffffffffffffffffffffffffffffffff16610d5b6118f9565b73ffffffffffffffffffffffffffffffffffffffff1614610db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da890614287565b60405180910390fd5b8060178190555050565b6000610dcf610dc86124b0565b84846124b8565b6001905092915050565b610de16124b0565b73ffffffffffffffffffffffffffffffffffffffff16610dff6118f9565b73ffffffffffffffffffffffffffffffffffffffff1614610e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4c90614287565b60405180910390fd5b6001601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600954905090565b602160009054906101000a900460ff1681565b6000600854905090565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061102b6124b0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109f90614267565b60405180910390fd5b6110b3848484612683565b611153846110bf6124b0565b84600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111096124b0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461114e9190614543565b6124b8565b600190509392505050565b6111666124b0565b73ffffffffffffffffffffffffffffffffffffffff166111846118f9565b73ffffffffffffffffffffffffffffffffffffffff16146111da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d190614287565b60405180910390fd5b601854601781905550601a5460198190555062015180426111fb9190614462565b601b81905550565b7f000000000000000000000000000000000000000000000000000000000000000081565b61122f6124b0565b73ffffffffffffffffffffffffffffffffffffffff1661124d6118f9565b73ffffffffffffffffffffffffffffffffffffffff16146112a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129a90614287565b60405180910390fd5b80601c60006101000a81548160ff02191690831515021790555050565b6000600360009054906101000a900460ff1660ff16905090565b6000600a54905090565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113126124b0565b73ffffffffffffffffffffffffffffffffffffffff166113306118f9565b73ffffffffffffffffffffffffffffffffffffffff1614611386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137d90614287565b60405180910390fd5b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602160019054906101000a900460ff1681565b6000601754905090565b6000601f54905090565b6114106124b0565b73ffffffffffffffffffffffffffffffffffffffff1661142e6118f9565b73ffffffffffffffffffffffffffffffffffffffff1614611484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147b90614287565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156114cf573d6000803e3d6000fd5b505050565b6000602354905090565b6114e66124b0565b73ffffffffffffffffffffffffffffffffffffffff166115046118f9565b73ffffffffffffffffffffffffffffffffffffffff161461155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155190614287565b60405180910390fd5b80600581905550606460055460095461157391906144e9565b61157d91906144b8565b60118190555050565b6000600754905090565b6115986124b0565b73ffffffffffffffffffffffffffffffffffffffff166115b66118f9565b73ffffffffffffffffffffffffffffffffffffffff161461160c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160390614287565b60405180910390fd5b601b544211611650576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611647906141e7565b60405180910390fd5b601954601a8190555060175460188190555060006017819055506000601981905550565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116c56124b0565b73ffffffffffffffffffffffffffffffffffffffff166116e36118f9565b73ffffffffffffffffffffffffffffffffffffffff1614611739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173090614287565b60405180910390fd5b6117436000613140565b565b61174d6124b0565b73ffffffffffffffffffffffffffffffffffffffff1661176b6118f9565b73ffffffffffffffffffffffffffffffffffffffff16146117c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b890614287565b60405180910390fd5b80602160016101000a81548160ff02191690831515021790555050565b6117e66124b0565b73ffffffffffffffffffffffffffffffffffffffff166118046118f9565b73ffffffffffffffffffffffffffffffffffffffff161461185a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185190614287565b60405180910390fd5b80601f8190555050565b600061186e6118f9565b905090565b61187b6124b0565b73ffffffffffffffffffffffffffffffffffffffff166118996118f9565b73ffffffffffffffffffffffffffffffffffffffff16146118ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e690614287565b60405180910390fd5b80601d8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601d54905090565b60606002805461193b9061465e565b80601f01602080910402602001604051908101604052809291908181526020018280546119679061465e565b80156119b45780601f10611989576101008083540402835291602001916119b4565b820191906000526020600020905b81548152906001019060200180831161199757829003601f168201915b5050505050905090565b6119c66124b0565b73ffffffffffffffffffffffffffffffffffffffff166119e46118f9565b73ffffffffffffffffffffffffffffffffffffffff1614611a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3190614287565b60405180910390fd5b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611acb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac2906141a7565b60405180910390fd5b611ad58282613204565b5050565b6000601954905090565b600a5481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b176124b0565b73ffffffffffffffffffffffffffffffffffffffff16611b356118f9565b73ffffffffffffffffffffffffffffffffffffffff1614611b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8290614287565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611bee6124b0565b73ffffffffffffffffffffffffffffffffffffffff16611c0c6118f9565b73ffffffffffffffffffffffffffffffffffffffff1614611c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5990614287565b60405180910390fd5b806006819055506064600654600954611c7b91906144e9565b611c8591906144b8565b60128190555050565b6000611ca2611c9b6124b0565b8484612683565b6001905092915050565b611cb46124b0565b73ffffffffffffffffffffffffffffffffffffffff16611cd26118f9565b73ffffffffffffffffffffffffffffffffffffffff1614611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f90614287565b60405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000601254905090565b611db56124b0565b73ffffffffffffffffffffffffffffffffffffffff16611dd36118f9565b73ffffffffffffffffffffffffffffffffffffffff1614611e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2090614287565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e756124b0565b73ffffffffffffffffffffffffffffffffffffffff16611e936118f9565b73ffffffffffffffffffffffffffffffffffffffff1614611ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee090614287565b60405180910390fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611fa26124b0565b73ffffffffffffffffffffffffffffffffffffffff16611fc06118f9565b73ffffffffffffffffffffffffffffffffffffffff1614612016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200d90614287565b60405180910390fd5b806007819055506103e860075460095461203091906144e9565b61203a91906144b8565b600a8190555050565b6000601c60009054906101000a900460ff16905090565b6120626124b0565b73ffffffffffffffffffffffffffffffffffffffff166120806118f9565b73ffffffffffffffffffffffffffffffffffffffff16146120d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd90614287565b60405180910390fd5b8060088190555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000602254905090565b6000601154905090565b6121836124b0565b73ffffffffffffffffffffffffffffffffffffffff166121a16118f9565b73ffffffffffffffffffffffffffffffffffffffff16146121f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ee90614287565b60405180910390fd5b8060198190555050565b6122096124b0565b73ffffffffffffffffffffffffffffffffffffffff166122276118f9565b73ffffffffffffffffffffffffffffffffffffffff161461227d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227490614287565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e490614167565b60405180910390fd5b6122f681613140565b50565b6123016124b0565b73ffffffffffffffffffffffffffffffffffffffff1661231f6118f9565b73ffffffffffffffffffffffffffffffffffffffff1614612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236c90614287565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016123b0929190614080565b602060405180830381600087803b1580156123ca57600080fd5b505af11580156123de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124029190613c48565b50505050565b6124106124b0565b73ffffffffffffffffffffffffffffffffffffffff1661242e6118f9565b73ffffffffffffffffffffffffffffffffffffffff1614612484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247b90614287565b60405180910390fd5b600160198190555060016017819055506001601f819055506001601d819055506124ae6001611745565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251f906142c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258f90614187565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126769190614307565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ea906142a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275a90614147565b60405180910390fd5b600081116127a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279d90614227565b60405180910390fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561282d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612824906141c7565b60405180910390fd5b60001515601c60009054906101000a900460ff161515141561292a57601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128ea5750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612929576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292090614247565b60405180910390fd5b5b60001515601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480156129da575060001515601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612a9e57601254821115612a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1b90614207565b60405180910390fd5b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a9d5760115482612a8785611674565b612a919190614462565b1115612a9c57600080fd5b5b5b6000612aa930611674565b9050600a548110158015612aca5750602160009054906101000a900460ff16155b8015612b245750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612b3c5750602160019054906101000a900460ff165b15612b5a57600a548110612b5957600a549050612b58816132a5565b5b5b600060019050600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c015750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c13576000600481905550600090505b6000808215612f0f5760011515601360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480612ccb575060011515601360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d02906142e7565b60405180910390fd5b600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612db25750602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b15612e0e5760006004819055506064601f5487612dcf91906144e9565b612dd991906144b8565b91506064601d5487612deb91906144e9565b612df591906144b8565b90508082612e039190614462565b600481905550612f0e565b600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612eb55750602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b15612f0d576000600481905550606460195487612ed291906144e9565b612edc91906144b8565b9150606460175487612eee91906144e9565b612ef891906144b8565b90508082612f069190614462565b6004819055505b5b5b8585612f1b9190614543565b600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808287612f6b9190614543565b612f759190614543565b600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612fc39190614462565b92505081905550600081146130c457600454600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130239190614462565b92505081905550806023600082825461303c9190614462565b9250508190555081602260008282546130559190614462565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516130bb9190614307565b60405180910390a35b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454896131219190614543565b60405161312e9190614307565b60405180910390a35050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001602160006101000a81548160ff0219169083151502179055506132cb60235461333b565b6132d66022546133c6565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f01904816040516133059190614307565b60405180910390a1600060228190555060006023819055506000602160006101000a81548160ff02191690831515021790555050565b600060028261334a91906144b8565b90506000818361335a9190614543565b9050600047905061336a8361363a565b600081476133789190614543565b9050613384838261388c565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516133b7939291906143d6565b60405180910390a15050505050565b6000600267ffffffffffffffff8111156133e3576133e261474c565b5b6040519080825280602002602001820160405280156134115781602001602082028036833780820191505090505b50905030816000815181106134295761342861471d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156134cb57600080fd5b505afa1580156134df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135039190613a6e565b816001815181106135175761351661471d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061357e30602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124b8565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401613604959493929190614322565b600060405180830381600087803b15801561361e57600080fd5b505af1158015613632573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff8111156136575761365661474c565b5b6040519080825280602002602001820160405280156136855781602001602082028036833780820191505090505b509050308160008151811061369d5761369c61471d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561373f57600080fd5b505afa158015613753573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137779190613a6e565b8160018151811061378b5761378a61471d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506137f230602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124b8565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161385695949392919061437c565b600060405180830381600087803b15801561387057600080fd5b505af1158015613884573d6000803e3d6000fd5b505050505050565b6138b930602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124b8565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807f0000000000000000000000000000000000000000000000000000000000000000426040518863ffffffff1660e01b8152600401613940969594939291906140a9565b6060604051808303818588803b15801561395957600080fd5b505af115801561396d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906139929190613cf5565b5050505050565b6000813590506139a881614b71565b92915050565b6000815190506139bd81614b71565b92915050565b6000813590506139d281614b88565b92915050565b6000813590506139e781614b9f565b92915050565b6000815190506139fc81614b9f565b92915050565b600081359050613a1181614bb6565b92915050565b600081359050613a2681614bcd565b92915050565b600081519050613a3b81614bcd565b92915050565b600060208284031215613a5757613a5661477b565b5b6000613a6584828501613999565b91505092915050565b600060208284031215613a8457613a8361477b565b5b6000613a92848285016139ae565b91505092915050565b600060208284031215613ab157613ab061477b565b5b6000613abf848285016139c3565b91505092915050565b60008060408385031215613adf57613ade61477b565b5b6000613aed858286016139c3565b9250506020613afe858286016139d8565b9150509250929050565b60008060408385031215613b1f57613b1e61477b565b5b6000613b2d85828601613999565b9250506020613b3e85828601613999565b9150509250929050565b600080600060608486031215613b6157613b6061477b565b5b6000613b6f86828701613999565b9350506020613b8086828701613999565b9250506040613b9186828701613a17565b9150509250925092565b60008060408385031215613bb257613bb161477b565b5b6000613bc085828601613999565b9250506020613bd1858286016139d8565b9150509250929050565b60008060408385031215613bf257613bf161477b565b5b6000613c0085828601613999565b9250506020613c1185828601613a17565b9150509250929050565b600060208284031215613c3157613c3061477b565b5b6000613c3f848285016139d8565b91505092915050565b600060208284031215613c5e57613c5d61477b565b5b6000613c6c848285016139ed565b91505092915050565b600080600060608486031215613c8e57613c8d61477b565b5b6000613c9c86828701613a02565b9350506020613cad868287016139c3565b9250506040613cbe86828701613a17565b9150509250925092565b600060208284031215613cde57613cdd61477b565b5b6000613cec84828501613a17565b91505092915050565b600080600060608486031215613d0e57613d0d61477b565b5b6000613d1c86828701613a2c565b9350506020613d2d86828701613a2c565b9250506040613d3e86828701613a2c565b9150509250925092565b6000613d548383613d7e565b60208301905092915050565b613d69816145e3565b82525050565b613d7881614589565b82525050565b613d8781614577565b82525050565b613d9681614577565b82525050565b6000613da78261441d565b613db18185614440565b9350613dbc8361440d565b8060005b83811015613ded578151613dd48882613d48565b9750613ddf83614433565b925050600181019050613dc0565b5085935050505092915050565b613e038161459b565b82525050565b613e12816145f5565b82525050565b6000613e2382614428565b613e2d8185614451565b9350613e3d81856020860161462b565b613e4681614780565b840191505092915050565b6000613e5e602383614451565b9150613e6982614791565b604082019050919050565b6000613e81602683614451565b9150613e8c826147e0565b604082019050919050565b6000613ea4602283614451565b9150613eaf8261482f565b604082019050919050565b6000613ec7603983614451565b9150613ed28261487e565b604082019050919050565b6000613eea602683614451565b9150613ef5826148cd565b604082019050919050565b6000613f0d602a83614451565b9150613f188261491c565b604082019050919050565b6000613f30602883614451565b9150613f3b8261496b565b604082019050919050565b6000613f53603283614451565b9150613f5e826149ba565b604082019050919050565b6000613f76601d83614451565b9150613f8182614a09565b602082019050919050565b6000613f99602883614451565b9150613fa482614a32565b604082019050919050565b6000613fbc602083614451565b9150613fc782614a81565b602082019050919050565b6000613fdf602583614451565b9150613fea82614aaa565b604082019050919050565b6000614002602483614451565b915061400d82614af9565b604082019050919050565b6000614025601183614451565b915061403082614b48565b602082019050919050565b614044816145d9565b82525050565b600060208201905061405f6000830184613d8d565b92915050565b600060208201905061407a6000830184613d6f565b92915050565b60006040820190506140956000830185613d60565b6140a2602083018461403b565b9392505050565b600060c0820190506140be6000830189613d8d565b6140cb602083018861403b565b6140d86040830187613e09565b6140e56060830186613e09565b6140f26080830185613d8d565b6140ff60a083018461403b565b979650505050505050565b600060208201905061411f6000830184613dfa565b92915050565b6000602082019050818103600083015261413f8184613e18565b905092915050565b6000602082019050818103600083015261416081613e51565b9050919050565b6000602082019050818103600083015261418081613e74565b9050919050565b600060208201905081810360008301526141a081613e97565b9050919050565b600060208201905081810360008301526141c081613eba565b9050919050565b600060208201905081810360008301526141e081613edd565b9050919050565b6000602082019050818103600083015261420081613f00565b9050919050565b6000602082019050818103600083015261422081613f23565b9050919050565b6000602082019050818103600083015261424081613f46565b9050919050565b6000602082019050818103600083015261426081613f69565b9050919050565b6000602082019050818103600083015261428081613f8c565b9050919050565b600060208201905081810360008301526142a081613faf565b9050919050565b600060208201905081810360008301526142c081613fd2565b9050919050565b600060208201905081810360008301526142e081613ff5565b9050919050565b6000602082019050818103600083015261430081614018565b9050919050565b600060208201905061431c600083018461403b565b92915050565b600060a082019050614337600083018861403b565b6143446020830187613e09565b81810360408301526143568186613d9c565b90506143656060830185613d60565b614372608083018461403b565b9695505050505050565b600060a082019050614391600083018861403b565b61439e6020830187613e09565b81810360408301526143b08186613d9c565b90506143bf6060830185613d8d565b6143cc608083018461403b565b9695505050505050565b60006060820190506143eb600083018661403b565b6143f8602083018561403b565b614405604083018461403b565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061446d826145d9565b9150614478836145d9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156144ad576144ac614690565b5b828201905092915050565b60006144c3826145d9565b91506144ce836145d9565b9250826144de576144dd6146bf565b5b828204905092915050565b60006144f4826145d9565b91506144ff836145d9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561453857614537614690565b5b828202905092915050565b600061454e826145d9565b9150614559836145d9565b92508282101561456c5761456b614690565b5b828203905092915050565b6000614582826145b9565b9050919050565b6000614594826145b9565b9050919050565b60008115159050919050565b60006145b282614577565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006145ee82614607565b9050919050565b6000614600826145d9565b9050919050565b600061461282614619565b9050919050565b6000614624826145b9565b9050919050565b60005b8381101561464957808201518184015260208101905061462e565b83811115614658576000848401525b50505050565b6000600282049050600182168061467657607f821691505b6020821081141561468a576146896146ee565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f596f752063616e742063616c6c205741475955206d6f7265207468616e206f6e60008201527f6365207065722064617900000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e73666572656420616d6f756e74206d75737420626560008201527f2067726561746572207468616e207a65726f0000000000000000000000000000602082015250565b7f43616e742074726164652c2074726164652069732064697361626c6564000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4e6f20626f74732063616e207472616465000000000000000000000000000000600082015250565b614b7a81614577565b8114614b8557600080fd5b50565b614b9181614589565b8114614b9c57600080fd5b50565b614ba88161459b565b8114614bb357600080fd5b50565b614bbf816145a7565b8114614bca57600080fd5b50565b614bd6816145d9565b8114614be157600080fd5b5056fea26469706673582212204ca20b0aae7f6180a03f289c20429421010c76faf150360dc65118b91ff7c4d064736f6c63430008070033

Deployed Bytecode

0x6080604052600436106103545760003560e01c8063893d20e8116101c6578063bf9b0159116100f7578063dd62ed3e11610095578063edcf19b21161006f578063edcf19b214610c11578063f2fde38b14610c3a578063f7da678514610c63578063f953cf3a14610c8c5761035b565b8063dd62ed3e14610b7e578063ddcf9b9814610bbb578063e1370dd314610be65761035b565b8063cba0e996116100d1578063cba0e99614610ac4578063d1294d4c14610b01578063d15bcf0f14610b2a578063d7d7442f14610b555761035b565b8063bf9b015914610a47578063bf9eb54014610a72578063cb66453414610a9b5761035b565b8063a04bdc8111610164578063a7a074521161013e578063a7a074521461097b578063a9059cbb146109a4578063b4d95a93146109e1578063b62496f514610a0a5761035b565b8063a04bdc81146108fc578063a5ece94114610927578063a6c38f59146109525761035b565b806390f50283116101a057806390f502831461085257806395d89b411461087d5780639a7a23d6146108a85780639b136da4146108d15761035b565b8063893d20e8146107d35780638cd0260c146107fe5780638da5cb5b146108275761035b565b806349bd5a5e116102a05780636573c4df1161023e57806370a082311161021857806370a082311461072d578063715018a61461076a578063801527ce146107815780638628c23f146107aa5761035b565b80636573c4df146106c25780636df3333a146106eb578063702583d4146107165761035b565b80634bd7ace51161027a5780634bd7ace5146106185780635297defd146106435780635be76f111461066e57806364c16163146106975761035b565b806349bd5a5e146105995780634a0e963c146105c45780634a74bb02146105ed5761035b565b806322788f861161030d57806327c8f835116102e757806327c8f835146104ef5780632d03420b1461051a578063313ce56714610543578063487a69051461056e5761035b565b806322788f861461047057806323b872dd1461049b57806324d2531f146104d85761035b565b806306fdde03146103605780630882a8631461038b578063095ea7b3146103b457806313b4a7f4146103f157806318160ddd1461041a578063220f6696146104455761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610ca3565b6040516103829190614125565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad9190613cc8565b610d35565b005b3480156103c057600080fd5b506103db60048036038101906103d69190613bdb565b610dbb565b6040516103e8919061410a565b60405180910390f35b3480156103fd57600080fd5b5061041860048036038101906104139190613b08565b610dd9565b005b34801561042657600080fd5b5061042f610fb9565b60405161043c9190614307565b60405180910390f35b34801561045157600080fd5b5061045a610fc3565b604051610467919061410a565b60405180910390f35b34801561047c57600080fd5b50610485610fd6565b6040516104929190614307565b60405180910390f35b3480156104a757600080fd5b506104c260048036038101906104bd9190613b48565b610fe0565b6040516104cf919061410a565b60405180910390f35b3480156104e457600080fd5b506104ed61115e565b005b3480156104fb57600080fd5b50610504611203565b604051610511919061404a565b60405180910390f35b34801561052657600080fd5b50610541600480360381019061053c9190613c1b565b611227565b005b34801561054f57600080fd5b506105586112c0565b6040516105659190614307565b60405180910390f35b34801561057a57600080fd5b506105836112da565b6040516105909190614307565b60405180910390f35b3480156105a557600080fd5b506105ae6112e4565b6040516105bb919061404a565b60405180910390f35b3480156105d057600080fd5b506105eb60048036038101906105e69190613a41565b61130a565b005b3480156105f957600080fd5b506106026113e1565b60405161060f919061410a565b60405180910390f35b34801561062457600080fd5b5061062d6113f4565b60405161063a9190614307565b60405180910390f35b34801561064f57600080fd5b506106586113fe565b6040516106659190614307565b60405180910390f35b34801561067a57600080fd5b5061069560048036038101906106909190613a9b565b611408565b005b3480156106a357600080fd5b506106ac6114d4565b6040516106b99190614307565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e49190613cc8565b6114de565b005b3480156106f757600080fd5b50610700611586565b60405161070d9190614307565b60405180910390f35b34801561072257600080fd5b5061072b611590565b005b34801561073957600080fd5b50610754600480360381019061074f9190613a41565b611674565b6040516107619190614307565b60405180910390f35b34801561077657600080fd5b5061077f6116bd565b005b34801561078d57600080fd5b506107a860048036038101906107a39190613c1b565b611745565b005b3480156107b657600080fd5b506107d160048036038101906107cc9190613cc8565b6117de565b005b3480156107df57600080fd5b506107e8611864565b6040516107f5919061404a565b60405180910390f35b34801561080a57600080fd5b5061082560048036038101906108209190613cc8565b611873565b005b34801561083357600080fd5b5061083c6118f9565b604051610849919061404a565b60405180910390f35b34801561085e57600080fd5b50610867611922565b6040516108749190614307565b60405180910390f35b34801561088957600080fd5b5061089261192c565b60405161089f9190614125565b60405180910390f35b3480156108b457600080fd5b506108cf60048036038101906108ca9190613b9b565b6119be565b005b3480156108dd57600080fd5b506108e6611ad9565b6040516108f39190614307565b60405180910390f35b34801561090857600080fd5b50610911611ae3565b60405161091e9190614307565b60405180910390f35b34801561093357600080fd5b5061093c611ae9565b6040516109499190614065565b60405180910390f35b34801561095e57600080fd5b5061097960048036038101906109749190613ac8565b611b0f565b005b34801561098757600080fd5b506109a2600480360381019061099d9190613cc8565b611be6565b005b3480156109b057600080fd5b506109cb60048036038101906109c69190613bdb565b611c8e565b6040516109d8919061410a565b60405180910390f35b3480156109ed57600080fd5b50610a086004803603810190610a039190613a41565b611cac565b005b348015610a1657600080fd5b50610a316004803603810190610a2c9190613a41565b611d83565b604051610a3e919061410a565b60405180910390f35b348015610a5357600080fd5b50610a5c611da3565b604051610a699190614307565b60405180910390f35b348015610a7e57600080fd5b50610a996004803603810190610a949190613a41565b611dad565b005b348015610aa757600080fd5b50610ac26004803603810190610abd9190613a41565b611e6d565b005b348015610ad057600080fd5b50610aeb6004803603810190610ae69190613a41565b611f44565b604051610af8919061410a565b60405180910390f35b348015610b0d57600080fd5b50610b286004803603810190610b239190613cc8565b611f9a565b005b348015610b3657600080fd5b50610b3f612043565b604051610b4c919061410a565b60405180910390f35b348015610b6157600080fd5b50610b7c6004803603810190610b779190613cc8565b61205a565b005b348015610b8a57600080fd5b50610ba56004803603810190610ba09190613b08565b6120e0565b604051610bb29190614307565b60405180910390f35b348015610bc757600080fd5b50610bd0612167565b604051610bdd9190614307565b60405180910390f35b348015610bf257600080fd5b50610bfb612171565b604051610c089190614307565b60405180910390f35b348015610c1d57600080fd5b50610c386004803603810190610c339190613cc8565b61217b565b005b348015610c4657600080fd5b50610c616004803603810190610c5c9190613a41565b612201565b005b348015610c6f57600080fd5b50610c8a6004803603810190610c859190613c75565b6122f9565b005b348015610c9857600080fd5b50610ca1612408565b005b606060018054610cb29061465e565b80601f0160208091040260200160405190810160405280929190818152602001828054610cde9061465e565b8015610d2b5780601f10610d0057610100808354040283529160200191610d2b565b820191906000526020600020905b815481529060010190602001808311610d0e57829003601f168201915b5050505050905090565b610d3d6124b0565b73ffffffffffffffffffffffffffffffffffffffff16610d5b6118f9565b73ffffffffffffffffffffffffffffffffffffffff1614610db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da890614287565b60405180910390fd5b8060178190555050565b6000610dcf610dc86124b0565b84846124b8565b6001905092915050565b610de16124b0565b73ffffffffffffffffffffffffffffffffffffffff16610dff6118f9565b73ffffffffffffffffffffffffffffffffffffffff1614610e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4c90614287565b60405180910390fd5b6001601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600954905090565b602160009054906101000a900460ff1681565b6000600854905090565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061102b6124b0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109f90614267565b60405180910390fd5b6110b3848484612683565b611153846110bf6124b0565b84600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111096124b0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461114e9190614543565b6124b8565b600190509392505050565b6111666124b0565b73ffffffffffffffffffffffffffffffffffffffff166111846118f9565b73ffffffffffffffffffffffffffffffffffffffff16146111da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d190614287565b60405180910390fd5b601854601781905550601a5460198190555062015180426111fb9190614462565b601b81905550565b7f000000000000000000000000000000000000000000000000000000000000dead81565b61122f6124b0565b73ffffffffffffffffffffffffffffffffffffffff1661124d6118f9565b73ffffffffffffffffffffffffffffffffffffffff16146112a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129a90614287565b60405180910390fd5b80601c60006101000a81548160ff02191690831515021790555050565b6000600360009054906101000a900460ff1660ff16905090565b6000600a54905090565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113126124b0565b73ffffffffffffffffffffffffffffffffffffffff166113306118f9565b73ffffffffffffffffffffffffffffffffffffffff1614611386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137d90614287565b60405180910390fd5b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602160019054906101000a900460ff1681565b6000601754905090565b6000601f54905090565b6114106124b0565b73ffffffffffffffffffffffffffffffffffffffff1661142e6118f9565b73ffffffffffffffffffffffffffffffffffffffff1614611484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147b90614287565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156114cf573d6000803e3d6000fd5b505050565b6000602354905090565b6114e66124b0565b73ffffffffffffffffffffffffffffffffffffffff166115046118f9565b73ffffffffffffffffffffffffffffffffffffffff161461155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155190614287565b60405180910390fd5b80600581905550606460055460095461157391906144e9565b61157d91906144b8565b60118190555050565b6000600754905090565b6115986124b0565b73ffffffffffffffffffffffffffffffffffffffff166115b66118f9565b73ffffffffffffffffffffffffffffffffffffffff161461160c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160390614287565b60405180910390fd5b601b544211611650576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611647906141e7565b60405180910390fd5b601954601a8190555060175460188190555060006017819055506000601981905550565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116c56124b0565b73ffffffffffffffffffffffffffffffffffffffff166116e36118f9565b73ffffffffffffffffffffffffffffffffffffffff1614611739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173090614287565b60405180910390fd5b6117436000613140565b565b61174d6124b0565b73ffffffffffffffffffffffffffffffffffffffff1661176b6118f9565b73ffffffffffffffffffffffffffffffffffffffff16146117c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b890614287565b60405180910390fd5b80602160016101000a81548160ff02191690831515021790555050565b6117e66124b0565b73ffffffffffffffffffffffffffffffffffffffff166118046118f9565b73ffffffffffffffffffffffffffffffffffffffff161461185a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185190614287565b60405180910390fd5b80601f8190555050565b600061186e6118f9565b905090565b61187b6124b0565b73ffffffffffffffffffffffffffffffffffffffff166118996118f9565b73ffffffffffffffffffffffffffffffffffffffff16146118ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e690614287565b60405180910390fd5b80601d8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601d54905090565b60606002805461193b9061465e565b80601f01602080910402602001604051908101604052809291908181526020018280546119679061465e565b80156119b45780601f10611989576101008083540402835291602001916119b4565b820191906000526020600020905b81548152906001019060200180831161199757829003601f168201915b5050505050905090565b6119c66124b0565b73ffffffffffffffffffffffffffffffffffffffff166119e46118f9565b73ffffffffffffffffffffffffffffffffffffffff1614611a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3190614287565b60405180910390fd5b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611acb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac2906141a7565b60405180910390fd5b611ad58282613204565b5050565b6000601954905090565b600a5481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b176124b0565b73ffffffffffffffffffffffffffffffffffffffff16611b356118f9565b73ffffffffffffffffffffffffffffffffffffffff1614611b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8290614287565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611bee6124b0565b73ffffffffffffffffffffffffffffffffffffffff16611c0c6118f9565b73ffffffffffffffffffffffffffffffffffffffff1614611c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5990614287565b60405180910390fd5b806006819055506064600654600954611c7b91906144e9565b611c8591906144b8565b60128190555050565b6000611ca2611c9b6124b0565b8484612683565b6001905092915050565b611cb46124b0565b73ffffffffffffffffffffffffffffffffffffffff16611cd26118f9565b73ffffffffffffffffffffffffffffffffffffffff1614611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f90614287565b60405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000601254905090565b611db56124b0565b73ffffffffffffffffffffffffffffffffffffffff16611dd36118f9565b73ffffffffffffffffffffffffffffffffffffffff1614611e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2090614287565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e756124b0565b73ffffffffffffffffffffffffffffffffffffffff16611e936118f9565b73ffffffffffffffffffffffffffffffffffffffff1614611ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee090614287565b60405180910390fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611fa26124b0565b73ffffffffffffffffffffffffffffffffffffffff16611fc06118f9565b73ffffffffffffffffffffffffffffffffffffffff1614612016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200d90614287565b60405180910390fd5b806007819055506103e860075460095461203091906144e9565b61203a91906144b8565b600a8190555050565b6000601c60009054906101000a900460ff16905090565b6120626124b0565b73ffffffffffffffffffffffffffffffffffffffff166120806118f9565b73ffffffffffffffffffffffffffffffffffffffff16146120d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd90614287565b60405180910390fd5b8060088190555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000602254905090565b6000601154905090565b6121836124b0565b73ffffffffffffffffffffffffffffffffffffffff166121a16118f9565b73ffffffffffffffffffffffffffffffffffffffff16146121f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ee90614287565b60405180910390fd5b8060198190555050565b6122096124b0565b73ffffffffffffffffffffffffffffffffffffffff166122276118f9565b73ffffffffffffffffffffffffffffffffffffffff161461227d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227490614287565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e490614167565b60405180910390fd5b6122f681613140565b50565b6123016124b0565b73ffffffffffffffffffffffffffffffffffffffff1661231f6118f9565b73ffffffffffffffffffffffffffffffffffffffff1614612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236c90614287565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016123b0929190614080565b602060405180830381600087803b1580156123ca57600080fd5b505af11580156123de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124029190613c48565b50505050565b6124106124b0565b73ffffffffffffffffffffffffffffffffffffffff1661242e6118f9565b73ffffffffffffffffffffffffffffffffffffffff1614612484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247b90614287565b60405180910390fd5b600160198190555060016017819055506001601f819055506001601d819055506124ae6001611745565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251f906142c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258f90614187565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126769190614307565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ea906142a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275a90614147565b60405180910390fd5b600081116127a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279d90614227565b60405180910390fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561282d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612824906141c7565b60405180910390fd5b60001515601c60009054906101000a900460ff161515141561292a57601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128ea5750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612929576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292090614247565b60405180910390fd5b5b60001515601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480156129da575060001515601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612a9e57601254821115612a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1b90614207565b60405180910390fd5b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a9d5760115482612a8785611674565b612a919190614462565b1115612a9c57600080fd5b5b5b6000612aa930611674565b9050600a548110158015612aca5750602160009054906101000a900460ff16155b8015612b245750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612b3c5750602160019054906101000a900460ff165b15612b5a57600a548110612b5957600a549050612b58816132a5565b5b5b600060019050600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c015750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c13576000600481905550600090505b6000808215612f0f5760011515601360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480612ccb575060011515601360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d02906142e7565b60405180910390fd5b600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612db25750602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b15612e0e5760006004819055506064601f5487612dcf91906144e9565b612dd991906144b8565b91506064601d5487612deb91906144e9565b612df591906144b8565b90508082612e039190614462565b600481905550612f0e565b600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612eb55750602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b15612f0d576000600481905550606460195487612ed291906144e9565b612edc91906144b8565b9150606460175487612eee91906144e9565b612ef891906144b8565b90508082612f069190614462565b6004819055505b5b5b8585612f1b9190614543565b600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808287612f6b9190614543565b612f759190614543565b600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612fc39190614462565b92505081905550600081146130c457600454600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130239190614462565b92505081905550806023600082825461303c9190614462565b9250508190555081602260008282546130559190614462565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516130bb9190614307565b60405180910390a35b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454896131219190614543565b60405161312e9190614307565b60405180910390a35050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001602160006101000a81548160ff0219169083151502179055506132cb60235461333b565b6132d66022546133c6565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f01904816040516133059190614307565b60405180910390a1600060228190555060006023819055506000602160006101000a81548160ff02191690831515021790555050565b600060028261334a91906144b8565b90506000818361335a9190614543565b9050600047905061336a8361363a565b600081476133789190614543565b9050613384838261388c565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516133b7939291906143d6565b60405180910390a15050505050565b6000600267ffffffffffffffff8111156133e3576133e261474c565b5b6040519080825280602002602001820160405280156134115781602001602082028036833780820191505090505b50905030816000815181106134295761342861471d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156134cb57600080fd5b505afa1580156134df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135039190613a6e565b816001815181106135175761351661471d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061357e30602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124b8565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401613604959493929190614322565b600060405180830381600087803b15801561361e57600080fd5b505af1158015613632573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff8111156136575761365661474c565b5b6040519080825280602002602001820160405280156136855781602001602082028036833780820191505090505b509050308160008151811061369d5761369c61471d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561373f57600080fd5b505afa158015613753573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137779190613a6e565b8160018151811061378b5761378a61471d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506137f230602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124b8565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161385695949392919061437c565b600060405180830381600087803b15801561387057600080fd5b505af1158015613884573d6000803e3d6000fd5b505050505050565b6138b930602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124b8565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807f000000000000000000000000000000000000000000000000000000000000dead426040518863ffffffff1660e01b8152600401613940969594939291906140a9565b6060604051808303818588803b15801561395957600080fd5b505af115801561396d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906139929190613cf5565b5050505050565b6000813590506139a881614b71565b92915050565b6000815190506139bd81614b71565b92915050565b6000813590506139d281614b88565b92915050565b6000813590506139e781614b9f565b92915050565b6000815190506139fc81614b9f565b92915050565b600081359050613a1181614bb6565b92915050565b600081359050613a2681614bcd565b92915050565b600081519050613a3b81614bcd565b92915050565b600060208284031215613a5757613a5661477b565b5b6000613a6584828501613999565b91505092915050565b600060208284031215613a8457613a8361477b565b5b6000613a92848285016139ae565b91505092915050565b600060208284031215613ab157613ab061477b565b5b6000613abf848285016139c3565b91505092915050565b60008060408385031215613adf57613ade61477b565b5b6000613aed858286016139c3565b9250506020613afe858286016139d8565b9150509250929050565b60008060408385031215613b1f57613b1e61477b565b5b6000613b2d85828601613999565b9250506020613b3e85828601613999565b9150509250929050565b600080600060608486031215613b6157613b6061477b565b5b6000613b6f86828701613999565b9350506020613b8086828701613999565b9250506040613b9186828701613a17565b9150509250925092565b60008060408385031215613bb257613bb161477b565b5b6000613bc085828601613999565b9250506020613bd1858286016139d8565b9150509250929050565b60008060408385031215613bf257613bf161477b565b5b6000613c0085828601613999565b9250506020613c1185828601613a17565b9150509250929050565b600060208284031215613c3157613c3061477b565b5b6000613c3f848285016139d8565b91505092915050565b600060208284031215613c5e57613c5d61477b565b5b6000613c6c848285016139ed565b91505092915050565b600080600060608486031215613c8e57613c8d61477b565b5b6000613c9c86828701613a02565b9350506020613cad868287016139c3565b9250506040613cbe86828701613a17565b9150509250925092565b600060208284031215613cde57613cdd61477b565b5b6000613cec84828501613a17565b91505092915050565b600080600060608486031215613d0e57613d0d61477b565b5b6000613d1c86828701613a2c565b9350506020613d2d86828701613a2c565b9250506040613d3e86828701613a2c565b9150509250925092565b6000613d548383613d7e565b60208301905092915050565b613d69816145e3565b82525050565b613d7881614589565b82525050565b613d8781614577565b82525050565b613d9681614577565b82525050565b6000613da78261441d565b613db18185614440565b9350613dbc8361440d565b8060005b83811015613ded578151613dd48882613d48565b9750613ddf83614433565b925050600181019050613dc0565b5085935050505092915050565b613e038161459b565b82525050565b613e12816145f5565b82525050565b6000613e2382614428565b613e2d8185614451565b9350613e3d81856020860161462b565b613e4681614780565b840191505092915050565b6000613e5e602383614451565b9150613e6982614791565b604082019050919050565b6000613e81602683614451565b9150613e8c826147e0565b604082019050919050565b6000613ea4602283614451565b9150613eaf8261482f565b604082019050919050565b6000613ec7603983614451565b9150613ed28261487e565b604082019050919050565b6000613eea602683614451565b9150613ef5826148cd565b604082019050919050565b6000613f0d602a83614451565b9150613f188261491c565b604082019050919050565b6000613f30602883614451565b9150613f3b8261496b565b604082019050919050565b6000613f53603283614451565b9150613f5e826149ba565b604082019050919050565b6000613f76601d83614451565b9150613f8182614a09565b602082019050919050565b6000613f99602883614451565b9150613fa482614a32565b604082019050919050565b6000613fbc602083614451565b9150613fc782614a81565b602082019050919050565b6000613fdf602583614451565b9150613fea82614aaa565b604082019050919050565b6000614002602483614451565b915061400d82614af9565b604082019050919050565b6000614025601183614451565b915061403082614b48565b602082019050919050565b614044816145d9565b82525050565b600060208201905061405f6000830184613d8d565b92915050565b600060208201905061407a6000830184613d6f565b92915050565b60006040820190506140956000830185613d60565b6140a2602083018461403b565b9392505050565b600060c0820190506140be6000830189613d8d565b6140cb602083018861403b565b6140d86040830187613e09565b6140e56060830186613e09565b6140f26080830185613d8d565b6140ff60a083018461403b565b979650505050505050565b600060208201905061411f6000830184613dfa565b92915050565b6000602082019050818103600083015261413f8184613e18565b905092915050565b6000602082019050818103600083015261416081613e51565b9050919050565b6000602082019050818103600083015261418081613e74565b9050919050565b600060208201905081810360008301526141a081613e97565b9050919050565b600060208201905081810360008301526141c081613eba565b9050919050565b600060208201905081810360008301526141e081613edd565b9050919050565b6000602082019050818103600083015261420081613f00565b9050919050565b6000602082019050818103600083015261422081613f23565b9050919050565b6000602082019050818103600083015261424081613f46565b9050919050565b6000602082019050818103600083015261426081613f69565b9050919050565b6000602082019050818103600083015261428081613f8c565b9050919050565b600060208201905081810360008301526142a081613faf565b9050919050565b600060208201905081810360008301526142c081613fd2565b9050919050565b600060208201905081810360008301526142e081613ff5565b9050919050565b6000602082019050818103600083015261430081614018565b9050919050565b600060208201905061431c600083018461403b565b92915050565b600060a082019050614337600083018861403b565b6143446020830187613e09565b81810360408301526143568186613d9c565b90506143656060830185613d60565b614372608083018461403b565b9695505050505050565b600060a082019050614391600083018861403b565b61439e6020830187613e09565b81810360408301526143b08186613d9c565b90506143bf6060830185613d8d565b6143cc608083018461403b565b9695505050505050565b60006060820190506143eb600083018661403b565b6143f8602083018561403b565b614405604083018461403b565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061446d826145d9565b9150614478836145d9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156144ad576144ac614690565b5b828201905092915050565b60006144c3826145d9565b91506144ce836145d9565b9250826144de576144dd6146bf565b5b828204905092915050565b60006144f4826145d9565b91506144ff836145d9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561453857614537614690565b5b828202905092915050565b600061454e826145d9565b9150614559836145d9565b92508282101561456c5761456b614690565b5b828203905092915050565b6000614582826145b9565b9050919050565b6000614594826145b9565b9050919050565b60008115159050919050565b60006145b282614577565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006145ee82614607565b9050919050565b6000614600826145d9565b9050919050565b600061461282614619565b9050919050565b6000614624826145b9565b9050919050565b60005b8381101561464957808201518184015260208101905061462e565b83811115614658576000848401525b50505050565b6000600282049050600182168061467657607f821691505b6020821081141561468a576146896146ee565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f596f752063616e742063616c6c205741475955206d6f7265207468616e206f6e60008201527f6365207065722064617900000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e73666572656420616d6f756e74206d75737420626560008201527f2067726561746572207468616e207a65726f0000000000000000000000000000602082015250565b7f43616e742074726164652c2074726164652069732064697361626c6564000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4e6f20626f74732063616e207472616465000000000000000000000000000000600082015250565b614b7a81614577565b8114614b8557600080fd5b50565b614b9181614589565b8114614b9c57600080fd5b50565b614ba88161459b565b8114614bb357600080fd5b50565b614bbf816145a7565b8114614bca57600080fd5b50565b614bd6816145d9565b8114614be157600080fd5b5056fea26469706673582212204ca20b0aae7f6180a03f289c20429421010c76faf150360dc65118b91ff7c4d064736f6c63430008070033

Deployed Bytecode Sourcemap

8762:15750:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13483:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23343:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13217:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21883:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12627:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10588:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15476:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14023:388;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14744:170;;;;;;;;;;;;;:::i;:::-;;10670:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20081:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13393:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24404:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11177:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21637:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10623:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15058:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15370:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19895:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12519:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13834:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24301:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14465:273;;;;;;;;;;;;;:::i;:::-;;12744:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8127:94;;;;;;;;;;;;;:::i;:::-;;22505:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23702:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12319:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23583:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7476:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15266:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13565:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22899:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15160:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9330:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9681:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14922:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13663:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12873:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21759:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9595:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23923:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22656:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19108:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15583:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24018:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24198:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22385:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13060:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12411:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23820:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23460:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8376:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19644:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22191:186;;;;;;;;;;;;;:::i;:::-;;13483:76;13522:13;13549:5;13542:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13483:76;:::o;23343:111::-;7707:12;:10;:12::i;:::-;7696:23;;:7;:5;:7::i;:::-;:23;;;7688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23437:9:::1;23425;:21;;;;23343:111:::0;:::o;13217:168::-;13294:4;13314:37;13323:12;:10;:12::i;:::-;13336:7;13344:6;13314:8;:37::i;:::-;13373:4;13366:11;;13217:168;;;;:::o;21883:302::-;7707:12;:10;:12::i;:::-;7696:23;;:7;:5;:7::i;:::-;:23;;;7688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22026:4:::1;21989:17;:34;22015:6;21989:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;22070:4;22041:17;:26;22059:7;22041:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;22121:4;22085:16;:33;22110:6;22085:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;22164:4;22136:16;:25;22153:7;22136:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;21883:302:::0;;:::o;12627:106::-;12682:7;12712:12;;12705:19;;12627:106;:::o;10588:28::-;;;;;;;;;;;;;:::o;15476:101::-;15527:7;15553:16;;15546:23;;15476:101;:::o;14023:388::-;14155:4;14189:11;:19;14201:6;14189:19;;;;;;;;;;;;;;;:33;14209:12;:10;:12::i;:::-;14189:33;;;;;;;;;;;;;;;;14179:6;:43;;14171:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;14272:36;14282:6;14290:9;14301:6;14272:9;:36::i;:::-;14313:74;14322:6;14330:12;:10;:12::i;:::-;14380:6;14344:11;:19;14356:6;14344:19;;;;;;;;;;;;;;;:33;14364:12;:10;:12::i;:::-;14344:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;14313:8;:74::i;:::-;14399:4;14392:11;;14023:388;;;;;:::o;14744:170::-;7707:12;:10;:12::i;:::-;7696:23;;:7;:5;:7::i;:::-;:23;;;7688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14805:13:::1;;14793:9;:25;;;;14842:13;;14830:9;:25;;;;14901:5;14883:15;:23;;;;:::i;:::-;14867:13;:39;;;;14744:170::o:0;10670:81::-;;;:::o;20081:90::-;7707:12;:10;:12::i;:::-;7696:23;;:7;:5;:7::i;:::-;:23;;;7688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20157:6:::1;20142:12;;:21;;;;;;;;;;;;;;;;;;20081:90:::0;:::o;13393:84::-;13434:7;13460:9;;;;;;;;;;;13453:16;;;;13393:84;:::o;24404:105::-;24455:7;24481:20;;24474:27;;24404:105;:::o;11177:28::-;;;;;;;;;;;;;:::o;21637:114::-;7707:12;:10;:12::i;:::-;7696:23;;:7;:5;:7::i;:::-;:23;;;7688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21739:4:::1;21708:17;:28;21726:9;21708:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;21637:114:::0;:::o;10623:40::-;;;;;;;;;;;;;:::o;15058:96::-;15107:7;15137:9;;15130:16;;15058:96;:::o;15370:98::-;15420:7;15450:10;;15443:17;;15370:98;:::o;19895:178::-;7707:12;:10;:12::i;:::-;7696:23;;:7;:5;:7::i;:::-;:23;;;7688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19971:18:::1;19992:21;19971:42;;20032:11;20024:29;;:41;20054:10;20024:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;19960:113;19895:178:::0;:::o;12519:99::-;12570:7;12600:9;;12593:16;;12519:99;:::o;13834:175::-;7707:12;:10;:12::i;:::-;7696:23;;:7;:5;:7::i;:::-;:23;;;7688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13930:6:::1;13910:17;:26;;;;13996:3;13978:17;;13965:12;;:30;;;;:::i;:::-;:34;;;;:::i;:::-;13947:15;:52;;;;13834:175:::0;:::o;24301:97::-;24352:7;24378:12;;24371:19;;24301:97;:::o;14465:273::-;7707:12;:10;:12::i;:::-;7696:23;;:7;:5;:7::i;:::-;:23;;;7688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14537:13:::1;;14519:15;:31;14511:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;14625:9;;14609:13;:25;;;;14662:9;;14646:13;:25;;;;14704:1;14692:9;:13;;;;14729:1;14717:9;:13;;;;14465:273::o:0;12744:118::-;12810:7;12836:9;:18;12846:7;12836:18;;;;;;;;;;;;;;;;12829:25;;12744:118;;;:::o;8127:94::-;7707:12;:10;:12::i;:::-;7696:23;;:7;:5;:7::i;:::-;:23;;;7688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8192:21:::1;8210:1;8192:9;:21::i;:::-;8127:94::o:0;22505:113::-;7707:12;:10;:12::i;:::-;7696:23;;:7;:5;:7::i;:::-;:23;;;7688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22602:8:::1;22578:21;;:32;;;;;;;;;;;;;;;;;;22505:113:::0;:::o;23702:112::-;7707:12;:10;:12::i;:::-;7696:23;;:7;:5;:7::i;:::-;:23;;;7688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23797:9:::1;23785:10;:21;;;;23702:112:::0;:::o;12319:86::-;12360:7;12390;:5;:7::i;:::-;12383:14;;12319:86;:::o;23583:113::-;7707:12;:10;:12::i;:::-;7696:23;;:7;:5;:7::i;:::-;:23;;;7688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23679:9:::1;23667:10;:21;;;;23583:113:::0;:::o;7476:87::-;7522:7;7549:6;;;;;;;;;;;7542:13;;7476:87;:::o;15266:98::-;15316:7;15346:10;;15339:17;;15266:98;:::o;13565:88::-;13606:13;13638:7;13631:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13565:88;:::o;22899:242::-;7707:12;:10;:12::i;:::-;7696:23;;:7;:5;:7::i;:::-;:23;;;7688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23006:13:::1;;;;;;;;;;;22998:21;;:4;:21;;;;22990:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;23092:41;23121:4;23127:5;23092:28;:41::i;:::-;22899:242:::0;;:::o;15160:96::-;15209:7;15239:9;;15232:16;;15160:96;:::o;9330:71::-;;;;:::o;9681:93::-;;;;;;;;;;;;;:::o;14922:130::-;7707:12;:10;:12::i;:::-;7696:23;;:7;:5;:7::i;:::-;:23;;;7688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15039:5:::1;15013:10;:23;15024:11;15013:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;14922:130:::0;;:::o;13663:164::-;7707:12;:10;:12::i;:::-;7696:23;;:7;:5;:7::i;:::-;:23;;;7688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13751:6:::1;13735:13;:22;;;;13809:3;13795:13;;13782:12;;:26;;;;:::i;:::-;:30;;;;:::i;:::-;13768:11;:44;;;;13663:164:::0;:::o;12873:176::-;12953:4;12973:40;12983:12;:10;:12::i;:::-;12996:9;13006:6;12973:9;:40::i;:::-;13035:4;13028:11;;12873:176;;;;:::o;21759:116::-;7707:12;:10;:12::i;:::-;7696:23;;:7;:5;:7::i;:::-;:23;;;7688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21862:5:::1;21832:17;:27;21850:8;21832:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;21759:116:::0;:::o;9595:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;23923:89::-;23967:7;23993:11;;23986:18;;23923:89;:::o;22656:118::-;7707:12;:10;:12::i;:::-;7696:23;;:7;:5;:7::i;:::-;:23;;;7688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22755:10:::1;22728:16;;:38;;;;;;;;;;;;;;;;;;22656:118:::0;:::o;19108:123::-;7707:12;:10;:12::i;:::-;7696:23;;:7;:5;:7::i;:::-;:23;;;7688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19212:4:::1;19180:17;:29;19198:10;19180:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;19108:123:::0;:::o;15583:118::-;15640:4;15667:17;:26;15685:7;15667:26;;;;;;;;;;;;;;;;;;;;;;;;;15660:33;;15583:118;;;:::o;24018:174::-;7707:12;:10;:12::i;:::-;7696:23;;:7;:5;:7::i;:::-;:23;;;7688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24104:6:::1;24089:12;:21;;;;24170:4;24157:12;;24144;;:25;;;;:::i;:::-;:30;;;;:::i;:::-;24121:20;:53;;;;24018:174:::0;:::o;24198:97::-;24249:4;24272:12;;;;;;;;;;;24265:19;;24198:97;:::o;22385:112::-;7707:12;:10;:12::i;:::-;7696:23;;:7;:5;:7::i;:::-;:23;;;7688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22475:12:::1;22456:16;:31;;;;22385:112:::0;:::o;13060:148::-;13143:7;13173:11;:18;13185:5;13173:18;;;;;;;;;;;;;;;:27;13192:7;13173:27;;;;;;;;;;;;;;;;13166:34;;13060:148;;;;:::o;12411:99::-;12462:7;12492:9;;12485:16;;12411:99;:::o;23820:97::-;23868:7;23894:15;;23887:22;;23820:97;:::o;23460:111::-;7707:12;:10;:12::i;:::-;7696:23;;:7;:5;:7::i;:::-;:23;;;7688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23554:9:::1;23543;:20;;;;23460:111:::0;:::o;8376:192::-;7707:12;:10;:12::i;:::-;7696:23;;:7;:5;:7::i;:::-;:23;;;7688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8485:1:::1;8465:22;;:8;:22;;;;8457:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8541:19;8551:8;8541:9;:19::i;:::-;8376:192:::0;:::o;19644:243::-;7707:12;:10;:12::i;:::-;7696:23;;:7;:5;:7::i;:::-;:23;;;7688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19837:12:::1;:21;;;19859:11;19872:6;19837:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19644:243:::0;;;:::o;22191:186::-;7707:12;:10;:12::i;:::-;7696:23;;:7;:5;:7::i;:::-;:23;;;7688:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22258:1:::1;22246:9;:13;;;;22282:1;22270:9;:13;;;;22309:1;22296:10;:14;;;;22334:1;22321:10;:14;;;;22346:23;22364:4;22346:17;:23::i;:::-;22191:186::o:0;3438:98::-;3491:7;3518:10;3511:17;;3438:98;:::o;21269:322::-;21378:1;21361:19;;:5;:19;;;;21353:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21453:1;21434:21;;:7;:21;;;;21426:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21531:6;21501:11;:18;21513:5;21501:18;;;;;;;;;;;;;;;:27;21520:7;21501:27;;;;;;;;;;;;;;;:36;;;;21563:7;21547:32;;21556:5;21547:32;;;21572:6;21547:32;;;;;;:::i;:::-;;;;;;;;21269:322;;;:::o;15709:3124::-;15823:1;15807:18;;:4;:18;;;;15799:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15894:1;15880:16;;:2;:16;;;;15872:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15964:1;15955:6;:10;15947:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;16030:21;16054:9;:15;16064:4;16054:15;;;;;;;;;;;;;;;;16030:39;;16105:6;16088:13;:23;;16080:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;16184:5;16168:21;;:12;;;;;;;;;;;:21;;;16165:141;;;16213:17;:21;16231:2;16213:21;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;16238:17;:23;16256:4;16238:23;;;;;;;;;;;;;;;;;;;;;;;;;16213:48;16205:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;16165:141;16342:5;16319:28;;:17;:21;16337:2;16319:21;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;:62;;;;;16376:5;16351:30;;:17;:23;16369:4;16351:23;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;16319:62;16316:282;;;16411:11;;16401:6;:21;;16393:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;16490:13;;;;;;;;;;;16482:21;;:4;:21;;;16479:108;;;16555:15;;16545:6;16531:13;16541:2;16531:9;:13::i;:::-;:20;;;;:::i;:::-;:39;;16523:48;;;;;;16479:108;16316:282;16608:25;16636:24;16654:4;16636:9;:24::i;:::-;16608:52;;16694:20;;16674:17;:40;;:66;;;;;16724:16;;;;;;;;;;;16723:17;16674:66;:96;;;;;16757:13;;;;;;;;;;;16749:21;;:4;:21;;;;16674:96;:126;;;;;16779:21;;;;;;;;;;;16674:126;16671:352;;;16844:20;;16823:17;:41;16820:188;;16909:20;;16889:40;;16952:36;16970:17;16952;:36::i;:::-;16820:188;16671:352;17039:13;17055:4;17039:20;;17105:17;:23;17123:4;17105:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;17132:17;:21;17150:2;17132:21;;;;;;;;;;;;;;;;;;;;;;;;;17105:48;17102:159;;;17190:1;17174:13;:17;;;;17221:5;17210:16;;17102:159;17275:17;17305;17383:8;17380:981;;;17498:4;17478:24;;:10;:16;17489:4;17478:16;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;:46;;;;17520:4;17504:20;;:10;:14;17515:2;17504:14;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;17478:46;17475:120;;;17548:27;;;;;;;;;;:::i;:::-;;;;;;;;17475:120;17649:25;:29;17675:2;17649:29;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;;17696:7;;;;;;;;;;;17682:22;;:2;:22;;;;17649:55;17645:681;;;17749:1;17733:13;:17;;;;17809:3;17798:10;;17789:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;17777:35;;17871:3;17860:10;;17851:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;17839:35;;17929:9;17917;:21;;;;:::i;:::-;17901:13;:37;;;;17645:681;;;18012:25;:31;18038:4;18012:31;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;18063:7;;;;;;;;;;;18047:24;;:4;:24;;;;18012:59;18009:317;;;18130:1;18114:13;:17;;;;18185:3;18175:9;;18166:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;18154:34;;18242:3;18232:9;;18223:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;18211:34;;18296:9;18284;:21;;;;:::i;:::-;18268:13;:37;;;;18009:317;17645:681;17380:981;18411:6;18395:13;:22;;;;:::i;:::-;18377:9;:15;18387:4;18377:15;;;;;;;;;;;;;;;:40;;;;18470:9;18458;18449:6;:18;;;;:::i;:::-;:30;;;;:::i;:::-;18432:9;:13;18442:2;18432:13;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;18510:1;18497:9;:14;18494:249;;18547:13;;18519:9;:24;18537:4;18519:24;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;18618:9;18605;;:22;;;;;;;:::i;:::-;;;;;;;;18655:9;18642;;:22;;;;;;;:::i;:::-;;;;;;;;18698:4;18675:44;;18684:4;18675:44;;;18705:13;;18675:44;;;;;;:::i;:::-;;;;;;;;18494:249;18777:2;18762:39;;18771:4;18762:39;;;18787:13;;18780:6;:20;;;;:::i;:::-;18762:39;;;;;;:::i;:::-;;;;;;;;15778:3055;;;;;15709:3124;;;:::o;8576:173::-;8632:16;8651:6;;;;;;;;;;;8632:25;;8677:8;8668:6;;:17;;;;;;;;;;;;;;;;;;8732:8;8701:40;;8722:8;8701:40;;;;;;;;;;;;8621:128;8576:173;:::o;23147:188::-;23264:5;23230:25;:31;23256:4;23230:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23321:5;23287:40;;23315:4;23287:40;;;;;;;;;;;;23147:188;;:::o;18839:262::-;11284:4;11265:16;;:23;;;;;;;;;;;;;;;;;;18919:25:::1;18934:9;;18919:14;:25::i;:::-;18955:30;18975:9;;18955:19;:30::i;:::-;19001:44;19031:13;19001:44;;;;;;:::i;:::-;;;;;;;;19068:1;19056:9;:13;;;;19092:1;19080:9;:13;;;;11318:5:::0;11299:16;;:24;;;;;;;;;;;;;;;;;;18839:262;:::o;20179:388::-;20241:12;20274:1;20256:15;:19;;;;:::i;:::-;20241:34;;20280:17;20318:4;20300:15;:22;;;;:::i;:::-;20280:42;;20327:22;20352:21;20327:46;;20380:22;20397:4;20380:16;:22::i;:::-;20407:18;20453:14;20428:21;:40;;;;:::i;:::-;20407:61;;20476:35;20489:9;20500:10;20476:12;:35::i;:::-;20521:41;20536:4;20541:10;20552:9;20521:41;;;;;;;;:::i;:::-;;;;;;;;20236:331;;;;20179:388;:::o;19237:399::-;19300:21;19338:1;19324:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19300:40;;19363:4;19345;19350:1;19345:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19383:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19373:4;19378:1;19373:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;19402:49;19419:4;19434:7;;;;;;;;;;;19444:6;19402:8;:49::i;:::-;19462:7;;;;;;;;;;;:58;;;19526:6;19538:1;19574:4;19584:16;;;;;;;;;;;19606:15;19462:164;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19289:347;19237:399;:::o;20575:397::-;20634:21;20672:1;20658:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20634:40;;20697:4;20679;20684:1;20679:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20717:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20707:4;20712:1;20707:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;20736:54;20753:4;20768:7;;;;;;;;;;;20778:11;20736:8;:54::i;:::-;20801:7;;;;;;;;;;;:58;;;20865:11;20882:1;20918:4;20936;20947:15;20801:166;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20629:343;20575:397;:::o;20984:277::-;21057:54;21074:4;21089:7;;;;;;;;;;;21099:11;21057:8;:54::i;:::-;21118:7;;;;;;;;;;;:23;;;21148:9;21172:4;21183:11;21200:1;21207;21214:11;21236:15;21118:138;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20984:277;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;301:155;;;;:::o;462:133::-;505:5;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;462:133;;;;:::o;601:137::-;655:5;686:6;680:13;671:22;;702:30;726:5;702:30;:::i;:::-;601:137;;;;:::o;744:165::-;803:5;841:6;828:20;819:29;;857:46;897:5;857:46;:::i;:::-;744:165;;;;:::o;915:139::-;961:5;999:6;986:20;977:29;;1015:33;1042:5;1015:33;:::i;:::-;915:139;;;;:::o;1060:143::-;1117:5;1148:6;1142:13;1133:22;;1164:33;1191:5;1164:33;:::i;:::-;1060:143;;;;:::o;1209:329::-;1268:6;1317:2;1305:9;1296:7;1292:23;1288:32;1285:119;;;1323:79;;:::i;:::-;1285:119;1443:1;1468:53;1513:7;1504:6;1493:9;1489:22;1468:53;:::i;:::-;1458:63;;1414:117;1209:329;;;;:::o;1544:351::-;1614:6;1663:2;1651:9;1642:7;1638:23;1634:32;1631:119;;;1669:79;;:::i;:::-;1631:119;1789:1;1814:64;1870:7;1861:6;1850:9;1846:22;1814:64;:::i;:::-;1804:74;;1760:128;1544:351;;;;:::o;1901:345::-;1968:6;2017:2;2005:9;1996:7;1992:23;1988:32;1985:119;;;2023:79;;:::i;:::-;1985:119;2143:1;2168:61;2221:7;2212:6;2201:9;2197:22;2168:61;:::i;:::-;2158:71;;2114:125;1901:345;;;;:::o;2252:484::-;2325:6;2333;2382:2;2370:9;2361:7;2357:23;2353:32;2350:119;;;2388:79;;:::i;:::-;2350:119;2508:1;2533:61;2586:7;2577:6;2566:9;2562:22;2533:61;:::i;:::-;2523:71;;2479:125;2643:2;2669:50;2711:7;2702:6;2691:9;2687:22;2669:50;:::i;:::-;2659:60;;2614:115;2252:484;;;;;:::o;2742:474::-;2810:6;2818;2867:2;2855:9;2846:7;2842:23;2838:32;2835:119;;;2873:79;;:::i;:::-;2835:119;2993:1;3018:53;3063:7;3054:6;3043:9;3039:22;3018:53;:::i;:::-;3008:63;;2964:117;3120:2;3146:53;3191:7;3182:6;3171:9;3167:22;3146:53;:::i;:::-;3136:63;;3091:118;2742:474;;;;;:::o;3222:619::-;3299:6;3307;3315;3364:2;3352:9;3343:7;3339:23;3335:32;3332:119;;;3370:79;;:::i;:::-;3332:119;3490:1;3515:53;3560:7;3551:6;3540:9;3536:22;3515:53;:::i;:::-;3505:63;;3461:117;3617:2;3643:53;3688:7;3679:6;3668:9;3664:22;3643:53;:::i;:::-;3633:63;;3588:118;3745:2;3771:53;3816:7;3807:6;3796:9;3792:22;3771:53;:::i;:::-;3761:63;;3716:118;3222:619;;;;;:::o;3847:468::-;3912:6;3920;3969:2;3957:9;3948:7;3944:23;3940:32;3937:119;;;3975:79;;:::i;:::-;3937:119;4095:1;4120:53;4165:7;4156:6;4145:9;4141:22;4120:53;:::i;:::-;4110:63;;4066:117;4222:2;4248:50;4290:7;4281:6;4270:9;4266:22;4248:50;:::i;:::-;4238:60;;4193:115;3847:468;;;;;:::o;4321:474::-;4389:6;4397;4446:2;4434:9;4425:7;4421:23;4417:32;4414:119;;;4452:79;;:::i;:::-;4414:119;4572:1;4597:53;4642:7;4633:6;4622:9;4618:22;4597:53;:::i;:::-;4587:63;;4543:117;4699:2;4725:53;4770:7;4761:6;4750:9;4746:22;4725:53;:::i;:::-;4715:63;;4670:118;4321:474;;;;;:::o;4801:323::-;4857:6;4906:2;4894:9;4885:7;4881:23;4877:32;4874:119;;;4912:79;;:::i;:::-;4874:119;5032:1;5057:50;5099:7;5090:6;5079:9;5075:22;5057:50;:::i;:::-;5047:60;;5003:114;4801:323;;;;:::o;5130:345::-;5197:6;5246:2;5234:9;5225:7;5221:23;5217:32;5214:119;;;5252:79;;:::i;:::-;5214:119;5372:1;5397:61;5450:7;5441:6;5430:9;5426:22;5397:61;:::i;:::-;5387:71;;5343:125;5130:345;;;;:::o;5481:661::-;5579:6;5587;5595;5644:2;5632:9;5623:7;5619:23;5615:32;5612:119;;;5650:79;;:::i;:::-;5612:119;5770:1;5795:66;5853:7;5844:6;5833:9;5829:22;5795:66;:::i;:::-;5785:76;;5741:130;5910:2;5936:61;5989:7;5980:6;5969:9;5965:22;5936:61;:::i;:::-;5926:71;;5881:126;6046:2;6072:53;6117:7;6108:6;6097:9;6093:22;6072:53;:::i;:::-;6062:63;;6017:118;5481:661;;;;;:::o;6148:329::-;6207:6;6256:2;6244:9;6235:7;6231:23;6227:32;6224:119;;;6262:79;;:::i;:::-;6224:119;6382:1;6407:53;6452:7;6443:6;6432:9;6428:22;6407:53;:::i;:::-;6397:63;;6353:117;6148:329;;;;:::o;6483:663::-;6571:6;6579;6587;6636:2;6624:9;6615:7;6611:23;6607:32;6604:119;;;6642:79;;:::i;:::-;6604:119;6762:1;6787:64;6843:7;6834:6;6823:9;6819:22;6787:64;:::i;:::-;6777:74;;6733:128;6900:2;6926:64;6982:7;6973:6;6962:9;6958:22;6926:64;:::i;:::-;6916:74;;6871:129;7039:2;7065:64;7121:7;7112:6;7101:9;7097:22;7065:64;:::i;:::-;7055:74;;7010:129;6483:663;;;;;:::o;7152:179::-;7221:10;7242:46;7284:3;7276:6;7242:46;:::i;:::-;7320:4;7315:3;7311:14;7297:28;;7152:179;;;;:::o;7337:147::-;7432:45;7471:5;7432:45;:::i;:::-;7427:3;7420:58;7337:147;;:::o;7490:142::-;7593:32;7619:5;7593:32;:::i;:::-;7588:3;7581:45;7490:142;;:::o;7638:108::-;7715:24;7733:5;7715:24;:::i;:::-;7710:3;7703:37;7638:108;;:::o;7752:118::-;7839:24;7857:5;7839:24;:::i;:::-;7834:3;7827:37;7752:118;;:::o;7906:732::-;8025:3;8054:54;8102:5;8054:54;:::i;:::-;8124:86;8203:6;8198:3;8124:86;:::i;:::-;8117:93;;8234:56;8284:5;8234:56;:::i;:::-;8313:7;8344:1;8329:284;8354:6;8351:1;8348:13;8329:284;;;8430:6;8424:13;8457:63;8516:3;8501:13;8457:63;:::i;:::-;8450:70;;8543:60;8596:6;8543:60;:::i;:::-;8533:70;;8389:224;8376:1;8373;8369:9;8364:14;;8329:284;;;8333:14;8629:3;8622:10;;8030:608;;;7906:732;;;;:::o;8644:109::-;8725:21;8740:5;8725:21;:::i;:::-;8720:3;8713:34;8644:109;;:::o;8759:147::-;8854:45;8893:5;8854:45;:::i;:::-;8849:3;8842:58;8759:147;;:::o;8912:364::-;9000:3;9028:39;9061:5;9028:39;:::i;:::-;9083:71;9147:6;9142:3;9083:71;:::i;:::-;9076:78;;9163:52;9208:6;9203:3;9196:4;9189:5;9185:16;9163:52;:::i;:::-;9240:29;9262:6;9240:29;:::i;:::-;9235:3;9231:39;9224:46;;9004:272;8912:364;;;;:::o;9282:366::-;9424:3;9445:67;9509:2;9504:3;9445:67;:::i;:::-;9438:74;;9521:93;9610:3;9521:93;:::i;:::-;9639:2;9634:3;9630:12;9623:19;;9282:366;;;:::o;9654:::-;9796:3;9817:67;9881:2;9876:3;9817:67;:::i;:::-;9810:74;;9893:93;9982:3;9893:93;:::i;:::-;10011:2;10006:3;10002:12;9995:19;;9654:366;;;:::o;10026:::-;10168:3;10189:67;10253:2;10248:3;10189:67;:::i;:::-;10182:74;;10265:93;10354:3;10265:93;:::i;:::-;10383:2;10378:3;10374:12;10367:19;;10026:366;;;:::o;10398:::-;10540:3;10561:67;10625:2;10620:3;10561:67;:::i;:::-;10554:74;;10637:93;10726:3;10637:93;:::i;:::-;10755:2;10750:3;10746:12;10739:19;;10398:366;;;:::o;10770:::-;10912:3;10933:67;10997:2;10992:3;10933:67;:::i;:::-;10926:74;;11009:93;11098:3;11009:93;:::i;:::-;11127:2;11122:3;11118:12;11111:19;;10770:366;;;:::o;11142:::-;11284:3;11305:67;11369:2;11364:3;11305:67;:::i;:::-;11298:74;;11381:93;11470:3;11381:93;:::i;:::-;11499:2;11494:3;11490:12;11483:19;;11142:366;;;:::o;11514:::-;11656:3;11677:67;11741:2;11736:3;11677:67;:::i;:::-;11670:74;;11753:93;11842:3;11753:93;:::i;:::-;11871:2;11866:3;11862:12;11855:19;;11514:366;;;:::o;11886:::-;12028:3;12049:67;12113:2;12108:3;12049:67;:::i;:::-;12042:74;;12125:93;12214:3;12125:93;:::i;:::-;12243:2;12238:3;12234:12;12227:19;;11886:366;;;:::o;12258:::-;12400:3;12421:67;12485:2;12480:3;12421:67;:::i;:::-;12414:74;;12497:93;12586:3;12497:93;:::i;:::-;12615:2;12610:3;12606:12;12599:19;;12258:366;;;:::o;12630:::-;12772:3;12793:67;12857:2;12852:3;12793:67;:::i;:::-;12786:74;;12869:93;12958:3;12869:93;:::i;:::-;12987:2;12982:3;12978:12;12971:19;;12630:366;;;:::o;13002:::-;13144:3;13165:67;13229:2;13224:3;13165:67;:::i;:::-;13158:74;;13241:93;13330:3;13241:93;:::i;:::-;13359:2;13354:3;13350:12;13343:19;;13002:366;;;:::o;13374:::-;13516:3;13537:67;13601:2;13596:3;13537:67;:::i;:::-;13530:74;;13613:93;13702:3;13613:93;:::i;:::-;13731:2;13726:3;13722:12;13715:19;;13374:366;;;:::o;13746:::-;13888:3;13909:67;13973:2;13968:3;13909:67;:::i;:::-;13902:74;;13985:93;14074:3;13985:93;:::i;:::-;14103:2;14098:3;14094:12;14087:19;;13746:366;;;:::o;14118:::-;14260:3;14281:67;14345:2;14340:3;14281:67;:::i;:::-;14274:74;;14357:93;14446:3;14357:93;:::i;:::-;14475:2;14470:3;14466:12;14459:19;;14118:366;;;:::o;14490:118::-;14577:24;14595:5;14577:24;:::i;:::-;14572:3;14565:37;14490:118;;:::o;14614:222::-;14707:4;14745:2;14734:9;14730:18;14722:26;;14758:71;14826:1;14815:9;14811:17;14802:6;14758:71;:::i;:::-;14614:222;;;;:::o;14842:254::-;14951:4;14989:2;14978:9;14974:18;14966:26;;15002:87;15086:1;15075:9;15071:17;15062:6;15002:87;:::i;:::-;14842:254;;;;:::o;15102:348::-;15231:4;15269:2;15258:9;15254:18;15246:26;;15282:79;15358:1;15347:9;15343:17;15334:6;15282:79;:::i;:::-;15371:72;15439:2;15428:9;15424:18;15415:6;15371:72;:::i;:::-;15102:348;;;;;:::o;15456:807::-;15705:4;15743:3;15732:9;15728:19;15720:27;;15757:71;15825:1;15814:9;15810:17;15801:6;15757:71;:::i;:::-;15838:72;15906:2;15895:9;15891:18;15882:6;15838:72;:::i;:::-;15920:80;15996:2;15985:9;15981:18;15972:6;15920:80;:::i;:::-;16010;16086:2;16075:9;16071:18;16062:6;16010:80;:::i;:::-;16100:73;16168:3;16157:9;16153:19;16144:6;16100:73;:::i;:::-;16183;16251:3;16240:9;16236:19;16227:6;16183:73;:::i;:::-;15456:807;;;;;;;;;:::o;16269:210::-;16356:4;16394:2;16383:9;16379:18;16371:26;;16407:65;16469:1;16458:9;16454:17;16445:6;16407:65;:::i;:::-;16269:210;;;;:::o;16485:313::-;16598:4;16636:2;16625:9;16621:18;16613:26;;16685:9;16679:4;16675:20;16671:1;16660:9;16656:17;16649:47;16713:78;16786:4;16777:6;16713:78;:::i;:::-;16705:86;;16485:313;;;;:::o;16804:419::-;16970:4;17008:2;16997:9;16993:18;16985:26;;17057:9;17051:4;17047:20;17043:1;17032:9;17028:17;17021:47;17085:131;17211:4;17085:131;:::i;:::-;17077:139;;16804:419;;;:::o;17229:::-;17395:4;17433:2;17422:9;17418:18;17410:26;;17482:9;17476:4;17472:20;17468:1;17457:9;17453:17;17446:47;17510:131;17636:4;17510:131;:::i;:::-;17502:139;;17229:419;;;:::o;17654:::-;17820:4;17858:2;17847:9;17843:18;17835:26;;17907:9;17901:4;17897:20;17893:1;17882:9;17878:17;17871:47;17935:131;18061:4;17935:131;:::i;:::-;17927:139;;17654:419;;;:::o;18079:::-;18245:4;18283:2;18272:9;18268:18;18260:26;;18332:9;18326:4;18322:20;18318:1;18307:9;18303:17;18296:47;18360:131;18486:4;18360:131;:::i;:::-;18352:139;;18079:419;;;:::o;18504:::-;18670:4;18708:2;18697:9;18693:18;18685:26;;18757:9;18751:4;18747:20;18743:1;18732:9;18728:17;18721:47;18785:131;18911:4;18785:131;:::i;:::-;18777:139;;18504:419;;;:::o;18929:::-;19095:4;19133:2;19122:9;19118:18;19110:26;;19182:9;19176:4;19172:20;19168:1;19157:9;19153:17;19146:47;19210:131;19336:4;19210:131;:::i;:::-;19202:139;;18929:419;;;:::o;19354:::-;19520:4;19558:2;19547:9;19543:18;19535:26;;19607:9;19601:4;19597:20;19593:1;19582:9;19578:17;19571:47;19635:131;19761:4;19635:131;:::i;:::-;19627:139;;19354:419;;;:::o;19779:::-;19945:4;19983:2;19972:9;19968:18;19960:26;;20032:9;20026:4;20022:20;20018:1;20007:9;20003:17;19996:47;20060:131;20186:4;20060:131;:::i;:::-;20052:139;;19779:419;;;:::o;20204:::-;20370:4;20408:2;20397:9;20393:18;20385:26;;20457:9;20451:4;20447:20;20443:1;20432:9;20428:17;20421:47;20485:131;20611:4;20485:131;:::i;:::-;20477:139;;20204:419;;;:::o;20629:::-;20795:4;20833:2;20822:9;20818:18;20810:26;;20882:9;20876:4;20872:20;20868:1;20857:9;20853:17;20846:47;20910:131;21036:4;20910:131;:::i;:::-;20902:139;;20629:419;;;:::o;21054:::-;21220:4;21258:2;21247:9;21243:18;21235:26;;21307:9;21301:4;21297:20;21293:1;21282:9;21278:17;21271:47;21335:131;21461:4;21335:131;:::i;:::-;21327:139;;21054:419;;;:::o;21479:::-;21645:4;21683:2;21672:9;21668:18;21660:26;;21732:9;21726:4;21722:20;21718:1;21707:9;21703:17;21696:47;21760:131;21886:4;21760:131;:::i;:::-;21752:139;;21479:419;;;:::o;21904:::-;22070:4;22108:2;22097:9;22093:18;22085:26;;22157:9;22151:4;22147:20;22143:1;22132:9;22128:17;22121:47;22185:131;22311:4;22185:131;:::i;:::-;22177:139;;21904:419;;;:::o;22329:::-;22495:4;22533:2;22522:9;22518:18;22510:26;;22582:9;22576:4;22572:20;22568:1;22557:9;22553:17;22546:47;22610:131;22736:4;22610:131;:::i;:::-;22602:139;;22329:419;;;:::o;22754:222::-;22847:4;22885:2;22874:9;22870:18;22862:26;;22898:71;22966:1;22955:9;22951:17;22942:6;22898:71;:::i;:::-;22754:222;;;;:::o;22982:847::-;23253:4;23291:3;23280:9;23276:19;23268:27;;23305:71;23373:1;23362:9;23358:17;23349:6;23305:71;:::i;:::-;23386:80;23462:2;23451:9;23447:18;23438:6;23386:80;:::i;:::-;23513:9;23507:4;23503:20;23498:2;23487:9;23483:18;23476:48;23541:108;23644:4;23635:6;23541:108;:::i;:::-;23533:116;;23659:80;23735:2;23724:9;23720:18;23711:6;23659:80;:::i;:::-;23749:73;23817:3;23806:9;23802:19;23793:6;23749:73;:::i;:::-;22982:847;;;;;;;;:::o;23835:831::-;24098:4;24136:3;24125:9;24121:19;24113:27;;24150:71;24218:1;24207:9;24203:17;24194:6;24150:71;:::i;:::-;24231:80;24307:2;24296:9;24292:18;24283:6;24231:80;:::i;:::-;24358:9;24352:4;24348:20;24343:2;24332:9;24328:18;24321:48;24386:108;24489:4;24480:6;24386:108;:::i;:::-;24378:116;;24504:72;24572:2;24561:9;24557:18;24548:6;24504:72;:::i;:::-;24586:73;24654:3;24643:9;24639:19;24630:6;24586:73;:::i;:::-;23835:831;;;;;;;;:::o;24672:442::-;24821:4;24859:2;24848:9;24844:18;24836:26;;24872:71;24940:1;24929:9;24925:17;24916:6;24872:71;:::i;:::-;24953:72;25021:2;25010:9;25006:18;24997:6;24953:72;:::i;:::-;25035;25103:2;25092:9;25088:18;25079:6;25035:72;:::i;:::-;24672:442;;;;;;:::o;25201:132::-;25268:4;25291:3;25283:11;;25321:4;25316:3;25312:14;25304:22;;25201:132;;;:::o;25339:114::-;25406:6;25440:5;25434:12;25424:22;;25339:114;;;:::o;25459:99::-;25511:6;25545:5;25539:12;25529:22;;25459:99;;;:::o;25564:113::-;25634:4;25666;25661:3;25657:14;25649:22;;25564:113;;;:::o;25683:184::-;25782:11;25816:6;25811:3;25804:19;25856:4;25851:3;25847:14;25832:29;;25683:184;;;;:::o;25873:169::-;25957:11;25991:6;25986:3;25979:19;26031:4;26026:3;26022:14;26007:29;;25873:169;;;;:::o;26048:305::-;26088:3;26107:20;26125:1;26107:20;:::i;:::-;26102:25;;26141:20;26159:1;26141:20;:::i;:::-;26136:25;;26295:1;26227:66;26223:74;26220:1;26217:81;26214:107;;;26301:18;;:::i;:::-;26214:107;26345:1;26342;26338:9;26331:16;;26048:305;;;;:::o;26359:185::-;26399:1;26416:20;26434:1;26416:20;:::i;:::-;26411:25;;26450:20;26468:1;26450:20;:::i;:::-;26445:25;;26489:1;26479:35;;26494:18;;:::i;:::-;26479:35;26536:1;26533;26529:9;26524:14;;26359:185;;;;:::o;26550:348::-;26590:7;26613:20;26631:1;26613:20;:::i;:::-;26608:25;;26647:20;26665:1;26647:20;:::i;:::-;26642:25;;26835:1;26767:66;26763:74;26760:1;26757:81;26752:1;26745:9;26738:17;26734:105;26731:131;;;26842:18;;:::i;:::-;26731:131;26890:1;26887;26883:9;26872:20;;26550:348;;;;:::o;26904:191::-;26944:4;26964:20;26982:1;26964:20;:::i;:::-;26959:25;;26998:20;27016:1;26998:20;:::i;:::-;26993:25;;27037:1;27034;27031:8;27028:34;;;27042:18;;:::i;:::-;27028:34;27087:1;27084;27080:9;27072:17;;26904:191;;;;:::o;27101:96::-;27138:7;27167:24;27185:5;27167:24;:::i;:::-;27156:35;;27101:96;;;:::o;27203:104::-;27248:7;27277:24;27295:5;27277:24;:::i;:::-;27266:35;;27203:104;;;:::o;27313:90::-;27347:7;27390:5;27383:13;27376:21;27365:32;;27313:90;;;:::o;27409:109::-;27459:7;27488:24;27506:5;27488:24;:::i;:::-;27477:35;;27409:109;;;:::o;27524:126::-;27561:7;27601:42;27594:5;27590:54;27579:65;;27524:126;;;:::o;27656:77::-;27693:7;27722:5;27711:16;;27656:77;;;:::o;27739:134::-;27797:9;27830:37;27861:5;27830:37;:::i;:::-;27817:50;;27739:134;;;:::o;27879:121::-;27937:9;27970:24;27988:5;27970:24;:::i;:::-;27957:37;;27879:121;;;:::o;28006:126::-;28056:9;28089:37;28120:5;28089:37;:::i;:::-;28076:50;;28006:126;;;:::o;28138:113::-;28188:9;28221:24;28239:5;28221:24;:::i;:::-;28208:37;;28138:113;;;:::o;28257:307::-;28325:1;28335:113;28349:6;28346:1;28343:13;28335:113;;;28434:1;28429:3;28425:11;28419:18;28415:1;28410:3;28406:11;28399:39;28371:2;28368:1;28364:10;28359:15;;28335:113;;;28466:6;28463:1;28460:13;28457:101;;;28546:1;28537:6;28532:3;28528:16;28521:27;28457:101;28306:258;28257:307;;;:::o;28570:320::-;28614:6;28651:1;28645:4;28641:12;28631:22;;28698:1;28692:4;28688:12;28719:18;28709:81;;28775:4;28767:6;28763:17;28753:27;;28709:81;28837:2;28829:6;28826:14;28806:18;28803:38;28800:84;;;28856:18;;:::i;:::-;28800:84;28621:269;28570:320;;;:::o;28896:180::-;28944:77;28941:1;28934:88;29041:4;29038:1;29031:15;29065:4;29062:1;29055:15;29082:180;29130:77;29127:1;29120:88;29227:4;29224:1;29217:15;29251:4;29248:1;29241:15;29268:180;29316:77;29313:1;29306:88;29413:4;29410:1;29403:15;29437:4;29434:1;29427:15;29454:180;29502:77;29499:1;29492:88;29599:4;29596:1;29589:15;29623:4;29620:1;29613:15;29640:180;29688:77;29685:1;29678:88;29785:4;29782:1;29775:15;29809:4;29806:1;29799:15;29949:117;30058:1;30055;30048:12;30072:102;30113:6;30164:2;30160:7;30155:2;30148:5;30144:14;30140:28;30130:38;;30072:102;;;:::o;30180:222::-;30320:34;30316:1;30308:6;30304:14;30297:58;30389:5;30384:2;30376:6;30372:15;30365:30;30180:222;:::o;30408:225::-;30548:34;30544:1;30536:6;30532:14;30525:58;30617:8;30612:2;30604:6;30600:15;30593:33;30408:225;:::o;30639:221::-;30779:34;30775:1;30767:6;30763:14;30756:58;30848:4;30843:2;30835:6;30831:15;30824:29;30639:221;:::o;30866:244::-;31006:34;31002:1;30994:6;30990:14;30983:58;31075:27;31070:2;31062:6;31058:15;31051:52;30866:244;:::o;31116:225::-;31256:34;31252:1;31244:6;31240:14;31233:58;31325:8;31320:2;31312:6;31308:15;31301:33;31116:225;:::o;31347:229::-;31487:34;31483:1;31475:6;31471:14;31464:58;31556:12;31551:2;31543:6;31539:15;31532:37;31347:229;:::o;31582:227::-;31722:34;31718:1;31710:6;31706:14;31699:58;31791:10;31786:2;31778:6;31774:15;31767:35;31582:227;:::o;31815:237::-;31955:34;31951:1;31943:6;31939:14;31932:58;32024:20;32019:2;32011:6;32007:15;32000:45;31815:237;:::o;32058:179::-;32198:31;32194:1;32186:6;32182:14;32175:55;32058:179;:::o;32243:227::-;32383:34;32379:1;32371:6;32367:14;32360:58;32452:10;32447:2;32439:6;32435:15;32428:35;32243:227;:::o;32476:182::-;32616:34;32612:1;32604:6;32600:14;32593:58;32476:182;:::o;32664:224::-;32804:34;32800:1;32792:6;32788:14;32781:58;32873:7;32868:2;32860:6;32856:15;32849:32;32664:224;:::o;32894:223::-;33034:34;33030:1;33022:6;33018:14;33011:58;33103:6;33098:2;33090:6;33086:15;33079:31;32894:223;:::o;33123:167::-;33263:19;33259:1;33251:6;33247:14;33240:43;33123:167;:::o;33296:122::-;33369:24;33387:5;33369:24;:::i;:::-;33362:5;33359:35;33349:63;;33408:1;33405;33398:12;33349:63;33296:122;:::o;33424:138::-;33505:32;33531:5;33505:32;:::i;:::-;33498:5;33495:43;33485:71;;33552:1;33549;33542:12;33485:71;33424:138;:::o;33568:116::-;33638:21;33653:5;33638:21;:::i;:::-;33631:5;33628:32;33618:60;;33674:1;33671;33664:12;33618:60;33568:116;:::o;33690:148::-;33776:37;33807:5;33776:37;:::i;:::-;33769:5;33766:48;33756:76;;33828:1;33825;33818:12;33756:76;33690:148;:::o;33844:122::-;33917:24;33935:5;33917:24;:::i;:::-;33910:5;33907:35;33897:63;;33956:1;33953;33946:12;33897:63;33844:122;:::o

Swarm Source

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