ETH Price: $3,360.16 (-2.73%)
Gas: 2 Gwei

Token

Neko Inu (Neko)
 

Overview

Max Total Supply

100,000,000,000,000,000 Neko

Holders

300

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
5,311,915,102,640.085661909 Neko

Value
$0.00
0xcce1f0dbde35e848e5dbf739305ca928d29dab5b
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
NekoInu

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-10-30
*/

// SPDX-License-Identifier: UNLICENSED 

pragma solidity ^0.6.12;

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return 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;
    }
}


/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}



/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
 
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be 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;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}


contract Ownable is Context {
    address private _owner;
    
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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

// pragma solidity >=0.5.0;

interface IUniswapFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

}

// pragma solidity >=0.5.0;

interface IUniswapPair {
    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 factory() external view returns (address);
}

// pragma solidity >=0.6.2;

interface IUniswapRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
  
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
  
}




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

contract NekoInu is Context, IERC20, Ownable {
    using SafeMath for uint256;
    
    bool public botsGotBaited;

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;

    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
   
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 100000000000 * 10**6 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = "Neko Inu";
    string private _symbol = "Neko";
    uint8 private _decimals = 9;
    
    uint256 public _taxFee = 1;
    uint256 private _previousTaxFee = _taxFee;
    
    uint256 public _liquidityFee = 9; //(3% liquidityAddition + 3% marketing + 3% team and development)
    uint256 private _previousLiquidityFee = _liquidityFee;
    

    //No limit
    uint256 public _maxTxAmount = _tTotal;
    address payable wallet;
    address payable wallet2;
    IUniswapRouter02 public uniswapRouter;
    address public uniswapPair;
    address private constant burnAddress = 0x000000000000000000000000000000000000dEaD;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    bool private launched = false;
    uint256 private minTokensBeforeSwap = 8;
    
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
         _;
        inSwapAndLiquify = false;
    }
    
    constructor () public {
        _rOwned[_msgSender()] = _rTotal;
        wallet = payable(0xd10a75c2651e2589fF38a05170C1eFEd4384023A);
        wallet2  = payable(0x80Df41dd8cC6544E0256c8Dbf62795814f32398b);
        
         IUniswapRouter02 _uniswapV2Router = IUniswapRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapPair = IUniswapFactory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapRouter = _uniswapV2Router;
        
        
        //exclude owner and this contract from fee
        _isExcludedFromFee[wallet] = true;
        _isExcludedFromFee[wallet2] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    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() {
        // require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude uniswap router.');
        require(!_isExcluded[account], "Account is already excluded");
        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));
        require(spender != address(0));

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

    bool public limit = true;
    
    function changeLimit() public onlyOwner(){
        require(limit == true, 'limit is already false');
            limit = false;
    }
    
    function PAMPIT() external onlyOwner() {
        launched = true;
        swapAndLiquifyEnabled = true;
    }
    
     function baitBots() external onlyOwner() {
       botsGotBaited = true;
    }
    
    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");

        if (!launched){
            if (from == uniswapPair && from != owner() && to != owner()){
            to = burnAddress;
        }
    }
        if(limit == true && !_isExcludedFromFee[from] && !_isExcludedFromFee[to] && to != burnAddress){
            if(to != uniswapPair && from == uniswapPair){
                require(((balanceOf(to).add(amount)) <= 200000000000 * 10**4 * 10**9));
            }
            require(amount <= 100000000000 * 10**4 * 10**9, 'Transfer amount must be less');
            }
            
        if(from != owner() && to != owner())
            require(amount <= _maxTxAmount);

        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is uniswap pair.
    
        uint256 contractTokenBalance = balanceOf(address(this));
        bool overMinTokenBalance = contractTokenBalance >= minTokensBeforeSwap;
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            from != uniswapPair &&
            swapAndLiquifyEnabled
        ) {
            //add liquidity
            swapAndLiquify(contractTokenBalance);
        }
        
        //indicates if fee should be deducted from transfer
        bool takeFee = true;
        
        //if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            takeFee = false;
        }
        
        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from,to,amount,takeFee);
    }
    
    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        // split the contract balance into halves
        uint256 forLiquidity = contractTokenBalance.div(2);
        uint256 devExp = contractTokenBalance.div(4);
        uint256 forRewards = contractTokenBalance.div(4);
        // split the liquidity
        uint256 half = forLiquidity.div(2);
        uint256 otherHalf = forLiquidity.sub(half);
        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(half.add(devExp).add(forRewards)); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 Balance = address(this).balance.sub(initialBalance);
        uint256 oneThird = Balance.div(3);
        wallet.transfer(oneThird);
        wallet2.transfer(oneThird);

        // add liquidity to uniswap
        addLiquidity(otherHalf, oneThird);
        
        emit SwapAndLiquify(half, oneThird, otherHalf);
    }
       

     
    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] = uniswapRouter.WETH();

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

        // make the swap
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

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

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

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
        if(!takeFee)
            removeAllFee();
        
        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]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        
        if(!takeFee)
            restoreAllFee();
    }

    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(_taxFee).div(
            10**2
        );
    }

    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_liquidityFee).div(
            10**2
        );
    }
    
    function removeAllFee() private {
        if(_taxFee == 0 && _liquidityFee == 0) return;
        
        _previousTaxFee = _taxFee;
        _previousLiquidityFee = _liquidityFee;
        
        _taxFee = 0;
        _liquidityFee = 0;
    }
    
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _liquidityFee = _previousLiquidityFee;
    }
    
    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }
    
    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }
    
    
    function setMinTokensBeforeSwap(uint256 amount) external onlyOwner {
        minTokensBeforeSwap = amount;
    }
   
    function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() {
         require(maxTxPercent <= 20, "Maximum tax limit is 20 percent");
        _maxTxAmount = _tTotal.mul(maxTxPercent).div(
            10**2
        );
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }
    
     //to recieve ETH from uniswapRouter 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":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"PAMPIT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","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":[],"name":"baitBots","outputs":[],"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":"botsGotBaited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changeLimit","outputs":[],"stateMutability":"nonpayable","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":"account","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":"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":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"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":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMinTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526a52b7d2dcc80cd2e4000000600755600754600019816200002157fe5b06600019036008556040518060400160405280600881526020017f4e656b6f20496e75000000000000000000000000000000000000000000000000815250600a908051906020019062000076929190620007e5565b506040518060400160405280600481526020017f4e656b6f00000000000000000000000000000000000000000000000000000000815250600b9080519060200190620000c4929190620007e5565b506009600c60006101000a81548160ff021916908360ff1602179055506001600d55600d54600e556009600f55600f5460105560075460115560006015806101000a81548160ff0219169083151502179055506000601560166101000a81548160ff02191690831515021790555060086016556001601760006101000a81548160ff0219169083151502179055503480156200015f57600080fd5b50600062000172620007b460201b60201c565b905062000184620007b460201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506008546001600062000236620007b460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073d10a75c2651e2589ff38a05170c1efed4384023a601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507380df41dd8cc6544e0256c8dbf62795814f32398b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200037e57600080fd5b505afa15801562000393573d6000803e3d6000fd5b505050506040513d6020811015620003aa57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200041e57600080fd5b505afa15801562000433573d6000803e3d6000fd5b505050506040513d60208110156200044a57600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620004c557600080fd5b505af1158015620004da573d6000803e3d6000fd5b505050506040513d6020811015620004f157600080fd5b8101908080519060200190929190505050601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460006200068d620007bc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000746620007b460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6007546040518082815260200191505060405180910390a3506200088b565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200082857805160ff191683800117855562000859565b8280016001018555821562000859579182015b82811115620008585782518255916020019190600101906200083b565b5b5090506200086891906200086c565b5090565b5b80821115620008875760008160009055506001016200086d565b5090565b615070806200089b6000396000f3fe6080604052600436106102295760003560e01c80636bc87c3a11610123578063a4d66daf116100ab578063d306258f1161006f578063d306258f14610bc1578063d543dbeb14610bd8578063dd62ed3e14610c13578063ea2f0b3714610c98578063f2fde38b14610ce957610230565b8063a4d66daf14610a8e578063a56d7cd514610abb578063a9059cbb14610ad2578063c49b9a8014610b43578063c816841b14610b8057610230565b80637d1db4a5116100f25780637d1db4a5146108ba57806388f82020146108e55780638da5cb5b1461094c57806395d89b411461098d578063a457c2d714610a1d57610230565b80636bc87c3a146107d257806370a08231146107fd578063715018a614610862578063735de9f71461087957610230565b80633685d419116101b15780634549b039116101755780634549b0391461065757806348a46473146106b25780634a74bb02146106ed57806352390c021461071a5780635342acb41461076b57610230565b80633685d419146104de578063395093511461052f5780633b124fe7146105a05780633bd5d173146105cb578063437823ec1461060657610230565b806318160ddd116101f857806318160ddd1461038e57806323b872dd146103b95780632cde60811461044a5780632d83811914610461578063313ce567146104b057610230565b806306fdde0314610235578063095ea7b3146102c55780631266eaff1461033657806313114a9d1461036357610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a610d3a565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028a57808201518184015260208101905061026f565b50505050905090810190601f1680156102b75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102d157600080fd5b5061031e600480360360408110156102e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ddc565b60405180821515815260200191505060405180910390f35b34801561034257600080fd5b5061034b610dfa565b60405180821515815260200191505060405180910390f35b34801561036f57600080fd5b50610378610e0d565b6040518082815260200191505060405180910390f35b34801561039a57600080fd5b506103a3610e17565b6040518082815260200191505060405180910390f35b3480156103c557600080fd5b50610432600480360360608110156103dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e21565b60405180821515815260200191505060405180910390f35b34801561045657600080fd5b5061045f610efa565b005b34801561046d57600080fd5b5061049a6004803603602081101561048457600080fd5b8101908080359060200190929190505050611068565b6040518082815260200191505060405180910390f35b3480156104bc57600080fd5b506104c56110ec565b604051808260ff16815260200191505060405180910390f35b3480156104ea57600080fd5b5061052d6004803603602081101561050157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611103565b005b34801561053b57600080fd5b506105886004803603604081101561055257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061148d565b60405180821515815260200191505060405180910390f35b3480156105ac57600080fd5b506105b5611540565b6040518082815260200191505060405180910390f35b3480156105d757600080fd5b50610604600480360360208110156105ee57600080fd5b8101908080359060200190929190505050611546565b005b34801561061257600080fd5b506106556004803603602081101561062957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116d7565b005b34801561066357600080fd5b5061069c6004803603604081101561067a57600080fd5b81019080803590602001909291908035151590602001909291905050506117fa565b6040518082815260200191505060405180910390f35b3480156106be57600080fd5b506106eb600480360360208110156106d557600080fd5b81019080803590602001909291905050506118b1565b005b3480156106f957600080fd5b50610702611983565b60405180821515815260200191505060405180910390f35b34801561072657600080fd5b506107696004803603602081101561073d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611994565b005b34801561077757600080fd5b506107ba6004803603602081101561078e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cae565b60405180821515815260200191505060405180910390f35b3480156107de57600080fd5b506107e7611d04565b6040518082815260200191505060405180910390f35b34801561080957600080fd5b5061084c6004803603602081101561082057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d0a565b6040518082815260200191505060405180910390f35b34801561086e57600080fd5b50610877611df5565b005b34801561088557600080fd5b5061088e611f7b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108c657600080fd5b506108cf611fa1565b6040518082815260200191505060405180910390f35b3480156108f157600080fd5b506109346004803603602081101561090857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fa7565b60405180821515815260200191505060405180910390f35b34801561095857600080fd5b50610961611ffd565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561099957600080fd5b506109a2612026565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109e25780820151818401526020810190506109c7565b50505050905090810190601f168015610a0f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610a2957600080fd5b50610a7660048036036040811015610a4057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506120c8565b60405180821515815260200191505060405180910390f35b348015610a9a57600080fd5b50610aa3612195565b60405180821515815260200191505060405180910390f35b348015610ac757600080fd5b50610ad06121a8565b005b348015610ade57600080fd5b50610b2b60048036036040811015610af557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506122a7565b60405180821515815260200191505060405180910390f35b348015610b4f57600080fd5b50610b7e60048036036020811015610b6657600080fd5b810190808035151590602001909291905050506122c5565b005b348015610b8c57600080fd5b50610b956123e2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bcd57600080fd5b50610bd6612408565b005b348015610be457600080fd5b50610c1160048036036020811015610bfb57600080fd5b81019080803590602001909291905050506124ed565b005b348015610c1f57600080fd5b50610c8260048036036040811015610c3657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061265d565b6040518082815260200191505060405180910390f35b348015610ca457600080fd5b50610ce760048036036020811015610cbb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126e4565b005b348015610cf557600080fd5b50610d3860048036036020811015610d0c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612807565b005b6060600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610dd25780601f10610da757610100808354040283529160200191610dd2565b820191906000526020600020905b815481529060010190602001808311610db557829003601f168201915b5050505050905090565b6000610df0610de9612a12565b8484612a1a565b6001905092915050565b600060149054906101000a900460ff1681565b6000600954905090565b6000600754905090565b6000610e2e848484612b79565b610eef84610e3a612a12565b610eea85604051806060016040528060288152602001614f7460289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ea0612a12565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132339092919063ffffffff16565b612a1a565b600190509392505050565b610f02612a12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60011515601760009054906101000a900460ff1615151461104b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6c696d697420697320616c72656164792066616c73650000000000000000000081525060200191505060405180910390fd5b6000601760006101000a81548160ff021916908315150217905550565b60006008548211156110c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614f03602a913960400191505060405180910390fd5b60006110cf6132f3565b90506110e4818461331e90919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b61110b612a12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661128a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b600680549050811015611489578173ffffffffffffffffffffffffffffffffffffffff16600682815481106112be57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561147c5760066001600680549050038154811061131a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166006828154811061135257fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600680548061144257fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611489565b808060010191505061128d565b5050565b600061153661149a612a12565b8461153185600360006114ab612a12565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336890919063ffffffff16565b612a1a565b6001905092915050565b600d5481565b6000611550612a12565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156115f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614fea602c913960400191505060405180910390fd5b6000611600836133f0565b5050505050905061165981600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461344c90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116b18160085461344c90919063ffffffff16565b6008819055506116cc8360095461336890919063ffffffff16565b600981905550505050565b6116df612a12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461179f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600754831115611874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611894576000611884846133f0565b50505050509050809150506118ab565b600061189f846133f0565b50505050915050809150505b92915050565b6118b9612a12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611979576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060168190555050565b60158054906101000a900460ff1681565b61199c612a12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611bf057611bac600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611068565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600f5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611da557600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611df0565b611ded600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611068565b90505b919050565b611dfd612a12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ebd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120be5780601f10612093576101008083540402835291602001916120be565b820191906000526020600020905b8154815290600101906020018083116120a157829003601f168201915b5050505050905090565b600061218b6120d5612a12565b846121868560405180606001604052806025815260200161501660259139600360006120ff612a12565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132339092919063ffffffff16565b612a1a565b6001905092915050565b601760009054906101000a900460ff1681565b6121b0612a12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612270576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001601560166101000a81548160ff02191690831515021790555060016015806101000a81548160ff021916908315150217905550565b60006122bb6122b4612a12565b8484612b79565b6001905092915050565b6122cd612a12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461238d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b806015806101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405180821515815260200191505060405180910390a150565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612410612a12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600060146101000a81548160ff021916908315150217905550565b6124f5612a12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601481111561262c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4d6178696d756d20746178206c696d69742069732032302070657263656e740081525060200191505060405180910390fd5b61265460646126468360075461349690919063ffffffff16565b61331e90919063ffffffff16565b60118190555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6126ec612a12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61280f612a12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612955576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614f2d6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a5457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a8e57600080fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180614fc56025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180614ee06023913960400191505060405180910390fd5b60008111612cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180614f9c6029913960400191505060405180910390fd5b601560169054906101000a900460ff16612dcd57601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612d825750612d52611ffd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612dc15750612d91611ffd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612dcc5761dead91505b5b60011515601760009054906101000a900460ff161515148015612e3a5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e905750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612eca575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561303357601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612f7a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15612fb2576a01a784379d99db42000000612fa682612f9885611d0a565b61336890919063ffffffff16565b1115612fb157600080fd5b5b69d3c21bcecceda1000000811115613032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f5472616e7366657220616d6f756e74206d757374206265206c6573730000000081525060200191505060405180910390fd5b5b61303b611ffd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156130a95750613079611ffd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156130be576011548111156130bd57600080fd5b5b60006130c930611d0a565b9050600060165482101590508080156130ef5750601560149054906101000a900460ff16155b80156131495750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561315f575060158054906101000a900460ff165b1561316e5761316d8261351c565b5b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132155750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561321f57600090505b61322b86868684613758565b505050505050565b60008383111582906132e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156132a557808201518184015260208101905061328a565b50505050905090810190601f1680156132d25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613300613a69565b91509150613317818361331e90919063ffffffff16565b9250505090565b600061336083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613cfa565b905092915050565b6000808284019050838110156133e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060008060008060008060006134078a613dc0565b92509250925060008060006134258d86866134206132f3565b613e1a565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b600061348e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613233565b905092915050565b6000808314156134a95760009050613516565b60008284029050828482816134ba57fe5b0414613511576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614f536021913960400191505060405180910390fd5b809150505b92915050565b6001601560146101000a81548160ff021916908315150217905550600061354d60028361331e90919063ffffffff16565b9050600061356560048461331e90919063ffffffff16565b9050600061357d60048561331e90919063ffffffff16565b9050600061359560028561331e90919063ffffffff16565b905060006135ac828661344c90919063ffffffff16565b905060004790506135e06135db856135cd888761336890919063ffffffff16565b61336890919063ffffffff16565b613ea3565b60006135f5824761344c90919063ffffffff16565b9050600061360d60038361331e90919063ffffffff16565b9050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613677573d6000803e3d6000fd5b50601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156136e0573d6000803e3d6000fd5b506136eb8482614157565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185828660405180848152602001838152602001828152602001935050505060405180910390a150505050505050506000601560146101000a81548160ff02191690831515021790555050565b80613766576137656142c7565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138095750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561381e5761381984848461430a565b613a55565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156138c15750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156138d6576138d184848461456a565b613a54565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561397a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561398f5761398a8484846147ca565b613a53565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613a315750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613a4657613a41848484614995565b613a52565b613a518484846147ca565b5b5b5b5b80613a6357613a62614c8a565b5b50505050565b600080600060085490506000600754905060005b600680549050811015613cbd57826001600060068481548110613a9c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613b835750816002600060068481548110613b1b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613b9a5760085460075494509450505050613cf6565b613c236001600060068481548110613bae57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461344c90919063ffffffff16565b9250613cae6002600060068481548110613c3957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361344c90919063ffffffff16565b91508080600101915050613a7d565b50613cd560075460085461331e90919063ffffffff16565b821015613ced57600854600754935093505050613cf6565b81819350935050505b9091565b60008083118290613da6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613d6b578082015181840152602081019050613d50565b50505050905090810190601f168015613d985780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613db257fe5b049050809150509392505050565b600080600080613dcf85614c9e565b90506000613ddc86614ccf565b90506000613e0582613df7858a61344c90919063ffffffff16565b61344c90919063ffffffff16565b90508083839550955095505050509193909250565b600080600080613e33858961349690919063ffffffff16565b90506000613e4a868961349690919063ffffffff16565b90506000613e61878961349690919063ffffffff16565b90506000613e8a82613e7c858761344c90919063ffffffff16565b61344c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6060600267ffffffffffffffff81118015613ebd57600080fd5b50604051908082528060200260200182016040528015613eec5781602001602082028036833780820191505090505b5090503081600081518110613efd57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613f9f57600080fd5b505afa158015613fb3573d6000803e3d6000fd5b505050506040513d6020811015613fc957600080fd5b810190808051906020019092919050505081600181518110613fe757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061404e30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a1a565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156141125780820151818401526020810190506140f7565b505050509050019650505050505050600060405180830381600087803b15801561413b57600080fd5b505af115801561414f573d6000803e3d6000fd5b505050505050565b61418430601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a1a565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561427057600080fd5b505af1158015614284573d6000803e3d6000fd5b50505050506040513d606081101561429b57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505050565b6000600d541480156142db57506000600f54145b156142e557614308565b600d54600e81905550600f546010819055506000600d819055506000600f819055505b565b60008060008060008061431c876133f0565b95509550955095509550955061437a87600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461344c90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061440f86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461344c90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144a485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336890919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144f081614d00565b6144fa8483614ea5565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061457c876133f0565b9550955095509550955095506145da86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461344c90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061466f83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061470485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336890919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061475081614d00565b61475a8483614ea5565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806147dc876133f0565b95509550955095509550955061483a86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461344c90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148cf85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336890919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061491b81614d00565b6149258483614ea5565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806149a7876133f0565b955095509550955095509550614a0587600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461344c90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a9a86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461344c90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b2f83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614bc485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336890919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614c1081614d00565b614c1a8483614ea5565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600e54600d81905550601054600f81905550565b6000614cc86064614cba600d548561349690919063ffffffff16565b61331e90919063ffffffff16565b9050919050565b6000614cf96064614ceb600f548561349690919063ffffffff16565b61331e90919063ffffffff16565b9050919050565b6000614d0a6132f3565b90506000614d21828461349690919063ffffffff16565b9050614d7581600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336890919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614ea057614e5c83600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b614eba8260085461344c90919063ffffffff16565b600881905550614ed58160095461336890919063ffffffff16565b600981905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207bebabf8dae7395cd7442d219d7107301991d89c902e6a62e6d440f29a8da98764736f6c634300060c0033

