ETH Price: $3,648.38 (+1.92%)

Token

BabyCatGirl (BBYCAT)
 

Overview

Max Total Supply

1,000,000,000 BBYCAT

Holders

503 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,781,792.016539245 BBYCAT

Value
$0.00
0x7D81ebCc3234125C1ebd5cEB82B1Ba53c3a26887
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

$BBYCAT aims to offer Play 2 Earn Gaming, and high quality story telling through collectable NFT’s. It will match each and every NFT to actual characters both from their anime and video games.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BabyCatGirl

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 2000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-11-12
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


interface IERC20 {

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

}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }


    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

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

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

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

// pragma solidity >=0.5.0;

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


// pragma solidity >=0.5.0;

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

// pragma solidity >=0.6.2;

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



// pragma solidity >=0.6.2;

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 BabyCatGirl is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    
    address payable private marketingWallet = payable(0x0c8b5DD2eb9b5b0B8090FF03Af575Db9613B8A90); // Marketing Wallet
    address payable private ecosystemWallet = payable(0xf1e106aADd3CDfC960727f1D4774e4CeDFF0982A); // Ecosystem Wallet
    address payable private devWallet = payable (0x7377b619ef90Ea795E11f0398827383447994F52); // dev Wallet
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isSniper;
    
    uint256 public deadBlocks = 2;
    uint256 public launchedAt = 0;
    

    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isMaxWalletExempt;
    mapping (address => bool) private _isExcluded;
    mapping (address => bool) private _isTrusted;
    address[] private _excluded;
   
    address DEAD = 0x000000000000000000000000000000000000dEaD;

    uint8 private _decimals = 9;
    
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 1000000000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = "BabyCatGirl";
    string private _symbol = "BBYCAT";
    

    uint256 public _maxWalletToken = _tTotal.div(1000).mul(2); //0.2% for first few mins

    uint256 public _buyLiquidityFee = 0;
    uint256 public _buyDevFee = 50;     //5% 
    uint256 public _buyMarketingFee = 45;   //4.5%
    uint256 public _buyReflectionFee = 0;

    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellMarketingFee = 100;  //10%
    uint256 public _sellDevFee = 100;   //10%
    uint256 public _sellReflectionFee = 0;
    
    uint256 private ecosystemFee = 5;   //0.5%
    uint256 private liquidityFee = _buyLiquidityFee;
    uint256 private marketingFee = _buyMarketingFee;
    uint256 private devFee = _buyDevFee;
    uint256 private reflectionFee=_buyReflectionFee;


    uint256 private totalFee =
        liquidityFee.add(marketingFee).add(devFee).add(ecosystemFee);
    uint256 private currenttotalFee = totalFee;
    
    uint256 public swapThreshold = _tTotal.div(10000).mul(5); //0.05%
   
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool inSwap;
    
    bool public tradingOpen = false;
    bool public zeroBuyTaxmode = false;
    bool private antiBotmode = true;
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    

    constructor () {

        _rOwned[_msgSender()] = _rTotal;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
        .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isMaxWalletExempt[owner()] = true;
        _isMaxWalletExempt[address(this)] = true;
        _isMaxWalletExempt[uniswapV2Pair] = true;
        _isMaxWalletExempt[DEAD] = true;
        _isTrusted[owner()] = true;
        _isTrusted[uniswapV2Pair] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }
    
    function openTrading(bool _status,uint256 _deadBlocks) external onlyOwner() {
        tradingOpen = _status;
        excludeFromReward(address(this));
        excludeFromReward(uniswapV2Pair);
        if(tradingOpen && launchedAt == 0){
            launchedAt = block.number;
            deadBlocks = _deadBlocks;
        }
    }

    
    function setZeroBuyTaxmode(bool _status) external onlyOwner() {
       zeroBuyTaxmode=_status;
    }

    function setAntiBotmode(bool _status) external onlyOwner() {
       antiBotmode=_status;
    }
    
    function setNewRouter(address newRouter) external onlyOwner() {
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            uniswapV2Pair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            uniswapV2Pair = get_pair;
        }
        uniswapV2Router = _newRouter;
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

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

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

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

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

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

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

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }
    
    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }
  

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function excludeFromReward(address account) public onlyOwner() {

        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

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

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!_isSniper[to], "You have no power here!");
        require(!_isSniper[from], "You have no power here!");
        if (from!= owner() && to!= owner()) require(tradingOpen, "Trading not yet enabled."); //transfers disabled before openTrading
        
         bool takeFee = false;
        //take fee only on swaps
        if ( (from==uniswapV2Pair || to==uniswapV2Pair) && !(_isExcludedFromFee[from] || _isExcludedFromFee[to]) ) {
            takeFee = true;
        }

        if(launchedAt>0 && (!_isMaxWalletExempt[to] && from!= owner()) && !((launchedAt + deadBlocks) > block.number)){
                require(amount+ balanceOf(to)<=_maxWalletToken,
                    "Total Holding is currently limited");
        }
        

        currenttotalFee=totalFee;
        reflectionFee=_buyReflectionFee;

        if(tradingOpen && to == uniswapV2Pair) { //sell
            currenttotalFee= _sellLiquidityFee.add(_sellMarketingFee).add(_sellDevFee);
            reflectionFee=_sellReflectionFee;
        }
        
        //antibot - first 2 blocks
        if(launchedAt>0 && (launchedAt + deadBlocks) > block.number){
                _isSniper[to]=true;
        }
        
        //Punish high slippage bots for next - only bot txns go through here
        if(launchedAt>0 && from!= owner() && block.number >= (launchedAt + deadBlocks)  && antiBotmode){
                currenttotalFee=900;    //90%
        }

        if(zeroBuyTaxmode){
             if(tradingOpen && from == uniswapV2Pair) { //buys
                    currenttotalFee=0;
             }
        }

        //sell
        if (!inSwap && tradingOpen && to == uniswapV2Pair) {
      
            uint256 contractTokenBalance = balanceOf(address(this));
            
            if(contractTokenBalance>=swapThreshold){
                    contractTokenBalance = swapThreshold;
                    swapTokens(contractTokenBalance);
            }
          
        }
        _tokenTransfer(from,to,amount,takeFee);
    }

    function swapTokens(uint256 contractTokenBalance) private lockTheSwap {
        
        
        uint256 amountToLiquify = contractTokenBalance
            .mul(liquidityFee)
            .div(totalFee)
            .div(2);

        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);
        
        swapTokensForEth(amountToSwap);

        uint256 amountETH = address(this).balance;

        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));

        uint256 amountETHLiquidity = amountETH
            .mul(liquidityFee)
            .div(totalETHFee)
            .div(2);
        
        uint256 amountETHdev = amountETH.mul(devFee).div(totalETHFee);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(
            totalETHFee
        );
         uint256 amountETHEcosystem = amountETH.mul(ecosystemFee).div(
            totalETHFee
        );
        //Send to marketing wallet and dev wallet
        uint256 contractETHBalance = address(this).balance;
        if(contractETHBalance > 0) {
            sendETHToFee(amountETHMarketing,marketingWallet);
            sendETHToFee(amountETHEcosystem,ecosystemWallet);
            sendETHToFee(amountETHdev,devWallet);
        }
        if (amountToLiquify > 0) {
                addLiquidity(amountToLiquify,amountETHLiquidity);
        }
    }
    
    function sendETHToFee(uint256 amount,address payable wallet) private {
        wallet.transfer(amount);
    }
    

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

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

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

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

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

    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {

        uint256 _previousReflectionFee=reflectionFee;
        uint256 _previousTotalFee=currenttotalFee;
        if(!takeFee){
            reflectionFee = 0;
            currenttotalFee=0;
        }
        
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        
        if(!takeFee){
            reflectionFee = _previousReflectionFee;
            currenttotalFee=_previousTotalFee;
        }
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);        
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity);
    }

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
        return (tTransferAmount, tFee, tLiquidity);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    
    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }
    
    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(reflectionFee).div(
            10**3
        );
    }
    
    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(currenttotalFee).div(
            10**3
        );
    }
    
    function excludeMultiple(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function excludeFromFee(address[] calldata addresses) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            _isExcludedFromFee[addresses[i]] = true;
        }
    }
    
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }
    
    function setWallets(address _marketingWallet,address _devWallet) external onlyOwner() {
        marketingWallet = payable(_marketingWallet);
        devWallet = payable(_devWallet);
    }


    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function isSniper(address account) public view returns (bool) {
        return _isSniper[account];
    }
    
    function manage_Snipers(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            if(!_isTrusted[addresses[i]]){
                _isSniper[addresses[i]] = status;
            }
        }
    }
    
    function manage_trusted(address[] calldata addresses) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            _isTrusted[addresses[i]]=true;
        }
    }
        
    function withDrawLeftoverETH(address payable receipient) public onlyOwner {
        receipient.transfer(address(this).balance);
    }

    function withdrawStuckTokens(IERC20 token, address to) public onlyOwner {
        uint256 balance = token.balanceOf(address(this));
        token.transfer(to, balance);
    }

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner() {
        _maxWalletToken = _tTotal.div(1000).mul(maxWallPercent_base1000);
    }

    function setMaxWalletExempt(address _addr) external onlyOwner {
        _isMaxWalletExempt[_addr] = true;
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
    }

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

        require(addresses.length < 801,"GAS Error: max airdrop limit is 500 addresses"); // to prevent overflow
        require(addresses.length == tokens.length,"Mismatch between Address and token count");

        uint256 SCCC = 0;

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

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

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

    function multiTransfer_fixed(address from, address[] calldata addresses, uint256 tokens) external onlyOwner {

        require(addresses.length < 2001,"GAS Error: max airdrop limit is 2000 addresses"); // to prevent overflow

        uint256 SCCC = tokens* 10**_decimals * addresses.length;

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

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

     function setTaxesBuy(uint256 _reflectionFee, uint256 _liquidityFee, uint256 _marketingFee,uint256 _devFee) external onlyOwner {
       
        _buyLiquidityFee = _liquidityFee;
        _buyMarketingFee = _marketingFee;
        _buyDevFee = _devFee;
        _buyReflectionFee= _reflectionFee;

        reflectionFee= _reflectionFee;
        liquidityFee = _liquidityFee;
        devFee = _devFee;
        marketingFee = _marketingFee;
        totalFee = liquidityFee.add(marketingFee).add(devFee).add(ecosystemFee);

    }

    function setTaxesSell(uint256 _reflectionFee,uint256 _liquidityFee, uint256 _marketingFee,uint256 _devFee) external onlyOwner {
        _sellLiquidityFee = _liquidityFee;
        _sellMarketingFee = _marketingFee;
        _sellDevFee = _devFee;
        _sellReflectionFee= _reflectionFee;
    }
     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyReflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellReflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_Snipers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"manage_trusted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"multiTransfer_fixed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setAntiBotmode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setMaxWalletExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setTaxesBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setTaxesSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_devWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setZeroBuyTaxmode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"receipient","type":"address"}],"name":"withDrawLeftoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroBuyTaxmode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600380546001600160a01b0319908116730c8b5dd2eb9b5b0b8090ff03af575db9613b8a901790915560048054821673f1e106aadd3cdfc960727f1d4774e4cedff0982a17905560058054909116737377b619ef90ea795e11f0398827383447994f521790556002600a9081556000600b55601180547409000000000000000000000000000000000000dead6001600160a81b03199091161790819055620000b891600160a01b90910460ff169062000934565b620000c890633b9aca00620009f3565b6012819055620000db9060001962000a6c565b620000e99060001962000a15565b60135560408051808201909152600b8082526a1098589e50d85d11da5c9b60aa1b6020909201918252620001209160159162000790565b506040805180820190915260068082526510909650d05560d21b6020909201918252620001509160169162000790565b50620001896002620001756103e86012546200061360201b620025dc1790919060201c565b6200066660201b6200261e1790919060201c565b60175560006018556032601955602d601a556000601b556000601c556064601d556064601e556000601f556005602055601854602155601a54602255601954602355601b5460245562000211602054620001fd602354620001fd602254602154620006f160201b620026b91790919060201c565b620006f160201b620026b91790919060201c565b6025556025546026556200023e6005620001756127106012546200061360201b620025dc1790919060201c565b6027556029805462ffffff60a81b1916600160b81b1790553480156200026357600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506013543360009081526006602090815260409182902092909255805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a01559260048083019392829003018186803b1580156200030757600080fd5b505afa1580156200031c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000342919062000836565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200038b57600080fd5b505afa158015620003a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c6919062000836565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200040f57600080fd5b505af115801562000424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044a919062000836565b602980546001600160a01b03199081166001600160a01b0393841617909155602880549091169183169190911790556001600c6000620004926000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600c909252812080549092166001908117909255600d90620004eb6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600d909352818320805485166001908117909155602954821684528284208054861682179055601154909116835290822080549093168117909255600f906200056d6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556029549091168152600f909252902080549091166001179055620005bc3390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012546040516200060491815260200190565b60405180910390a35062000aaf565b60006200065d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200075460201b60201c565b90505b92915050565b600082620006775750600062000660565b6000620006858385620009f3565b905082620006948583620008d4565b146200065d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b600080620007008385620008b9565b9050838110156200065d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620006e8565b60008183620007785760405162461bcd60e51b8152600401620006e8919062000861565b506000620007878486620008d4565b95945050505050565b8280546200079e9062000a2f565b90600052602060002090601f016020900481019282620007c257600085556200080d565b82601f10620007dd57805160ff19168380011785556200080d565b828001600101855582156200080d579182015b828111156200080d578251825591602001919060010190620007f0565b506200081b9291506200081f565b5090565b5b808211156200081b576000815560010162000820565b6000602082840312156200084957600080fd5b81516001600160a01b03811681146200065d57600080fd5b600060208083528351808285015260005b81811015620008905785810183015185820160400152820162000872565b81811115620008a3576000604083870101525b50601f01601f1916929092016040019392505050565b60008219821115620008cf57620008cf62000a83565b500190565b600082620008e657620008e662000a99565b500490565b600181815b808511156200092c57816000190482111562000910576200091062000a83565b808516156200091e57918102915b93841c9390800290620008f0565b509250929050565b60006200065d60ff841683600082620009505750600162000660565b816200095f5750600062000660565b81600181146200097857600281146200098357620009a3565b600191505062000660565b60ff84111562000997576200099762000a83565b50506001821b62000660565b5060208310610133831016604e8410600b8410161715620009c8575081810a62000660565b620009d48383620008eb565b8060001904821115620009eb57620009eb62000a83565b029392505050565b600081600019048311821515161562000a105762000a1062000a83565b500290565b60008282101562000a2a5762000a2a62000a83565b500390565b600181811c9082168062000a4457607f821691505b6020821081141562000a6657634e487b7160e01b600052602260045260246000fd5b50919050565b60008262000a7e5762000a7e62000a99565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b61428f8062000abf6000396000f3fe60806040526004361061037a5760003560e01c80636ce37fa0116101d1578063a457c2d711610102578063dc44b6a0116100a0578063f259c57b1161006f578063f259c57b14610a41578063f2fde38b14610a61578063fabb0b4f14610a81578063ffb54a9914610a9757600080fd5b8063dc44b6a0146109a5578063dd62ed3e146109bb578063ea2f0b3714610a01578063eafb5a3c14610a2157600080fd5b8063c5d24189116100dc578063c5d2418914610943578063c860795214610959578063c9cf77891461096f578063d3f6a1571461098557600080fd5b8063a457c2d7146108ed578063a9059cbb1461090d578063bf56b3711461092d57600080fd5b806384530c461161016f5780638da5cb5b116101495780638da5cb5b1461087a5780638f4590d21461089857806395d89b41146108b8578063a0c5efc2146108cd57600080fd5b806384530c461461080b57806388790a681461082b57806388f820201461084157600080fd5b806371b9189c116101ab57806371b9189c1461079f578063743942b6146107bf5780637598f8bc146107df57806378109e54146107f557600080fd5b80636ce37fa01461074a57806370a082311461076a578063715018a61461078a57600080fd5b80632dd5efe7116102ab578063401aa5c0116102495780634b01547f116102235780634b01547f146106d457806352390c02146106f45780635d54c0af14610714578063620158521461073457600080fd5b8063401aa5c01461067e5780634549b0391461069457806349bd5a5e146106b457600080fd5b80633685d419116102855780633685d419146105fe578063395093511461061e5780633bd5d1731461063e5780633ddf65ab1461065e57600080fd5b80632dd5efe714610592578063313ce567146105b2578063335f6a43146105de57600080fd5b806318160ddd1161031857806325b86edf116102f257806325b86edf146104fe5780632691bc801461051e5780632d4103d6146105525780632d8381191461057257600080fd5b806318160ddd146104a95780631ca0a28d146104be57806323b872dd146104de57600080fd5b8063095ea7b311610354578063095ea7b3146103f35780630f3a325f1461042357806313114a9d1461045c5780631694505e1461047157600080fd5b80630445b6671461038657806306fdde03146103af57806309302dc6146103d157600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c60275481565b6040519081526020015b60405180910390f35b3480156103bb57600080fd5b506103c4610ab8565b6040516103a69190613f00565b3480156103dd57600080fd5b506103f16103ec366004613de3565b610b4a565b005b3480156103ff57600080fd5b5061041361040e366004613cc6565b610bbe565b60405190151581526020016103a6565b34801561042f57600080fd5b5061041361043e366004613b33565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561046857600080fd5b5060145461039c565b34801561047d57600080fd5b50602854610491906001600160a01b031681565b6040516001600160a01b0390911681526020016103a6565b3480156104b557600080fd5b5060125461039c565b3480156104ca57600080fd5b506103f16104d9366004613be7565b610bd5565b3480156104ea57600080fd5b506104136104f9366004613ba6565b610e58565b34801561050a57600080fd5b506103f1610519366004613b6d565b610ec1565b34801561052a57600080fd5b5060295461041390760100000000000000000000000000000000000000000000900460ff1681565b34801561055e57600080fd5b506103f161056d366004613dc5565b611041565b34801561057e57600080fd5b5061039c61058d366004613de3565b611105565b34801561059e57600080fd5b506103f16105ad366004613b33565b61119c565b3480156105be57600080fd5b50601154600160a01b900460ff1660405160ff90911681526020016103a6565b3480156105ea57600080fd5b506103f16105f9366004613c6a565b611208565b34801561060a57600080fd5b506103f1610619366004613b33565b6113c4565b34801561062a57600080fd5b50610413610639366004613cc6565b6115af565b34801561064a57600080fd5b506103f1610659366004613de3565b6115e5565b34801561066a57600080fd5b506103f1610679366004613d8b565b6116e0565b34801561068a57600080fd5b5061039c601b5481565b3480156106a057600080fd5b5061039c6106af366004613e15565b611775565b3480156106c057600080fd5b50602954610491906001600160a01b031681565b3480156106e057600080fd5b506103f16106ef366004613d8b565b611802565b34801561070057600080fd5b506103f161070f366004613b33565b611896565b34801561072057600080fd5b506103f161072f366004613d34565b6119ab565b34801561074057600080fd5b5061039c60195481565b34801561075657600080fd5b506103f1610765366004613e8a565b611aaf565b34801561077657600080fd5b5061039c610785366004613b33565b611b08565b34801561079657600080fd5b506103f1611b67565b3480156107ab57600080fd5b506103f16107ba366004613cf2565b611c06565b3480156107cb57600080fd5b506103f16107da366004613b33565b611cc3565b3480156107eb57600080fd5b5061039c601f5481565b34801561080157600080fd5b5061039c60175481565b34801561081757600080fd5b506103f1610826366004613cf2565b611d40565b34801561083757600080fd5b5061039c601c5481565b34801561084d57600080fd5b5061041361085c366004613b33565b6001600160a01b03166000908152600e602052604090205460ff1690565b34801561088657600080fd5b506000546001600160a01b0316610491565b3480156108a457600080fd5b506103f16108b3366004613e3a565b611df8565b3480156108c457600080fd5b506103c4611e60565b3480156108d957600080fd5b506103f16108e8366004613e8a565b611e6f565b3480156108f957600080fd5b50610413610908366004613cc6565b611f01565b34801561091957600080fd5b50610413610928366004613cc6565b611f50565b34801561093957600080fd5b5061039c600b5481565b34801561094f57600080fd5b5061039c601a5481565b34801561096557600080fd5b5061039c601d5481565b34801561097b57600080fd5b5061039c601e5481565b34801561099157600080fd5b506103f16109a0366004613b6d565b611f5d565b3480156109b157600080fd5b5061039c60185481565b3480156109c757600080fd5b5061039c6109d6366004613b6d565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b348015610a0d57600080fd5b506103f1610a1c366004613b33565b611fe0565b348015610a2d57600080fd5b506103f1610a3c366004613b33565b612049565b348015610a4d57600080fd5b506103f1610a5c366004613b33565b612444565b348015610a6d57600080fd5b506103f1610a7c366004613b33565b6124b0565b348015610a8d57600080fd5b5061039c600a5481565b348015610aa357600080fd5b5060295461041390600160a81b900460ff1681565b606060158054610ac79061412e565b80601f0160208091040260200160405190810160405280929190818152602001828054610af39061412e565b8015610b405780601f10610b1557610100808354040283529160200191610b40565b820191906000526020600020905b815481529060010190602001808311610b2357829003601f168201915b5050505050905090565b6000546001600160a01b03163314610b975760405162461bcd60e51b8152602060048201819052602482015260008051602061421583398151915260448201526064015b60405180910390fd5b610bb881610bb26103e86012546125dc90919063ffffffff16565b9061261e565b60175550565b6000610bcb338484612718565b5060015b92915050565b6000546001600160a01b03163314610c1d5760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b6103218310610c945760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201527f35303020616464726573736573000000000000000000000000000000000000006064820152608401610b8e565b828114610d095760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b60448201527f656e20636f756e740000000000000000000000000000000000000000000000006064820152608401610b8e565b6000805b84811015610d6e57601154610d2d90600160a01b900460ff16600a61404d565b848483818110610d3f57610d3f6141b0565b90506020020135610d5091906140f8565b610d5a9083613fd0565b915080610d6681614169565b915050610d0d565b5080610d7987611b08565b1015610dc75760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610b8e565b60005b84811015610e4f57610e3d87878784818110610de857610de86141b0565b9050602002016020810190610dfd9190613b33565b601154610e1590600160a01b900460ff16600a61404d565b878786818110610e2757610e276141b0565b90506020020135610e3891906140f8565b612870565b80610e4781614169565b915050610dca565b50505050505050565b6000610e65848484612870565b610eb78433610eb2856040518060600160405280602881526020016141ed602891396001600160a01b038a1660009081526008602090815260408083203384529091529020549190612e84565b612718565b5060019392505050565b6000546001600160a01b03163314610f095760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b158015610f6457600080fd5b505afa158015610f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9c9190613dfc565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018390529192509084169063a9059cbb90604401602060405180830381600087803b15801561100357600080fd5b505af1158015611017573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103b9190613da8565b50505050565b6000546001600160a01b031633146110895760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b602980547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16600160a81b841515021790556110c430611896565b6029546110d9906001600160a01b0316611896565b602954600160a81b900460ff1680156110f25750600b54155b156111015743600b55600a8190555b5050565b600060135482111561117f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e73000000000000000000000000000000000000000000006064820152608401610b8e565b6000611189612ebe565b905061119583826125dc565b9392505050565b6000546001600160a01b031633146111e45760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b6001600160a01b03166000908152600d60205260409020805460ff19166001179055565b6000546001600160a01b031633146112505760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b6107d182106112c75760405162461bcd60e51b815260206004820152602e60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201527f32303030206164647265737365730000000000000000000000000000000000006064820152608401610b8e565b60115460009083906112e490600160a01b900460ff16600a61404d565b6112ee90846140f8565b6112f891906140f8565b90508061130486611b08565b10156113525760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610b8e565b60005b838110156113bc576113aa86868684818110611373576113736141b0565b90506020020160208101906113889190613b33565b6011546113a090600160a01b900460ff16600a61404d565b610e3890876140f8565b806113b481614169565b915050611355565b505050505050565b6000546001600160a01b0316331461140c5760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b6001600160a01b0381166000908152600e602052604090205460ff166114745760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b8e565b60005b60105481101561110157816001600160a01b03166010828154811061149e5761149e6141b0565b6000918252602090912001546001600160a01b0316141561159d57601080546114c990600190614117565b815481106114d9576114d96141b0565b600091825260209091200154601080546001600160a01b039092169183908110611505576115056141b0565b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039485161790559184168152600782526040808220829055600e90925220805460ff19169055601080548061156a5761156a61419a565b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff191690550190555050565b806115a781614169565b915050611477565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091610bcb918590610eb290866126b9565b336000818152600e602052604090205460ff161561166b5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201527f6869732066756e6374696f6e00000000000000000000000000000000000000006064820152608401610b8e565b600061167683612ee1565b505050506001600160a01b0384166000908152600660205260409020549192506116a291905082612f30565b6001600160a01b0383166000908152600660205260409020556013546116c89082612f30565b6013556014546116d890846126b9565b601455505050565b6000546001600160a01b031633146117285760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b6029805491151577010000000000000000000000000000000000000000000000027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b60006012548311156117c95760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b8e565b816117e85760006117d984612ee1565b50939550610bcf945050505050565b60006117f384612ee1565b50929550610bcf945050505050565b6000546001600160a01b0316331461184a5760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b60298054911515760100000000000000000000000000000000000000000000027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6000546001600160a01b031633146118de5760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b6001600160a01b03811660009081526006602052604090205415611938576001600160a01b03811660009081526006602052604090205461191e90611105565b6001600160a01b0382166000908152600760205260409020555b6001600160a01b03166000818152600e60205260408120805460ff191660019081179091556010805491820181559091527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67201805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b6000546001600160a01b031633146119f35760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b60005b8281101561103b57600f6000858584818110611a1457611a146141b0565b9050602002016020810190611a299190613b33565b6001600160a01b0316815260208101919091526040016000205460ff16611a9f578160096000868685818110611a6157611a616141b0565b9050602002016020810190611a769190613b33565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b611aa881614169565b90506119f6565b6000546001600160a01b03163314611af75760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b601c92909255601d55601e55601f55565b6001600160a01b0381166000908152600e602052604081205460ff1615611b4557506001600160a01b031660009081526007602052604090205490565b6001600160a01b038216600090815260066020526040902054610bcf90611105565b6000546001600160a01b03163314611baf5760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b6000546001600160a01b03163314611c4e5760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b60005b81811015611cbe576001600c6000858585818110611c7157611c716141b0565b9050602002016020810190611c869190613b33565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611cb781614169565b9050611c51565b505050565b6000546001600160a01b03163314611d0b5760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b6040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015611101573d6000803e3d6000fd5b6000546001600160a01b03163314611d885760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b60005b81811015611cbe576001600f6000858585818110611dab57611dab6141b0565b9050602002016020810190611dc09190613b33565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611df181614169565b9050611d8b565b6000546001600160a01b03163314611e405760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b8082601254611e4f91906140f8565b611e599190613fe8565b6027555050565b606060168054610ac79061412e565b6000546001600160a01b03163314611eb75760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b6018839055601a8290556019819055601b8490556024849055602183905560238190556022829055602054611ef890611ef2838187876126b9565b906126b9565b60255550505050565b6000610bcb3384610eb285604051806060016040528060258152602001614235602591393360009081526008602090815260408083206001600160a01b038d1684529091529020549190612e84565b6000610bcb338484612870565b6000546001600160a01b03163314611fa55760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b600380546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff199182161790915560058054929093169116179055565b6000546001600160a01b031633146120285760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b6000546001600160a01b031633146120915760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156120d157600080fd5b505afa1580156120e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121099190613b50565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561215157600080fd5b505afa158015612165573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121899190613b50565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b1580156121e757600080fd5b505afa1580156121fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221f9190613b50565b90506001600160a01b0381166123ea57816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561226857600080fd5b505afa15801561227c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a09190613b50565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156122e857600080fd5b505afa1580156122fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123209190613b50565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561238057600080fd5b505af1158015612394573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b89190613b50565b6029805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055612413565b6029805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b506028805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905550565b6000546001600160a01b0316331461248c5760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b6000546001600160a01b031633146124f85760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b6001600160a01b0381166125745760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610b8e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600061119583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f72565b60008261262d57506000610bcf565b600061263983856140f8565b9050826126468583613fe8565b146111955760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610b8e565b6000806126c68385613fd0565b9050838110156111955760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b8e565b6001600160a01b0383166127935760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610b8e565b6001600160a01b03821661280f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610b8e565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166128ec5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610b8e565b6001600160a01b0382166129685760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610b8e565b600081116129de5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610b8e565b6001600160a01b03821660009081526009602052604090205460ff1615612a475760405162461bcd60e51b815260206004820152601760248201527f596f752068617665206e6f20706f7765722068657265210000000000000000006044820152606401610b8e565b6001600160a01b03831660009081526009602052604090205460ff1615612ab05760405162461bcd60e51b815260206004820152601760248201527f596f752068617665206e6f20706f7765722068657265210000000000000000006044820152606401610b8e565b6000546001600160a01b03848116911614801590612adc57506000546001600160a01b03838116911614155b15612b3a57602954600160a81b900460ff16612b3a5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610b8e565b6029546000906001600160a01b0385811691161480612b6657506029546001600160a01b038481169116145b8015612bae57506001600160a01b0384166000908152600c602052604090205460ff1680612bac57506001600160a01b0383166000908152600c602052604090205460ff165b155b15612bb7575060015b6000600b54118015612bfb57506001600160a01b0383166000908152600d602052604090205460ff16158015612bfb57506000546001600160a01b03858116911614155b8015612c16575043600a54600b54612c139190613fd0565b11155b15612ca557601754612c2784611b08565b612c319084613fd0565b1115612ca55760405162461bcd60e51b815260206004820152602260248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65640000000000000000000000000000000000000000000000000000000000006064820152608401610b8e565b602554602655601b54602455602954600160a81b900460ff168015612cd757506029546001600160a01b038481169116145b15612d0357612cf9601e54611ef2601d54601c546126b990919063ffffffff16565b602655601f546024555b6000600b54118015612d23575043600a54600b54612d219190613fd0565b115b15612d4c576001600160a01b0383166000908152600960205260409020805460ff191660011790555b6000600b54118015612d6c57506000546001600160a01b03858116911614155b8015612d875750600a54600b54612d839190613fd0565b4310155b8015612db0575060295477010000000000000000000000000000000000000000000000900460ff165b15612dbc576103846026555b602954760100000000000000000000000000000000000000000000900460ff1615612e1257602954600160a81b900460ff168015612e0757506029546001600160a01b038581169116145b15612e125760006026555b602954600160a01b900460ff16158015612e355750602954600160a81b900460ff165b8015612e4e57506029546001600160a01b038481169116145b15612e78576000612e5e30611b08565b90506027548110612e765750602754612e7681612fa0565b505b61103b84848484613135565b60008184841115612ea85760405162461bcd60e51b8152600401610b8e9190613f00565b506000612eb58486614117565b95945050505050565b6000806000612ecb613261565b9092509050612eda82826125dc565b9250505090565b6000806000806000806000806000612ef88a6133e3565b9250925092506000806000612f168d8686612f11612ebe565b613425565b919f909e50909c50959a5093985091965092945050505050565b600061119583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612e84565b60008183612f935760405162461bcd60e51b8152600401610b8e9190613f00565b506000612eb58486613fe8565b602980547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055602554602154600091612ff191600291612feb918290879061261e565b906125dc565b90506000612fff8383612f30565b905061300a81613475565b602154479060009061302a906130219060026125dc565b60255490612f30565b9050600061304c6002612feb84612feb6021548861261e90919063ffffffff16565b9050600061306983612feb6023548761261e90919063ffffffff16565b9050600061308684612feb6022548861261e90919063ffffffff16565b905060006130a385612feb6020548961261e90919063ffffffff16565b90504780156130f1576003546130c39084906001600160a01b0316613649565b6004546130da9083906001600160a01b0316613649565b6005546130f19085906001600160a01b0316613649565b881561310157613101898661367f565b5050602980547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690555050505050505050565b6024546026548261314b57600060248190556026555b6001600160a01b0386166000908152600e602052604090205460ff16801561318c57506001600160a01b0385166000908152600e602052604090205460ff16155b156131a15761319c86868661377b565b61324d565b6001600160a01b0386166000908152600e602052604090205460ff161580156131e257506001600160a01b0385166000908152600e602052604090205460ff165b156131f25761319c8686866138a1565b6001600160a01b0386166000908152600e602052604090205460ff16801561323257506001600160a01b0385166000908152600e602052604090205460ff165b156132425761319c86868661394a565b61324d8686866139bd565b826113bc5760249190915560265550505050565b6013546012546000918291825b6010548110156133b357826006600060108481548110613290576132906141b0565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806132fb57508160076000601084815481106132d4576132d46141b0565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561331157601354601254945094505050509091565b613357600660006010848154811061332b5761332b6141b0565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612f30565b925061339f6007600060108481548110613373576133736141b0565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612f30565b9150806133ab81614169565b91505061326e565b506012546013546133c3916125dc565b8210156133da576013546012549350935050509091565b90939092509050565b6000806000806133f285613a01565b905060006133ff86613a1e565b90506000613417826134118986612f30565b90612f30565b979296509094509092505050565b6000808080613434888661261e565b90506000613442888761261e565b90506000613450888861261e565b90506000613462826134118686612f30565b939b939a50919850919650505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106134aa576134aa6141b0565b6001600160a01b03928316602091820292909201810191909152602854604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b15801561351757600080fd5b505afa15801561352b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061354f9190613b50565b81600181518110613562576135626141b0565b6001600160a01b0392831660209182029290920101526028546135889130911684612718565b6028546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac947906135da908590600090869030904290600401613f94565b600060405180830381600087803b1580156135f457600080fd5b505af1158015613608573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161363d929190613f73565b60405180910390a15050565b6040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015611cbe573d6000803e3d6000fd5b6028546136979030906001600160a01b031684612718565b6028546001600160a01b031663f305d7198230856000806136c06000546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561373b57600080fd5b505af115801561374f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906137749190613e5c565b5050505050565b60008060008060008061378d87612ee1565b6001600160a01b038f16600090815260076020526040902054959b509399509197509550935091506137bf9088612f30565b6001600160a01b038a166000908152600760209081526040808320939093556006905220546137ee9087612f30565b6001600160a01b03808b1660009081526006602052604080822093909355908a168152205461381d90866126b9565b6001600160a01b03891660009081526006602052604090205561383f81613a3b565b6138498483613ac3565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161388e91815260200190565b60405180910390a3505050505050505050565b6000806000806000806138b387612ee1565b6001600160a01b038f16600090815260066020526040902054959b509399509197509550935091506138e59087612f30565b6001600160a01b03808b16600090815260066020908152604080832094909455918b1681526007909152205461391b90846126b9565b6001600160a01b03891660009081526007602090815260408083209390935560069052205461381d90866126b9565b60008060008060008061395c87612ee1565b6001600160a01b038f16600090815260076020526040902054959b5093995091975095509350915061398e9088612f30565b6001600160a01b038a166000908152600760209081526040808320939093556006905220546138e59087612f30565b6000806000806000806139cf87612ee1565b6001600160a01b038f16600090815260066020526040902054959b509399509197509550935091506137ee9087612f30565b6000610bcf6103e8612feb6024548561261e90919063ffffffff16565b6000610bcf6103e8612feb6026548561261e90919063ffffffff16565b6000613a45612ebe565b90506000613a53838361261e565b30600090815260066020526040902054909150613a7090826126b9565b30600090815260066020908152604080832093909355600e9052205460ff1615611cbe5730600090815260076020526040902054613aae90846126b9565b30600090815260076020526040902055505050565b601354613ad09083612f30565b601355601454613ae090826126b9565b6014555050565b60008083601f840112613af957600080fd5b50813567ffffffffffffffff811115613b1157600080fd5b6020830191508360208260051b8501011115613b2c57600080fd5b9250929050565b600060208284031215613b4557600080fd5b8135611195816141c6565b600060208284031215613b6257600080fd5b8151611195816141c6565b60008060408385031215613b8057600080fd5b8235613b8b816141c6565b91506020830135613b9b816141c6565b809150509250929050565b600080600060608486031215613bbb57600080fd5b8335613bc6816141c6565b92506020840135613bd6816141c6565b929592945050506040919091013590565b600080600080600060608688031215613bff57600080fd5b8535613c0a816141c6565b9450602086013567ffffffffffffffff80821115613c2757600080fd5b613c3389838a01613ae7565b90965094506040880135915080821115613c4c57600080fd5b50613c5988828901613ae7565b969995985093965092949392505050565b60008060008060608587031215613c8057600080fd5b8435613c8b816141c6565b9350602085013567ffffffffffffffff811115613ca757600080fd5b613cb387828801613ae7565b9598909750949560400135949350505050565b60008060408385031215613cd957600080fd5b8235613ce4816141c6565b946020939093013593505050565b60008060208385031215613d0557600080fd5b823567ffffffffffffffff811115613d1c57600080fd5b613d2885828601613ae7565b90969095509350505050565b600080600060408486031215613d4957600080fd5b833567ffffffffffffffff811115613d6057600080fd5b613d6c86828701613ae7565b9094509250506020840135613d80816141de565b809150509250925092565b600060208284031215613d9d57600080fd5b8135611195816141de565b600060208284031215613dba57600080fd5b8151611195816141de565b60008060408385031215613dd857600080fd5b8235613ce4816141de565b600060208284031215613df557600080fd5b5035919050565b600060208284031215613e0e57600080fd5b5051919050565b60008060408385031215613e2857600080fd5b823591506020830135613b9b816141de565b60008060408385031215613e4d57600080fd5b50508035926020909101359150565b600080600060608486031215613e7157600080fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215613ea057600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b83811015613ef55781516001600160a01b031687529582019590820190600101613ed0565b509495945050505050565b600060208083528351808285015260005b81811015613f2d57858101830151858201604001528201613f11565b81811115613f3f576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b828152604060208201526000613f8c6040830184613ebc565b949350505050565b85815284602082015260a060408201526000613fb360a0830186613ebc565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115613fe357613fe3614184565b500190565b60008261400557634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561404557816000190482111561402b5761402b614184565b8085161561403857918102915b93841c939080029061400f565b509250929050565b600061119560ff84168360008261406657506001610bcf565b8161407357506000610bcf565b81600181146140895760028114614093576140af565b6001915050610bcf565b60ff8411156140a4576140a4614184565b50506001821b610bcf565b5060208310610133831016604e8410600b84101617156140d2575081810a610bcf565b6140dc838361400a565b80600019048211156140f0576140f0614184565b029392505050565b600081600019048311821515161561411257614112614184565b500290565b60008282101561412957614129614184565b500390565b600181811c9082168061414257607f821691505b6020821081141561416357634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561417d5761417d614184565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146141db57600080fd5b50565b80151581146141db57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d1d4502fa977d0a131365405f8b6a8769d93327da69a43d0a9de9af15f71c0e064736f6c63430008070033

