ETH Price: $2,239.27 (-3.66%)

Token

WEN LAMBO (LAMBO)
 

Overview

Max Total Supply

100,000,000,000,000 LAMBO

Holders

64

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

The WEN LAMBO DApp, iOS & Android APP show live token info, charts & tools for every token as soon as they are added to Pancakeswap & Uniswap. The $LAMBO tokens on BSC & ETH offer utility, liquidity and network access for their multi-cross chain swap and offer premium features and tools for users

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
WENLAMBO

Compiler Version
v0.8.5+commit.a4f2e591

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-09-05
*/

/*

WenLambo Features:
    
4% ETH REWARDS
4% AUTO BUY BACK
4% AUTO LP ADDED
4% MARKETING & DEVELOPMENT
                                                                 

*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.5;

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

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


interface IERC20 {

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

}

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }


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

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

        return c;
    }

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

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

library Address {

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

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

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


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

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

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

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

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

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

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

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

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

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

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

    function getUnlockTime() public view returns (uint256) {
        return _lockTime;
    }
    
    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }
    
    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(block.timestamp > _lockTime , "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}

// pragma solidity >=0.5.0;

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}


// pragma solidity >=0.5.0;

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

// pragma solidity >=0.6.2;

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

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

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



// pragma solidity >=0.6.2;

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

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

contract WENLAMBO is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    
    address payable public marketingAddress;
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    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 = 100 * 10**12 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    string private _name = "WEN LAMBO";
    string private _symbol = "LAMBO";
    uint8 private _decimals = 9;


    uint256 public _taxFee = 0;
    uint256 private _previousTaxFee = _taxFee;
    
    uint256 public _liquidityFee = 16; //Total Liquidity Collected
    uint256 private _previousLiquidityFee = _liquidityFee;
    
    uint256 public marketingDivisor = 2;
    
    uint256 public _maxTxAmount = 500 * 10**3 * 10**6 * 10**9;
    uint256 private minimumTokensBeforeSwap = 1 * 10**6 * 10**9; 
    uint256 private buyBackUpperLimit = 1 * 10**9;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public buyBackEnabled = true;

    
    event RewardLiquidityProviders(uint256 tokenAmount);
    event BuyBackEnabledUpdated(bool enabled);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    event SwapTokensForUSDT(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor (address payable _marketingAddress) {
        _rOwned[_msgSender()] = _rTotal;
        marketingAddress = _marketingAddress;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;

        
        _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 minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return minimumTokensBeforeSwap;
    }
    
    function buyBackUpperLimitAmount() public view returns (uint256) {
        return buyBackUpperLimit;
    }
    
    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(!_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), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if(from != owner() && to != owner()) {
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
        
        if (!inSwapAndLiquify && swapAndLiquifyEnabled && to == uniswapV2Pair) {
            if (overMinimumTokenBalance) {
                contractTokenBalance = minimumTokensBeforeSwap;
                /* Add Liquidity */
                swapAndLiquify(contractTokenBalance.div(2));
                /* Marketing/Development */
                swapTokens(contractTokenBalance.div(2)); 
                   
            }
	        uint256 balance = address(this).balance;
            if (buyBackEnabled && balance > uint256(1 * 10**9)) {
                
                if (balance > buyBackUpperLimit)
                    balance = buyBackUpperLimit;
                /* BuyBack */
                buyBackTokens(balance.div(100));
            }
        }
        
        bool takeFee = true;
        
        //if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            takeFee = false;
        }
        
        _tokenTransfer(from,to,amount,takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        /* split the contract balance into halves */
        uint256 half = contractTokenBalance.div(2);
        uint256 otherHalf = contractTokenBalance.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); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        /* how much ETH did we just swap into? */
        uint256 newBalance = address(this).balance.sub(initialBalance);

        /* add liquidity to pancakeswap */
        addLiquidity(otherHalf, newBalance);
        
        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    function swapTokens(uint256 contractTokenBalance) private lockTheSwap {
       
        uint256 initialBalance = address(this).balance;
        swapTokensForEth(contractTokenBalance);
        uint256 transferredBalance = address(this).balance.sub(initialBalance);

        swapTokensForUsdt(transferredBalance/2);
        uint256 remainingBalance=transferredBalance/2;
        //Send to Marketing address
        transferToAddressETH(marketingAddress, remainingBalance.div(2));
        
    }
    

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

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

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

    function swapTokensForUsdt(uint256 ethAmount) private {
        // generate the uniswap pair path of token -> bnb
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = 0xdAC17F958D2ee523a2206206994597C13D831ec7; //USDT

        // make the swap
        uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(
            0, // accept any amount of ETH
            path,
            marketingAddress, // Send to Marketing Address
            block.timestamp
        );
        
        emit SwapTokensForUSDT(ethAmount, path);
    }
    
    function swapETHForTokens(uint256 amount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(this);

      // make the swap
        uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0, // accept any amount of Tokens
            path,
            deadAddress, // Burn address
            block.timestamp.add(300)
        );
        
        emit SwapETHForTokens(amount, path);
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
        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]) {
            _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 setTaxFeePercent(uint256 taxFee) external onlyOwner() {
        _taxFee = taxFee;
    }
    
    function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() {
        _liquidityFee = liquidityFee;
    }
    
    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount * 10**9;
    }
    
    function setMarketingDivisor(uint256 divisor) external onlyOwner() {
        marketingDivisor = divisor;
    }

    function setNumTokensSellToAddToLiquidity(uint256 _minimumTokensBeforeSwap) external onlyOwner() {
        minimumTokensBeforeSwap = _minimumTokensBeforeSwap;
    }
    
     function setBuybackUpperLimit(uint256 buyBackLimit) external onlyOwner() {
        buyBackUpperLimit = buyBackLimit * 10**9;
    }

    function setMarketingAddress(address _marketingAddress) external onlyOwner() {
        marketingAddress = payable(_marketingAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }
    
    function setBuyBackEnabled(bool _enabled) public onlyOwner {
        buyBackEnabled = _enabled;
        emit BuyBackEnabledUpdated(_enabled);
    }
    
    function disableFee() external onlyOwner {
        setSwapAndLiquifyEnabled(false);
        _taxFee = 0;
        _liquidityFee = 0;
        _maxTxAmount = 500 * 10**3 * 10**6 * 10**9;
    }
    
    function enableFee() external onlyOwner {
        setSwapAndLiquifyEnabled(true);
        _taxFee = 0;
        _liquidityFee = 16;
        _maxTxAmount = 500 * 10**3 * 10**6 * 10**9;
    }
    

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address payable","name":"_marketingAddress","type":"address"}],"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":"bool","name":"enabled","type":"bool"}],"name":"BuyBackEnabledUpdated","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":"tokenAmount","type":"uint256"}],"name":"RewardLiquidityProviders","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForUSDT","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":"_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":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackUpperLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"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":[],"name":"disableFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableFee","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":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setBuyBackEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyBackLimit","type":"uint256"}],"name":"setBuybackUpperLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMarketingDivisor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minimumTokensBeforeSwap","type":"uint256"}],"name":"setNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e06040526ddead00000000000000000000000060805269152d02c7e14af6800000600a819055620000349060001962000534565b6200004290600019620004d1565b600b556040805180820190915260098082526857454e204c414d424f60b81b60209092019182526200007791600d9162000404565b50604080518082019091526005808252644c414d424f60d81b6020909201918252620000a691600e9162000404565b50600f805460ff191660091790556000601081815560119190915560128190556013556002601455681b1ae4d6e2ef50000060155566038d7ea4c68000601655633b9aca00601755601880546201010062ffff00199091161790553480156200010e57600080fd5b5060405162003746380380620037468339810160408190526200013191620004aa565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b543360009081526004602081815260409283902093909355600380546001600160a01b0319166001600160a01b038616179055815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d93849363c45a0155938181019391829003018186803b158015620001ed57600080fd5b505afa15801562000202573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002289190620004aa565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200027157600080fd5b505afa15801562000286573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ac9190620004aa565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002f557600080fd5b505af11580156200030a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003309190620004aa565b6001600160601b0319606091821b811660c0529082901b1660a052600160076000620003646000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526007909252902080549091166001179055620003ac3390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620003f491815260200190565b60405180910390a3505062000570565b8280546200041290620004f7565b90600052602060002090601f01602090048101928262000436576000855562000481565b82601f106200045157805160ff191683800117855562000481565b8280016001018555821562000481579182015b828111156200048157825182559160200191906001019062000464565b506200048f92915062000493565b5090565b5b808211156200048f576000815560010162000494565b600060208284031215620004bd57600080fd5b8151620004ca8162000557565b9392505050565b600082821015620004f257634e487b7160e01b600052601160045260246000fd5b500390565b600181811c908216806200050c57607f821691505b602082108114156200052e57634e487b7160e01b600052602260045260246000fd5b50919050565b6000826200055257634e487b7160e01b600052601260045260246000fd5b500690565b6001600160a01b03811681146200056d57600080fd5b50565b60805160601c60a05160601c60c05160601c613150620005f6600039600081816105840152611a2a0152600081816103a2015281816121cb01528181612293015281816122cf01528181612382015281816123a9015281816124b4015281816125c6015281816126c701526127b501526000818161042301526127e001526131506000f3fe6080604052600436106102e85760003560e01c80636bc87c3a11610190578063a5ece941116100dc578063d6b513cf11610095578063ea2f0b371161006f578063ea2f0b3714610903578063ec28438a14610923578063f0f165af14610943578063f2fde38b1461096357600080fd5b8063d6b513cf14610887578063dd4670641461089d578063dd62ed3e146108bd57600080fd5b8063a5ece941146107dd578063a69df4b5146107fd578063a9059cbb14610812578063b0cb81f114610832578063bdc653ef14610852578063c49b9a801461086757600080fd5b806388f8202011610149578063906e9dd011610123578063906e9dd01461077357806395d89b4114610793578063a073d37f146107a8578063a457c2d7146107bd57600080fd5b806388f82020146106fc5780638da5cb5b146107355780638ee88c531461075357600080fd5b80636bc87c3a1461066657806370a082311461067c578063715018a61461069c5780637d1db4a5146106b157806382d2a4bb146106c757806386d55557146106e757600080fd5b80633685d4191161024f57806349bd5a5e116102085780635342acb4116101e25780635342acb4146105e5578063557ed1ba1461061e578063602bc62b146106315780636053a0e31461064657600080fd5b806349bd5a5e146105725780634a74bb02146105a657806352390c02146105c557600080fd5b80633685d419146104bc57806339509351146104dc5780633b124fe7146104fc5780633bd5d17314610512578063437823ec146105325780634549b0391461055257600080fd5b806323b872dd116102a157806323b872dd146103f157806327c8f8351461041157806329370cc6146104455780632d8381191461046557806330d2091d14610485578063313ce5671461049a57600080fd5b8063061c82d0146102f457806306fdde0314610316578063095ea7b31461034157806313114a9d146103715780631694505e1461039057806318160ddd146103dc57600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061031461030f366004612dba565b610983565b005b34801561032257600080fd5b5061032b6109bb565b6040516103389190612ea6565b60405180910390f35b34801561034d57600080fd5b5061036161035c366004612d73565b610a4d565b6040519015158152602001610338565b34801561037d57600080fd5b50600c545b604051908152602001610338565b34801561039c57600080fd5b506103c47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610338565b3480156103e857600080fd5b50600a54610382565b3480156103fd57600080fd5b5061036161040c366004612d32565b610a64565b34801561041d57600080fd5b506103c47f000000000000000000000000000000000000000000000000000000000000000081565b34801561045157600080fd5b50610314610460366004612d9f565b610acd565b34801561047157600080fd5b50610382610480366004612dba565b610b4d565b34801561049157600080fd5b50610314610bd1565b3480156104a657600080fd5b50600f5460405160ff9091168152602001610338565b3480156104c857600080fd5b506103146104d7366004612cbf565b610c1e565b3480156104e857600080fd5b506103616104f7366004612d73565b610dd5565b34801561050857600080fd5b5061038260105481565b34801561051e57600080fd5b5061031461052d366004612dba565b610e0b565b34801561053e57600080fd5b5061031461054d366004612cbf565b610ef5565b34801561055e57600080fd5b5061038261056d366004612dd3565b610f43565b34801561057e57600080fd5b506103c47f000000000000000000000000000000000000000000000000000000000000000081565b3480156105b257600080fd5b5060185461036190610100900460ff1681565b3480156105d157600080fd5b506103146105e0366004612cbf565b610fd0565b3480156105f157600080fd5b50610361610600366004612cbf565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561062a57600080fd5b5042610382565b34801561063d57600080fd5b50600254610382565b34801561065257600080fd5b506018546103619062010000900460ff1681565b34801561067257600080fd5b5061038260125481565b34801561068857600080fd5b50610382610697366004612cbf565b611123565b3480156106a857600080fd5b50610314611182565b3480156106bd57600080fd5b5061038260155481565b3480156106d357600080fd5b506103146106e2366004612dba565b6111e4565b3480156106f357600080fd5b50610314611222565b34801561070857600080fd5b50610361610717366004612cbf565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561074157600080fd5b506000546001600160a01b03166103c4565b34801561075f57600080fd5b5061031461076e366004612dba565b61126f565b34801561077f57600080fd5b5061031461078e366004612cbf565b61129e565b34801561079f57600080fd5b5061032b6112ea565b3480156107b457600080fd5b50601654610382565b3480156107c957600080fd5b506103616107d8366004612d73565b6112f9565b3480156107e957600080fd5b506003546103c4906001600160a01b031681565b34801561080957600080fd5b50610314611348565b34801561081e57600080fd5b5061036161082d366004612d73565b61144e565b34801561083e57600080fd5b5061031461084d366004612dba565b61145b565b34801561085e57600080fd5b50601754610382565b34801561087357600080fd5b50610314610882366004612d9f565b61148a565b34801561089357600080fd5b5061038260145481565b3480156108a957600080fd5b506103146108b8366004612dba565b6114fd565b3480156108c957600080fd5b506103826108d8366004612cf9565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561090f57600080fd5b5061031461091e366004612cbf565b611582565b34801561092f57600080fd5b5061031461093e366004612dba565b6115cd565b34801561094f57600080fd5b5061031461095e366004612dba565b61160b565b34801561096f57600080fd5b5061031461097e366004612cbf565b61163a565b6000546001600160a01b031633146109b65760405162461bcd60e51b81526004016109ad90612efb565b60405180910390fd5b601055565b6060600d80546109ca90612ffd565b80601f01602080910402602001604051908101604052809291908181526020018280546109f690612ffd565b8015610a435780601f10610a1857610100808354040283529160200191610a43565b820191906000526020600020905b815481529060010190602001808311610a2657829003601f168201915b5050505050905090565b6000610a5a338484611712565b5060015b92915050565b6000610a71848484611836565b610ac38433610abe856040518060600160405280602881526020016130ae602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190611b39565b611712565b5060019392505050565b6000546001600160a01b03163314610af75760405162461bcd60e51b81526004016109ad90612efb565b60188054821515620100000262ff0000199091161790556040517f3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c090610b4290831515815260200190565b60405180910390a150565b6000600b54821115610bb45760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016109ad565b6000610bbe611b73565b9050610bca8382611b96565b9392505050565b6000546001600160a01b03163314610bfb5760405162461bcd60e51b81526004016109ad90612efb565b610c05600161148a565b60006010908155601255681b1ae4d6e2ef500000601555565b6000546001600160a01b03163314610c485760405162461bcd60e51b81526004016109ad90612efb565b6001600160a01b03811660009081526008602052604090205460ff16610cb05760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109ad565b60005b600954811015610dd157816001600160a01b031660098281548110610cda57610cda61307f565b6000918252602090912001546001600160a01b03161415610dbf5760098054610d0590600190612fe6565b81548110610d1557610d1561307f565b600091825260209091200154600980546001600160a01b039092169183908110610d4157610d4161307f565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600890925220805460ff191690556009805480610d9957610d99613069565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610dc981613038565b915050610cb3565b5050565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610a5a918590610abe9086611bd8565b3360008181526008602052604090205460ff1615610e805760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016109ad565b6000610e8b83611c37565b505050506001600160a01b038416600090815260046020526040902054919250610eb791905082611c86565b6001600160a01b038316600090815260046020526040902055600b54610edd9082611c86565b600b55600c54610eed9084611bd8565b600c55505050565b6000546001600160a01b03163314610f1f5760405162461bcd60e51b81526004016109ad90612efb565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000600a54831115610f975760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016109ad565b81610fb6576000610fa784611c37565b50939550610a5e945050505050565b6000610fc184611c37565b50929550610a5e945050505050565b6000546001600160a01b03163314610ffa5760405162461bcd60e51b81526004016109ad90612efb565b6001600160a01b03811660009081526008602052604090205460ff16156110635760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109ad565b6001600160a01b038116600090815260046020526040902054156110bd576001600160a01b0381166000908152600460205260409020546110a390610b4d565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600860205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6001600160a01b03811660009081526008602052604081205460ff161561116057506001600160a01b031660009081526005602052604090205490565b6001600160a01b038216600090815260046020526040902054610a5e90610b4d565b6000546001600160a01b031633146111ac5760405162461bcd60e51b81526004016109ad90612efb565b600080546040516001600160a01b03909116906000805160206130d6833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461120e5760405162461bcd60e51b81526004016109ad90612efb565b61121c81633b9aca00612fc7565b60175550565b6000546001600160a01b0316331461124c5760405162461bcd60e51b81526004016109ad90612efb565b611256600061148a565b60006010819055601255681b1ae4d6e2ef500000601555565b6000546001600160a01b031633146112995760405162461bcd60e51b81526004016109ad90612efb565b601255565b6000546001600160a01b031633146112c85760405162461bcd60e51b81526004016109ad90612efb565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6060600e80546109ca90612ffd565b6000610a5a3384610abe856040518060600160405280602581526020016130f6602591393360009081526006602090815260408083206001600160a01b038d1684529091529020549190611b39565b6001546001600160a01b031633146113ae5760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b60648201526084016109ad565b60025442116113ff5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c203720646179730060448201526064016109ad565b600154600080546040516001600160a01b0393841693909116916000805160206130d683398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610a5a338484611836565b6000546001600160a01b031633146114855760405162461bcd60e51b81526004016109ad90612efb565b601455565b6000546001600160a01b031633146114b45760405162461bcd60e51b81526004016109ad90612efb565b601880548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610b4290831515815260200190565b6000546001600160a01b031633146115275760405162461bcd60e51b81526004016109ad90612efb565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556115568142612f8d565b600255600080546040516001600160a01b03909116906000805160206130d6833981519152908390a350565b6000546001600160a01b031633146115ac5760405162461bcd60e51b81526004016109ad90612efb565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b031633146115f75760405162461bcd60e51b81526004016109ad90612efb565b61160581633b9aca00612fc7565b60155550565b6000546001600160a01b031633146116355760405162461bcd60e51b81526004016109ad90612efb565b601655565b6000546001600160a01b031633146116645760405162461bcd60e51b81526004016109ad90612efb565b6001600160a01b0381166116c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109ad565b600080546040516001600160a01b03808516939216916000805160206130d683398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166117745760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109ad565b6001600160a01b0382166117d55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109ad565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661189a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109ad565b6001600160a01b0382166118fc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109ad565b6000811161195e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109ad565b6000546001600160a01b0384811691161480159061198a57506000546001600160a01b03838116911614155b156119f2576015548111156119f25760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016109ad565b60006119fd30611123565b6016546018549192508210159060ff16158015611a215750601854610100900460ff165b8015611a5e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316145b15611ada578015611a94576016549150611a81611a7c836002611b96565b611cc8565b611a94611a8f836002611b96565b611d66565b601854479062010000900460ff168015611ab15750633b9aca0081115b15611ad857601754811115611ac557506017545b611ad8611ad3826064611b96565b611dde565b505b6001600160a01b03851660009081526007602052604090205460019060ff1680611b1c57506001600160a01b03851660009081526007602052604090205460ff165b15611b25575060005b611b3186868684611e07565b505050505050565b60008184841115611b5d5760405162461bcd60e51b81526004016109ad9190612ea6565b506000611b6a8486612fe6565b95945050505050565b6000806000611b80611f32565b9092509050611b8f8282611b96565b9250505090565b6000610bca83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120b4565b600080611be58385612f8d565b905083811015610bca5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109ad565b6000806000806000806000806000611c4e8a6120e2565b9250925092506000806000611c6c8d8686611c67611b73565b612124565b919f909e50909c50959a5093985091965092945050505050565b6000610bca83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b39565b6018805460ff191660011790556000611ce2826002611b96565b90506000611cf08383611c86565b905047611cfc83612174565b6000611d084783611c86565b9050611d14838261237c565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150506018805460ff19169055505050565b6018805460ff1916600117905547611d7d82612174565b6000611d894783611c86565b9050611d9e611d99600283612fa5565b612491565b6000611dab600283612fa5565b600354909150611dce906001600160a01b0316611dc9836002611b96565b612669565b50506018805460ff191690555050565b6018805460ff191660011790558015611dfa57611dfa816126a4565b506018805460ff19169055565b80611e1457611e1461288d565b6001600160a01b03841660009081526008602052604090205460ff168015611e5557506001600160a01b03831660009081526008602052604090205460ff16155b15611e6a57611e658484846128bb565b611f16565b6001600160a01b03841660009081526008602052604090205460ff16158015611eab57506001600160a01b03831660009081526008602052604090205460ff165b15611ebb57611e658484846129e1565b6001600160a01b03841660009081526008602052604090205460ff168015611efb57506001600160a01b03831660009081526008602052604090205460ff165b15611f0b57611e65848484612a8a565b611f16848484612afd565b80611f2c57611f2c601154601055601354601255565b50505050565b600b54600a546000918291825b60095481101561208457826004600060098481548110611f6157611f6161307f565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611fcc5750816005600060098481548110611fa557611fa561307f565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611fe257600b54600a54945094505050509091565b6120286004600060098481548110611ffc57611ffc61307f565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611c86565b925061207060056000600984815481106120445761204461307f565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611c86565b91508061207c81613038565b915050611f3f565b50600a54600b5461209491611b96565b8210156120ab57600b54600a549350935050509091565b90939092509050565b600081836120d55760405162461bcd60e51b81526004016109ad9190612ea6565b506000611b6a8486612fa5565b6000806000806120f185612b41565b905060006120fe86612b63565b90506000612116826121108986611c86565b90611c86565b979296509094509092505050565b60008080806121338886612b7f565b905060006121418887612b7f565b9050600061214f8888612b7f565b90506000612161826121108686611c86565b939b939a50919850919650505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106121a9576121a961307f565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561222257600080fd5b505afa158015612236573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225a9190612cdc565b8160018151811061226d5761226d61307f565b60200260200101906001600160a01b031690816001600160a01b0316815250506122b8307f000000000000000000000000000000000000000000000000000000000000000084611712565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061230d908590600090869030904290600401612f51565b600060405180830381600087803b15801561232757600080fd5b505af115801561233b573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612370929190612f30565b60405180910390a15050565b6123a7307f000000000000000000000000000000000000000000000000000000000000000084611712565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7198230856000806123ee6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561245157600080fd5b505af1158015612465573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061248a9190612dff565b5050505050565b6040805160028082526060820183526000926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561250b57600080fd5b505afa15801561251f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125439190612cdc565b816000815181106125565761255661307f565b60200260200101906001600160a01b031690816001600160a01b03168152505073dac17f958d2ee523a2206206994597c13d831ec78160018151811061259e5761259e61307f565b6001600160a01b03928316602091820292909201015260035460405163b6f9de9560e01b81527f000000000000000000000000000000000000000000000000000000000000000083169263b6f9de959286926126069260009288929116904290600401612e71565b6000604051808303818588803b15801561261f57600080fd5b505af1158015612633573d6000803e3d6000fd5b50505050507fdfc81a52e023cf602de872a8199ce86256597dfd5b451f454c364532f6d9f8838282604051612370929190612f30565b6040516001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561269f573d6000803e3d6000fd5b505050565b6040805160028082526060820183526000926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561271e57600080fd5b505afa158015612732573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127569190612cdc565b816000815181106127695761276961307f565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061279d5761279d61307f565b6001600160a01b0392831660209182029290920101527f00000000000000000000000000000000000000000000000000000000000000001663b6f9de95836000847f000000000000000000000000000000000000000000000000000000000000000061280b4261012c611bd8565b6040518663ffffffff1660e01b815260040161282a9493929190612e71565b6000604051808303818588803b15801561284357600080fd5b505af1158015612857573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a96248282604051612370929190612f30565b60105415801561289d5750601254155b156128a457565b601080546011556012805460135560009182905555565b6000806000806000806128cd87611c37565b6001600160a01b038f16600090815260056020526040902054959b509399509197509550935091506128ff9088611c86565b6001600160a01b038a1660009081526005602090815260408083209390935560049052205461292e9087611c86565b6001600160a01b03808b1660009081526004602052604080822093909355908a168152205461295d9086611bd8565b6001600160a01b03891660009081526004602052604090205561297f81612bfe565b6129898483612c86565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516129ce91815260200190565b60405180910390a3505050505050505050565b6000806000806000806129f387611c37565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612a259087611c86565b6001600160a01b03808b16600090815260046020908152604080832094909455918b16815260059091522054612a5b9084611bd8565b6001600160a01b03891660009081526005602090815260408083209390935560049052205461295d9086611bd8565b600080600080600080612a9c87611c37565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150612ace9088611c86565b6001600160a01b038a16600090815260056020908152604080832093909355600490522054612a259087611c86565b600080600080600080612b0f87611c37565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061292e9087611c86565b6000610a5e6064612b5d60105485612b7f90919063ffffffff16565b90611b96565b6000610a5e6064612b5d60125485612b7f90919063ffffffff16565b600082612b8e57506000610a5e565b6000612b9a8385612fc7565b905082612ba78583612fa5565b14610bca5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109ad565b6000612c08611b73565b90506000612c168383612b7f565b30600090815260046020526040902054909150612c339082611bd8565b3060009081526004602090815260408083209390935560089052205460ff161561269f5730600090815260056020526040902054612c719084611bd8565b30600090815260056020526040902055505050565b600b54612c939083611c86565b600b55600c54612ca39082611bd8565b600c555050565b80358015158114612cba57600080fd5b919050565b600060208284031215612cd157600080fd5b8135610bca81613095565b600060208284031215612cee57600080fd5b8151610bca81613095565b60008060408385031215612d0c57600080fd5b8235612d1781613095565b91506020830135612d2781613095565b809150509250929050565b600080600060608486031215612d4757600080fd5b8335612d5281613095565b92506020840135612d6281613095565b929592945050506040919091013590565b60008060408385031215612d8657600080fd5b8235612d9181613095565b946020939093013593505050565b600060208284031215612db157600080fd5b610bca82612caa565b600060208284031215612dcc57600080fd5b5035919050565b60008060408385031215612de657600080fd5b82359150612df660208401612caa565b90509250929050565b600080600060608486031215612e1457600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015612e665781516001600160a01b031687529582019590820190600101612e41565b509495945050505050565b848152608060208201526000612e8a6080830186612e2d565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b81811015612ed357858101830151858201604001528201612eb7565b81811115612ee5576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000612f496040830184612e2d565b949350505050565b85815284602082015260a060408201526000612f7060a0830186612e2d565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612fa057612fa0613053565b500190565b600082612fc257634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612fe157612fe1613053565b500290565b600082821015612ff857612ff8613053565b500390565b600181811c9082168061301157607f821691505b6020821081141561303257634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561304c5761304c613053565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146130aa57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206d8dd00329d000612e61d0420b497225fb5ffb2760b4c3667624b95d2bad1f4764736f6c6343000805003300000000000000000000000050a6db845f4656ce72c700a7e5f9028d0765ae29