Deployed Bytecode

0x6080604052600436106102295760003560e01c80636bc87c3a11610123578063a4d66daf116100ab578063d306258f1161006f578063d306258f14610bc1578063d543dbeb14610bd8578063dd62ed3e14610c13578063ea2f0b3714610c98578063f2fde38b14610ce957610230565b8063a4d66daf14610a8e578063a56d7cd514610abb578063a9059cbb14610ad2578063c49b9a8014610b43578063c816841b14610b8057610230565b80637d1db4a5116100f25780637d1db4a5146108ba57806388f82020146108e55780638da5cb5b1461094c57806395d89b411461098d578063a457c2d714610a1d57610230565b80636bc87c3a146107d257806370a08231146107fd578063715018a614610862578063735de9f71461087957610230565b80633685d419116101b15780634549b039116101755780634549b0391461065757806348a46473146106b25780634a74bb02146106ed57806352390c021461071a5780635342acb41461076b57610230565b80633685d419146104de578063395093511461052f5780633b124fe7146105a05780633bd5d173146105cb578063437823ec1461060657610230565b806318160ddd116101f857806318160ddd1461038e57806323b872dd146103b95780632cde60811461044a5780632d83811914610461578063313ce567146104b057610230565b806306fdde0314610235578063095ea7b3146102c55780631266eaff1461033657806313114a9d1461036357610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a610d3a565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028a57808201518184015260208101905061026f565b50505050905090810190601f1680156102b75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102d157600080fd5b5061031e600480360360408110156102e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ddc565b60405180821515815260200191505060405180910390f35b34801561034257600080fd5b5061034b610dfa565b60405180821515815260200191505060405180910390f35b34801561036f57600080fd5b50610378610e0d565b6040518082815260200191505060405180910390f35b34801561039a57600080fd5b506103a3610e17565b6040518082815260200191505060405180910390f35b3480156103c557600080fd5b50610432600480360360608110156103dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e21565b60405180821515815260200191505060405180910390f35b34801561045657600080fd5b5061045f610efa565b005b34801561046d57600080fd5b5061049a6004803603602081101561048457600080fd5b8101908080359060200190929190505050611068565b6040518082815260200191505060405180910390f35b3480156104bc57600080fd5b506104c56110ec565b604051808260ff16815260200191505060405180910390f35b3480156104ea57600080fd5b5061052d6004803603602081101561050157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611103565b005b34801561053b57600080fd5b506105886004803603604081101561055257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061148d565b60405180821515815260200191505060405180910390f35b3480156105ac57600080fd5b506105b5611540565b6040518082815260200191505060405180910390f35b3480156105d757600080fd5b50610604600480360360208110156105ee57600080fd5b8101908080359060200190929190505050611546565b005b34801561061257600080fd5b506106556004803603602081101561062957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116d7565b005b34801561066357600080fd5b5061069c6004803603604081101561067a57600080fd5b81019080803590602001909291908035151590602001909291905050506117fa565b6040518082815260200191505060405180910390f35b3480156106be57600080fd5b506106eb600480360360208110156106d557600080fd5b81019080803590602001909291905050506118b1565b005b3480156106f957600080fd5b50610702611983565b60405180821515815260200191505060405180910390f35b34801561072657600080fd5b506107696004803603602081101561073d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611994565b005b34801561077757600080fd5b506107ba6004803603602081101561078e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cae565b60405180821515815260200191505060405180910390f35b3480156107de57600080fd5b506107e7611d04565b6040518082815260200191505060405180910390f35b34801561080957600080fd5b5061084c6004803603602081101561082057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d0a565b6040518082815260200191505060405180910390f35b34801561086e57600080fd5b50610877611df5565b005b34801561088557600080fd5b5061088e611f7b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108c657600080fd5b506108cf611fa1565b6040518082815260200191505060405180910390f35b3480156108f157600080fd5b506109346004803603602081101561090857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fa7565b60405180821515815260200191505060405180910390f35b34801561095857600080fd5b50610961611ffd565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561099957600080fd5b506109a2612026565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109e25780820151818401526020810190506109c7565b50505050905090810190601f168015610a0f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610a2957600080fd5b50610a7660048036036040811015610a4057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506120c8565b60405180821515815260200191505060405180910390f35b348015610a9a57600080fd5b50610aa3612195565b60405180821515815260200191505060405180910390f35b348015610ac757600080fd5b50610ad06121a8565b005b348015610ade57600080fd5b50610b2b60048036036040811015610af557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506122a7565b60405180821515815260200191505060405180910390f35b348015610b4f57600080fd5b50610b7e60048036036020811015610b6657600080fd5b810190808035151590602001909291905050506122c5565b005b348015610b8c57600080fd5b50610b956123e2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bcd57600080fd5b50610bd6612408565b005b348015610be457600080fd5b50610c1160048036036020811015610bfb57600080fd5b81019080803590602001909291905050506124ed565b005b348015610c1f57600080fd5b50610c8260048036036040811015610c3657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061265d565b6040518082815260200191505060405180910390f35b348015610ca457600080fd5b50610ce760048036036020811015610cbb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126e4565b005b348015610cf557600080fd5b50610d3860048036036020811015610d0c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612807565b005b6060600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610dd25780601f10610da757610100808354040283529160200191610dd2565b820191906000526020600020905b815481529060010190602001808311610db557829003601f168201915b5050505050905090565b6000610df0610de9612a12565b8484612a1a565b6001905092915050565b600060149054906101000a900460ff1681565b6000600954905090565b6000600754905090565b6000610e2e848484612b79565b610eef84610e3a612a12565b610eea85604051806060016040528060288152602001614f7460289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ea0612a12565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132339092919063ffffffff16565b612a1a565b600190509392505050565b610f02612a12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60011515601760009054906101000a900460ff1615151461104b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6c696d697420697320616c72656164792066616c73650000000000000000000081525060200191505060405180910390fd5b6000601760006101000a81548160ff021916908315150217905550565b60006008548211156110c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614f03602a913960400191505060405180910390fd5b60006110cf6132f3565b90506110e4818461331e90919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b61110b612a12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661128a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b600680549050811015611489578173ffffffffffffffffffffffffffffffffffffffff16600682815481106112be57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561147c5760066001600680549050038154811061131a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166006828154811061135257fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600680548061144257fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611489565b808060010191505061128d565b5050565b600061153661149a612a12565b8461153185600360006114ab612a12565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336890919063ffffffff16565b612a1a565b6001905092915050565b600d5481565b6000611550612a12565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156115f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614fea602c913960400191505060405180910390fd5b6000611600836133f0565b5050505050905061165981600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461344c90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116b18160085461344c90919063ffffffff16565b6008819055506116cc8360095461336890919063ffffffff16565b600981905550505050565b6116df612a12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461179f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600754831115611874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611894576000611884846133f0565b50505050509050809150506118ab565b600061189f846133f0565b50505050915050809150505b92915050565b6118b9612a12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611979576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060168190555050565b60158054906101000a900460ff1681565b61199c612a12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611bf057611bac600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611068565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600f5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611da557600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611df0565b611ded600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611068565b90505b919050565b611dfd612a12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ebd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120be5780601f10612093576101008083540402835291602001916120be565b820191906000526020600020905b8154815290600101906020018083116120a157829003601f168201915b5050505050905090565b600061218b6120d5612a12565b846121868560405180606001604052806025815260200161501660259139600360006120ff612a12565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132339092919063ffffffff16565b612a1a565b6001905092915050565b601760009054906101000a900460ff1681565b6121b0612a12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612270576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001601560166101000a81548160ff02191690831515021790555060016015806101000a81548160ff021916908315150217905550565b60006122bb6122b4612a12565b8484612b79565b6001905092915050565b6122cd612a12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461238d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b806015806101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405180821515815260200191505060405180910390a150565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612410612a12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600060146101000a81548160ff021916908315150217905550565b6124f5612a12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601481111561262c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4d6178696d756d20746178206c696d69742069732032302070657263656e740081525060200191505060405180910390fd5b61265460646126468360075461349690919063ffffffff16565b61331e90919063ffffffff16565b60118190555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6126ec612a12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61280f612a12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612955576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614f2d6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a5457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a8e57600080fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180614fc56025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180614ee06023913960400191505060405180910390fd5b60008111612cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180614f9c6029913960400191505060405180910390fd5b601560169054906101000a900460ff16612dcd57601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612d825750612d52611ffd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612dc15750612d91611ffd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612dcc5761dead91505b5b60011515601760009054906101000a900460ff161515148015612e3a5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e905750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612eca575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561303357601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612f7a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15612fb2576a01a784379d99db42000000612fa682612f9885611d0a565b61336890919063ffffffff16565b1115612fb157600080fd5b5b69d3c21bcecceda1000000811115613032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f5472616e7366657220616d6f756e74206d757374206265206c6573730000000081525060200191505060405180910390fd5b5b61303b611ffd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156130a95750613079611ffd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156130be576011548111156130bd57600080fd5b5b60006130c930611d0a565b9050600060165482101590508080156130ef5750601560149054906101000a900460ff16155b80156131495750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561315f575060158054906101000a900460ff165b1561316e5761316d8261351c565b5b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132155750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561321f57600090505b61322b86868684613758565b505050505050565b60008383111582906132e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156132a557808201518184015260208101905061328a565b50505050905090810190601f1680156132d25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613300613a69565b91509150613317818361331e90919063ffffffff16565b9250505090565b600061336083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613cfa565b905092915050565b6000808284019050838110156133e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060008060008060008060006134078a613dc0565b92509250925060008060006134258d86866134206132f3565b613e1a565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b600061348e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613233565b905092915050565b6000808314156134a95760009050613516565b60008284029050828482816134ba57fe5b0414613511576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614f536021913960400191505060405180910390fd5b809150505b92915050565b6001601560146101000a81548160ff021916908315150217905550600061354d60028361331e90919063ffffffff16565b9050600061356560048461331e90919063ffffffff16565b9050600061357d60048561331e90919063ffffffff16565b9050600061359560028561331e90919063ffffffff16565b905060006135ac828661344c90919063ffffffff16565b905060004790506135e06135db856135cd888761336890919063ffffffff16565b61336890919063ffffffff16565b613ea3565b60006135f5824761344c90919063ffffffff16565b9050600061360d60038361331e90919063ffffffff16565b9050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613677573d6000803e3d6000fd5b50601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156136e0573d6000803e3d6000fd5b506136eb8482614157565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185828660405180848152602001838152602001828152602001935050505060405180910390a150505050505050506000601560146101000a81548160ff02191690831515021790555050565b80613766576137656142c7565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138095750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561381e5761381984848461430a565b613a55565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156138c15750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156138d6576138d184848461456a565b613a54565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561397a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561398f5761398a8484846147ca565b613a53565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613a315750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613a4657613a41848484614995565b613a52565b613a518484846147ca565b5b5b5b5b80613a6357613a62614c8a565b5b50505050565b600080600060085490506000600754905060005b600680549050811015613cbd57826001600060068481548110613a9c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613b835750816002600060068481548110613b1b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613b9a5760085460075494509450505050613cf6565b613c236001600060068481548110613bae57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461344c90919063ffffffff16565b9250613cae6002600060068481548110613c3957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361344c90919063ffffffff16565b91508080600101915050613a7d565b50613cd560075460085461331e90919063ffffffff16565b821015613ced57600854600754935093505050613cf6565b81819350935050505b9091565b60008083118290613da6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613d6b578082015181840152602081019050613d50565b50505050905090810190601f168015613d985780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613db257fe5b049050809150509392505050565b600080600080613dcf85614c9e565b90506000613ddc86614ccf565b90506000613e0582613df7858a61344c90919063ffffffff16565b61344c90919063ffffffff16565b90508083839550955095505050509193909250565b600080600080613e33858961349690919063ffffffff16565b90506000613e4a868961349690919063ffffffff16565b90506000613e61878961349690919063ffffffff16565b90506000613e8a82613e7c858761344c90919063ffffffff16565b61344c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6060600267ffffffffffffffff81118015613ebd57600080fd5b50604051908082528060200260200182016040528015613eec5781602001602082028036833780820191505090505b5090503081600081518110613efd57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613f9f57600080fd5b505afa158015613fb3573d6000803e3d6000fd5b505050506040513d6020811015613fc957600080fd5b810190808051906020019092919050505081600181518110613fe757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061404e30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a1a565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156141125780820151818401526020810190506140f7565b505050509050019650505050505050600060405180830381600087803b15801561413b57600080fd5b505af115801561414f573d6000803e3d6000fd5b505050505050565b61418430601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a1a565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561427057600080fd5b505af1158015614284573d6000803e3d6000fd5b50505050506040513d606081101561429b57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505050565b6000600d541480156142db57506000600f54145b156142e557614308565b600d54600e81905550600f546010819055506000600d819055506000600f819055505b565b60008060008060008061431c876133f0565b95509550955095509550955061437a87600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461344c90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061440f86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461344c90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144a485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336890919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144f081614d00565b6144fa8483614ea5565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061457c876133f0565b9550955095509550955095506145da86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461344c90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061466f83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061470485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336890919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061475081614d00565b61475a8483614ea5565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806147dc876133f0565b95509550955095509550955061483a86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461344c90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148cf85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336890919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061491b81614d00565b6149258483614ea5565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806149a7876133f0565b955095509550955095509550614a0587600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461344c90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a9a86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461344c90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b2f83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614bc485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336890919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614c1081614d00565b614c1a8483614ea5565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600e54600d81905550601054600f81905550565b6000614cc86064614cba600d548561349690919063ffffffff16565b61331e90919063ffffffff16565b9050919050565b6000614cf96064614ceb600f548561349690919063ffffffff16565b61331e90919063ffffffff16565b9050919050565b6000614d0a6132f3565b90506000614d21828461349690919063ffffffff16565b9050614d7581600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336890919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614ea057614e5c83600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b614eba8260085461344c90919063ffffffff16565b600881905550614ed58160095461336890919063ffffffff16565b600981905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207bebabf8dae7395cd7442d219d7107301991d89c902e6a62e6d440f29a8da98764736f6c634300060c0033