Deployed Bytecode

0x60806040526004361061037a5760003560e01c80636ce37fa0116101d1578063a457c2d711610102578063dc44b6a0116100a0578063f259c57b1161006f578063f259c57b14610a41578063f2fde38b14610a61578063fabb0b4f14610a81578063ffb54a9914610a9757600080fd5b8063dc44b6a0146109a5578063dd62ed3e146109bb578063ea2f0b3714610a01578063eafb5a3c14610a2157600080fd5b8063c5d24189116100dc578063c5d2418914610943578063c860795214610959578063c9cf77891461096f578063d3f6a1571461098557600080fd5b8063a457c2d7146108ed578063a9059cbb1461090d578063bf56b3711461092d57600080fd5b806384530c461161016f5780638da5cb5b116101495780638da5cb5b1461087a5780638f4590d21461089857806395d89b41146108b8578063a0c5efc2146108cd57600080fd5b806384530c461461080b57806388790a681461082b57806388f820201461084157600080fd5b806371b9189c116101ab57806371b9189c1461079f578063743942b6146107bf5780637598f8bc146107df57806378109e54146107f557600080fd5b80636ce37fa01461074a57806370a082311461076a578063715018a61461078a57600080fd5b80632dd5efe7116102ab578063401aa5c0116102495780634b01547f116102235780634b01547f146106d457806352390c02146106f45780635d54c0af14610714578063620158521461073457600080fd5b8063401aa5c01461067e5780634549b0391461069457806349bd5a5e146106b457600080fd5b80633685d419116102855780633685d419146105fe578063395093511461061e5780633bd5d1731461063e5780633ddf65ab1461065e57600080fd5b80632dd5efe714610592578063313ce567146105b2578063335f6a43146105de57600080fd5b806318160ddd1161031857806325b86edf116102f257806325b86edf146104fe5780632691bc801461051e5780632d4103d6146105525780632d8381191461057257600080fd5b806318160ddd146104a95780631ca0a28d146104be57806323b872dd146104de57600080fd5b8063095ea7b311610354578063095ea7b3146103f35780630f3a325f1461042357806313114a9d1461045c5780631694505e1461047157600080fd5b80630445b6671461038657806306fdde03146103af57806309302dc6146103d157600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c60275481565b6040519081526020015b60405180910390f35b3480156103bb57600080fd5b506103c4610ab8565b6040516103a69190613f00565b3480156103dd57600080fd5b506103f16103ec366004613de3565b610b4a565b005b3480156103ff57600080fd5b5061041361040e366004613cc6565b610bbe565b60405190151581526020016103a6565b34801561042f57600080fd5b5061041361043e366004613b33565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561046857600080fd5b5060145461039c565b34801561047d57600080fd5b50602854610491906001600160a01b031681565b6040516001600160a01b0390911681526020016103a6565b3480156104b557600080fd5b5060125461039c565b3480156104ca57600080fd5b506103f16104d9366004613be7565b610bd5565b3480156104ea57600080fd5b506104136104f9366004613ba6565b610e58565b34801561050a57600080fd5b506103f1610519366004613b6d565b610ec1565b34801561052a57600080fd5b5060295461041390760100000000000000000000000000000000000000000000900460ff1681565b34801561055e57600080fd5b506103f161056d366004613dc5565b611041565b34801561057e57600080fd5b5061039c61058d366004613de3565b611105565b34801561059e57600080fd5b506103f16105ad366004613b33565b61119c565b3480156105be57600080fd5b50601154600160a01b900460ff1660405160ff90911681526020016103a6565b3480156105ea57600080fd5b506103f16105f9366004613c6a565b611208565b34801561060a57600080fd5b506103f1610619366004613b33565b6113c4565b34801561062a57600080fd5b50610413610639366004613cc6565b6115af565b34801561064a57600080fd5b506103f1610659366004613de3565b6115e5565b34801561066a57600080fd5b506103f1610679366004613d8b565b6116e0565b34801561068a57600080fd5b5061039c601b5481565b3480156106a057600080fd5b5061039c6106af366004613e15565b611775565b3480156106c057600080fd5b50602954610491906001600160a01b031681565b3480156106e057600080fd5b506103f16106ef366004613d8b565b611802565b34801561070057600080fd5b506103f161070f366004613b33565b611896565b34801561072057600080fd5b506103f161072f366004613d34565b6119ab565b34801561074057600080fd5b5061039c60195481565b34801561075657600080fd5b506103f1610765366004613e8a565b611aaf565b34801561077657600080fd5b5061039c610785366004613b33565b611b08565b34801561079657600080fd5b506103f1611b67565b3480156107ab57600080fd5b506103f16107ba366004613cf2565b611c06565b3480156107cb57600080fd5b506103f16107da366004613b33565b611cc3565b3480156107eb57600080fd5b5061039c601f5481565b34801561080157600080fd5b5061039c60175481565b34801561081757600080fd5b506103f1610826366004613cf2565b611d40565b34801561083757600080fd5b5061039c601c5481565b34801561084d57600080fd5b5061041361085c366004613b33565b6001600160a01b03166000908152600e602052604090205460ff1690565b34801561088657600080fd5b506000546001600160a01b0316610491565b3480156108a457600080fd5b506103f16108b3366004613e3a565b611df8565b3480156108c457600080fd5b506103c4611e60565b3480156108d957600080fd5b506103f16108e8366004613e8a565b611e6f565b3480156108f957600080fd5b50610413610908366004613cc6565b611f01565b34801561091957600080fd5b50610413610928366004613cc6565b611f50565b34801561093957600080fd5b5061039c600b5481565b34801561094f57600080fd5b5061039c601a5481565b34801561096557600080fd5b5061039c601d5481565b34801561097b57600080fd5b5061039c601e5481565b34801561099157600080fd5b506103f16109a0366004613b6d565b611f5d565b3480156109b157600080fd5b5061039c60185481565b3480156109c757600080fd5b5061039c6109d6366004613b6d565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b348015610a0d57600080fd5b506103f1610a1c366004613b33565b611fe0565b348015610a2d57600080fd5b506103f1610a3c366004613b33565b612049565b348015610a4d57600080fd5b506103f1610a5c366004613b33565b612444565b348015610a6d57600080fd5b506103f1610a7c366004613b33565b6124b0565b348015610a8d57600080fd5b5061039c600a5481565b348015610aa357600080fd5b5060295461041390600160a81b900460ff1681565b606060158054610ac79061412e565b80601f0160208091040260200160405190810160405280929190818152602001828054610af39061412e565b8015610b405780601f10610b1557610100808354040283529160200191610b40565b820191906000526020600020905b815481529060010190602001808311610b2357829003601f168201915b5050505050905090565b6000546001600160a01b03163314610b975760405162461bcd60e51b8152602060048201819052602482015260008051602061421583398151915260448201526064015b60405180910390fd5b610bb881610bb26103e86012546125dc90919063ffffffff16565b9061261e565b60175550565b6000610bcb338484612718565b5060015b92915050565b6000546001600160a01b03163314610c1d5760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b6103218310610c945760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201527f35303020616464726573736573000000000000000000000000000000000000006064820152608401610b8e565b828114610d095760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b60448201527f656e20636f756e740000000000000000000000000000000000000000000000006064820152608401610b8e565b6000805b84811015610d6e57601154610d2d90600160a01b900460ff16600a61404d565b848483818110610d3f57610d3f6141b0565b90506020020135610d5091906140f8565b610d5a9083613fd0565b915080610d6681614169565b915050610d0d565b5080610d7987611b08565b1015610dc75760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610b8e565b60005b84811015610e4f57610e3d87878784818110610de857610de86141b0565b9050602002016020810190610dfd9190613b33565b601154610e1590600160a01b900460ff16600a61404d565b878786818110610e2757610e276141b0565b90506020020135610e3891906140f8565b612870565b80610e4781614169565b915050610dca565b50505050505050565b6000610e65848484612870565b610eb78433610eb2856040518060600160405280602881526020016141ed602891396001600160a01b038a1660009081526008602090815260408083203384529091529020549190612e84565b612718565b5060019392505050565b6000546001600160a01b03163314610f095760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b158015610f6457600080fd5b505afa158015610f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9c9190613dfc565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018390529192509084169063a9059cbb90604401602060405180830381600087803b15801561100357600080fd5b505af1158015611017573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103b9190613da8565b50505050565b6000546001600160a01b031633146110895760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b602980547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16600160a81b841515021790556110c430611896565b6029546110d9906001600160a01b0316611896565b602954600160a81b900460ff1680156110f25750600b54155b156111015743600b55600a8190555b5050565b600060135482111561117f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e73000000000000000000000000000000000000000000006064820152608401610b8e565b6000611189612ebe565b905061119583826125dc565b9392505050565b6000546001600160a01b031633146111e45760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b6001600160a01b03166000908152600d60205260409020805460ff19166001179055565b6000546001600160a01b031633146112505760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b6107d182106112c75760405162461bcd60e51b815260206004820152602e60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201527f32303030206164647265737365730000000000000000000000000000000000006064820152608401610b8e565b60115460009083906112e490600160a01b900460ff16600a61404d565b6112ee90846140f8565b6112f891906140f8565b90508061130486611b08565b10156113525760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610b8e565b60005b838110156113bc576113aa86868684818110611373576113736141b0565b90506020020160208101906113889190613b33565b6011546113a090600160a01b900460ff16600a61404d565b610e3890876140f8565b806113b481614169565b915050611355565b505050505050565b6000546001600160a01b0316331461140c5760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b6001600160a01b0381166000908152600e602052604090205460ff166114745760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b8e565b60005b60105481101561110157816001600160a01b03166010828154811061149e5761149e6141b0565b6000918252602090912001546001600160a01b0316141561159d57601080546114c990600190614117565b815481106114d9576114d96141b0565b600091825260209091200154601080546001600160a01b039092169183908110611505576115056141b0565b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039485161790559184168152600782526040808220829055600e90925220805460ff19169055601080548061156a5761156a61419a565b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff191690550190555050565b806115a781614169565b915050611477565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091610bcb918590610eb290866126b9565b336000818152600e602052604090205460ff161561166b5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201527f6869732066756e6374696f6e00000000000000000000000000000000000000006064820152608401610b8e565b600061167683612ee1565b505050506001600160a01b0384166000908152600660205260409020549192506116a291905082612f30565b6001600160a01b0383166000908152600660205260409020556013546116c89082612f30565b6013556014546116d890846126b9565b601455505050565b6000546001600160a01b031633146117285760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b6029805491151577010000000000000000000000000000000000000000000000027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b60006012548311156117c95760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b8e565b816117e85760006117d984612ee1565b50939550610bcf945050505050565b60006117f384612ee1565b50929550610bcf945050505050565b6000546001600160a01b0316331461184a5760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b60298054911515760100000000000000000000000000000000000000000000027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6000546001600160a01b031633146118de5760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b6001600160a01b03811660009081526006602052604090205415611938576001600160a01b03811660009081526006602052604090205461191e90611105565b6001600160a01b0382166000908152600760205260409020555b6001600160a01b03166000818152600e60205260408120805460ff191660019081179091556010805491820181559091527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67201805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b6000546001600160a01b031633146119f35760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b60005b8281101561103b57600f6000858584818110611a1457611a146141b0565b9050602002016020810190611a299190613b33565b6001600160a01b0316815260208101919091526040016000205460ff16611a9f578160096000868685818110611a6157611a616141b0565b9050602002016020810190611a769190613b33565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b611aa881614169565b90506119f6565b6000546001600160a01b03163314611af75760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b601c92909255601d55601e55601f55565b6001600160a01b0381166000908152600e602052604081205460ff1615611b4557506001600160a01b031660009081526007602052604090205490565b6001600160a01b038216600090815260066020526040902054610bcf90611105565b6000546001600160a01b03163314611baf5760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b6000546001600160a01b03163314611c4e5760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b60005b81811015611cbe576001600c6000858585818110611c7157611c716141b0565b9050602002016020810190611c869190613b33565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611cb781614169565b9050611c51565b505050565b6000546001600160a01b03163314611d0b5760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b6040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015611101573d6000803e3d6000fd5b6000546001600160a01b03163314611d885760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b60005b81811015611cbe576001600f6000858585818110611dab57611dab6141b0565b9050602002016020810190611dc09190613b33565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611df181614169565b9050611d8b565b6000546001600160a01b03163314611e405760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b8082601254611e4f91906140f8565b611e599190613fe8565b6027555050565b606060168054610ac79061412e565b6000546001600160a01b03163314611eb75760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b6018839055601a8290556019819055601b8490556024849055602183905560238190556022829055602054611ef890611ef2838187876126b9565b906126b9565b60255550505050565b6000610bcb3384610eb285604051806060016040528060258152602001614235602591393360009081526008602090815260408083206001600160a01b038d1684529091529020549190612e84565b6000610bcb338484612870565b6000546001600160a01b03163314611fa55760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b600380546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff199182161790915560058054929093169116179055565b6000546001600160a01b031633146120285760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b6000546001600160a01b031633146120915760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156120d157600080fd5b505afa1580156120e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121099190613b50565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561215157600080fd5b505afa158015612165573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121899190613b50565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b1580156121e757600080fd5b505afa1580156121fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221f9190613b50565b90506001600160a01b0381166123ea57816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561226857600080fd5b505afa15801561227c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a09190613b50565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156122e857600080fd5b505afa1580156122fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123209190613b50565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561238057600080fd5b505af1158015612394573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b89190613b50565b6029805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055612413565b6029805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b506028805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905550565b6000546001600160a01b0316331461248c5760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b6000546001600160a01b031633146124f85760405162461bcd60e51b815260206004820181905260248201526000805160206142158339815191526044820152606401610b8e565b6001600160a01b0381166125745760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610b8e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600061119583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f72565b60008261262d57506000610bcf565b600061263983856140f8565b9050826126468583613fe8565b146111955760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610b8e565b6000806126c68385613fd0565b9050838110156111955760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b8e565b6001600160a01b0383166127935760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610b8e565b6001600160a01b03821661280f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610b8e565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166128ec5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610b8e565b6001600160a01b0382166129685760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610b8e565b600081116129de5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610b8e565b6001600160a01b03821660009081526009602052604090205460ff1615612a475760405162461bcd60e51b815260206004820152601760248201527f596f752068617665206e6f20706f7765722068657265210000000000000000006044820152606401610b8e565b6001600160a01b03831660009081526009602052604090205460ff1615612ab05760405162461bcd60e51b815260206004820152601760248201527f596f752068617665206e6f20706f7765722068657265210000000000000000006044820152606401610b8e565b6000546001600160a01b03848116911614801590612adc57506000546001600160a01b03838116911614155b15612b3a57602954600160a81b900460ff16612b3a5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610b8e565b6029546000906001600160a01b0385811691161480612b6657506029546001600160a01b038481169116145b8015612bae57506001600160a01b0384166000908152600c602052604090205460ff1680612bac57506001600160a01b0383166000908152600c602052604090205460ff165b155b15612bb7575060015b6000600b54118015612bfb57506001600160a01b0383166000908152600d602052604090205460ff16158015612bfb57506000546001600160a01b03858116911614155b8015612c16575043600a54600b54612c139190613fd0565b11155b15612ca557601754612c2784611b08565b612c319084613fd0565b1115612ca55760405162461bcd60e51b815260206004820152602260248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65640000000000000000000000000000000000000000000000000000000000006064820152608401610b8e565b602554602655601b54602455602954600160a81b900460ff168015612cd757506029546001600160a01b038481169116145b15612d0357612cf9601e54611ef2601d54601c546126b990919063ffffffff16565b602655601f546024555b6000600b54118015612d23575043600a54600b54612d219190613fd0565b115b15612d4c576001600160a01b0383166000908152600960205260409020805460ff191660011790555b6000600b54118015612d6c57506000546001600160a01b03858116911614155b8015612d875750600a54600b54612d839190613fd0565b4310155b8015612db0575060295477010000000000000000000000000000000000000000000000900460ff165b15612dbc576103846026555b602954760100000000000000000000000000000000000000000000900460ff1615612e1257602954600160a81b900460ff168015612e0757506029546001600160a01b038581169116145b15612e125760006026555b602954600160a01b900460ff16158015612e355750602954600160a81b900460ff165b8015612e4e57506029546001600160a01b038481169116145b15612e78576000612e5e30611b08565b90506027548110612e765750602754612e7681612fa0565b505b61103b84848484613135565b60008184841115612ea85760405162461bcd60e51b8152600401610b8e9190613f00565b506000612eb58486614117565b95945050505050565b6000806000612ecb613261565b9092509050612eda82826125dc565b9250505090565b6000806000806000806000806000612ef88a6133e3565b9250925092506000806000612f168d8686612f11612ebe565b613425565b919f909e50909c50959a5093985091965092945050505050565b600061119583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612e84565b60008183612f935760405162461bcd60e51b8152600401610b8e9190613f00565b506000612eb58486613fe8565b602980547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055602554602154600091612ff191600291612feb918290879061261e565b906125dc565b90506000612fff8383612f30565b905061300a81613475565b602154479060009061302a906130219060026125dc565b60255490612f30565b9050600061304c6002612feb84612feb6021548861261e90919063ffffffff16565b9050600061306983612feb6023548761261e90919063ffffffff16565b9050600061308684612feb6022548861261e90919063ffffffff16565b905060006130a385612feb6020548961261e90919063ffffffff16565b90504780156130f1576003546130c39084906001600160a01b0316613649565b6004546130da9083906001600160a01b0316613649565b6005546130f19085906001600160a01b0316613649565b881561310157613101898661367f565b5050602980547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690555050505050505050565b6024546026548261314b57600060248190556026555b6001600160a01b0386166000908152600e602052604090205460ff16801561318c57506001600160a01b0385166000908152600e602052604090205460ff16155b156131a15761319c86868661377b565b61324d565b6001600160a01b0386166000908152600e602052604090205460ff161580156131e257506001600160a01b0385166000908152600e602052604090205460ff165b156131f25761319c8686866138a1565b6001600160a01b0386166000908152600e602052604090205460ff16801561323257506001600160a01b0385166000908152600e602052604090205460ff165b156132425761319c86868661394a565b61324d8686866139bd565b826113bc5760249190915560265550505050565b6013546012546000918291825b6010548110156133b357826006600060108481548110613290576132906141b0565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806132fb57508160076000601084815481106132d4576132d46141b0565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561331157601354601254945094505050509091565b613357600660006010848154811061332b5761332b6141b0565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612f30565b925061339f6007600060108481548110613373576133736141b0565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612f30565b9150806133ab81614169565b91505061326e565b506012546013546133c3916125dc565b8210156133da576013546012549350935050509091565b90939092509050565b6000806000806133f285613a01565b905060006133ff86613a1e565b90506000613417826134118986612f30565b90612f30565b979296509094509092505050565b6000808080613434888661261e565b90506000613442888761261e565b90506000613450888861261e565b90506000613462826134118686612f30565b939b939a50919850919650505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106134aa576134aa6141b0565b6001600160a01b03928316602091820292909201810191909152602854604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b15801561351757600080fd5b505afa15801561352b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061354f9190613b50565b81600181518110613562576135626141b0565b6001600160a01b0392831660209182029290920101526028546135889130911684612718565b6028546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac947906135da908590600090869030904290600401613f94565b600060405180830381600087803b1580156135f457600080fd5b505af1158015613608573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161363d929190613f73565b60405180910390a15050565b6040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015611cbe573d6000803e3d6000fd5b6028546136979030906001600160a01b031684612718565b6028546001600160a01b031663f305d7198230856000806136c06000546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561373b57600080fd5b505af115801561374f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906137749190613e5c565b5050505050565b60008060008060008061378d87612ee1565b6001600160a01b038f16600090815260076020526040902054959b509399509197509550935091506137bf9088612f30565b6001600160a01b038a166000908152600760209081526040808320939093556006905220546137ee9087612f30565b6001600160a01b03808b1660009081526006602052604080822093909355908a168152205461381d90866126b9565b6001600160a01b03891660009081526006602052604090205561383f81613a3b565b6138498483613ac3565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161388e91815260200190565b60405180910390a3505050505050505050565b6000806000806000806138b387612ee1565b6001600160a01b038f16600090815260066020526040902054959b509399509197509550935091506138e59087612f30565b6001600160a01b03808b16600090815260066020908152604080832094909455918b1681526007909152205461391b90846126b9565b6001600160a01b03891660009081526007602090815260408083209390935560069052205461381d90866126b9565b60008060008060008061395c87612ee1565b6001600160a01b038f16600090815260076020526040902054959b5093995091975095509350915061398e9088612f30565b6001600160a01b038a166000908152600760209081526040808320939093556006905220546138e59087612f30565b6000806000806000806139cf87612ee1565b6001600160a01b038f16600090815260066020526040902054959b509399509197509550935091506137ee9087612f30565b6000610bcf6103e8612feb6024548561261e90919063ffffffff16565b6000610bcf6103e8612feb6026548561261e90919063ffffffff16565b6000613a45612ebe565b90506000613a53838361261e565b30600090815260066020526040902054909150613a7090826126b9565b30600090815260066020908152604080832093909355600e9052205460ff1615611cbe5730600090815260076020526040902054613aae90846126b9565b30600090815260076020526040902055505050565b601354613ad09083612f30565b601355601454613ae090826126b9565b6014555050565b60008083601f840112613af957600080fd5b50813567ffffffffffffffff811115613b1157600080fd5b6020830191508360208260051b8501011115613b2c57600080fd5b9250929050565b600060208284031215613b4557600080fd5b8135611195816141c6565b600060208284031215613b6257600080fd5b8151611195816141c6565b60008060408385031215613b8057600080fd5b8235613b8b816141c6565b91506020830135613b9b816141c6565b809150509250929050565b600080600060608486031215613bbb57600080fd5b8335613bc6816141c6565b92506020840135613bd6816141c6565b929592945050506040919091013590565b600080600080600060608688031215613bff57600080fd5b8535613c0a816141c6565b9450602086013567ffffffffffffffff80821115613c2757600080fd5b613c3389838a01613ae7565b90965094506040880135915080821115613c4c57600080fd5b50613c5988828901613ae7565b969995985093965092949392505050565b60008060008060608587031215613c8057600080fd5b8435613c8b816141c6565b9350602085013567ffffffffffffffff811115613ca757600080fd5b613cb387828801613ae7565b9598909750949560400135949350505050565b60008060408385031215613cd957600080fd5b8235613ce4816141c6565b946020939093013593505050565b60008060208385031215613d0557600080fd5b823567ffffffffffffffff811115613d1c57600080fd5b613d2885828601613ae7565b90969095509350505050565b600080600060408486031215613d4957600080fd5b833567ffffffffffffffff811115613d6057600080fd5b613d6c86828701613ae7565b9094509250506020840135613d80816141de565b809150509250925092565b600060208284031215613d9d57600080fd5b8135611195816141de565b600060208284031215613dba57600080fd5b8151611195816141de565b60008060408385031215613dd857600080fd5b8235613ce4816141de565b600060208284031215613df557600080fd5b5035919050565b600060208284031215613e0e57600080fd5b5051919050565b60008060408385031215613e2857600080fd5b823591506020830135613b9b816141de565b60008060408385031215613e4d57600080fd5b50508035926020909101359150565b600080600060608486031215613e7157600080fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215613ea057600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b83811015613ef55781516001600160a01b031687529582019590820190600101613ed0565b509495945050505050565b600060208083528351808285015260005b81811015613f2d57858101830151858201604001528201613f11565b81811115613f3f576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b828152604060208201526000613f8c6040830184613ebc565b949350505050565b85815284602082015260a060408201526000613fb360a0830186613ebc565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115613fe357613fe3614184565b500190565b60008261400557634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561404557816000190482111561402b5761402b614184565b8085161561403857918102915b93841c939080029061400f565b509250929050565b600061119560ff84168360008261406657506001610bcf565b8161407357506000610bcf565b81600181146140895760028114614093576140af565b6001915050610bcf565b60ff8411156140a4576140a4614184565b50506001821b610bcf565b5060208310610133831016604e8410600b84101617156140d2575081810a610bcf565b6140dc838361400a565b80600019048211156140f0576140f0614184565b029392505050565b600081600019048311821515161561411257614112614184565b500290565b60008282101561412957614129614184565b500390565b600181811c9082168061414257607f821691505b6020821081141561416357634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561417d5761417d614184565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146141db57600080fd5b50565b80151581146141db57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d1d4502fa977d0a131365405f8b6a8769d93327da69a43d0a9de9af15f71c0e064736f6c63430008070033