Deployed Bytecode

0x6080604052600436106102e85760003560e01c80636bc87c3a11610190578063a5ece941116100dc578063d6b513cf11610095578063ea2f0b371161006f578063ea2f0b3714610903578063ec28438a14610923578063f0f165af14610943578063f2fde38b1461096357600080fd5b8063d6b513cf14610887578063dd4670641461089d578063dd62ed3e146108bd57600080fd5b8063a5ece941146107dd578063a69df4b5146107fd578063a9059cbb14610812578063b0cb81f114610832578063bdc653ef14610852578063c49b9a801461086757600080fd5b806388f8202011610149578063906e9dd011610123578063906e9dd01461077357806395d89b4114610793578063a073d37f146107a8578063a457c2d7146107bd57600080fd5b806388f82020146106fc5780638da5cb5b146107355780638ee88c531461075357600080fd5b80636bc87c3a1461066657806370a082311461067c578063715018a61461069c5780637d1db4a5146106b157806382d2a4bb146106c757806386d55557146106e757600080fd5b80633685d4191161024f57806349bd5a5e116102085780635342acb4116101e25780635342acb4146105e5578063557ed1ba1461061e578063602bc62b146106315780636053a0e31461064657600080fd5b806349bd5a5e146105725780634a74bb02146105a657806352390c02146105c557600080fd5b80633685d419146104bc57806339509351146104dc5780633b124fe7146104fc5780633bd5d17314610512578063437823ec146105325780634549b0391461055257600080fd5b806323b872dd116102a157806323b872dd146103f157806327c8f8351461041157806329370cc6146104455780632d8381191461046557806330d2091d14610485578063313ce5671461049a57600080fd5b8063061c82d0146102f457806306fdde0314610316578063095ea7b31461034157806313114a9d146103715780631694505e1461039057806318160ddd146103dc57600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061031461030f366004612dba565b610983565b005b34801561032257600080fd5b5061032b6109bb565b6040516103389190612ea6565b60405180910390f35b34801561034d57600080fd5b5061036161035c366004612d73565b610a4d565b6040519015158152602001610338565b34801561037d57600080fd5b50600c545b604051908152602001610338565b34801561039c57600080fd5b506103c47f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610338565b3480156103e857600080fd5b50600a54610382565b3480156103fd57600080fd5b5061036161040c366004612d32565b610a64565b34801561041d57600080fd5b506103c47f000000000000000000000000000000000000000000000000000000000000dead81565b34801561045157600080fd5b50610314610460366004612d9f565b610acd565b34801561047157600080fd5b50610382610480366004612dba565b610b4d565b34801561049157600080fd5b50610314610bd1565b3480156104a657600080fd5b50600f5460405160ff9091168152602001610338565b3480156104c857600080fd5b506103146104d7366004612cbf565b610c1e565b3480156104e857600080fd5b506103616104f7366004612d73565b610dd5565b34801561050857600080fd5b5061038260105481565b34801561051e57600080fd5b5061031461052d366004612dba565b610e0b565b34801561053e57600080fd5b5061031461054d366004612cbf565b610ef5565b34801561055e57600080fd5b5061038261056d366004612dd3565b610f43565b34801561057e57600080fd5b506103c47f0000000000000000000000006c9fe4ffe8577ba4478ec0e0be34d06dcc58190c81565b3480156105b257600080fd5b5060185461036190610100900460ff1681565b3480156105d157600080fd5b506103146105e0366004612cbf565b610fd0565b3480156105f157600080fd5b50610361610600366004612cbf565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561062a57600080fd5b5042610382565b34801561063d57600080fd5b50600254610382565b34801561065257600080fd5b506018546103619062010000900460ff1681565b34801561067257600080fd5b5061038260125481565b34801561068857600080fd5b50610382610697366004612cbf565b611123565b3480156106a857600080fd5b50610314611182565b3480156106bd57600080fd5b5061038260155481565b3480156106d357600080fd5b506103146106e2366004612dba565b6111e4565b3480156106f357600080fd5b50610314611222565b34801561070857600080fd5b50610361610717366004612cbf565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561074157600080fd5b506000546001600160a01b03166103c4565b34801561075f57600080fd5b5061031461076e366004612dba565b61126f565b34801561077f57600080fd5b5061031461078e366004612cbf565b61129e565b34801561079f57600080fd5b5061032b6112ea565b3480156107b457600080fd5b50601654610382565b3480156107c957600080fd5b506103616107d8366004612d73565b6112f9565b3480156107e957600080fd5b506003546103c4906001600160a01b031681565b34801561080957600080fd5b50610314611348565b34801561081e57600080fd5b5061036161082d366004612d73565b61144e565b34801561083e57600080fd5b5061031461084d366004612dba565b61145b565b34801561085e57600080fd5b50601754610382565b34801561087357600080fd5b50610314610882366004612d9f565b61148a565b34801561089357600080fd5b5061038260145481565b3480156108a957600080fd5b506103146108b8366004612dba565b6114fd565b3480156108c957600080fd5b506103826108d8366004612cf9565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561090f57600080fd5b5061031461091e366004612cbf565b611582565b34801561092f57600080fd5b5061031461093e366004612dba565b6115cd565b34801561094f57600080fd5b5061031461095e366004612dba565b61160b565b34801561096f57600080fd5b5061031461097e366004612cbf565b61163a565b6000546001600160a01b031633146109b65760405162461bcd60e51b81526004016109ad90612efb565b60405180910390fd5b601055565b6060600d80546109ca90612ffd565b80601f01602080910402602001604051908101604052809291908181526020018280546109f690612ffd565b8015610a435780601f10610a1857610100808354040283529160200191610a43565b820191906000526020600020905b815481529060010190602001808311610a2657829003601f168201915b5050505050905090565b6000610a5a338484611712565b5060015b92915050565b6000610a71848484611836565b610ac38433610abe856040518060600160405280602881526020016130ae602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190611b39565b611712565b5060019392505050565b6000546001600160a01b03163314610af75760405162461bcd60e51b81526004016109ad90612efb565b60188054821515620100000262ff0000199091161790556040517f3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c090610b4290831515815260200190565b60405180910390a150565b6000600b54821115610bb45760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016109ad565b6000610bbe611b73565b9050610bca8382611b96565b9392505050565b6000546001600160a01b03163314610bfb5760405162461bcd60e51b81526004016109ad90612efb565b610c05600161148a565b60006010908155601255681b1ae4d6e2ef500000601555565b6000546001600160a01b03163314610c485760405162461bcd60e51b81526004016109ad90612efb565b6001600160a01b03811660009081526008602052604090205460ff16610cb05760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109ad565b60005b600954811015610dd157816001600160a01b031660098281548110610cda57610cda61307f565b6000918252602090912001546001600160a01b03161415610dbf5760098054610d0590600190612fe6565b81548110610d1557610d1561307f565b600091825260209091200154600980546001600160a01b039092169183908110610d4157610d4161307f565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600890925220805460ff191690556009805480610d9957610d99613069565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610dc981613038565b915050610cb3565b5050565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610a5a918590610abe9086611bd8565b3360008181526008602052604090205460ff1615610e805760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016109ad565b6000610e8b83611c37565b505050506001600160a01b038416600090815260046020526040902054919250610eb791905082611c86565b6001600160a01b038316600090815260046020526040902055600b54610edd9082611c86565b600b55600c54610eed9084611bd8565b600c55505050565b6000546001600160a01b03163314610f1f5760405162461bcd60e51b81526004016109ad90612efb565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000600a54831115610f975760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016109ad565b81610fb6576000610fa784611c37565b50939550610a5e945050505050565b6000610fc184611c37565b50929550610a5e945050505050565b6000546001600160a01b03163314610ffa5760405162461bcd60e51b81526004016109ad90612efb565b6001600160a01b03811660009081526008602052604090205460ff16156110635760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109ad565b6001600160a01b038116600090815260046020526040902054156110bd576001600160a01b0381166000908152600460205260409020546110a390610b4d565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600860205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6001600160a01b03811660009081526008602052604081205460ff161561116057506001600160a01b031660009081526005602052604090205490565b6001600160a01b038216600090815260046020526040902054610a5e90610b4d565b6000546001600160a01b031633146111ac5760405162461bcd60e51b81526004016109ad90612efb565b600080546040516001600160a01b03909116906000805160206130d6833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461120e5760405162461bcd60e51b81526004016109ad90612efb565b61121c81633b9aca00612fc7565b60175550565b6000546001600160a01b0316331461124c5760405162461bcd60e51b81526004016109ad90612efb565b611256600061148a565b60006010819055601255681b1ae4d6e2ef500000601555565b6000546001600160a01b031633146112995760405162461bcd60e51b81526004016109ad90612efb565b601255565b6000546001600160a01b031633146112c85760405162461bcd60e51b81526004016109ad90612efb565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6060600e80546109ca90612ffd565b6000610a5a3384610abe856040518060600160405280602581526020016130f6602591393360009081526006602090815260408083206001600160a01b038d1684529091529020549190611b39565b6001546001600160a01b031633146113ae5760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b60648201526084016109ad565b60025442116113ff5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c203720646179730060448201526064016109ad565b600154600080546040516001600160a01b0393841693909116916000805160206130d683398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610a5a338484611836565b6000546001600160a01b031633146114855760405162461bcd60e51b81526004016109ad90612efb565b601455565b6000546001600160a01b031633146114b45760405162461bcd60e51b81526004016109ad90612efb565b601880548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610b4290831515815260200190565b6000546001600160a01b031633146115275760405162461bcd60e51b81526004016109ad90612efb565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556115568142612f8d565b600255600080546040516001600160a01b03909116906000805160206130d6833981519152908390a350565b6000546001600160a01b031633146115ac5760405162461bcd60e51b81526004016109ad90612efb565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b031633146115f75760405162461bcd60e51b81526004016109ad90612efb565b61160581633b9aca00612fc7565b60155550565b6000546001600160a01b031633146116355760405162461bcd60e51b81526004016109ad90612efb565b601655565b6000546001600160a01b031633146116645760405162461bcd60e51b81526004016109ad90612efb565b6001600160a01b0381166116c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109ad565b600080546040516001600160a01b03808516939216916000805160206130d683398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166117745760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109ad565b6001600160a01b0382166117d55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109ad565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661189a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109ad565b6001600160a01b0382166118fc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109ad565b6000811161195e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109ad565b6000546001600160a01b0384811691161480159061198a57506000546001600160a01b03838116911614155b156119f2576015548111156119f25760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016109ad565b60006119fd30611123565b6016546018549192508210159060ff16158015611a215750601854610100900460ff165b8015611a5e57507f0000000000000000000000006c9fe4ffe8577ba4478ec0e0be34d06dcc58190c6001600160a01b0316846001600160a01b0316145b15611ada578015611a94576016549150611a81611a7c836002611b96565b611cc8565b611a94611a8f836002611b96565b611d66565b601854479062010000900460ff168015611ab15750633b9aca0081115b15611ad857601754811115611ac557506017545b611ad8611ad3826064611b96565b611dde565b505b6001600160a01b03851660009081526007602052604090205460019060ff1680611b1c57506001600160a01b03851660009081526007602052604090205460ff165b15611b25575060005b611b3186868684611e07565b505050505050565b60008184841115611b5d5760405162461bcd60e51b81526004016109ad9190612ea6565b506000611b6a8486612fe6565b95945050505050565b6000806000611b80611f32565b9092509050611b8f8282611b96565b9250505090565b6000610bca83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120b4565b600080611be58385612f8d565b905083811015610bca5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109ad565b6000806000806000806000806000611c4e8a6120e2565b9250925092506000806000611c6c8d8686611c67611b73565b612124565b919f909e50909c50959a5093985091965092945050505050565b6000610bca83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b39565b6018805460ff191660011790556000611ce2826002611b96565b90506000611cf08383611c86565b905047611cfc83612174565b6000611d084783611c86565b9050611d14838261237c565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150506018805460ff19169055505050565b6018805460ff1916600117905547611d7d82612174565b6000611d894783611c86565b9050611d9e611d99600283612fa5565b612491565b6000611dab600283612fa5565b600354909150611dce906001600160a01b0316611dc9836002611b96565b612669565b50506018805460ff191690555050565b6018805460ff191660011790558015611dfa57611dfa816126a4565b506018805460ff19169055565b80611e1457611e1461288d565b6001600160a01b03841660009081526008602052604090205460ff168015611e5557506001600160a01b03831660009081526008602052604090205460ff16155b15611e6a57611e658484846128bb565b611f16565b6001600160a01b03841660009081526008602052604090205460ff16158015611eab57506001600160a01b03831660009081526008602052604090205460ff165b15611ebb57611e658484846129e1565b6001600160a01b03841660009081526008602052604090205460ff168015611efb57506001600160a01b03831660009081526008602052604090205460ff165b15611f0b57611e65848484612a8a565b611f16848484612afd565b80611f2c57611f2c601154601055601354601255565b50505050565b600b54600a546000918291825b60095481101561208457826004600060098481548110611f6157611f6161307f565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611fcc5750816005600060098481548110611fa557611fa561307f565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611fe257600b54600a54945094505050509091565b6120286004600060098481548110611ffc57611ffc61307f565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611c86565b925061207060056000600984815481106120445761204461307f565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611c86565b91508061207c81613038565b915050611f3f565b50600a54600b5461209491611b96565b8210156120ab57600b54600a549350935050509091565b90939092509050565b600081836120d55760405162461bcd60e51b81526004016109ad9190612ea6565b506000611b6a8486612fa5565b6000806000806120f185612b41565b905060006120fe86612b63565b90506000612116826121108986611c86565b90611c86565b979296509094509092505050565b60008080806121338886612b7f565b905060006121418887612b7f565b9050600061214f8888612b7f565b90506000612161826121108686611c86565b939b939a50919850919650505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106121a9576121a961307f565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561222257600080fd5b505afa158015612236573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225a9190612cdc565b8160018151811061226d5761226d61307f565b60200260200101906001600160a01b031690816001600160a01b0316815250506122b8307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611712565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac9479061230d908590600090869030904290600401612f51565b600060405180830381600087803b15801561232757600080fd5b505af115801561233b573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612370929190612f30565b60405180910390a15050565b6123a7307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611712565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7198230856000806123ee6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561245157600080fd5b505af1158015612465573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061248a9190612dff565b5050505050565b6040805160028082526060820183526000926020830190803683370190505090507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561250b57600080fd5b505afa15801561251f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125439190612cdc565b816000815181106125565761255661307f565b60200260200101906001600160a01b031690816001600160a01b03168152505073dac17f958d2ee523a2206206994597c13d831ec78160018151811061259e5761259e61307f565b6001600160a01b03928316602091820292909201015260035460405163b6f9de9560e01b81527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d83169263b6f9de959286926126069260009288929116904290600401612e71565b6000604051808303818588803b15801561261f57600080fd5b505af1158015612633573d6000803e3d6000fd5b50505050507fdfc81a52e023cf602de872a8199ce86256597dfd5b451f454c364532f6d9f8838282604051612370929190612f30565b6040516001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561269f573d6000803e3d6000fd5b505050565b6040805160028082526060820183526000926020830190803683370190505090507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561271e57600080fd5b505afa158015612732573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127569190612cdc565b816000815181106127695761276961307f565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061279d5761279d61307f565b6001600160a01b0392831660209182029290920101527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d1663b6f9de95836000847f000000000000000000000000000000000000000000000000000000000000dead61280b4261012c611bd8565b6040518663ffffffff1660e01b815260040161282a9493929190612e71565b6000604051808303818588803b15801561284357600080fd5b505af1158015612857573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a96248282604051612370929190612f30565b60105415801561289d5750601254155b156128a457565b601080546011556012805460135560009182905555565b6000806000806000806128cd87611c37565b6001600160a01b038f16600090815260056020526040902054959b509399509197509550935091506128ff9088611c86565b6001600160a01b038a1660009081526005602090815260408083209390935560049052205461292e9087611c86565b6001600160a01b03808b1660009081526004602052604080822093909355908a168152205461295d9086611bd8565b6001600160a01b03891660009081526004602052604090205561297f81612bfe565b6129898483612c86565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516129ce91815260200190565b60405180910390a3505050505050505050565b6000806000806000806129f387611c37565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612a259087611c86565b6001600160a01b03808b16600090815260046020908152604080832094909455918b16815260059091522054612a5b9084611bd8565b6001600160a01b03891660009081526005602090815260408083209390935560049052205461295d9086611bd8565b600080600080600080612a9c87611c37565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150612ace9088611c86565b6001600160a01b038a16600090815260056020908152604080832093909355600490522054612a259087611c86565b600080600080600080612b0f87611c37565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061292e9087611c86565b6000610a5e6064612b5d60105485612b7f90919063ffffffff16565b90611b96565b6000610a5e6064612b5d60125485612b7f90919063ffffffff16565b600082612b8e57506000610a5e565b6000612b9a8385612fc7565b905082612ba78583612fa5565b14610bca5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109ad565b6000612c08611b73565b90506000612c168383612b7f565b30600090815260046020526040902054909150612c339082611bd8565b3060009081526004602090815260408083209390935560089052205460ff161561269f5730600090815260056020526040902054612c719084611bd8565b30600090815260056020526040902055505050565b600b54612c939083611c86565b600b55600c54612ca39082611bd8565b600c555050565b80358015158114612cba57600080fd5b919050565b600060208284031215612cd157600080fd5b8135610bca81613095565b600060208284031215612cee57600080fd5b8151610bca81613095565b60008060408385031215612d0c57600080fd5b8235612d1781613095565b91506020830135612d2781613095565b809150509250929050565b600080600060608486031215612d4757600080fd5b8335612d5281613095565b92506020840135612d6281613095565b929592945050506040919091013590565b60008060408385031215612d8657600080fd5b8235612d9181613095565b946020939093013593505050565b600060208284031215612db157600080fd5b610bca82612caa565b600060208284031215612dcc57600080fd5b5035919050565b60008060408385031215612de657600080fd5b82359150612df660208401612caa565b90509250929050565b600080600060608486031215612e1457600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015612e665781516001600160a01b031687529582019590820190600101612e41565b509495945050505050565b848152608060208201526000612e8a6080830186612e2d565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b81811015612ed357858101830151858201604001528201612eb7565b81811115612ee5576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000612f496040830184612e2d565b949350505050565b85815284602082015260a060408201526000612f7060a0830186612e2d565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612fa057612fa0613053565b500190565b600082612fc257634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612fe157612fe1613053565b500290565b600082821015612ff857612ff8613053565b500390565b600181811c9082168061301157607f821691505b6020821081141561303257634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561304c5761304c613053565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146130aa57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206d8dd00329d000612e61d0420b497225fb5ffb2760b4c3667624b95d2bad1f4764736f6c63430008050033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000050a6db845f4656ce72c700a7e5f9028d0765ae29