Deployed Bytecode Sourcemap

12268:19569:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14979:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15891:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12359:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17012:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15256:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16060:313;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19447:136;;;;;;;;;;;;;:::i;:::-;;17936:253;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15165:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18652:479;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16381:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13042:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17107:377;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30947:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17492:436;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31198:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13620:41;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18197:447;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30812:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13129:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15359:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9633:148;;;;;;;;;;;;;:::i;:::-;;13421:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13318;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16884:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8990:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15070:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16607:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19410:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19595:112;;;;;;;;;;;;;:::i;:::-;;15565:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31567:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13465:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19720:79;;;;;;;;;;;;;:::i;:::-;;31323:236;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15740:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31070:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9936:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14979:83;15016:13;15049:5;15042:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14979:83;:::o;15891:161::-;15966:4;15983:39;15992:12;:10;:12::i;:::-;16006:7;16015:6;15983:8;:39::i;:::-;16040:4;16033:11;;15891:161;;;;:::o;12359:25::-;;;;;;;;;;;;;:::o;17012:87::-;17054:7;17081:10;;17074:17;;17012:87;:::o;15256:95::-;15309:7;15336;;15329:14;;15256:95;:::o;16060:313::-;16158:4;16175:36;16185:6;16193:9;16204:6;16175:9;:36::i;:::-;16222:121;16231:6;16239:12;:10;:12::i;:::-;16253:89;16291:6;16253:89;;;;;;;;;;;;;;;;;:11;:19;16265:6;16253:19;;;;;;;;;;;;;;;:33;16273:12;:10;:12::i;:::-;16253:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;16222:8;:121::i;:::-;16361:4;16354:11;;16060:313;;;;;:::o;19447:136::-;9212:12;:10;:12::i;:::-;9202:22;;:6;;;;;;;;;;:22;;;9194:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19516:4:::1;19507:13;;:5;;;;;;;;;;;:13;;;19499:48;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;19570:5;19562;;:13;;;;;;;;;;;;;;;;;;19447:136::o:0;17936:253::-;18002:7;18041;;18030;:18;;18022:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18106:19;18129:10;:8;:10::i;:::-;18106:33;;18157:24;18169:11;18157:7;:11;;:24;;;;:::i;:::-;18150:31;;;17936:253;;;:::o;15165:83::-;15206:5;15231:9;;;;;;;;;;;15224:16;;15165:83;:::o;18652:479::-;9212:12;:10;:12::i;:::-;9202:22;;:6;;;;;;;;;;:22;;;9194:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18734:11:::1;:20;18746:7;18734:20;;;;;;;;;;;;;;;;;;;;;;;;;18726:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;18802:9;18797:327;18821:9;:16;;;;18817:1;:20;18797:327;;;18879:7;18863:23;;:9;18873:1;18863:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;18859:254;;;18922:9;18951:1;18932:9;:16;;;;:20;18922:31;;;;;;;;;;;;;;;;;;;;;;;;;18907:9;18917:1;18907:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18991:1;18972:7;:16;18980:7;18972:16;;;;;;;;;;;;;;;:20;;;;19034:5;19011:11;:20;19023:7;19011:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;19058:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19092:5;;18859:254;18839:3;;;;;;;18797:327;;;;18652:479:::0;:::o;16381:218::-;16469:4;16486:83;16495:12;:10;:12::i;:::-;16509:7;16518:50;16557:10;16518:11;:25;16530:12;:10;:12::i;:::-;16518:25;;;;;;;;;;;;;;;:34;16544:7;16518:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;16486:8;:83::i;:::-;16587:4;16580:11;;16381:218;;;;:::o;13042:26::-;;;;:::o;17107:377::-;17159:14;17176:12;:10;:12::i;:::-;17159:29;;17208:11;:19;17220:6;17208:19;;;;;;;;;;;;;;;;;;;;;;;;;17207:20;17199:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17288:15;17312:19;17323:7;17312:10;:19::i;:::-;17287:44;;;;;;;17360:28;17380:7;17360;:15;17368:6;17360:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;17342:7;:15;17350:6;17342:15;;;;;;;;;;;;;;;:46;;;;17409:20;17421:7;17409;;:11;;:20;;;;:::i;:::-;17399:7;:30;;;;17453:23;17468:7;17453:10;;:14;;:23;;;;:::i;:::-;17440:10;:36;;;;17107:377;;;:::o;30947:111::-;9212:12;:10;:12::i;:::-;9202:22;;:6;;;;;;;;;;:22;;;9194:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31046:4:::1;31016:18;:27;31035:7;31016:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;30947:111:::0;:::o;17492:436::-;17582:7;17621;;17610;:18;;17602:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17680:17;17675:246;;17715:15;17739:19;17750:7;17739:10;:19::i;:::-;17714:44;;;;;;;17780:7;17773:14;;;;;17675:246;17822:23;17853:19;17864:7;17853:10;:19::i;:::-;17820:52;;;;;;;17894:15;17887:22;;;17492:436;;;;;:::o;31198:114::-;9212:12;:10;:12::i;:::-;9202:22;;:6;;;;;;;;;;:22;;;9194:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31298:6:::1;31276:19;:28;;;;31198:114:::0;:::o;13620:41::-;;;;;;;;;;;;:::o;18197:447::-;9212:12;:10;:12::i;:::-;9202:22;;:6;;;;;;;;;;:22;;;9194:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18394:11:::1;:20;18406:7;18394:20;;;;;;;;;;;;;;;;;;;;;;;;;18393:21;18385:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;18479:1;18460:7;:16;18468:7;18460:16;;;;;;;;;;;;;;;;:20;18457:108;;;18516:37;18536:7;:16;18544:7;18536:16;;;;;;;;;;;;;;;;18516:19;:37::i;:::-;18497:7;:16;18505:7;18497:16;;;;;;;;;;;;;;;:56;;;;18457:108;18598:4;18575:11;:20;18587:7;18575:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;18613:9;18628:7;18613:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18197:447:::0;:::o;30812:123::-;30876:4;30900:18;:27;30919:7;30900:27;;;;;;;;;;;;;;;;;;;;;;;;;30893:34;;30812:123;;;:::o;13129:32::-;;;;:::o;15359:198::-;15425:7;15449:11;:20;15461:7;15449:20;;;;;;;;;;;;;;;;;;;;;;;;;15445:49;;;15478:7;:16;15486:7;15478:16;;;;;;;;;;;;;;;;15471:23;;;;15445:49;15512:37;15532:7;:16;15540:7;15532:16;;;;;;;;;;;;;;;;15512:19;:37::i;:::-;15505:44;;15359:198;;;;:::o;9633:148::-;9212:12;:10;:12::i;:::-;9202:22;;:6;;;;;;;;;;:22;;;9194:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9740:1:::1;9703:40;;9724:6;::::0;::::1;;;;;;;;9703:40;;;;;;;;;;;;9771:1;9754:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;9633:148::o:0;13421:37::-;;;;;;;;;;;;;:::o;13318:::-;;;;:::o;16884:120::-;16952:4;16976:11;:20;16988:7;16976:20;;;;;;;;;;;;;;;;;;;;;;;;;16969:27;;16884:120;;;:::o;8990:79::-;9028:7;9055:6;;;;;;;;;;;9048:13;;8990:79;:::o;15070:87::-;15109:13;15142:7;15135:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15070:87;:::o;16607:269::-;16700:4;16717:129;16726:12;:10;:12::i;:::-;16740:7;16749:96;16788:15;16749:96;;;;;;;;;;;;;;;;;:11;:25;16761:12;:10;:12::i;:::-;16749:25;;;;;;;;;;;;;;;:34;16775:7;16749:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;16717:8;:129::i;:::-;16864:4;16857:11;;16607:269;;;;:::o;19410:24::-;;;;;;;;;;;;;:::o;19595:112::-;9212:12;:10;:12::i;:::-;9202:22;;:6;;;;;;;;;;:22;;;9194:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19656:4:::1;19645:8;;:15;;;;;;;;;;;;;;;;;;19695:4;19671:21;::::0;:28:::1;;;;;;;;;;;;;;;;;;19595:112::o:0;15565:167::-;15643:4;15660:42;15670:12;:10;:12::i;:::-;15684:9;15695:6;15660:9;:42::i;:::-;15720:4;15713:11;;15565:167;;;;:::o;31567:171::-;9212:12;:10;:12::i;:::-;9202:22;;:6;;;;;;;;;;:22;;;9194:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31668:8:::1;31644:21;::::0;:32:::1;;;;;;;;;;;;;;;;;;31692:38;31721:8;31692:38;;;;;;;;;;;;;;;;;;;;31567:171:::0;:::o;13465:26::-;;;;;;;;;;;;;:::o;19720:79::-;9212:12;:10;:12::i;:::-;9202:22;;:6;;;;;;;;;;:22;;;9194:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19787:4:::1;19771:13;;:20;;;;;;;;;;;;;;;;;;19720:79::o:0;31323:236::-;9212:12;:10;:12::i;:::-;9202:22;;:6;;;;;;;;;;:22;;;9194:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31427:2:::1;31411:12;:18;;31403:62;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;31491:60;31535:5;31491:25;31503:12;31491:7;;:11;;:25;;;;:::i;:::-;:29;;:60;;;;:::i;:::-;31476:12;:75;;;;31323:236:::0;:::o;15740:143::-;15821:7;15848:11;:18;15860:5;15848:18;;;;;;;;;;;;;;;:27;15867:7;15848:27;;;;;;;;;;;;;;;;15841:34;;15740:143;;;;:::o;31070:110::-;9212:12;:10;:12::i;:::-;9202:22;;:6;;;;;;;;;;:22;;;9194:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31167:5:::1;31137:18;:27;31156:7;31137:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;31070:110:::0;:::o;9936:244::-;9212:12;:10;:12::i;:::-;9202:22;;:6;;;;;;;;;;:22;;;9194:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10045:1:::1;10025:22;;:8;:22;;;;10017:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10135:8;10106:38;;10127:6;::::0;::::1;;;;;;;;10106:38;;;;;;;;;;;;10164:8;10155:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;9936:244:::0;:::o;104:106::-;157:15;192:10;185:17;;104:106;:::o;19143:259::-;19253:1;19236:19;;:5;:19;;;;19228:28;;;;;;19294:1;19275:21;;:7;:21;;;;19267:30;;;;;;19340:6;19310:11;:18;19322:5;19310:18;;;;;;;;;;;;;;;:27;19329:7;19310:27;;;;;;;;;;;;;;;:36;;;;19378:7;19362:32;;19371:5;19362:32;;;19387:6;19362:32;;;;;;;;;;;;;;;;;;19143:259;;;:::o;19811:2096::-;19949:1;19933:18;;:4;:18;;;;19925:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20026:1;20012:16;;:2;:16;;;;20004:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20096:1;20087:6;:10;20079:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20161:8;;;;;;;;;;;20156:139;;20197:11;;;;;;;;;;;20189:19;;:4;:19;;;:38;;;;;20220:7;:5;:7::i;:::-;20212:15;;:4;:15;;;;20189:38;:55;;;;;20237:7;:5;:7::i;:::-;20231:13;;:2;:13;;;;20189:55;20185:103;;;13537:42;20260:16;;20185:103;20156:139;20317:4;20308:13;;:5;;;;;;;;;;;:13;;;:42;;;;;20326:18;:24;20345:4;20326:24;;;;;;;;;;;;;;;;;;;;;;;;;20325:25;20308:42;:69;;;;;20355:18;:22;20374:2;20355:22;;;;;;;;;;;;;;;;;;;;;;;;;20354:23;20308:69;:90;;;;;13537:42;20381:17;;:2;:17;;;;20308:90;20305:367;;;20423:11;;;;;;;;;;;20417:17;;:2;:17;;;;:40;;;;;20446:11;;;;;;;;;;;20438:19;;:4;:19;;;20417:40;20414:149;;;20517:28;20487:25;20505:6;20487:13;20497:2;20487:9;:13::i;:::-;:17;;:25;;;;:::i;:::-;20486:59;;20477:70;;;;;;20414:149;20595:28;20585:6;:38;;20577:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20305:367;20707:7;:5;:7::i;:::-;20699:15;;:4;:15;;;;:32;;;;;20724:7;:5;:7::i;:::-;20718:13;;:2;:13;;;;20699:32;20696:81;;;20764:12;;20754:6;:22;;20746:31;;;;;;20696:81;21078:28;21109:24;21127:4;21109:9;:24::i;:::-;21078:55;;21144:24;21195:19;;21171:20;:43;;21144:70;;21243:19;:53;;;;;21280:16;;;;;;;;;;;21279:17;21243:53;:89;;;;;21321:11;;;;;;;;;;;21313:19;;:4;:19;;;;21243:89;:127;;;;;21349:21;;;;;;;;;;21243:127;21225:249;;;21426:36;21441:20;21426:14;:36::i;:::-;21225:249;21555:12;21570:4;21555:19;;21682:18;:24;21701:4;21682:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;21710:18;:22;21729:2;21710:22;;;;;;;;;;;;;;;;;;;;;;;;;21682:50;21679:96;;;21758:5;21748:15;;21679:96;21861:38;21876:4;21881:2;21884:6;21891:7;21861:14;:38::i;:::-;19811:2096;;;;;;:::o;4923:192::-;5009:7;5042:1;5037;:6;;5045:12;5029:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5069:9;5085:1;5081;:5;5069:17;;5106:1;5099:8;;;4923:192;;;;;:::o;28962:163::-;29003:7;29024:15;29041;29060:19;:17;:19::i;:::-;29023:56;;;;29097:20;29109:7;29097;:11;;:20;;;;:::i;:::-;29090:27;;;;28962:163;:::o;6321:132::-;6379:7;6406:39;6410:1;6413;6406:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6399:46;;6321:132;;;;:::o;4020:181::-;4078:7;4098:9;4114:1;4110;:5;4098:17;;4139:1;4134;:6;;4126:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4192:1;4185:8;;;4020:181;;;;:::o;27760:419::-;27819:7;27828;27837;27846;27855;27864;27885:23;27910:12;27924:18;27946:20;27958:7;27946:11;:20::i;:::-;27884:82;;;;;;27978:15;27995:23;28020:12;28036:50;28048:7;28057:4;28063:10;28075;:8;:10::i;:::-;28036:11;:50::i;:::-;27977:109;;;;;;28105:7;28114:15;28131:4;28137:15;28154:4;28160:10;28097:74;;;;;;;;;;;;;;;;;;27760:419;;;;;;;:::o;4484:136::-;4542:7;4569:43;4573:1;4576;4569:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4562:50;;4484:136;;;;:::o;5374:471::-;5432:7;5682:1;5677;:6;5673:47;;;5707:1;5700:8;;;;5673:47;5732:9;5748:1;5744;:5;5732:17;;5777:1;5772;5768;:5;;;;;;:10;5760:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5836:1;5829:8;;;5374:471;;;;;:::o;21919:1312::-;14069:4;14050:16;;:23;;;;;;;;;;;;;;;;;;22055:20:::1;22078:27;22103:1;22078:20;:24;;:27;;;;:::i;:::-;22055:50;;22116:14;22133:27;22158:1;22133:20;:24;;:27;;;;:::i;:::-;22116:44;;22171:18;22192:27;22217:1;22192:20;:24;;:27;;;;:::i;:::-;22171:48;;22262:12;22277:19;22294:1;22277:12;:16;;:19;;;;:::i;:::-;22262:34;;22307:17;22327:22;22344:4;22327:12;:16;;:22;;;;:::i;:::-;22307:42;;22625:22;22650:21;22625:46;;22716:50;22733:32;22754:10;22733:16;22742:6;22733:4;:8;;:16;;;;:::i;:::-;:20;;:32;;;;:::i;:::-;22716:16;:50::i;:::-;22897:15;22915:41;22941:14;22915:21;:25;;:41;;;;:::i;:::-;22897:59;;22967:16;22986:14;22998:1;22986:7;:11;;:14;;;;:::i;:::-;22967:33;;23011:6;;;;;;;;;;;:15;;:25;23027:8;23011:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;23047:7;;;;;;;;;;;:16;;:26;23064:8;23047:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;23123:33;23136:9;23147:8;23123:12;:33::i;:::-;23182:41;23197:4;23203:8;23213:9;23182:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14085:1;;;;;;;;14116:5:::0;14097:16;;:24;;;;;;;;;;;;;;;;;;21919:1312;:::o;24435:834::-;24546:7;24542:40;;24568:14;:12;:14::i;:::-;24542:40;24607:11;:19;24619:6;24607:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;24631:11;:22;24643:9;24631:22;;;;;;;;;;;;;;;;;;;;;;;;;24630:23;24607:46;24603:597;;;24670:48;24692:6;24700:9;24711:6;24670:21;:48::i;:::-;24603:597;;;24741:11;:19;24753:6;24741:19;;;;;;;;;;;;;;;;;;;;;;;;;24740:20;:46;;;;;24764:11;:22;24776:9;24764:22;;;;;;;;;;;;;;;;;;;;;;;;;24740:46;24736:464;;;24803:46;24823:6;24831:9;24842:6;24803:19;:46::i;:::-;24736:464;;;24872:11;:19;24884:6;24872:19;;;;;;;;;;;;;;;;;;;;;;;;;24871:20;:47;;;;;24896:11;:22;24908:9;24896:22;;;;;;;;;;;;;;;;;;;;;;;;;24895:23;24871:47;24867:333;;;24935:44;24953:6;24961:9;24972:6;24935:17;:44::i;:::-;24867:333;;;25001:11;:19;25013:6;25001:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;25024:11;:22;25036:9;25024:22;;;;;;;;;;;;;;;;;;;;;;;;;25001:45;24997:203;;;25063:48;25085:6;25093:9;25104:6;25063:21;:48::i;:::-;24997:203;;;25144:44;25162:6;25170:9;25181:6;25144:17;:44::i;:::-;24997:203;24867:333;24736:464;24603:597;25224:7;25220:41;;25246:15;:13;:15::i;:::-;25220:41;24435:834;;;;:::o;29133:561::-;29183:7;29192;29212:15;29230:7;;29212:25;;29248:15;29266:7;;29248:25;;29295:9;29290:289;29314:9;:16;;;;29310:1;:20;29290:289;;;29380:7;29356;:21;29364:9;29374:1;29364:12;;;;;;;;;;;;;;;;;;;;;;;;;29356:21;;;;;;;;;;;;;;;;:31;:66;;;;29415:7;29391;:21;29399:9;29409:1;29399:12;;;;;;;;;;;;;;;;;;;;;;;;;29391:21;;;;;;;;;;;;;;;;:31;29356:66;29352:97;;;29432:7;;29441;;29424:25;;;;;;;;;29352:97;29474:34;29486:7;:21;29494:9;29504:1;29494:12;;;;;;;;;;;;;;;;;;;;;;;;;29486:21;;;;;;;;;;;;;;;;29474:7;:11;;:34;;;;:::i;:::-;29464:44;;29533:34;29545:7;:21;29553:9;29563:1;29553:12;;;;;;;;;;;;;;;;;;;;;;;;;29545:21;;;;;;;;;;;;;;;;29533:7;:11;;:34;;;;:::i;:::-;29523:44;;29332:3;;;;;;;29290:289;;;;29603:20;29615:7;;29603;;:11;;:20;;;;:::i;:::-;29593:7;:30;29589:61;;;29633:7;;29642;;29625:25;;;;;;;;29589:61;29669:7;29678;29661:25;;;;;;29133:561;;;:::o;6949:278::-;7035:7;7067:1;7063;:5;7070:12;7055:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7094:9;7110:1;7106;:5;;;;;;7094:17;;7218:1;7211:8;;;6949:278;;;;;:::o;28187:330::-;28247:7;28256;28265;28285:12;28300:24;28316:7;28300:15;:24::i;:::-;28285:39;;28335:18;28356:30;28378:7;28356:21;:30::i;:::-;28335:51;;28397:23;28423:33;28445:10;28423:17;28435:4;28423:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;28397:59;;28475:15;28492:4;28498:10;28467:42;;;;;;;;;28187:330;;;;;:::o;28525:429::-;28640:7;28649;28658;28678:15;28696:24;28708:11;28696:7;:11;;:24;;;;:::i;:::-;28678:42;;28731:12;28746:21;28755:11;28746:4;:8;;:21;;;;:::i;:::-;28731:36;;28778:18;28799:27;28814:11;28799:10;:14;;:27;;;;:::i;:::-;28778:48;;28837:23;28863:33;28885:10;28863:17;28875:4;28863:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;28837:59;;28915:7;28924:15;28941:4;28907:39;;;;;;;;;;28525:429;;;;;;;;:::o;23255:583::-;23381:21;23419:1;23405:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23381:40;;23450:4;23432;23437:1;23432:7;;;;;;;;;;;;;:23;;;;;;;;;;;23476:13;;;;;;;;;;;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23466:4;23471:1;23466:7;;;;;;;;;;;;;:30;;;;;;;;;;;23509:60;23526:4;23541:13;;;;;;;;;;;23557:11;23509:8;:60::i;:::-;23608:13;;;;;;;;;;;:64;;;23687:11;23713:1;23757:4;23784;23804:15;23608:222;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23255:583;;:::o;23846:508::-;23994:60;24011:4;24026:13;;;;;;;;;;;24042:11;23994:8;:60::i;:::-;24097:13;;;;;;;;;;;:29;;;24134:9;24167:4;24187:11;24213:1;24256;24299:6;;;;;;;;;;;24320:15;24097:249;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23846:508;;:::o;30413:250::-;30470:1;30459:7;;:12;:34;;;;;30492:1;30475:13;;:18;30459:34;30456:46;;;30495:7;;30456:46;30540:7;;30522:15;:25;;;;30582:13;;30558:21;:37;;;;30626:1;30616:7;:11;;;;30654:1;30638:13;:17;;;;30413:250;:::o;26381:566::-;26484:15;26501:23;26526:12;26540:23;26565:12;26579:18;26601:19;26612:7;26601:10;:19::i;:::-;26483:137;;;;;;;;;;;;26649:28;26669:7;26649;:15;26657:6;26649:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26631:7;:15;26639:6;26631:15;;;;;;;;;;;;;;;:46;;;;26706:28;26726:7;26706;:15;26714:6;26706:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26688:7;:15;26696:6;26688:15;;;;;;;;;;;;;;;:46;;;;26766:39;26789:15;26766:7;:18;26774:9;26766:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;26745:7;:18;26753:9;26745:18;;;;;;;;;;;;;;;:60;;;;26819:26;26834:10;26819:14;:26::i;:::-;26856:23;26868:4;26874;26856:11;:23::i;:::-;26912:9;26895:44;;26904:6;26895:44;;;26923:15;26895:44;;;;;;;;;;;;;;;;;;26381:566;;;;;;;;;:::o;25787:586::-;25888:15;25905:23;25930:12;25944:23;25969:12;25983:18;26005:19;26016:7;26005:10;:19::i;:::-;25887:137;;;;;;;;;;;;26053:28;26073:7;26053;:15;26061:6;26053:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26035:7;:15;26043:6;26035:15;;;;;;;;;;;;;;;:46;;;;26113:39;26136:15;26113:7;:18;26121:9;26113:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;26092:7;:18;26100:9;26092:18;;;;;;;;;;;;;;;:60;;;;26184:39;26207:15;26184:7;:18;26192:9;26184:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;26163:7;:18;26171:9;26163:18;;;;;;;;;;;;;;;:60;;;;26245:26;26260:10;26245:14;:26::i;:::-;26282:23;26294:4;26300;26282:11;:23::i;:::-;26338:9;26321:44;;26330:6;26321:44;;;26349:15;26321:44;;;;;;;;;;;;;;;;;;25787:586;;;;;;;;;:::o;25277:502::-;25376:15;25393:23;25418:12;25432:23;25457:12;25471:18;25493:19;25504:7;25493:10;:19::i;:::-;25375:137;;;;;;;;;;;;25541:28;25561:7;25541;:15;25549:6;25541:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;25523:7;:15;25531:6;25523:15;;;;;;;;;;;;;;;:46;;;;25601:39;25624:15;25601:7;:18;25609:9;25601:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;25580:7;:18;25588:9;25580:18;;;;;;;;;;;;;;;:60;;;;25651:26;25666:10;25651:14;:26::i;:::-;25688:23;25700:4;25706;25688:11;:23::i;:::-;25744:9;25727:44;;25736:6;25727:44;;;25755:15;25727:44;;;;;;;;;;;;;;;;;;25277:502;;;;;;;;;:::o;26955:642::-;27058:15;27075:23;27100:12;27114:23;27139:12;27153:18;27175:19;27186:7;27175:10;:19::i;:::-;27057:137;;;;;;;;;;;;27223:28;27243:7;27223;:15;27231:6;27223:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;27205:7;:15;27213:6;27205:15;;;;;;;;;;;;;;;:46;;;;27280:28;27300:7;27280;:15;27288:6;27280:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;27262:7;:15;27270:6;27262:15;;;;;;;;;;;;;;;:46;;;;27340:39;27363:15;27340:7;:18;27348:9;27340:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27319:7;:18;27327:9;27319:18;;;;;;;;;;;;;;;:60;;;;27411:39;27434:15;27411:7;:18;27419:9;27411:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27390:7;:18;27398:9;27390:18;;;;;;;;;;;;;;;:60;;;;27469:26;27484:10;27469:14;:26::i;:::-;27506:23;27518:4;27524;27506:11;:23::i;:::-;27562:9;27545:44;;27554:6;27545:44;;;27573:15;27545:44;;;;;;;;;;;;;;;;;;26955:642;;;;;;;;;:::o;30675:125::-;30729:15;;30719:7;:25;;;;30771:21;;30755:13;:37;;;;30675:125::o;30073:154::-;30137:7;30164:55;30203:5;30164:20;30176:7;;30164;:11;;:20;;;;:::i;:::-;:24;;:55;;;;:::i;:::-;30157:62;;30073:154;;;:::o;30235:166::-;30305:7;30332:61;30377:5;30332:26;30344:13;;30332:7;:11;;:26;;;;:::i;:::-;:30;;:61;;;;:::i;:::-;30325:68;;30235:166;;;:::o;29706:355::-;29769:19;29792:10;:8;:10::i;:::-;29769:33;;29813:18;29834:27;29849:11;29834:10;:14;;:27;;;;:::i;:::-;29813:48;;29897:38;29924:10;29897:7;:22;29913:4;29897:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;29872:7;:22;29888:4;29872:22;;;;;;;;;;;;;;;:63;;;;29949:11;:26;29969:4;29949:26;;;;;;;;;;;;;;;;;;;;;;;;;29946:107;;;30015:38;30042:10;30015:7;:22;30031:4;30015:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;29990:7;:22;30006:4;29990:22;;;;;;;;;;;;;;;:63;;;;29946:107;29706:355;;;:::o;27605:147::-;27683:17;27695:4;27683:7;;:11;;:17;;;;:::i;:::-;27673:7;:27;;;;27724:20;27739:4;27724:10;;:14;;:20;;;;:::i;:::-;27711:10;:33;;;;27605:147;;:::o

Swarm Source

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