Deployed Bytecode Sourcemap

14399:24759:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16729:56;;;;;;;;;;;;;;;;;;;18799:25:1;;;18787:2;18772:18;16729:56:0;;;;;;;;19231:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;36500:175::-;;;;;;;;;;-1:-1:-1;36500:175:0;;;;;:::i;:::-;;:::i;:::-;;20143:161;;;;;;;;;;-1:-1:-1;20143:161:0;;;;;:::i;:::-;;:::i;:::-;;;9911:14:1;;9904:22;9886:41;;9874:2;9859:18;20143:161:0;9746:187:1;35571:106:0;;;;;;;;;;-1:-1:-1;35571:106:0;;;;;:::i;:::-;-1:-1:-1;;;;;35651:18:0;35627:4;35651:18;;;:9;:18;;;;;;;;;35571:106;21264:87;;;;;;;;;;-1:-1:-1;21333:10:0;;21264:87;;16805:41;;;;;;;;;;-1:-1:-1;16805:41:0;;;;-1:-1:-1;;;;;16805:41:0;;;;;;-1:-1:-1;;;;;8410:55:1;;;8392:74;;8380:2;8365:18;16805:41:0;8246:226:1;19508:95:0;;;;;;;;;;-1:-1:-1;19588:7:0;;19508:95;;36990:702;;;;;;;;;;-1:-1:-1;36990:702:0;;;;;:::i;:::-;;:::i;20312:313::-;;;;;;;;;;-1:-1:-1;20312:313:0;;;;;:::i;:::-;;:::i;36315:177::-;;;;;;;;;;-1:-1:-1;36315:177:0;;;;;:::i;:::-;;:::i;16956:34::-;;;;;;;;;;-1:-1:-1;16956:34:0;;;;;;;;;;;18131:337;;;;;;;;;;-1:-1:-1;18131:337:0;;;;;:::i;:::-;;:::i;22196:253::-;;;;;;;;;;-1:-1:-1;22196:253:0;;;;;:::i;:::-;;:::i;36683:113::-;;;;;;;;;;-1:-1:-1;36683:113:0;;;;;:::i;:::-;;:::i;19417:83::-;;;;;;;;;;-1:-1:-1;19483:9:0;;-1:-1:-1;;;19483:9:0;;;;19417:83;;19954:4:1;19942:17;;;19924:36;;19912:2;19897:18;19417:83:0;19782:184:1;37700:512:0;;;;;;;;;;-1:-1:-1;37700:512:0;;;;;:::i;:::-;;:::i;22728:479::-;;;;;;;;;;-1:-1:-1;22728:479:0;;;;;:::i;:::-;;:::i;20633:218::-;;;;;;;;;;-1:-1:-1;20633:218:0;;;;;:::i;:::-;;:::i;21363:377::-;;;;;;;;;;-1:-1:-1;21363:377:0;;;;;:::i;:::-;;:::i;18592:96::-;;;;;;;;;;-1:-1:-1;18592:96:0;;;;;:::i;:::-;;:::i;16078:36::-;;;;;;;;;;;;;;;;21752:436;;;;;;;;;;-1:-1:-1;21752:436:0;;;;;:::i;:::-;;:::i;16853:28::-;;;;;;;;;;-1:-1:-1;16853:28:0;;;;-1:-1:-1;;;;;16853:28:0;;;18482:102;;;;;;;;;;-1:-1:-1;18482:102:0;;;;;:::i;:::-;;:::i;22457:263::-;;;;;;;;;;-1:-1:-1;22457:263:0;;;;;:::i;:::-;;:::i;35689:267::-;;;;;;;;;;-1:-1:-1;35689:267:0;;;;;:::i;:::-;;:::i;15979:30::-;;;;;;;;;;;;;;;;38764:299;;;;;;;;;;-1:-1:-1;38764:299:0;;;;;:::i;:::-;;:::i;19611:198::-;;;;;;;;;;-1:-1:-1;19611:198:0;;;;;:::i;:::-;;:::i;6030:148::-;;;;;;;;;;;;;:::i;34895:198::-;;;;;;;;;;-1:-1:-1;34895:198:0;;;;;:::i;:::-;;:::i;36172:135::-;;;;;;;;;;-1:-1:-1;36172:135:0;;;;;:::i;:::-;;:::i;16265:37::-;;;;;;;;;;;;;;;;15845:57;;;;;;;;;;;;;;;;35968:188;;;;;;;;;;-1:-1:-1;35968:188:0;;;;;:::i;:::-;;:::i;16123:36::-;;;;;;;;;;;;;;;;21136:120;;;;;;;;;;-1:-1:-1;21136:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;21228:20:0;21204:4;21228:20;;;:11;:20;;;;;;;;;21136:120;5805:79;;;;;;;;;;-1:-1:-1;5843:7:0;5870:6;-1:-1:-1;;;;;5870:6:0;5805:79;;36804:178;;;;;;;;;;-1:-1:-1;36804:178:0;;;;;:::i;:::-;;:::i;19322:87::-;;;;;;;;;;;;;:::i;38221:535::-;;;;;;;;;;-1:-1:-1;38221:535:0;;;;;:::i;:::-;;:::i;20859:269::-;;;;;;;;;;-1:-1:-1;20859:269:0;;;;;:::i;:::-;;:::i;19817:167::-;;;;;;;;;;-1:-1:-1;19817:167:0;;;;;:::i;:::-;;:::i;15145:29::-;;;;;;;;;;;;;;;;16026:36;;;;;;;;;;;;;;;;16166:38;;;;;;;;;;;;;;;;16218:32;;;;;;;;;;;;;;;;35233:190;;;;;;;;;;-1:-1:-1;35233:190:0;;;;;:::i;:::-;;:::i;15937:35::-;;;;;;;;;;;;;;;;19992:143;;;;;;;;;;-1:-1:-1;19992:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;20100:18:0;;;20073:7;20100:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19992:143;35111:110;;;;;;;;;;-1:-1:-1;35111:110:0;;;;;:::i;:::-;;:::i;18700:523::-;;;;;;;;;;-1:-1:-1;18700:523:0;;;;;:::i;:::-;;:::i;34775:112::-;;;;;;;;;;-1:-1:-1;34775:112:0;;;;;:::i;:::-;;:::i;6186:244::-;;;;;;;;;;-1:-1:-1;6186:244:0;;;;;:::i;:::-;;:::i;15109:29::-;;;;;;;;;;;;;;;;16918:31;;;;;;;;;;-1:-1:-1;16918:31:0;;;;-1:-1:-1;;;16918:31:0;;;;;;19231:83;19268:13;19301:5;19294:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19231:83;:::o;36500:175::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;15338:2:1;5931:67:0;;;15320:21:1;;;15357:18;;;15350:30;-1:-1:-1;;;;;;;;;;;15396:18:1;;;15389:62;15468:18;;5931:67:0;;;;;;;;;36621:46:::1;36643:23;36621:17;36633:4;36621:7;;:11;;:17;;;;:::i;:::-;:21:::0;::::1;:46::i;:::-;36603:15;:64:::0;-1:-1:-1;36500:175:0:o;20143:161::-;20218:4;20235:39;189:10;20258:7;20267:6;20235:8;:39::i;:::-;-1:-1:-1;20292:4:0;20143:161;;;;;:::o;36990:702::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;15338:2:1;5931:67:0;;;15320:21:1;;;15357:18;;;15350:30;-1:-1:-1;;;;;;;;;;;15396:18:1;;;15389:62;15468:18;;5931:67:0;15136:356:1;5931:67:0;37143:3:::1;37124:22:::0;::::1;37116:79;;;::::0;-1:-1:-1;;;37116:79:0;;16515:2:1;37116:79:0::1;::::0;::::1;16497:21:1::0;16554:2;16534:18;;;16527:30;16593:34;16573:18;;;16566:62;16664:15;16644:18;;;16637:43;16697:19;;37116:79:0::1;16313:409:1::0;37116:79:0::1;37237:33:::0;;::::1;37229:85;;;::::0;-1:-1:-1;;;37229:85:0;;11463:2:1;37229:85:0::1;::::0;::::1;11445:21:1::0;11502:2;11482:18;;;11475:30;11541:34;11521:18;;;11514:62;11612:10;11592:18;;;11585:38;11640:19;;37229:85:0::1;11261:404:1::0;37229:85:0::1;37327:12;37360:6:::0;37356:108:::1;37370:20:::0;;::::1;37356:108;;;37442:9;::::0;37438:13:::1;::::0;-1:-1:-1;;;37442:9:0;::::1;;;37438:2;:13;:::i;:::-;37426:6;;37433:1;37426:9;;;;;;;:::i;:::-;;;;;;;:25;;;;:::i;:::-;37418:34;::::0;:4;:34:::1;:::i;:::-;37411:41:::0;-1:-1:-1;37392:3:0;::::1;::::0;::::1;:::i;:::-;;;;37356:108;;;;37503:4;37484:15;37494:4;37484:9;:15::i;:::-;:23;;37476:63;;;::::0;-1:-1:-1;;;37476:63:0;;13805:2:1;37476:63:0::1;::::0;::::1;13787:21:1::0;13844:2;13824:18;;;13817:30;13883:29;13863:18;;;13856:57;13930:18;;37476:63:0::1;13603:351:1::0;37476:63:0::1;37556:6;37552:133;37566:20:::0;;::::1;37552:133;;;37607:56;37617:4;37622:9;;37632:1;37622:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;37652:9;::::0;37648:13:::1;::::0;-1:-1:-1;;;37652:9:0;::::1;;;37648:2;:13;:::i;:::-;37636:6;;37643:1;37636:9;;;;;;;:::i;:::-;;;;;;;:25;;;;:::i;:::-;37607:9;:56::i;:::-;37588:3:::0;::::1;::::0;::::1;:::i;:::-;;;;37552:133;;;;37103:589;36990:702:::0;;;;;:::o;20312:313::-;20410:4;20427:36;20437:6;20445:9;20456:6;20427:9;:36::i;:::-;20474:121;20483:6;189:10;20505:89;20543:6;20505:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20505:19:0;;;;;;:11;:19;;;;;;;;189:10;20505:33;;;;;;;;;;:37;:89::i;:::-;20474:8;:121::i;:::-;-1:-1:-1;20613:4:0;20312:313;;;;;:::o;36315:177::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;15338:2:1;5931:67:0;;;15320:21:1;;;15357:18;;;15350:30;-1:-1:-1;;;;;;;;;;;15396:18:1;;;15389:62;15468:18;;5931:67:0;15136:356:1;5931:67:0;36416:30:::1;::::0;;;;36440:4:::1;36416:30;::::0;::::1;8392:74:1::0;36398:15:0::1;::::0;-1:-1:-1;;;;;36416:15:0;::::1;::::0;::::1;::::0;8365:18:1;;36416:30:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36457:27;::::0;;;;-1:-1:-1;;;;;9001:55:1;;;36457:27:0::1;::::0;::::1;8983:74:1::0;9073:18;;;9066:34;;;36398:48:0;;-1:-1:-1;36457:14:0;;::::1;::::0;::::1;::::0;8956:18:1;;36457:27:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;36387:105;36315:177:::0;;:::o;18131:337::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;15338:2:1;5931:67:0;;;15320:21:1;;;15357:18;;;15350:30;-1:-1:-1;;;;;;;;;;;15396:18:1;;;15389:62;15468:18;;5931:67:0;15136:356:1;5931:67:0;18218:11:::1;:21:::0;;;::::1;-1:-1:-1::0;;;18218:21:0;::::1;;;;::::0;;18250:32:::1;18276:4;18250:17;:32::i;:::-;18311:13;::::0;18293:32:::1;::::0;-1:-1:-1;;;;;18311:13:0::1;18293:17;:32::i;:::-;18339:11;::::0;-1:-1:-1;;;18339:11:0;::::1;;;:30:::0;::::1;;;-1:-1:-1::0;18354:10:0::1;::::0;:15;18339:30:::1;18336:125;;;18398:12;18385:10;:25:::0;18425:10:::1;:24:::0;;;18336:125:::1;18131:337:::0;;:::o;22196:253::-;22262:7;22301;;22290;:18;;22282:73;;;;-1:-1:-1;;;22282:73:0;;11872:2:1;22282:73:0;;;11854:21:1;11911:2;11891:18;;;11884:30;11950:34;11930:18;;;11923:62;12021:12;12001:18;;;11994:40;12051:19;;22282:73:0;11670:406:1;22282:73:0;22366:19;22389:10;:8;:10::i;:::-;22366:33;-1:-1:-1;22417:24:0;:7;22366:33;22417:11;:24::i;:::-;22410:31;22196:253;-1:-1:-1;;;22196:253:0:o;36683:113::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;15338:2:1;5931:67:0;;;15320:21:1;;;15357:18;;;15350:30;-1:-1:-1;;;;;;;;;;;15396:18:1;;;15389:62;15468:18;;5931:67:0;15136:356:1;5931:67:0;-1:-1:-1;;;;;36756:25:0::1;;::::0;;;:18:::1;:25;::::0;;;;:32;;-1:-1:-1;;36756:32:0::1;36784:4;36756:32;::::0;;36683:113::o;37700:512::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;15338:2:1;5931:67:0;;;15320:21:1;;;15357:18;;;15350:30;-1:-1:-1;;;;;;;;;;;15396:18:1;;;15389:62;15468:18;;5931:67:0;15136:356:1;5931:67:0;37848:4:::1;37829:23:::0;::::1;37821:81;;;::::0;-1:-1:-1;;;37821:81:0;;14521:2:1;37821:81:0::1;::::0;::::1;14503:21:1::0;14560:2;14540:18;;;14533:30;14599:34;14579:18;;;14572:62;14670:16;14650:18;;;14643:44;14704:19;;37821:81:0::1;14319:410:1::0;37821:81:0::1;37965:9;::::0;37938:12:::1;::::0;37977:9;;37961:13:::1;::::0;-1:-1:-1;;;37965:9:0;::::1;;;37961:2;:13;:::i;:::-;37953:21;::::0;:6;:21:::1;:::i;:::-;:40;;;;:::i;:::-;37938:55;;38033:4;38014:15;38024:4;38014:9;:15::i;:::-;:23;;38006:63;;;::::0;-1:-1:-1;;;38006:63:0;;13805:2:1;38006:63:0::1;::::0;::::1;13787:21:1::0;13844:2;13824:18;;;13817:30;13883:29;13863:18;;;13856:57;13930:18;;38006:63:0::1;13603:351:1::0;38006:63:0::1;38086:6;38082:123;38096:20:::0;;::::1;38082:123;;;38137:52;38147:4;38152:9;;38162:1;38152:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;38178:9;::::0;38174:13:::1;::::0;-1:-1:-1;;;38178:9:0;::::1;;;38174:2;:13;:::i;:::-;38166:21;::::0;:6;:21:::1;:::i;38137:52::-;38118:3:::0;::::1;::::0;::::1;:::i;:::-;;;;38082:123;;;;37808:404;37700:512:::0;;;;:::o;22728:479::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;15338:2:1;5931:67:0;;;15320:21:1;;;15357:18;;;15350:30;-1:-1:-1;;;;;;;;;;;15396:18:1;;;15389:62;15468:18;;5931:67:0;15136:356:1;5931:67:0;-1:-1:-1;;;;;22810:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;22802:60;;;::::0;-1:-1:-1;;;22802:60:0;;13449:2:1;22802:60:0::1;::::0;::::1;13431:21:1::0;13488:2;13468:18;;;13461:30;13527:29;13507:18;;;13500:57;13574:18;;22802:60:0::1;13247:351:1::0;22802:60:0::1;22878:9;22873:327;22897:9;:16:::0;22893:20;::::1;22873:327;;;22955:7;-1:-1:-1::0;;;;;22939:23:0::1;:9;22949:1;22939:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;22939:12:0::1;:23;22935:254;;;22998:9;23008:16:::0;;:20:::1;::::0;23027:1:::1;::::0;23008:20:::1;:::i;:::-;22998:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;22983:9:::1;:12:::0;;-1:-1:-1;;;;;22998:31:0;;::::1;::::0;22993:1;;22983:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;22983:46:0::1;-1:-1:-1::0;;;;;22983:46:0;;::::1;;::::0;;23048:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;23087:11:::1;:20:::0;;;;:28;;-1:-1:-1;;23087:28:0::1;::::0;;23134:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;23134:15:0;;;;;-1:-1:-1;;23134:15:0::1;::::0;;;;;18131:337;;:::o;22935:254::-:1;22915:3:::0;::::1;::::0;::::1;:::i;:::-;;;;22873:327;;20633:218:::0;189:10;20721:4;20770:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20770:34:0;;;;;;;;;;20721:4;;20738:83;;20761:7;;20770:50;;20809:10;20770:38;:50::i;21363:377::-;189:10;21415:14;21464:19;;;:11;:19;;;;;;;;21463:20;21455:77;;;;-1:-1:-1;;;21455:77:0;;18090:2:1;21455:77:0;;;18072:21:1;18129:2;18109:18;;;18102:30;18168:34;18148:18;;;18141:62;18239:14;18219:18;;;18212:42;18271:19;;21455:77:0;17888:408:1;21455:77:0;21544:15;21568:19;21579:7;21568:10;:19::i;:::-;-1:-1:-1;;;;;;;;;21616:15:0;;;;;;:7;:15;;;;;;21543:44;;-1:-1:-1;21616:28:0;;:15;-1:-1:-1;21543:44:0;21616:19;:28::i;:::-;-1:-1:-1;;;;;21598:15:0;;;;;;:7;:15;;;;;:46;21665:7;;:20;;21677:7;21665:11;:20::i;:::-;21655:7;:30;21709:10;;:23;;21724:7;21709:14;:23::i;:::-;21696:10;:36;-1:-1:-1;;;21363:377:0:o;18592:96::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;15338:2:1;5931:67:0;;;15320:21:1;;;15357:18;;;15350:30;-1:-1:-1;;;;;;;;;;;15396:18:1;;;15389:62;15468:18;;5931:67:0;15136:356:1;5931:67:0;18661:11:::1;:19:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;18592:96::o;21752:436::-;21842:7;21881;;21870;:18;;21862:62;;;;-1:-1:-1;;;21862:62:0;;14161:2:1;21862:62:0;;;14143:21:1;14200:2;14180:18;;;14173:30;14239:33;14219:18;;;14212:61;14290:18;;21862:62:0;13959:355:1;21862:62:0;21940:17;21935:246;;21975:15;21999:19;22010:7;21999:10;:19::i;:::-;-1:-1:-1;21974:44:0;;-1:-1:-1;22033:14:0;;-1:-1:-1;;;;;22033:14:0;21935:246;22082:23;22113:19;22124:7;22113:10;:19::i;:::-;-1:-1:-1;22080:52:0;;-1:-1:-1;22147:22:0;;-1:-1:-1;;;;;22147:22:0;18482:102;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;15338:2:1;5931:67:0;;;15320:21:1;;;15357:18;;;15350:30;-1:-1:-1;;;;;;;;;;;15396:18:1;;;15389:62;15468:18;;5931:67:0;15136:356:1;5931:67:0;18554:14:::1;:22:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;18482:102::o;22457:263::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;15338:2:1;5931:67:0;;;15320:21:1;;;15357:18;;;15350:30;-1:-1:-1;;;;;;;;;;;15396:18:1;;;15389:62;15468:18;;5931:67:0;15136:356:1;5931:67:0;-1:-1:-1;;;;;22536:16:0;::::1;22555:1;22536:16:::0;;;:7:::1;:16;::::0;;;;;:20;22533:108:::1;;-1:-1:-1::0;;;;;22612:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;22592:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;22573:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;22533:108:::1;-1:-1:-1::0;;;;;22651:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;22651:27:0::1;22674:4;22651:27:::0;;::::1;::::0;;;22689:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;22689:23:0::1;::::0;;::::1;::::0;;22457:263::o;35689:267::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;15338:2:1;5931:67:0;;;15320:21:1;;;15357:18;;;15350:30;-1:-1:-1;;;;;;;;;;;15396:18:1;;;15389:62;15468:18;;5931:67:0;15136:356:1;5931:67:0;35789:9:::1;35784:165;35800:20:::0;;::::1;35784:165;;;35846:10;:24;35857:9;;35867:1;35857:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;35846:24:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;35846:24:0;;::::1;;35842:96;;35916:6;35890:9;:23;35900:9;;35910:1;35900:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;35890:23:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;35890:23:0;:32;;-1:-1:-1;;35890:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;35842:96:::1;35822:3;::::0;::::1;:::i;:::-;;;35784:165;;38764:299:::0;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;15338:2:1;5931:67:0;;;15320:21:1;;;15357:18;;;15350:30;-1:-1:-1;;;;;;;;;;;15396:18:1;;;15389:62;15468:18;;5931:67:0;15136:356:1;5931:67:0;38901:17:::1;:33:::0;;;;38945:17:::1;:33:::0;38989:11:::1;:21:::0;39021:18:::1;:34:::0;38764:299::o;19611:198::-;-1:-1:-1;;;;;19701:20:0;;19677:7;19701:20;;;:11;:20;;;;;;;;19697:49;;;-1:-1:-1;;;;;;19730:16:0;;;;;:7;:16;;;;;;;19611:198::o;19697:49::-;-1:-1:-1;;;;;19784:16:0;;;;;;:7;:16;;;;;;19764:37;;:19;:37::i;6030:148::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;15338:2:1;5931:67:0;;;15320:21:1;;;15357:18;;;15350:30;-1:-1:-1;;;;;;;;;;;15396:18:1;;;15389:62;15468:18;;5931:67:0;15136:356:1;5931:67:0;6137:1:::1;6121:6:::0;;6100:40:::1;::::0;-1:-1:-1;;;;;6121:6:0;;::::1;::::0;6100:40:::1;::::0;6137:1;;6100:40:::1;6168:1;6151:19:::0;;-1:-1:-1;;6151:19:0::1;::::0;;6030:148::o;34895:198::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;15338:2:1;5931:67:0;;;15320:21:1;;;15357:18;;;15350:30;-1:-1:-1;;;;;;;;;;;15396:18:1;;;15389:62;15468:18;;5931:67:0;15136:356:1;5931:67:0;34982:9:::1;34977:109;34993:20:::0;;::::1;34977:109;;;35070:4;35035:18;:32;35054:9;;35064:1;35054:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;35035:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;35035:32:0;:39;;-1:-1:-1;;35035:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;35015:3:::1;::::0;::::1;:::i;:::-;;;34977:109;;;;34895:198:::0;;:::o;36172:135::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;15338:2:1;5931:67:0;;;15320:21:1;;;15357:18;;;15350:30;-1:-1:-1;;;;;;;;;;;15396:18:1;;;15389:62;15468:18;;5931:67:0;15136:356:1;5931:67:0;36257:42:::1;::::0;-1:-1:-1;;;;;36257:19:0;::::1;::::0;36277:21:::1;36257:42:::0;::::1;;;::::0;::::1;::::0;;;36277:21;36257:19;:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;35968:188:::0;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;15338:2:1;5931:67:0;;;15320:21:1;;;15357:18;;;15350:30;-1:-1:-1;;;;;;;;;;;15396:18:1;;;15389:62;15468:18;;5931:67:0;15136:356:1;5931:67:0;36055:9:::1;36050:99;36066:20:::0;;::::1;36050:99;;;36133:4;36108:10;:24;36119:9;;36129:1;36119:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;36108:24:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;36108:24:0;:29;;-1:-1:-1;;36108:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36088:3:::1;::::0;::::1;:::i;:::-;;;36050:99;;36804:178:::0;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;15338:2:1;5931:67:0;;;15320:21:1;;;15357:18;;;15350:30;-1:-1:-1;;;;;;;;;;;15396:18:1;;;15389:62;15468:18;;5931:67:0;15136:356:1;5931:67:0;36958:16:::1;36938;36928:7;;:26;;;;:::i;:::-;36927:47;;;;:::i;:::-;36911:13;:63:::0;-1:-1:-1;;36804:178:0:o;19322:87::-;19361:13;19394:7;19387:14;;;;;:::i;38221:535::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;15338:2:1;5931:67:0;;;15320:21:1;;;15357:18;;;15350:30;-1:-1:-1;;;;;;;;;;;15396:18:1;;;15389:62;15468:18;;5931:67:0;15136:356:1;5931:67:0;38367:16:::1;:32:::0;;;38410:16:::1;:32:::0;;;38453:10:::1;:20:::0;;;38484:17:::1;:33:::0;;;38530:13:::1;:29:::0;;;38570:12:::1;:28:::0;;;38609:6:::1;:16:::0;;;38636:12:::1;:28:::0;;;38733:12:::1;::::0;38686:60:::1;::::0;:42:::1;38466:7:::0;38686:42;38386:13;38429;38686:16:::1;:30::i;:::-;:34:::0;::::1;:42::i;:60::-;38675:8;:71:::0;-1:-1:-1;;;;38221:535:0:o;20859:269::-;20952:4;20969:129;189:10;20992:7;21001:96;21040:15;21001:96;;;;;;;;;;;;;;;;;189:10;21001:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;21001:34:0;;;;;;;;;;;;:38;:96::i;19817:167::-;19895:4;19912:42;189:10;19936:9;19947:6;19912:9;:42::i;35233:190::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;15338:2:1;5931:67:0;;;15320:21:1;;;15357:18;;;15350:30;-1:-1:-1;;;;;;;;;;;15396:18:1;;;15389:62;15468:18;;5931:67:0;15136:356:1;5931:67:0;35330:15:::1;:43:::0;;-1:-1:-1;;;;;35330:43:0;;::::1;-1:-1:-1::0;;35330:43:0;;::::1;;::::0;;;35384:9:::1;:31:::0;;;;;::::1;::::0;::::1;;::::0;;35233:190::o;35111:110::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;15338:2:1;5931:67:0;;;15320:21:1;;;15357:18;;;15350:30;-1:-1:-1;;;;;;;;;;;15396:18:1;;;15389:62;15468:18;;5931:67:0;15136:356:1;5931:67:0;-1:-1:-1;;;;;35178:27:0::1;35208:5;35178:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;35178:35:0::1;::::0;;35111:110::o;18700:523::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;15338:2:1;5931:67:0;;;15320:21:1;;;15357:18;;;15350:30;-1:-1:-1;;;;;;;;;;;15396:18:1;;;15389:62;15468:18;;5931:67:0;15136:356:1;5931:67:0;18773:29:::1;18824:9;18773:61;;18845:16;18882:10;-1:-1:-1::0;;;;;18882:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18864:47:0::1;;18920:4;18927:10;-1:-1:-1::0;;;;;18927:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18864:81;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;8730:15:1;;;18864:81:0::1;::::0;::::1;8712:34:1::0;8782:15;;8762:18;;;8755:43;8624:18;;18864:81:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18845:100:::0;-1:-1:-1;;;;;;18960:22:0;::::1;18956:221;;19033:10;-1:-1:-1::0;;;;;19033:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19015:50:0::1;;19074:4;19081:10;-1:-1:-1::0;;;;;19081:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19015:84;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;8730:15:1;;;19015:84:0::1;::::0;::::1;8712:34:1::0;8782:15;;8762:18;;;8755:43;8624:18;;19015:84:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18999:13;:100:::0;;-1:-1:-1;;18999:100:0::1;-1:-1:-1::0;;;;;18999:100:0;;;::::1;::::0;;;::::1;::::0;;18956:221:::1;;;19141:13;:24:::0;;-1:-1:-1;;19141:24:0::1;-1:-1:-1::0;;;;;19141:24:0;::::1;;::::0;;18956:221:::1;-1:-1:-1::0;19187:15:0::1;:28:::0;;-1:-1:-1;;19187:28:0::1;-1:-1:-1::0;;;;;19187:28:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;18700:523:0:o;34775:112::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;15338:2:1;5931:67:0;;;15320:21:1;;;15357:18;;;15350:30;-1:-1:-1;;;;;;;;;;;15396:18:1;;;15389:62;15468:18;;5931:67:0;15136:356:1;5931:67:0;-1:-1:-1;;;;;34845:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;34845:34:0::1;34875:4;34845:34;::::0;;34775:112::o;6186:244::-;5939:6;;-1:-1:-1;;;;;5939:6:0;189:10;5939:22;5931:67;;;;-1:-1:-1;;;5931:67:0;;15338:2:1;5931:67:0;;;15320:21:1;;;15357:18;;;15350:30;-1:-1:-1;;;;;;;;;;;15396:18:1;;;15389:62;15468:18;;5931:67:0;15136:356:1;5931:67:0;-1:-1:-1;;;;;6275:22:0;::::1;6267:73;;;::::0;-1:-1:-1;;;6267:73:0;;12283:2:1;6267:73:0::1;::::0;::::1;12265:21:1::0;12322:2;12302:18;;;12295:30;12361:34;12341:18;;;12334:62;12432:8;12412:18;;;12405:36;12458:19;;6267:73:0::1;12081:402:1::0;6267:73:0::1;6377:6;::::0;;6356:38:::1;::::0;-1:-1:-1;;;;;6356:38:0;;::::1;::::0;6377:6;::::1;::::0;6356:38:::1;::::0;::::1;6405:6;:17:::0;;-1:-1:-1;;6405:17:0::1;-1:-1:-1::0;;;;;6405:17:0;;;::::1;::::0;;;::::1;::::0;;6186:244::o;1964:132::-;2022:7;2049:39;2053:1;2056;2049:39;;;;;;;;;;;;;;;;;:3;:39::i;1704:250::-;1762:7;1786:6;1782:47;;-1:-1:-1;1816:1:0;1809:8;;1782:47;1841:9;1853:5;1857:1;1853;:5;:::i;:::-;1841:17;-1:-1:-1;1886:1:0;1877:5;1881:1;1841:17;1877:5;:::i;:::-;:10;1869:56;;;;-1:-1:-1;;;1869:56:0;;14936:2:1;1869:56:0;;;14918:21:1;14975:2;14955:18;;;14948:30;15014:34;14994:18;;;14987:62;15085:3;15065:18;;;15058:31;15106:19;;1869:56:0;14734:397:1;1171:181:0;1229:7;;1261:5;1265:1;1261;:5;:::i;:::-;1249:17;;1290:1;1285;:6;;1277:46;;;;-1:-1:-1;;;1277:46:0;;13093:2:1;1277:46:0;;;13075:21:1;13132:2;13112:18;;;13105:30;13171:29;13151:18;;;13144:57;13218:18;;1277:46:0;12891:351:1;23215:337:0;-1:-1:-1;;;;;23308:19:0;;23300:68;;;;-1:-1:-1;;;23300:68:0;;17332:2:1;23300:68:0;;;17314:21:1;17371:2;17351:18;;;17344:30;17410:34;17390:18;;;17383:62;17481:6;17461:18;;;17454:34;17505:19;;23300:68:0;17130:400:1;23300:68:0;-1:-1:-1;;;;;23387:21:0;;23379:68;;;;-1:-1:-1;;;23379:68:0;;12690:2:1;23379:68:0;;;12672:21:1;12729:2;12709:18;;;12702:30;12768:34;12748:18;;;12741:62;12839:4;12819:18;;;12812:32;12861:19;;23379:68:0;12488:398:1;23379:68:0;-1:-1:-1;;;;;23460:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;23512:32;;18799:25:1;;;23512:32:0;;18772:18:1;23512:32:0;;;;;;;23215:337;;;:::o;23560:2393::-;-1:-1:-1;;;;;23682:18:0;;23674:68;;;;-1:-1:-1;;;23674:68:0;;16109:2:1;23674:68:0;;;16091:21:1;16148:2;16128:18;;;16121:30;16187:34;16167:18;;;16160:62;16258:7;16238:18;;;16231:35;16283:19;;23674:68:0;15907:401:1;23674:68:0;-1:-1:-1;;;;;23761:16:0;;23753:64;;;;-1:-1:-1;;;23753:64:0;;11059:2:1;23753:64:0;;;11041:21:1;11098:2;11078:18;;;11071:30;11137:34;11117:18;;;11110:62;11208:5;11188:18;;;11181:33;11231:19;;23753:64:0;10857:399:1;23753:64:0;23845:1;23836:6;:10;23828:64;;;;-1:-1:-1;;;23828:64:0;;15699:2:1;23828:64:0;;;15681:21:1;15738:2;15718:18;;;15711:30;15777:34;15757:18;;;15750:62;15848:11;15828:18;;;15821:39;15877:19;;23828:64:0;15497:405:1;23828:64:0;-1:-1:-1;;;;;23912:13:0;;;;;;:9;:13;;;;;;;;23911:14;23903:50;;;;-1:-1:-1;;;23903:50:0;;18503:2:1;23903:50:0;;;18485:21:1;18542:2;18522:18;;;18515:30;18581:25;18561:18;;;18554:53;18624:18;;23903:50:0;18301:347:1;23903:50:0;-1:-1:-1;;;;;23973:15:0;;;;;;:9;:15;;;;;;;;23972:16;23964:52;;;;-1:-1:-1;;;23964:52:0;;18503:2:1;23964:52:0;;;18485:21:1;18542:2;18522:18;;;18515:30;18581:25;18561:18;;;18554:53;18624:18;;23964:52:0;18301:347:1;23964:52:0;5843:7;5870:6;-1:-1:-1;;;;;24031:14:0;;;5870:6;;24031:14;;;;:30;;-1:-1:-1;5843:7:0;5870:6;-1:-1:-1;;;;;24049:12:0;;;5870:6;;24049:12;;24031:30;24027:84;;;24071:11;;-1:-1:-1;;;24071:11:0;;;;24063:48;;;;-1:-1:-1;;;24063:48:0;;17737:2:1;24063:48:0;;;17719:21:1;17776:2;17756:18;;;17749:30;17815:26;17795:18;;;17788:54;17859:18;;24063:48:0;17535:348:1;24063:48:0;24250:13;;24173:12;;-1:-1:-1;;;;;24244:19:0;;;24250:13;;24244:19;;:40;;-1:-1:-1;24271:13:0;;-1:-1:-1;;;;;24267:17:0;;;24271:13;;24267:17;24244:40;24243:99;;;;-1:-1:-1;;;;;;24291:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;24319:22:0;;;;;;:18;:22;;;;;;;;24291:50;24289:53;24243:99;24238:148;;;-1:-1:-1;24370:4:0;24238:148;24412:1;24401:10;;:12;:59;;;;-1:-1:-1;;;;;;24419:22:0;;;;;;:18;:22;;;;;;;;24418:23;:41;;;;-1:-1:-1;5843:7:0;5870:6;-1:-1:-1;;;;;24445:14:0;;;5870:6;;24445:14;;24418:41;24401:106;;;;;24494:12;24480:10;;24467;;:23;;;;:::i;:::-;24466:40;24464:43;24401:106;24398:247;;;24558:15;;24543:13;24553:2;24543:9;:13::i;:::-;24535:21;;:6;:21;:::i;:::-;:38;;24527:106;;;;-1:-1:-1;;;24527:106:0;;16929:2:1;24527:106:0;;;16911:21:1;16968:2;16948:18;;;16941:30;17007:34;16987:18;;;16980:62;17078:4;17058:18;;;17051:32;17100:19;;24527:106:0;16727:398:1;24527:106:0;24683:8;;24667:15;:24;24716:17;;24702:13;:31;24749:11;;-1:-1:-1;;;24749:11:0;;;;:34;;;;-1:-1:-1;24770:13:0;;-1:-1:-1;;;;;24764:19:0;;;24770:13;;24764:19;24749:34;24746:194;;;24824:57;24869:11;;24824:40;24846:17;;24824;;:21;;:40;;;;:::i;:57::-;24807:15;:74;24910:18;;24896:13;:32;24746:194;25010:1;24999:10;;:12;:56;;;;;25043:12;25029:10;;25016;;:23;;;;:::i;:::-;25015:40;24999:56;24996:109;;;-1:-1:-1;;;;;25075:13:0;;;;;;:9;:13;;;;;:18;;-1:-1:-1;;25075:18:0;25089:4;25075:18;;;24996:109;25217:1;25206:10;;:12;:30;;;;-1:-1:-1;5843:7:0;5870:6;-1:-1:-1;;;;;25222:14:0;;;5870:6;;25222:14;;25206:30;:75;;;;;25270:10;;25257;;:23;;;;:::i;:::-;25240:12;:41;;25206:75;:91;;;;-1:-1:-1;25286:11:0;;;;;;;25206:91;25203:154;;;25333:3;25317:15;:19;25203:154;25372:14;;;;;;;25369:150;;;25406:11;;-1:-1:-1;;;25406:11:0;;;;:36;;;;-1:-1:-1;25429:13:0;;-1:-1:-1;;;;;25421:21:0;;;25429:13;;25421:21;25406:36;25403:105;;;25490:1;25474:15;:17;25403:105;25552:6;;-1:-1:-1;;;25552:6:0;;;;25551:7;:22;;;;-1:-1:-1;25562:11:0;;-1:-1:-1;;;25562:11:0;;;;25551:22;:45;;;;-1:-1:-1;25583:13:0;;-1:-1:-1;;;;;25577:19:0;;;25583:13;;25577:19;25551:45;25547:350;;;25621:28;25652:24;25670:4;25652:9;:24::i;:::-;25621:55;;25730:13;;25708:20;:35;25705:169;;-1:-1:-1;25790:13:0;;25826:32;25790:13;25826:10;:32::i;:::-;25598:299;25547:350;25907:38;25922:4;25927:2;25930:6;25937:7;25907:14;:38::i;1504:192::-;1590:7;1626:12;1618:6;;;;1610:29;;;;-1:-1:-1;;;1610:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1650:9:0;1662:5;1666:1;1662;:5;:::i;:::-;1650:17;1504:192;-1:-1:-1;;;;;1504:192:0:o;33312:163::-;33353:7;33374:15;33391;33410:19;:17;:19::i;:::-;33373:56;;-1:-1:-1;33373:56:0;-1:-1:-1;33447:20:0;33373:56;;33447:11;:20::i;:::-;33440:27;;;;33312:163;:::o;32110:419::-;32169:7;32178;32187;32196;32205;32214;32235:23;32260:12;32274:18;32296:20;32308:7;32296:11;:20::i;:::-;32234:82;;;;;;32328:15;32345:23;32370:12;32386:50;32398:7;32407:4;32413:10;32425;:8;:10::i;:::-;32386:11;:50::i;:::-;32327:109;;;;-1:-1:-1;32327:109:0;;-1:-1:-1;32487:15:0;;-1:-1:-1;32504:4:0;;-1:-1:-1;32510:10:0;;-1:-1:-1;32110:419:0;;-1:-1:-1;;;;;32110:419:0:o;1360:136::-;1418:7;1445:43;1449:1;1452;1445:43;;;;;;;;;;;;;;;;;:3;:43::i;2104:278::-;2190:7;2225:12;2218:5;2210:28;;;;-1:-1:-1;;;2210:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2249:9:0;2261:5;2265:1;2261;:5;:::i;25961:1372::-;17261:6;:13;;;;-1:-1:-1;;;17261:13:0;;;26159:8:::1;::::0;26127:12:::1;::::0;17261:13;;26088:101:::1;::::0;26187:1:::1;::::0;26088:80:::1;::::0;;;:20;;:38:::1;:52::i;:::-;:70:::0;::::1;:80::i;:101::-;26062:127:::0;-1:-1:-1;26202:20:0::1;26225:41;:20:::0;26062:127;26225:24:::1;:41::i;:::-;26202:64;;26287:30;26304:12;26287:16;:30::i;:::-;26419:12;::::0;26350:21:::1;::::0;26330:17:::1;::::0;26406:33:::1;::::0;26419:19:::1;::::0;26436:1:::1;26419:16;:19::i;:::-;26406:8;::::0;;:12:::1;:33::i;:::-;26384:55;;26452:26;26481:93;26572:1;26481:72;26541:11;26481:41;26509:12;;26481:9;:27;;:41;;;;:::i;:93::-;26452:122;;26595:20;26618:38;26644:11;26618:21;26632:6;;26618:9;:13;;:21;;;;:::i;:38::-;26595:61;;26667:26;26696:68;26742:11;26696:27;26710:12;;26696:9;:13;;:27;;;;:::i;:68::-;26667:97;;26776:26;26805:68;26851:11;26805:27;26819:12;;26805:9;:13;;:27;;;;:::i;:68::-;26776:97:::0;-1:-1:-1;26964:21:0::1;26999:22:::0;;26996:216:::1;;27070:15;::::0;27038:48:::1;::::0;27051:18;;-1:-1:-1;;;;;27070:15:0::1;27038:12;:48::i;:::-;27133:15;::::0;27101:48:::1;::::0;27114:18;;-1:-1:-1;;;;;27133:15:0::1;27101:12;:48::i;:::-;27190:9;::::0;27164:36:::1;::::0;27177:12;;-1:-1:-1;;;;;27190:9:0::1;27164:12;:36::i;:::-;27226:19:::0;;27222:104:::1;;27266:48;27279:15;27295:18;27266:12;:48::i;:::-;-1:-1:-1::0;;17297:6:0;:14;;;;;;-1:-1:-1;;;;;;;;25961:1372:0:o;28676:943::-;28816:13;;28866:15;;28896:7;28892:88;;28935:1;28919:13;:17;;;28951:15;:17;28892:88;-1:-1:-1;;;;;29004:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;29028:22:0;;;;;;:11;:22;;;;;;;;29027:23;29004:46;29000:467;;;29067:48;29089:6;29097:9;29108:6;29067:21;:48::i;:::-;29000:467;;;-1:-1:-1;;;;;29138:19:0;;;;;;:11;:19;;;;;;;;29137:20;:46;;;;-1:-1:-1;;;;;;29161:22:0;;;;;;:11;:22;;;;;;;;29137:46;29133:334;;;29200:46;29220:6;29228:9;29239:6;29200:19;:46::i;29133:334::-;-1:-1:-1;;;;;29268:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;29291:22:0;;;;;;:11;:22;;;;;;;;29268:45;29264:203;;;29330:48;29352:6;29360:9;29371:6;29330:21;:48::i;29264:203::-;29411:44;29429:6;29437:9;29448:6;29411:17;:44::i;:::-;29491:7;29487:125;;29514:13;:38;;;;29567:15;:33;-1:-1:-1;;;;28676:943:0:o;33483:561::-;33580:7;;33616;;33533;;;;;33640:289;33664:9;:16;33660:20;;33640:289;;;33730:7;33706;:21;33714:9;33724:1;33714:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33714:12:0;33706:21;;;;;;;;;;;;;:31;;:66;;;33765:7;33741;:21;33749:9;33759:1;33749:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33749:12:0;33741:21;;;;;;;;;;;;;:31;33706:66;33702:97;;;33782:7;;33791;;33774:25;;;;;;;33483:561;;:::o;33702:97::-;33824:34;33836:7;:21;33844:9;33854:1;33844:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33844:12:0;33836:21;;;;;;;;;;;;;33824:7;;:11;:34::i;:::-;33814:44;;33883:34;33895:7;:21;33903:9;33913:1;33903:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33903:12:0;33895:21;;;;;;;;;;;;;33883:7;;:11;:34::i;:::-;33873:44;-1:-1:-1;33682:3:0;;;;:::i;:::-;;;;33640:289;;;-1:-1:-1;33965:7:0;;33953;;:20;;:11;:20::i;:::-;33943:7;:30;33939:61;;;33983:7;;33992;;33975:25;;;;;;33483:561;;:::o;33939:61::-;34019:7;;34028;;-1:-1:-1;33483:561:0;-1:-1:-1;33483:561:0:o;32537:330::-;32597:7;32606;32615;32635:12;32650:24;32666:7;32650:15;:24::i;:::-;32635:39;;32685:18;32706:30;32728:7;32706:21;:30::i;:::-;32685:51;-1:-1:-1;32747:23:0;32773:33;32685:51;32773:17;:7;32785:4;32773:11;:17::i;:::-;:21;;:33::i;:::-;32747:59;32842:4;;-1:-1:-1;32848:10:0;;-1:-1:-1;32537:330:0;;-1:-1:-1;;;32537:330:0:o;32875:429::-;32990:7;;;;33046:24;:7;33058:11;33046;:24::i;:::-;33028:42;-1:-1:-1;33081:12:0;33096:21;:4;33105:11;33096:8;:21::i;:::-;33081:36;-1:-1:-1;33128:18:0;33149:27;:10;33164:11;33149:14;:27::i;:::-;33128:48;-1:-1:-1;33187:23:0;33213:33;33128:48;33213:17;:7;33225:4;33213:11;:17::i;:33::-;33265:7;;;;-1:-1:-1;33291:4:0;;-1:-1:-1;32875:429:0;;-1:-1:-1;;;;;;;32875:429:0:o;27475:666::-;27625:16;;;27639:1;27625:16;;;;;;;;27601:21;;27625:16;;;;;;;;;;-1:-1:-1;27625:16:0;27601:40;;27670:4;27652;27657:1;27652:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27652:23:0;;;:7;;;;;;;;;;:23;;;;27696:15;;:22;;;;;;;;:15;;;;;:20;;:22;;;;;27652:7;;27696:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27686:4;27691:1;27686:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27686:32:0;;;:7;;;;;;;;;:32;27763:15;;27731:62;;27748:4;;27763:15;27781:11;27731:8;:62::i;:::-;27832:15;;:240;;;;;-1:-1:-1;;;;;27832:15:0;;;;:66;;:240;;27913:11;;27832:15;;27983:4;;28010;;28046:15;;27832:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28098:35;28115:11;28128:4;28098:35;;;;;;;:::i;:::-;;;;;;;;27530:611;27475:666;:::o;27345:111::-;27425:23;;-1:-1:-1;;;;;27425:15:0;;;:23;;;;;27441:6;;27425:23;;;;27441:6;27425:15;:23;;;;;;;;;;;;;;;;;;;28155:513;28335:15;;28303:62;;28320:4;;-1:-1:-1;;;;;28335:15:0;28353:11;28303:8;:62::i;:::-;28408:15;;-1:-1:-1;;;;;28408:15:0;:31;28447:9;28480:4;28500:11;28408:15;;28612:7;5843;5870:6;-1:-1:-1;;;;;5870:6:0;;5805:79;28612:7;28408:252;;;;;;;;;;-1:-1:-1;;;;;9493:15:1;;;28408:252:0;;;9475:34:1;9525:18;;;9518:34;;;;9568:18;;;9561:34;;;;9611:18;;;9604:34;9675:15;;;9654:19;;;9647:44;28634:15:0;9707:19:1;;;9700:35;9386:19;;28408:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28155:513;;:::o;30731:566::-;30834:15;30851:23;30876:12;30890:23;30915:12;30929:18;30951:19;30962:7;30951:10;:19::i;:::-;-1:-1:-1;;;;;30999:15:0;;;;;;:7;:15;;;;;;30833:137;;-1:-1:-1;30833:137:0;;-1:-1:-1;30833:137:0;;-1:-1:-1;30833:137:0;-1:-1:-1;30833:137:0;-1:-1:-1;30833:137:0;-1:-1:-1;30999:28:0;;31019:7;30999:19;:28::i;:::-;-1:-1:-1;;;;;30981:15:0;;;;;;:7;:15;;;;;;;;:46;;;;31056:7;:15;;;;:28;;31076:7;31056:19;:28::i;:::-;-1:-1:-1;;;;;31038:15:0;;;;;;;:7;:15;;;;;;:46;;;;31116:18;;;;;;;:39;;31139:15;31116:22;:39::i;:::-;-1:-1:-1;;;;;31095:18:0;;;;;;:7;:18;;;;;:60;31169:26;31184:10;31169:14;:26::i;:::-;31206:23;31218:4;31224;31206:11;:23::i;:::-;31262:9;-1:-1:-1;;;;;31245:44:0;31254:6;-1:-1:-1;;;;;31245:44:0;;31273:15;31245:44;;;;18799:25:1;;18787:2;18772:18;;18653:177;31245:44:0;;;;;;;;30822:475;;;;;;30731:566;;;:::o;30137:586::-;30238:15;30255:23;30280:12;30294:23;30319:12;30333:18;30355:19;30366:7;30355:10;:19::i;:::-;-1:-1:-1;;;;;30403:15:0;;;;;;:7;:15;;;;;;30237:137;;-1:-1:-1;30237:137:0;;-1:-1:-1;30237:137:0;;-1:-1:-1;30237:137:0;-1:-1:-1;30237:137:0;-1:-1:-1;30237:137:0;-1:-1:-1;30403:28:0;;30237:137;30403:19;:28::i;:::-;-1:-1:-1;;;;;30385:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;30463:18;;;;;:7;:18;;;;;:39;;30486:15;30463:22;:39::i;:::-;-1:-1:-1;;;;;30442:18:0;;;;;;:7;:18;;;;;;;;:60;;;;30534:7;:18;;;;:39;;30557:15;30534:22;:39::i;31305:642::-;31408:15;31425:23;31450:12;31464:23;31489:12;31503:18;31525:19;31536:7;31525:10;:19::i;:::-;-1:-1:-1;;;;;31573:15:0;;;;;;:7;:15;;;;;;31407:137;;-1:-1:-1;31407:137:0;;-1:-1:-1;31407:137:0;;-1:-1:-1;31407:137:0;-1:-1:-1;31407:137:0;-1:-1:-1;31407:137:0;-1:-1:-1;31573:28:0;;31593:7;31573:19;:28::i;:::-;-1:-1:-1;;;;;31555:15:0;;;;;;:7;:15;;;;;;;;:46;;;;31630:7;:15;;;;:28;;31650:7;31630:19;:28::i;29627:502::-;29726:15;29743:23;29768:12;29782:23;29807:12;29821:18;29843:19;29854:7;29843:10;:19::i;:::-;-1:-1:-1;;;;;29891:15:0;;;;;;:7;:15;;;;;;29725:137;;-1:-1:-1;29725:137:0;;-1:-1:-1;29725:137:0;;-1:-1:-1;29725:137:0;-1:-1:-1;29725:137:0;-1:-1:-1;29725:137:0;-1:-1:-1;29891:28:0;;29725:137;29891:19;:28::i;34423:160::-;34487:7;34514:61;34559:5;34514:26;34526:13;;34514:7;:11;;:26;;;;:::i;34595:168::-;34665:7;34692:63;34739:5;34692:28;34704:15;;34692:7;:11;;:28;;;;:::i;34056:355::-;34119:19;34142:10;:8;:10::i;:::-;34119:33;-1:-1:-1;34163:18:0;34184:27;:10;34119:33;34184:14;:27::i;:::-;34263:4;34247:22;;;;:7;:22;;;;;;34163:48;;-1:-1:-1;34247:38:0;;34163:48;34247:26;:38::i;:::-;34238:4;34222:22;;;;:7;:22;;;;;;;;:63;;;;34299:11;:26;;;;;;34296:107;;;34381:4;34365:22;;;;:7;:22;;;;;;:38;;34392:10;34365:26;:38::i;:::-;34356:4;34340:22;;;;:7;:22;;;;;:63;34108:303;;34056:355;:::o;31955:147::-;32033:7;;:17;;32045:4;32033:11;:17::i;:::-;32023:7;:27;32074:10;;:20;;32089:4;32074:14;:20::i;:::-;32061:10;:33;-1:-1:-1;;31955:147:0:o;14:367:1:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:1;;225:18;214:30;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;308:67;14:367;;;;;:::o;386:247::-;445:6;498:2;486:9;477:7;473:23;469:32;466:52;;;514:1;511;504:12;466:52;553:9;540:23;572:31;597:5;572:31;:::i;638:251::-;708:6;761:2;749:9;740:7;736:23;732:32;729:52;;;777:1;774;767:12;729:52;809:9;803:16;828:31;853:5;828:31;:::i;1154:388::-;1222:6;1230;1283:2;1271:9;1262:7;1258:23;1254:32;1251:52;;;1299:1;1296;1289:12;1251:52;1338:9;1325:23;1357:31;1382:5;1357:31;:::i;:::-;1407:5;-1:-1:-1;1464:2:1;1449:18;;1436:32;1477:33;1436:32;1477:33;:::i;:::-;1529:7;1519:17;;;1154:388;;;;;:::o;1547:456::-;1624:6;1632;1640;1693:2;1681:9;1672:7;1668:23;1664:32;1661:52;;;1709:1;1706;1699:12;1661:52;1748:9;1735:23;1767:31;1792:5;1767:31;:::i;:::-;1817:5;-1:-1:-1;1874:2:1;1859:18;;1846:32;1887:33;1846:32;1887:33;:::i;:::-;1547:456;;1939:7;;-1:-1:-1;;;1993:2:1;1978:18;;;;1965:32;;1547:456::o;2008:908::-;2139:6;2147;2155;2163;2171;2224:2;2212:9;2203:7;2199:23;2195:32;2192:52;;;2240:1;2237;2230:12;2192:52;2279:9;2266:23;2298:31;2323:5;2298:31;:::i;:::-;2348:5;-1:-1:-1;2404:2:1;2389:18;;2376:32;2427:18;2457:14;;;2454:34;;;2484:1;2481;2474:12;2454:34;2523:70;2585:7;2576:6;2565:9;2561:22;2523:70;:::i;:::-;2612:8;;-1:-1:-1;2497:96:1;-1:-1:-1;2700:2:1;2685:18;;2672:32;;-1:-1:-1;2716:16:1;;;2713:36;;;2745:1;2742;2735:12;2713:36;;2784:72;2848:7;2837:8;2826:9;2822:24;2784:72;:::i;:::-;2008:908;;;;-1:-1:-1;2008:908:1;;-1:-1:-1;2875:8:1;;2758:98;2008:908;-1:-1:-1;;;2008:908:1:o;2921:640::-;3025:6;3033;3041;3049;3102:2;3090:9;3081:7;3077:23;3073:32;3070:52;;;3118:1;3115;3108:12;3070:52;3157:9;3144:23;3176:31;3201:5;3176:31;:::i;:::-;3226:5;-1:-1:-1;3282:2:1;3267:18;;3254:32;3309:18;3298:30;;3295:50;;;3341:1;3338;3331:12;3295:50;3380:70;3442:7;3433:6;3422:9;3418:22;3380:70;:::i;:::-;2921:640;;3469:8;;-1:-1:-1;3354:96:1;;3551:2;3536:18;3523:32;;2921:640;-1:-1:-1;;;;2921:640:1:o;3566:315::-;3634:6;3642;3695:2;3683:9;3674:7;3670:23;3666:32;3663:52;;;3711:1;3708;3701:12;3663:52;3750:9;3737:23;3769:31;3794:5;3769:31;:::i;:::-;3819:5;3871:2;3856:18;;;;3843:32;;-1:-1:-1;;;3566:315:1:o;3886:437::-;3972:6;3980;4033:2;4021:9;4012:7;4008:23;4004:32;4001:52;;;4049:1;4046;4039:12;4001:52;4089:9;4076:23;4122:18;4114:6;4111:30;4108:50;;;4154:1;4151;4144:12;4108:50;4193:70;4255:7;4246:6;4235:9;4231:22;4193:70;:::i;:::-;4282:8;;4167:96;;-1:-1:-1;3886:437:1;-1:-1:-1;;;;3886:437:1:o;4328:566::-;4420:6;4428;4436;4489:2;4477:9;4468:7;4464:23;4460:32;4457:52;;;4505:1;4502;4495:12;4457:52;4545:9;4532:23;4578:18;4570:6;4567:30;4564:50;;;4610:1;4607;4600:12;4564:50;4649:70;4711:7;4702:6;4691:9;4687:22;4649:70;:::i;:::-;4738:8;;-1:-1:-1;4623:96:1;-1:-1:-1;;4823:2:1;4808:18;;4795:32;4836:28;4795:32;4836:28;:::i;:::-;4883:5;4873:15;;;4328:566;;;;;:::o;4899:241::-;4955:6;5008:2;4996:9;4987:7;4983:23;4979:32;4976:52;;;5024:1;5021;5014:12;4976:52;5063:9;5050:23;5082:28;5104:5;5082:28;:::i;5145:245::-;5212:6;5265:2;5253:9;5244:7;5240:23;5236:32;5233:52;;;5281:1;5278;5271:12;5233:52;5313:9;5307:16;5332:28;5354:5;5332:28;:::i;5395:309::-;5460:6;5468;5521:2;5509:9;5500:7;5496:23;5492:32;5489:52;;;5537:1;5534;5527:12;5489:52;5576:9;5563:23;5595:28;5617:5;5595:28;:::i;6115:180::-;6174:6;6227:2;6215:9;6206:7;6202:23;6198:32;6195:52;;;6243:1;6240;6233:12;6195:52;-1:-1:-1;6266:23:1;;6115:180;-1:-1:-1;6115:180:1:o;6300:184::-;6370:6;6423:2;6411:9;6402:7;6398:23;6394:32;6391:52;;;6439:1;6436;6429:12;6391:52;-1:-1:-1;6462:16:1;;6300:184;-1:-1:-1;6300:184:1:o;6489:309::-;6554:6;6562;6615:2;6603:9;6594:7;6590:23;6586:32;6583:52;;;6631:1;6628;6621:12;6583:52;6667:9;6654:23;6644:33;;6727:2;6716:9;6712:18;6699:32;6740:28;6762:5;6740:28;:::i;6803:248::-;6871:6;6879;6932:2;6920:9;6911:7;6907:23;6903:32;6900:52;;;6948:1;6945;6938:12;6900:52;-1:-1:-1;;6971:23:1;;;7041:2;7026:18;;;7013:32;;-1:-1:-1;6803:248:1:o;7056:306::-;7144:6;7152;7160;7213:2;7201:9;7192:7;7188:23;7184:32;7181:52;;;7229:1;7226;7219:12;7181:52;7258:9;7252:16;7242:26;;7308:2;7297:9;7293:18;7287:25;7277:35;;7352:2;7341:9;7337:18;7331:25;7321:35;;7056:306;;;;;:::o;7367:385::-;7453:6;7461;7469;7477;7530:3;7518:9;7509:7;7505:23;7501:33;7498:53;;;7547:1;7544;7537:12;7498:53;-1:-1:-1;;7570:23:1;;;7640:2;7625:18;;7612:32;;-1:-1:-1;7691:2:1;7676:18;;7663:32;;7742:2;7727:18;7714:32;;-1:-1:-1;7367:385:1;-1:-1:-1;7367:385:1:o;7757:484::-;7810:3;7848:5;7842:12;7875:6;7870:3;7863:19;7901:4;7930:2;7925:3;7921:12;7914:19;;7967:2;7960:5;7956:14;7988:1;7998:218;8012:6;8009:1;8006:13;7998:218;;;8077:13;;-1:-1:-1;;;;;8073:62:1;8061:75;;8156:12;;;;8191:15;;;;8034:1;8027:9;7998:218;;;-1:-1:-1;8232:3:1;;7757:484;-1:-1:-1;;;;;7757:484:1:o;10196:656::-;10308:4;10337:2;10366;10355:9;10348:21;10398:6;10392:13;10441:6;10436:2;10425:9;10421:18;10414:34;10466:1;10476:140;10490:6;10487:1;10484:13;10476:140;;;10585:14;;;10581:23;;10575:30;10551:17;;;10570:2;10547:26;10540:66;10505:10;;10476:140;;;10634:6;10631:1;10628:13;10625:91;;;10704:1;10699:2;10690:6;10679:9;10675:22;10671:31;10664:42;10625:91;-1:-1:-1;10768:2:1;10756:15;10773:66;10752:88;10737:104;;;;10843:2;10733:113;;10196:656;-1:-1:-1;;;10196:656:1:o;18835:332::-;19042:6;19031:9;19024:25;19085:2;19080;19069:9;19065:18;19058:30;19005:4;19105:56;19157:2;19146:9;19142:18;19134:6;19105:56;:::i;:::-;19097:64;18835:332;-1:-1:-1;;;;18835:332:1:o;19172:605::-;19471:6;19460:9;19453:25;19514:6;19509:2;19498:9;19494:18;19487:34;19557:3;19552:2;19541:9;19537:18;19530:31;19434:4;19578:57;19630:3;19619:9;19615:19;19607:6;19578:57;:::i;:::-;-1:-1:-1;;;;;19671:55:1;;;;19666:2;19651:18;;19644:83;-1:-1:-1;19758:3:1;19743:19;19736:35;19570:65;19172:605;-1:-1:-1;;;19172:605:1:o;19971:128::-;20011:3;20042:1;20038:6;20035:1;20032:13;20029:39;;;20048:18;;:::i;:::-;-1:-1:-1;20084:9:1;;19971:128::o;20104:274::-;20144:1;20170;20160:189;;-1:-1:-1;;;20202:1:1;20195:88;20306:4;20303:1;20296:15;20334:4;20331:1;20324:15;20160:189;-1:-1:-1;20363:9:1;;20104:274::o;20383:482::-;20472:1;20515:5;20472:1;20529:330;20550:7;20540:8;20537:21;20529:330;;;20669:4;-1:-1:-1;;20597:77:1;20591:4;20588:87;20585:113;;;20678:18;;:::i;:::-;20728:7;20718:8;20714:22;20711:55;;;20748:16;;;;20711:55;20827:22;;;;20787:15;;;;20529:330;;;20533:3;20383:482;;;;;:::o;20870:140::-;20928:5;20957:47;20998:4;20988:8;20984:19;20978:4;21064:5;21094:8;21084:80;;-1:-1:-1;21135:1:1;21149:5;;21084:80;21183:4;21173:76;;-1:-1:-1;21220:1:1;21234:5;;21173:76;21265:4;21283:1;21278:59;;;;21351:1;21346:130;;;;21258:218;;21278:59;21308:1;21299:10;;21322:5;;;21346:130;21383:3;21373:8;21370:17;21367:43;;;21390:18;;:::i;:::-;-1:-1:-1;;21446:1:1;21432:16;;21461:5;;21258:218;;21560:2;21550:8;21547:16;21541:3;21535:4;21532:13;21528:36;21522:2;21512:8;21509:16;21504:2;21498:4;21495:12;21491:35;21488:77;21485:159;;;-1:-1:-1;21597:19:1;;;21629:5;;21485:159;21676:34;21701:8;21695:4;21676:34;:::i;:::-;21806:6;-1:-1:-1;;21734:79:1;21725:7;21722:92;21719:118;;;21817:18;;:::i;:::-;21855:20;;21015:866;-1:-1:-1;;;21015:866:1:o;21886:228::-;21926:7;22052:1;-1:-1:-1;;21980:74:1;21977:1;21974:81;21969:1;21962:9;21955:17;21951:105;21948:131;;;22059:18;;:::i;:::-;-1:-1:-1;22099:9:1;;21886:228::o;22119:125::-;22159:4;22187:1;22184;22181:8;22178:34;;;22192:18;;:::i;:::-;-1:-1:-1;22229:9:1;;22119:125::o;22249:437::-;22328:1;22324:12;;;;22371;;;22392:61;;22446:4;22438:6;22434:17;22424:27;;22392:61;22499:2;22491:6;22488:14;22468:18;22465:38;22462:218;;;-1:-1:-1;;;22533:1:1;22526:88;22637:4;22634:1;22627:15;22665:4;22662:1;22655:15;22462:218;;22249:437;;;:::o;22691:195::-;22730:3;-1:-1:-1;;22754:5:1;22751:77;22748:103;;;22831:18;;:::i;:::-;-1:-1:-1;22878:1:1;22867:13;;22691:195::o;22891:184::-;-1:-1:-1;;;22940:1:1;22933:88;23040:4;23037:1;23030:15;23064:4;23061:1;23054:15;23080:184;-1:-1:-1;;;23129:1:1;23122:88;23229:4;23226:1;23219:15;23253:4;23250:1;23243:15;23269:184;-1:-1:-1;;;23318:1:1;23311:88;23418:4;23415:1;23408:15;23442:4;23439:1;23432:15;23647:154;-1:-1:-1;;;;;23726:5:1;23722:54;23715:5;23712:65;23702:93;;23791:1;23788;23781:12;23702:93;23647:154;:::o;23806:118::-;23892:5;23885:13;23878:21;23871:5;23868:32;23858:60;;23914:1;23911;23904:12

Swarm Source

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