-----Decoded View---------------
Arg [0] : _marketingAddress (address): 0x50a6dB845F4656Ce72c700A7e5f9028d0765ae29

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000050a6db845f4656ce72c700a7e5f9028d0765ae29


Deployed Bytecode Sourcemap

15344:21982:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35378:98;;;;;;;;;;-1:-1:-1;35378:98:0;;;;;:::i;:::-;;:::i;:::-;;18257:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19169:161;;;;;;;;;;-1:-1:-1;19169:161:0;;;;;:::i;:::-;;:::i;:::-;;;4470:14:1;;4463:22;4445:41;;4433:2;4418:18;19169:161:0;4400:92:1;20290:87:0;;;;;;;;;;-1:-1:-1;20359:10:0;;20290:87;;;12785:25:1;;;12773:2;12758:18;20290:87:0;12740:76:1;16697:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3425:32:1;;;3407:51;;3395:2;3380:18;16697:51:0;3362:102:1;18534:95:0;;;;;;;;;;-1:-1:-1;18614:7:0;;18534:95;;19338:313;;;;;;;;;;-1:-1:-1;19338:313:0;;;;;:::i;:::-;;:::i;15514:81::-;;;;;;;;;;;;;;;36524:150;;;;;;;;;;-1:-1:-1;36524:150:0;;;;;:::i;:::-;;:::i;21474:253::-;;;;;;;;;;-1:-1:-1;21474:253:0;;;;;:::i;:::-;;:::i;36892:193::-;;;;;;;;;;;;;:::i;18443:83::-;;;;;;;;;;-1:-1:-1;18509:9:0;;18443:83;;18509:9;;;;14211:36:1;;14199:2;14184:18;18443:83:0;14166:87:1;22078:479:0;;;;;;;;;;-1:-1:-1;22078:479:0;;;;;:::i;:::-;;:::i;19659:218::-;;;;;;;;;;-1:-1:-1;19659:218:0;;;;;:::i;:::-;;:::i;16243:26::-;;;;;;;;;;;;;;;;20641:377;;;;;;;;;;-1:-1:-1;20641:377:0;;;;;:::i;:::-;;:::i;35133:111::-;;;;;;;;;;-1:-1:-1;35133:111:0;;;;;:::i;:::-;;:::i;21030:436::-;;;;;;;;;;-1:-1:-1;21030:436:0;;;;;:::i;:::-;;:::i;16755:38::-;;;;;;;;;;;;;;;16834:40;;;;;;;;;;-1:-1:-1;16834:40:0;;;;;;;;;;;21735:335;;;;;;;;;;-1:-1:-1;21735:335:0;;;;;:::i;:::-;;:::i;34998:123::-;;;;;;;;;;-1:-1:-1;34998:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;35086:27:0;35062:4;35086:27;;;:18;:27;;;;;;;;;34998:123;6734:90;;;;;;;;;;-1:-1:-1;6801:15:0;6734:90;;6632;;;;;;;;;;-1:-1:-1;6705:9:0;;6632:90;;16881:33;;;;;;;;;;-1:-1:-1;16881:33:0;;;;;;;;;;;16330;;;;;;;;;;;;;;;;18637:198;;;;;;;;;;-1:-1:-1;18637:198:0;;;;;:::i;:::-;;:::i;6224:148::-;;;;;;;;;;;;;:::i;16512:57::-;;;;;;;;;;;;;;;;36052:132;;;;;;;;;;-1:-1:-1;36052:132:0;;;;;:::i;:::-;;:::i;36686:194::-;;;;;;;;;;;;;:::i;20162:120::-;;;;;;;;;;-1:-1:-1;20162:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;20254:20:0;20230:4;20254:20;;;:11;:20;;;;;;;;;20162:120;5999:79;;;;;;;;;;-1:-1:-1;6037:7:0;6064:6;-1:-1:-1;;;;;6064:6:0;5999:79;;35488:122;;;;;;;;;;-1:-1:-1;35488:122:0;;;;;:::i;:::-;;:::i;36192:141::-;;;;;;;;;;-1:-1:-1;36192:141:0;;;;;:::i;:::-;;:::i;18348:87::-;;;;;;;;;;;;;:::i;20389:120::-;;;;;;;;;;-1:-1:-1;20478:23:0;;20389:120;;19885:269;;;;;;;;;;-1:-1:-1;19885:269:0;;;;;:::i;:::-;;:::i;15468:39::-;;;;;;;;;;-1:-1:-1;15468:39:0;;;;-1:-1:-1;;;;;15468:39:0;;;7070:305;;;;;;;;;;;;;:::i;18843:167::-;;;;;;;;;;-1:-1:-1;18843:167:0;;;;;:::i;:::-;;:::i;35753:112::-;;;;;;;;;;-1:-1:-1;35753:112:0;;;;;:::i;:::-;;:::i;20521:108::-;;;;;;;;;;-1:-1:-1;20604:17:0;;20521:108;;36341:171;;;;;;;;;;-1:-1:-1;36341:171:0;;;;;:::i;:::-;;:::i;16464:35::-;;;;;;;;;;;;;;;;6832:226;;;;;;;;;;-1:-1:-1;6832:226:0;;;;;:::i;:::-;;:::i;19018:143::-;;;;;;;;;;-1:-1:-1;19018:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;19126:18:0;;;19099:7;19126:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19018:143;35256:110;;;;;;;;;;-1:-1:-1;35256:110:0;;;;;:::i;:::-;;:::i;35622:119::-;;;;;;;;;;-1:-1:-1;35622:119:0;;;;;:::i;:::-;;:::i;35873:166::-;;;;;;;;;;-1:-1:-1;35873:166:0;;;;;:::i;:::-;;:::i;6380:244::-;;;;;;;;;;-1:-1:-1;6380:244:0;;;;;:::i;:::-;;:::i;35378:98::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;;;;;;;;;35452:7:::1;:16:::0;35378:98::o;18257:83::-;18294:13;18327:5;18320:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18257:83;:::o;19169:161::-;19244:4;19261:39;383:10;19284:7;19293:6;19261:8;:39::i;:::-;-1:-1:-1;19318:4:0;19169:161;;;;;:::o;19338:313::-;19436:4;19453:36;19463:6;19471:9;19482:6;19453:9;:36::i;:::-;19500:121;19509:6;383:10;19531:89;19569:6;19531:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19531:19:0;;;;;;:11;:19;;;;;;;;383:10;19531:33;;;;;;;;;;:37;:89::i;:::-;19500:8;:121::i;:::-;-1:-1:-1;19639:4:0;19338:313;;;;;:::o;36524:150::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;36594:14:::1;:25:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;36594:25:0;;::::1;;::::0;;36635:31:::1;::::0;::::1;::::0;::::1;::::0;36611:8;4470:14:1;4463:22;4445:41;;4433:2;4418:18;;4400:92;36635:31:0::1;;;;;;;;36524:150:::0;:::o;21474:253::-;21540:7;21579;;21568;:18;;21560:73;;;;-1:-1:-1;;;21560:73:0;;6978:2:1;21560:73:0;;;6960:21:1;7017:2;6997:18;;;6990:30;7056:34;7036:18;;;7029:62;-1:-1:-1;;;7107:18:1;;;7100:40;7157:19;;21560:73:0;6950:232:1;21560:73:0;21644:19;21667:10;:8;:10::i;:::-;21644:33;-1:-1:-1;21695:24:0;:7;21644:33;21695:11;:24::i;:::-;21688:31;21474:253;-1:-1:-1;;;21474:253:0:o;36892:193::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;36943:30:::1;36968:4;36943:24;:30::i;:::-;36994:1;36984:7;:11:::0;;;37006:13:::1;:18:::0;37050:27:::1;37035:12;:42:::0;36892:193::o;22078:479::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22160:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;22152:60;;;::::0;-1:-1:-1;;;22152:60:0;;8555:2:1;22152:60:0::1;::::0;::::1;8537:21:1::0;8594:2;8574:18;;;8567:30;8633:29;8613:18;;;8606:57;8680:18;;22152:60:0::1;8527:177:1::0;22152:60:0::1;22228:9;22223:327;22247:9;:16:::0;22243:20;::::1;22223:327;;;22305:7;-1:-1:-1::0;;;;;22289:23:0::1;:9;22299:1;22289:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;22289:12:0::1;:23;22285:254;;;22348:9;22358:16:::0;;:20:::1;::::0;22377:1:::1;::::0;22358:20:::1;:::i;:::-;22348:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;22333:9:::1;:12:::0;;-1:-1:-1;;;;;22348:31:0;;::::1;::::0;22343:1;;22333:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;22333:46:0::1;-1:-1:-1::0;;;;;22333:46:0;;::::1;;::::0;;22398:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;22437:11:::1;:20:::0;;;;:28;;-1:-1:-1;;22437:28:0::1;::::0;;22484:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;22484:15:0;;;;;-1:-1:-1;;;;;;22484:15:0::1;::::0;;;;;22223:327:::1;22078:479:::0;:::o;22285:254::-:1;22265:3:::0;::::1;::::0;::::1;:::i;:::-;;;;22223:327;;;;22078:479:::0;:::o;19659:218::-;383:10;19747:4;19796:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19796:34:0;;;;;;;;;;19747:4;;19764:83;;19787:7;;19796:50;;19835:10;19796:38;:50::i;20641:377::-;383:10;20693:14;20742:19;;;:11;:19;;;;;;;;20741:20;20733:77;;;;-1:-1:-1;;;20733:77:0;;12024:2:1;20733:77:0;;;12006:21:1;12063:2;12043:18;;;12036:30;12102:34;12082:18;;;12075:62;-1:-1:-1;;;12153:18:1;;;12146:42;12205:19;;20733:77:0;11996:234:1;20733:77:0;20822:15;20846:19;20857:7;20846:10;:19::i;:::-;-1:-1:-1;;;;;;;;;20894:15:0;;;;;;:7;:15;;;;;;20821:44;;-1:-1:-1;20894:28:0;;:15;-1:-1:-1;20821:44:0;20894:19;:28::i;:::-;-1:-1:-1;;;;;20876:15:0;;;;;;:7;:15;;;;;:46;20943:7;;:20;;20955:7;20943:11;:20::i;:::-;20933:7;:30;20987:10;;:23;;21002:7;20987:14;:23::i;:::-;20974:10;:36;-1:-1:-1;;;20641:377:0:o;35133:111::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35202:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;35202:34:0::1;35232:4;35202:34;::::0;;35133:111::o;21030:436::-;21120:7;21159;;21148;:18;;21140:62;;;;-1:-1:-1;;;21140:62:0;;8911:2:1;21140:62:0;;;8893:21:1;8950:2;8930:18;;;8923:30;8989:33;8969:18;;;8962:61;9040:18;;21140:62:0;8883:181:1;21140:62:0;21218:17;21213:246;;21253:15;21277:19;21288:7;21277:10;:19::i;:::-;-1:-1:-1;21252:44:0;;-1:-1:-1;21311:14:0;;-1:-1:-1;;;;;21311:14:0;21213:246;21360:23;21391:19;21402:7;21391:10;:19::i;:::-;-1:-1:-1;21358:52:0;;-1:-1:-1;21425:22:0;;-1:-1:-1;;;;;21425:22:0;21735:335;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21820:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;21819:21;21811:61;;;::::0;-1:-1:-1;;;21811:61:0;;8555:2:1;21811:61:0::1;::::0;::::1;8537:21:1::0;8594:2;8574:18;;;8567:30;8633:29;8613:18;;;8606:57;8680:18;;21811:61:0::1;8527:177:1::0;21811:61:0::1;-1:-1:-1::0;;;;;21886:16:0;::::1;21905:1;21886:16:::0;;;:7:::1;:16;::::0;;;;;:20;21883:108:::1;;-1:-1:-1::0;;;;;21962:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;21942:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;21923:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;21883:108:::1;-1:-1:-1::0;;;;;22001:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;22001:27:0::1;22024:4;22001:27:::0;;::::1;::::0;;;22039:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;22039:23:0::1;::::0;;::::1;::::0;;21735:335::o;18637:198::-;-1:-1:-1;;;;;18727:20:0;;18703:7;18727:20;;;:11;:20;;;;;;;;18723:49;;;-1:-1:-1;;;;;;18756:16:0;;;;;:7;:16;;;;;;;18637:198::o;18723:49::-;-1:-1:-1;;;;;18810:16:0;;;;;;:7;:16;;;;;;18790:37;;:19;:37::i;6224:148::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;6331:1:::1;6315:6:::0;;6294:40:::1;::::0;-1:-1:-1;;;;;6315:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6294:40:0;6331:1;;6294:40:::1;6362:1;6345:19:::0;;-1:-1:-1;;;;;;6345:19:0::1;::::0;;6224:148::o;36052:132::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;36156:20:::1;:12:::0;36171:5:::1;36156:20;:::i;:::-;36136:17;:40:::0;-1:-1:-1;36052:132:0:o;36686:194::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;36738:31:::1;36763:5;36738:24;:31::i;:::-;36790:1;36780:7;:11:::0;;;36802:13:::1;:17:::0;36845:27:::1;36830:12;:42:::0;36686:194::o;35488:122::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;35574:13:::1;:28:::0;35488:122::o;36192:141::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;36280:16:::1;:45:::0;;-1:-1:-1;;;;;;36280:45:0::1;-1:-1:-1::0;;;;;36280:45:0;;;::::1;::::0;;;::::1;::::0;;36192:141::o;18348:87::-;18387:13;18420:7;18413:14;;;;;:::i;19885:269::-;19978:4;19995:129;383:10;20018:7;20027:96;20066:15;20027:96;;;;;;;;;;;;;;;;;383:10;20027:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20027:34:0;;;;;;;;;;;;:38;:96::i;7070:305::-;7122:14;;-1:-1:-1;;;;;7122:14:0;7140:10;7122:28;7114:76;;;;-1:-1:-1;;;7114:76:0;;12437:2:1;7114:76:0;;;12419:21:1;12476:2;12456:18;;;12449:30;12515:34;12495:18;;;12488:62;-1:-1:-1;;;12566:18:1;;;12559:33;12609:19;;7114:76:0;12409:225:1;7114:76:0;7227:9;;7209:15;:27;7201:72;;;;-1:-1:-1;;;7201:72:0;;11664:2:1;7201:72:0;;;11646:21:1;11703:2;11683:18;;;11676:30;11742:33;11722:18;;;11715:61;11793:18;;7201:72:0;11636:181:1;7201:72:0;7318:14;;;7310:6;;7289:44;;-1:-1:-1;;;;;7318:14:0;;;;7310:6;;;;-1:-1:-1;;;;;;;;;;;7289:44:0;;7353:14;;;7344:23;;-1:-1:-1;;;;;;7344:23:0;-1:-1:-1;;;;;7353:14:0;;;7344:23;;;;;;7070:305::o;18843:167::-;18921:4;18938:42;383:10;18962:9;18973:6;18938:9;:42::i;35753:112::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;35831:16:::1;:26:::0;35753:112::o;36341:171::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;36418:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;36418:32:0;;::::1;;::::0;;36466:38:::1;::::0;::::1;::::0;::::1;::::0;36442:8;4470:14:1;4463:22;4445:41;;4433:2;4418:18;;4400:92;6832:226:0;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;6913:6:::1;::::0;;;6896:23;;-1:-1:-1;;;;;;6896:23:0;;::::1;-1:-1:-1::0;;;;;6913:6:0;::::1;6896:23;::::0;;;6930:19:::1;::::0;;6972:22:::1;6990:4:::0;6972:15:::1;:22;:::i;:::-;6960:9;:34:::0;7047:1:::1;7031:6:::0;;7010:40:::1;::::0;-1:-1:-1;;;;;7031:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;7010:40:0;7047:1;;7010:40:::1;6832:226:::0;:::o;35256:110::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35323:27:0::1;35353:5;35323:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;35323:35:0::1;::::0;;35256:110::o;35622:119::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;35714:19:::1;:11:::0;35728:5:::1;35714:19;:::i;:::-;35699:12;:34:::0;-1:-1:-1;35622:119:0:o;35873:166::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;35981:23:::1;:50:::0;35873:166::o;6380:244::-;6133:6;;-1:-1:-1;;;;;6133:6:0;383:10;6133:22;6125:67;;;;-1:-1:-1;;;6125:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6469:22:0;::::1;6461:73;;;::::0;-1:-1:-1;;;6461:73:0;;7389:2:1;6461:73:0::1;::::0;::::1;7371:21:1::0;7428:2;7408:18;;;7401:30;7467:34;7447:18;;;7440:62;-1:-1:-1;;;7518:18:1;;;7511:36;7564:19;;6461:73:0::1;7361:228:1::0;6461:73:0::1;6571:6;::::0;;6550:38:::1;::::0;-1:-1:-1;;;;;6550:38:0;;::::1;::::0;6571:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;6550:38:0;::::1;6599:6;:17:::0;;-1:-1:-1;;;;;;6599:17:0::1;-1:-1:-1::0;;;;;6599:17:0;;;::::1;::::0;;;::::1;::::0;;6380:244::o;22565:337::-;-1:-1:-1;;;;;22658:19:0;;22650:68;;;;-1:-1:-1;;;22650:68:0;;11259:2:1;22650:68:0;;;11241:21:1;11298:2;11278:18;;;11271:30;11337:34;11317:18;;;11310:62;-1:-1:-1;;;11388:18:1;;;11381:34;11432:19;;22650:68:0;11231:226:1;22650:68:0;-1:-1:-1;;;;;22737:21:0;;22729:68;;;;-1:-1:-1;;;22729:68:0;;7796:2:1;22729:68:0;;;7778:21:1;7835:2;7815:18;;;7808:30;7874:34;7854:18;;;7847:62;-1:-1:-1;;;7925:18:1;;;7918:32;7967:19;;22729:68:0;7768:224:1;22729:68:0;-1:-1:-1;;;;;22810:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22862:32;;12785:25:1;;;22862:32:0;;12758:18:1;22862:32:0;;;;;;;22565:337;;;:::o;22910:1728::-;-1:-1:-1;;;;;23032:18:0;;23024:68;;;;-1:-1:-1;;;23024:68:0;;10853:2:1;23024:68:0;;;10835:21:1;10892:2;10872:18;;;10865:30;10931:34;10911:18;;;10904:62;-1:-1:-1;;;10982:18:1;;;10975:35;11027:19;;23024:68:0;10825:227:1;23024:68:0;-1:-1:-1;;;;;23111:16:0;;23103:64;;;;-1:-1:-1;;;23103:64:0;;6574:2:1;23103:64:0;;;6556:21:1;6613:2;6593:18;;;6586:30;6652:34;6632:18;;;6625:62;-1:-1:-1;;;6703:18:1;;;6696:33;6746:19;;23103:64:0;6546:225:1;23103:64:0;23195:1;23186:6;:10;23178:64;;;;-1:-1:-1;;;23178:64:0;;10443:2:1;23178:64:0;;;10425:21:1;10482:2;10462:18;;;10455:30;10521:34;10501:18;;;10494:62;-1:-1:-1;;;10572:18:1;;;10565:39;10621:19;;23178:64:0;10415:231:1;23178:64:0;6037:7;6064:6;-1:-1:-1;;;;;23256:15:0;;;6064:6;;23256:15;;;;:32;;-1:-1:-1;6037:7:0;6064:6;-1:-1:-1;;;;;23275:13:0;;;6064:6;;23275:13;;23256:32;23253:139;;;23323:12;;23313:6;:22;;23305:75;;;;-1:-1:-1;;;23305:75:0;;9271:2:1;23305:75:0;;;9253:21:1;9310:2;9290:18;;;9283:30;9349:34;9329:18;;;9322:62;-1:-1:-1;;;9400:18:1;;;9393:38;9448:19;;23305:75:0;9243:230:1;23305:75:0;23404:28;23435:24;23453:4;23435:9;:24::i;:::-;23525:23;;23574:16;;23404:55;;-1:-1:-1;23501:47:0;;;;23574:16;;23573:17;:42;;;;-1:-1:-1;23594:21:0;;;;;;;23573:42;:65;;;;;23625:13;-1:-1:-1;;;;;23619:19:0;:2;-1:-1:-1;;;;;23619:19:0;;23573:65;23569:763;;;23659:23;23655:334;;;23726:23;;;-1:-1:-1;23805:43:0;23820:27;23726:23;23845:1;23820:24;:27::i;:::-;23805:14;:43::i;:::-;23912:39;23923:27;:20;23948:1;23923:24;:27::i;:::-;23912:10;:39::i;:::-;24058:14;;24018:21;;24058:14;;;;;:46;;;;;24094:9;24076:7;:28;24058:46;24054:267;;;24157:17;;24147:7;:27;24143:81;;;-1:-1:-1;24207:17:0;;24143:81;24274:31;24288:16;:7;24300:3;24288:11;:16::i;:::-;24274:13;:31::i;:::-;23640:692;23569:763;-1:-1:-1;;;;;24479:24:0;;24352:12;24479:24;;;:18;:24;;;;;;24367:4;;24479:24;;;:50;;-1:-1:-1;;;;;;24507:22:0;;;;;;:18;:22;;;;;;;;24479:50;24476:96;;;-1:-1:-1;24555:5:0;24476:96;24592:38;24607:4;24612:2;24615:6;24622:7;24592:14;:38::i;:::-;23013:1625;;;22910:1728;;;:::o;1698:192::-;1784:7;1820:12;1812:6;;;;1804:29;;;;-1:-1:-1;;;1804:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1844:9:0;1856:5;1860:1;1856;:5;:::i;:::-;1844:17;1698:192;-1:-1:-1;;;;;1698:192:0:o;33148:163::-;33189:7;33210:15;33227;33246:19;:17;:19::i;:::-;33209:56;;-1:-1:-1;33209:56:0;-1:-1:-1;33283:20:0;33209:56;;33283:11;:20::i;:::-;33276:27;;;;33148:163;:::o;2158:132::-;2216:7;2243:39;2247:1;2250;2243:39;;;;;;;;;;;;;;;;;:3;:39::i;1365:181::-;1423:7;;1455:5;1459:1;1455;:5;:::i;:::-;1443:17;;1484:1;1479;:6;;1471:46;;;;-1:-1:-1;;;1471:46:0;;8199:2:1;1471:46:0;;;8181:21:1;8238:2;8218:18;;;8211:30;8277:29;8257:18;;;8250:57;8324:18;;1471:46:0;8171:177:1;31946:419:0;32005:7;32014;32023;32032;32041;32050;32071:23;32096:12;32110:18;32132:20;32144:7;32132:11;:20::i;:::-;32070:82;;;;;;32164:15;32181:23;32206:12;32222:50;32234:7;32243:4;32249:10;32261;:8;:10::i;:::-;32222:11;:50::i;:::-;32163:109;;;;-1:-1:-1;32163:109:0;;-1:-1:-1;32323:15:0;;-1:-1:-1;32340:4:0;;-1:-1:-1;32346:10:0;;-1:-1:-1;31946:419:0;;-1:-1:-1;;;;;31946:419:0:o;1554:136::-;1612:7;1639:43;1643:1;1646;1639:43;;;;;;;;;;;;;;;;;:3;:43::i;24646:1013::-;17540:16;:23;;-1:-1:-1;;17540:23:0;17559:4;17540:23;;;:16;24800:27:::1;:20:::0;24825:1:::1;24800:24;:27::i;:::-;24785:42:::0;-1:-1:-1;24838:17:0::1;24858:30;:20:::0;24785:42;24858:24:::1;:30::i;:::-;24838:50:::0;-1:-1:-1;25203:21:0::1;25272:22;25289:4:::0;25272:16:::1;:22::i;:::-;25428:18;25449:41;:21;25475:14:::0;25449:25:::1;:41::i;:::-;25428:62;;25547:35;25560:9;25571:10;25547:12;:35::i;:::-;25608:43;::::0;;13947:25:1;;;14003:2;13988:18;;13981:34;;;14031:18;;;14024:34;;;25608:43:0::1;::::0;13935:2:1;13920:18;25608:43:0::1;;;;;;;-1:-1:-1::0;;17586:16:0;:24;;-1:-1:-1;;17586:24:0;;;-1:-1:-1;;;24646:1013:0:o;25667:503::-;17540:16;:23;;-1:-1:-1;;17540:23:0;17559:4;17540:23;;;25782:21:::1;25814:38;25831:20:::0;25814:16:::1;:38::i;:::-;25863:26;25892:41;:21;25918:14:::0;25892:25:::1;:41::i;:::-;25863:70:::0;-1:-1:-1;25946:39:0::1;25964:20;25983:1;25863:70:::0;25964:20:::1;:::i;:::-;25946:17;:39::i;:::-;25996:24;26021:20;26040:1;26021:18:::0;:20:::1;:::i;:::-;26110:16;::::0;25996:45;;-1:-1:-1;26089:63:0::1;::::0;-1:-1:-1;;;;;26110:16:0::1;26128:23;25996:45:::0;26149:1:::1;26128:20;:23::i;:::-;26089:20;:63::i;:::-;-1:-1:-1::0;;17586:16:0;:24;;-1:-1:-1;;17586:24:0;;;-1:-1:-1;;25667:503:0:o;26184:135::-;17540:16;:23;;-1:-1:-1;;17540:23:0;17559:4;17540:23;;;26255:10;;26251:61:::1;;26279:24;26296:6;26279:16;:24::i;:::-;-1:-1:-1::0;17586:16:0;:24;;-1:-1:-1;;17586:24:0;;;26184:135::o;28760:704::-;28871:7;28867:40;;28893:14;:12;:14::i;:::-;-1:-1:-1;;;;;28932:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;28956:22:0;;;;;;:11;:22;;;;;;;;28955:23;28932:46;28928:467;;;28995:48;29017:6;29025:9;29036:6;28995:21;:48::i;:::-;28928:467;;;-1:-1:-1;;;;;29066:19:0;;;;;;:11;:19;;;;;;;;29065:20;:46;;;;-1:-1:-1;;;;;;29089:22:0;;;;;;:11;:22;;;;;;;;29065:46;29061:334;;;29128:46;29148:6;29156:9;29167:6;29128:19;:46::i;29061:334::-;-1:-1:-1;;;;;29196:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;29219:22:0;;;;;;:11;:22;;;;;;;;29196:45;29192:203;;;29258:48;29280:6;29288:9;29299:6;29258:21;:48::i;29192:203::-;29339:44;29357:6;29365:9;29376:6;29339:17;:44::i;:::-;29419:7;29415:41;;29441:15;34919;;34909:7;:25;34961:21;;34945:13;:37;34865:125;29441:15;28760:704;;;;:::o;33319:561::-;33416:7;;33452;;33369;;;;;33476:289;33500:9;:16;33496:20;;33476:289;;;33566:7;33542;:21;33550:9;33560:1;33550:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33550:12:0;33542:21;;;;;;;;;;;;;:31;;:66;;;33601:7;33577;:21;33585:9;33595:1;33585:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33585:12:0;33577:21;;;;;;;;;;;;;:31;33542:66;33538:97;;;33618:7;;33627;;33610:25;;;;;;;33319:561;;:::o;33538:97::-;33660:34;33672:7;:21;33680:9;33690:1;33680:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33680:12:0;33672:21;;;;;;;;;;;;;33660:7;;:11;:34::i;:::-;33650:44;;33719:34;33731:7;:21;33739:9;33749:1;33739:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33739:12:0;33731:21;;;;;;;;;;;;;33719:7;;:11;:34::i;:::-;33709:44;-1:-1:-1;33518:3:0;;;;:::i;:::-;;;;33476:289;;;-1:-1:-1;33801:7:0;;33789;;:20;;:11;:20::i;:::-;33779:7;:30;33775:61;;;33819:7;;33828;;33811:25;;;;;;33319:561;;:::o;33775:61::-;33855:7;;33864;;-1:-1:-1;33319:561:0;-1:-1:-1;33319:561:0:o;2298:278::-;2384:7;2419:12;2412:5;2404:28;;;;-1:-1:-1;;;2404:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2443:9:0;2455:5;2459:1;2455;:5;:::i;32373:330::-;32433:7;32442;32451;32471:12;32486:24;32502:7;32486:15;:24::i;:::-;32471:39;;32521:18;32542:30;32564:7;32542:21;:30::i;:::-;32521:51;-1:-1:-1;32583:23:0;32609:33;32521:51;32609:17;:7;32621:4;32609:11;:17::i;:::-;:21;;:33::i;:::-;32583:59;32678:4;;-1:-1:-1;32684:10:0;;-1:-1:-1;32373:330:0;;-1:-1:-1;;;32373:330:0:o;32711:429::-;32826:7;;;;32882:24;:7;32894:11;32882;:24::i;:::-;32864:42;-1:-1:-1;32917:12:0;32932:21;:4;32941:11;32932:8;:21::i;:::-;32917:36;-1:-1:-1;32964:18:0;32985:27;:10;33000:11;32985:14;:27::i;:::-;32964:48;-1:-1:-1;33023:23:0;33049:33;32964:48;33049:17;:7;33061:4;33049:11;:17::i;:33::-;33101:7;;;;-1:-1:-1;33127:4:0;;-1:-1:-1;32711:429:0;;-1:-1:-1;;;;;;;32711:429:0:o;26331:666::-;26481:16;;;26495:1;26481:16;;;;;;;;26457:21;;26481:16;;;;;;;;;;-1:-1:-1;26481:16:0;26457:40;;26526:4;26508;26513:1;26508:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;26508:23:0;;;-1:-1:-1;;;;;26508:23:0;;;;;26552:15;-1:-1:-1;;;;;26552:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26542:4;26547:1;26542:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;26542:32:0;;;-1:-1:-1;;;;;26542:32:0;;;;;26587:62;26604:4;26619:15;26637:11;26587:8;:62::i;:::-;26688:240;;-1:-1:-1;;;26688:240:0;;-1:-1:-1;;;;;26688:15:0;:66;;;;:240;;26769:11;;26795:1;;26839:4;;26866;;26902:15;;26688:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26954:35;26971:11;26984:4;26954:35;;;;;;;:::i;:::-;;;;;;;;26386:611;26331:666;:::o;28239:513::-;28387:62;28404:4;28419:15;28437:11;28387:8;:62::i;:::-;28492:15;-1:-1:-1;;;;;28492:31:0;;28531:9;28564:4;28584:11;28610:1;28653;28696:7;6037;6064:6;-1:-1:-1;;;;;6064:6:0;;5999:79;28696:7;28492:252;;;;;;-1:-1:-1;;;;;;28492:252:0;;;-1:-1:-1;;;;;4052:15:1;;;28492:252:0;;;4034:34:1;4084:18;;;4077:34;;;;4127:18;;;4120:34;;;;4170:18;;;4163:34;4234:15;;;4213:19;;;4206:44;28718:15:0;4266:19:1;;;4259:35;3968:19;;28492:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28239:513;;:::o;27005:632::-;27153:16;;;27167:1;27153:16;;;;;;;;27129:21;;27153:16;;;;;;;;;;-1:-1:-1;27153:16:0;27129:40;;27190:15;-1:-1:-1;;;;;27190:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27180:4;27185:1;27180:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;27180:32:0;;;-1:-1:-1;;;;;27180:32:0;;;;;27233:42;27223:4;27228:1;27223:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27223:52:0;;;:7;;;;;;;;;:52;27483:16;;27321:248;;-1:-1:-1;;;27321:248:0;;:15;:66;;;;;27395:9;;27321:248;;27420:1;;27464:4;;27483:16;;;27543:15;;27321:248;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27595:34;27613:9;27624:4;27595:34;;;;;;;:::i;37099:126::-;37191:26;;-1:-1:-1;;;;;37191:18:0;;;:26;;;;;37210:6;;37191:26;;;;37210:6;37191:18;:26;;;;;;;;;;;;;;;;;;;;;37099:126;;:::o;27649:578::-;27794:16;;;27808:1;27794:16;;;;;;;;27770:21;;27794:16;;;;;;;;;;-1:-1:-1;27794:16:0;27770:40;;27831:15;-1:-1:-1;;;;;27831:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27821:4;27826:1;27821:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;27821:32:0;;;-1:-1:-1;;;;;27821:32:0;;;;;27882:4;27864;27869:1;27864:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27864:23:0;;;:7;;;;;;;;;:23;27924:15;:66;;27998:6;28020:1;28067:4;28086:11;28128:24;:15;28148:3;28128:19;:24::i;:::-;27924:239;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28189:30;28206:6;28214:4;28189:30;;;;;;;:::i;34603:250::-;34649:7;;:12;:34;;;;-1:-1:-1;34665:13:0;;:18;34649:34;34646:46;;;34603:250::o;34646:46::-;34730:7;;;34712:15;:25;34772:13;;;34748:21;:37;-1:-1:-1;34806:11:0;;;;34828:17;34603:250::o;30573:563::-;30676:15;30693:23;30718:12;30732:23;30757:12;30771:18;30793:19;30804:7;30793:10;:19::i;:::-;-1:-1:-1;;;;;30838:15:0;;;;;;:7;:15;;;;;;30675:137;;-1:-1:-1;30675:137:0;;-1:-1:-1;30675:137:0;;-1:-1:-1;30675:137:0;-1:-1:-1;30675:137:0;-1:-1:-1;30675:137:0;-1:-1:-1;30838:28:0;;30858:7;30838:19;:28::i;:::-;-1:-1:-1;;;;;30820:15:0;;;;;;:7;:15;;;;;;;;:46;;;;30895:7;:15;;;;:28;;30915:7;30895:19;:28::i;:::-;-1:-1:-1;;;;;30877:15:0;;;;;;;:7;:15;;;;;;:46;;;;30955:18;;;;;;;:39;;30978:15;30955:22;:39::i;:::-;-1:-1:-1;;;;;30934:18:0;;;;;;:7;:18;;;;;:60;31008:26;31023:10;31008:14;:26::i;:::-;31045:23;31057:4;31063;31045:11;:23::i;:::-;31101:9;-1:-1:-1;;;;;31084:44:0;31093:6;-1:-1:-1;;;;;31084:44:0;;31112:15;31084:44;;;;12785:25:1;;12773:2;12758:18;;12740:76;31084:44:0;;;;;;;;30664:472;;;;;;30573:563;;;:::o;29982:583::-;30083:15;30100:23;30125:12;30139:23;30164:12;30178:18;30200:19;30211:7;30200:10;:19::i;:::-;-1:-1:-1;;;;;30245:15:0;;;;;;:7;:15;;;;;;30082:137;;-1:-1:-1;30082:137:0;;-1:-1:-1;30082:137:0;;-1:-1:-1;30082:137:0;-1:-1:-1;30082:137:0;-1:-1:-1;30082:137:0;-1:-1:-1;30245:28:0;;30082:137;30245:19;:28::i;:::-;-1:-1:-1;;;;;30227:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;30305:18;;;;;:7;:18;;;;;:39;;30328:15;30305:22;:39::i;:::-;-1:-1:-1;;;;;30284:18:0;;;;;;:7;:18;;;;;;;;:60;;;;30376:7;:18;;;;:39;;30399:15;30376:22;:39::i;31144:639::-;31247:15;31264:23;31289:12;31303:23;31328:12;31342:18;31364:19;31375:7;31364:10;:19::i;:::-;-1:-1:-1;;;;;31409:15:0;;;;;;:7;:15;;;;;;31246:137;;-1:-1:-1;31246:137:0;;-1:-1:-1;31246:137:0;;-1:-1:-1;31246:137:0;-1:-1:-1;31246:137:0;-1:-1:-1;31246:137:0;-1:-1:-1;31409:28:0;;31429:7;31409:19;:28::i;:::-;-1:-1:-1;;;;;31391:15:0;;;;;;:7;:15;;;;;;;;:46;;;;31466:7;:15;;;;:28;;31486:7;31466:19;:28::i;29472:502::-;29571:15;29588:23;29613:12;29627:23;29652:12;29666:18;29688:19;29699:7;29688:10;:19::i;:::-;-1:-1:-1;;;;;29736:15:0;;;;;;:7;:15;;;;;;29570:137;;-1:-1:-1;29570:137:0;;-1:-1:-1;29570:137:0;;-1:-1:-1;29570:137:0;-1:-1:-1;29570:137:0;-1:-1:-1;29570:137:0;-1:-1:-1;29736:28:0;;29570:137;29736:19;:28::i;34259:154::-;34323:7;34350:55;34389:5;34350:20;34362:7;;34350;:11;;:20;;;;:::i;:::-;:24;;:55::i;34425:166::-;34495:7;34522:61;34567:5;34522:26;34534:13;;34522:7;:11;;:26;;;;:::i;1898:250::-;1956:7;1980:6;1976:47;;-1:-1:-1;2010:1:0;2003:8;;1976:47;2035:9;2047:5;2051:1;2047;:5;:::i;:::-;2035:17;-1:-1:-1;2080:1:0;2071:5;2075:1;2035:17;2071:5;:::i;:::-;:10;2063:56;;;;-1:-1:-1;;;2063:56:0;;9680:2:1;2063:56:0;;;9662:21:1;9719:2;9699:18;;;9692:30;9758:34;9738:18;;;9731:62;-1:-1:-1;;;9809:18:1;;;9802:31;9850:19;;2063:56:0;9652:223:1;33892:355:0;33955:19;33978:10;:8;:10::i;:::-;33955:33;-1:-1:-1;33999:18:0;34020:27;:10;33955:33;34020:14;:27::i;:::-;34099:4;34083:22;;;;:7;:22;;;;;;33999:48;;-1:-1:-1;34083:38:0;;33999:48;34083:26;:38::i;:::-;34074:4;34058:22;;;;:7;:22;;;;;;;;:63;;;;34135:11;:26;;;;;;34132:107;;;34217:4;34201:22;;;;:7;:22;;;;;;:38;;34228:10;34201:26;:38::i;:::-;34192:4;34176:22;;;;:7;:22;;;;;:63;33944:303;;33892:355;:::o;31791:147::-;31869:7;;:17;;31881:4;31869:11;:17::i;:::-;31859:7;:27;31910:10;;:20;;31925:4;31910:14;:20::i;:::-;31897:10;:33;-1:-1:-1;;31791:147:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;307:1;304;297:12;259:2;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:2;;;570:1;567;560:12;522:2;602:9;596:16;621:31;646:5;621:31;:::i;687:388::-;755:6;763;816:2;804:9;795:7;791:23;787:32;784:2;;;832:1;829;822:12;784:2;871:9;858:23;890:31;915:5;890:31;:::i;:::-;940:5;-1:-1:-1;997:2:1;982:18;;969:32;1010:33;969:32;1010:33;:::i;:::-;1062:7;1052:17;;;774:301;;;;;:::o;1080:456::-;1157:6;1165;1173;1226:2;1214:9;1205:7;1201:23;1197:32;1194:2;;;1242:1;1239;1232:12;1194:2;1281:9;1268:23;1300:31;1325:5;1300:31;:::i;:::-;1350:5;-1:-1:-1;1407:2:1;1392:18;;1379:32;1420:33;1379:32;1420:33;:::i;:::-;1184:352;;1472:7;;-1:-1:-1;;;1526:2:1;1511:18;;;;1498:32;;1184:352::o;1541:315::-;1609:6;1617;1670:2;1658:9;1649:7;1645:23;1641:32;1638:2;;;1686:1;1683;1676:12;1638:2;1725:9;1712:23;1744:31;1769:5;1744:31;:::i;:::-;1794:5;1846:2;1831:18;;;;1818:32;;-1:-1:-1;;;1628:228:1:o;1861:180::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:2;;;1986:1;1983;1976:12;1938:2;2009:26;2025:9;2009:26;:::i;2046:180::-;2105:6;2158:2;2146:9;2137:7;2133:23;2129:32;2126:2;;;2174:1;2171;2164:12;2126:2;-1:-1:-1;2197:23:1;;2116:110;-1:-1:-1;2116:110:1:o;2231:248::-;2296:6;2304;2357:2;2345:9;2336:7;2332:23;2328:32;2325:2;;;2373:1;2370;2363:12;2325:2;2409:9;2396:23;2386:33;;2438:35;2469:2;2458:9;2454:18;2438:35;:::i;:::-;2428:45;;2315:164;;;;;:::o;2484:306::-;2572:6;2580;2588;2641:2;2629:9;2620:7;2616:23;2612:32;2609:2;;;2657:1;2654;2647:12;2609:2;2686:9;2680:16;2670:26;;2736:2;2725:9;2721:18;2715:25;2705:35;;2780:2;2769:9;2765:18;2759:25;2749:35;;2599:191;;;;;:::o;2795:461::-;2848:3;2886:5;2880:12;2913:6;2908:3;2901:19;2939:4;2968:2;2963:3;2959:12;2952:19;;3005:2;2998:5;2994:14;3026:1;3036:195;3050:6;3047:1;3044:13;3036:195;;;3115:13;;-1:-1:-1;;;;;3111:39:1;3099:52;;3171:12;;;;3206:15;;;;3147:1;3065:9;3036:195;;;-1:-1:-1;3247:3:1;;2856:400;-1:-1:-1;;;;;2856:400:1:o;4732:518::-;5011:6;5000:9;4993:25;5054:3;5049:2;5038:9;5034:18;5027:31;4974:4;5075:57;5127:3;5116:9;5112:19;5104:6;5075:57;:::i;:::-;-1:-1:-1;;;;;5168:32:1;;;;5163:2;5148:18;;5141:60;-1:-1:-1;5232:2:1;5217:18;5210:34;5067:65;4983:267;-1:-1:-1;;4983:267:1:o;5770:597::-;5882:4;5911:2;5940;5929:9;5922:21;5972:6;5966:13;6015:6;6010:2;5999:9;5995:18;5988:34;6040:1;6050:140;6064:6;6061:1;6058:13;6050:140;;;6159:14;;;6155:23;;6149:30;6125:17;;;6144:2;6121:26;6114:66;6079:10;;6050:140;;;6208:6;6205:1;6202:13;6199:2;;;6278:1;6273:2;6264:6;6253:9;6249:22;6245:31;6238:42;6199:2;-1:-1:-1;6351:2:1;6330:15;-1:-1:-1;;6326:29:1;6311:45;;;;6358:2;6307:54;;5891:476;-1:-1:-1;;;5891:476:1:o;9880:356::-;10082:2;10064:21;;;10101:18;;;10094:30;10160:34;10155:2;10140:18;;10133:62;10227:2;10212:18;;10054:182::o;12821:332::-;13028:6;13017:9;13010:25;13071:2;13066;13055:9;13051:18;13044:30;12991:4;13091:56;13143:2;13132:9;13128:18;13120:6;13091:56;:::i;:::-;13083:64;13000:153;-1:-1:-1;;;;13000:153:1:o;13158:582::-;13457:6;13446:9;13439:25;13500:6;13495:2;13484:9;13480:18;13473:34;13543:3;13538:2;13527:9;13523:18;13516:31;13420:4;13564:57;13616:3;13605:9;13601:19;13593:6;13564:57;:::i;:::-;-1:-1:-1;;;;;13657:32:1;;;;13652:2;13637:18;;13630:60;-1:-1:-1;13721:3:1;13706:19;13699:35;13556:65;13429:311;-1:-1:-1;;;13429:311:1:o;14258:128::-;14298:3;14329:1;14325:6;14322:1;14319:13;14316:2;;;14335:18;;:::i;:::-;-1:-1:-1;14371:9:1;;14306:80::o;14391:217::-;14431:1;14457;14447:2;;14501:10;14496:3;14492:20;14489:1;14482:31;14536:4;14533:1;14526:15;14564:4;14561:1;14554:15;14447:2;-1:-1:-1;14593:9:1;;14437:171::o;14613:168::-;14653:7;14719:1;14715;14711:6;14707:14;14704:1;14701:21;14696:1;14689:9;14682:17;14678:45;14675:2;;;14726:18;;:::i;:::-;-1:-1:-1;14766:9:1;;14665:116::o;14786:125::-;14826:4;14854:1;14851;14848:8;14845:2;;;14859:18;;:::i;:::-;-1:-1:-1;14896:9:1;;14835:76::o;14916:380::-;14995:1;14991:12;;;;15038;;;15059:2;;15113:4;15105:6;15101:17;15091:27;;15059:2;15166;15158:6;15155:14;15135:18;15132:38;15129:2;;;15212:10;15207:3;15203:20;15200:1;15193:31;15247:4;15244:1;15237:15;15275:4;15272:1;15265:15;15129:2;;14971:325;;;:::o;15301:135::-;15340:3;-1:-1:-1;;15361:17:1;;15358:2;;;15381:18;;:::i;:::-;-1:-1:-1;15428:1:1;15417:13;;15348:88::o;15441:127::-;15502:10;15497:3;15493:20;15490:1;15483:31;15533:4;15530:1;15523:15;15557:4;15554:1;15547:15;15573:127;15634:10;15629:3;15625:20;15622:1;15615:31;15665:4;15662:1;15655:15;15689:4;15686:1;15679:15;15705:127;15766:10;15761:3;15757:20;15754:1;15747:31;15797:4;15794:1;15787:15;15821:4;15818:1;15811:15;15969:131;-1:-1:-1;;;;;16044:31:1;;16034:42;;16024:2;;16090:1;16087;16080:12;16024:2;16014:86;:::o

Swarm Source

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