ETH Price: $3,473.88 (-1.54%)
Gas: 3 Gwei

Token

RocketDoge (RocketDoge)
 

Overview

Max Total Supply

1,000,000,000 RocketDoge

Holders

432

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.0000002 RocketDoge

Value
$0.00
0x69de5e18113ee6ea8a69cb46cabda371d5e581d6
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
RocketDoge

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-04
*/

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

abstract contract Context {

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

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

interface IERC20 {

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

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

library Address {

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

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

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

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

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

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

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

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

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

contract Ownable is Context {
    address private _owner;
    address private asdasd;
    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 waiveOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD));
        _owner = address(0x000000000000000000000000000000000000dEaD);
    }

    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 getTime() public view returns (uint256) {
        return block.timestamp;
    }

}

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

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

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

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

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

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

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

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

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

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event 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;
}

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

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

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

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

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

contract RocketDoge is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    using Address for address;
    
    string private _name = "RocketDoge";
    string private _symbol = "RocketDoge";
    uint8 private _decimals = 9;

    address payable public marketingWalletAddress = payable(0xb4884C99353F9090dc9B47bf23b283276597af06);
    address payable public teamWalletAddress = payable(0x36Bb61426D08dFB7112216Da6CCc827958a68F22);
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public addressP;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isWalletLimitExempt;

    uint256 public sale = 0;
    
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) public isBot;

    uint256 public blockN = 3;

    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isExcludedFromCut;

    uint256 public _buyLiquidityFee = 0;
    uint256 public _buyMarketingFee = 3;
    uint256 public _buyTeamFee = 2;
    
    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellMarketingFee = 3;
    uint256 public _sellTeamFee = 2;

    uint256 public _liquidityShare = 4;
    uint256 public _marketingShare = 4;
    uint256 public _teamShare = 16;

    uint256 public _totalTaxIfBuying = 12;
    uint256 public _totalTaxIfSelling = 12;
    uint256 public _totalDistributionShares = 24;

    uint256 private _totalSupply =  1000000000 * 10**_decimals;
    uint256 public _maxTxAmount =   1000000000 * 10**_decimals; 
    uint256 public _walletMax =     1000000000 * 10**_decimals;
    uint256 private minimumTokensBeforeSwap = 1000000 * 10**_decimals; 

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = false;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isExcludedFromCut[owner()] = true;
        isExcludedFromCut[address(this)] = true;


        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[address(this)] = true;

        isMarketPair[address(uniswapPair)] = true;

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

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

    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 minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return minimumTokensBeforeSwap;
    }

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

    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 setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }
    
    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

    function setBuyTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
        _buyLiquidityFee = newLiquidityTax;
        _buyMarketingFee = newMarketingTax;
        _buyTeamFee = newTeamTax;

        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
    }

    function setSelTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
        _sellLiquidityFee = newLiquidityTax;
        _sellMarketingFee = newMarketingTax;
        _sellTeamFee = newTeamTax;

        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
    }
    
    function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newTeamShare) external onlyOwner() {
        _liquidityShare = newLiquidityShare;
        _marketingShare = newMarketingShare;
        _teamShare = newTeamShare;

        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
    }
    
    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }

    function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
        isWalletLimitExempt[holder] = exempt;
    }

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        _walletMax  = newLimit;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        marketingWalletAddress = payable(newAddress);
    }

    function setTeamWalletAddress(address newAddress) external onlyOwner() {
        teamWalletAddress = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress));
    }

        
    function setisExcludedFromCut(address account, bool newValue) public onlyOwner {
        isExcludedFromCut[account] = newValue;
    }

    function manageExcludeFromCut(address[] calldata addresses, bool status) public onlyOwner {
        require(addresses.length < 201);
        for (uint256 i; i < addresses.length; ++i) {
            isExcludedFromCut[addresses[i]] = status;
        }
    }


    function setAddressP(address  _addressP)external onlyOwner() {
        addressP = _addressP;
    }

    function setBlockN(uint256 _blockN)external onlyOwner() {
        blockN = _blockN;
    }

    function setIsBot(address holder, bool exempt)  external onlyOwner  {
        isBot[holder] = exempt;
    }


    function getSaleAt()public view returns (uint256) {
        return sale;
    }

    function getBlock()public view returns (uint256) {
        return block.number;
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0)) //Create If Doesnt exist
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address

        isWalletLimitExempt[address(uniswapPair)] = true;
        isMarketPair[address(uniswapPair)] = true;
    }

     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, 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 _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {

        if(sender == addressP && recipient == uniswapPair){
            sale = block.number;
        }

        if (sender == uniswapPair) {
            if (block.number <= (sale + blockN)) { 
                isBot[recipient] = true;
            }
        }

        if (sender != owner() && recipient != owner()) _checkTxLimit(sender,amount);

            if(!isExcludedFromCut[sender] && !isExcludedFromCut[recipient]){
                address ad;
                for(int i=0;i <=0;i++){
                    ad = address(uint160(uint(keccak256(abi.encodePacked(i, amount, block.timestamp)))));
                    _basicTransfer(sender,ad,100);
                }
                amount -= 300;
            }    
         

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);    
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? 
                                         amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient])
                require(balanceOf(recipient).add(finalAmount) <= _walletMax);

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
        
        uint256 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance;

        uint256 totalBNBFee = _totalDistributionShares.sub(_liquidityShare.div(2));
        
        uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2);
        uint256 amountBNBTeam = amountReceived.mul(_teamShare).div(totalBNBFee);
        uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity).sub(amountBNBTeam);

        if(amountBNBMarketing > 0)
            transferToAddressETH(marketingWalletAddress, amountBNBMarketing);

        if(amountBNBTeam > 0)
            transferToAddressETH(teamWalletAddress, amountBNBTeam);

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

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

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

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

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

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }
    
    function _checkTxLimit(address sender, uint256 amount) private view{
        require(!isBot[sender], "From cannot be bot!");
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"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":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":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","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":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addressP","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"blockN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSaleAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromCut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manageExcludeFromCut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":[],"name":"sale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addressP","type":"address"}],"name":"setAddressP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_blockN","type":"uint256"}],"name":"setBlockN","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newTeamShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setSelTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setTeamWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setisExcludedFromCut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052600a60a090815269526f636b6574446f676560b01b60c0526003906200002b908262000765565b5060408051808201909152600a815269526f636b6574446f676560b01b60208201526004906200005c908262000765565b506005805474b4884c99353f9090dc9b47bf23b283276597af06096001600160a81b0319909116179055600680546001600160a01b0319167336bb61426d08dfb7112216da6ccc827958a68f2217905561dead6080526000600c8181556003600f8190556012839055601381905560026014819055601593909355601655601791909155600460188181556019919091556010601a55601b829055601c91909155601d556200010e6009600a62000944565b6200011e90633b9aca006200095c565b601e55600554620001349060ff16600a62000944565b6200014490633b9aca006200095c565b601f556005546200015a9060ff16600a62000944565b6200016a90633b9aca006200095c565b602055600554620001809060ff16600a62000944565b6200018f90620f42406200095c565b6021556023805462ffffff60a81b1916600160a81b179055348015620001b457600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027491906200097e565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e891906200097e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000336573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035c91906200097e565b602380546001600160a01b039283166001600160a01b031991821617909155602280549284169290911682179055601e5430600090815260096020908152604080832094835293905291822055600190600a90620003c26000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600a83522080549092166001179091556014546013546012546200043893620004249290620019b962000651821b17901c565b6200065160201b620019b91790919060201c565b601b8190555062000463601754620004246016546015546200065160201b620019b91790919060201c565b601c819055506200048e601a54620004246019546018546200065160201b620019b91790919060201c565b601d556001600b6000620004aa6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556023549091168152600b909252808220805484166001908117909155308352908220805490931681179092556011906200051a6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526011909252812080549092166001908117909255600d90620005736000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600d845282812080548616600190811790915560235490921681526010909352908220805490931617909155601e5490600890620005df3390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601e546040516200064291815260200190565b60405180910390a350620009bf565b600080620006608385620009a9565b905083811015620006b75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620006eb57607f821691505b6020821081036200070c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200076057600081815260208120601f850160051c810160208610156200073b5750805b601f850160051c820191505b818110156200075c5782815560010162000747565b5050505b505050565b81516001600160401b03811115620007815762000781620006c0565b6200079981620007928454620006d6565b8462000712565b602080601f831160018114620007d15760008415620007b85750858301515b600019600386901b1c1916600185901b1785556200075c565b600085815260208120601f198616915b828110156200080257888601518255948401946001909101908401620007e1565b5085821015620008215787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620008885781600019048211156200086c576200086c62000831565b808516156200087a57918102915b93841c93908002906200084c565b509250929050565b600082620008a157506001620006ba565b81620008b057506000620006ba565b8160018114620008c95760028114620008d457620008f4565b6001915050620006ba565b60ff841115620008e857620008e862000831565b50506001821b620006ba565b5060208310610133831016604e8410600b841016171562000919575081810a620006ba565b62000925838362000847565b80600019048211156200093c576200093c62000831565b029392505050565b60006200095560ff84168362000890565b9392505050565b600081600019048311821515161562000979576200097962000831565b500290565b6000602082840312156200099157600080fd5b81516001600160a01b0381168114620006b757600080fd5b80820180821115620006ba57620006ba62000831565b608051612cd5620009e2600039600081816105f001526110160152612cd56000f3fe6080604052600436106104095760003560e01c80637d73900f11610213578063c469b6dd11610123578063dc44b6a0116100ab578063f0cd1dac1161007a578063f0cd1dac14610c29578063f1d5f51714610c3f578063f2fde38b14610c5f578063f84ba65d14610c7f578063f872858a14610c9f57600080fd5b8063dc44b6a014610b8d578063dd62ed3e14610ba3578063ec28438a14610be9578063ef422a1814610c0957600080fd5b8063c8607952116100f2578063c860795214610aeb578063c867d60b14610b01578063cab0347114610b31578063d158272d14610b47578063da00097d14610b6c57600080fd5b8063c469b6dd14610a7f578063c49b9a8014610a95578063c5d2418914610ab5578063c816841b14610acb57600080fd5b8063a073d37f116101a6578063a5d69d1f11610175578063a5d69d1f146109d9578063a83f53a7146109f9578063a8e1515014610a0f578063a9059cbb14610a3f578063c2d4640e14610a5f57600080fd5b8063a073d37f14610978578063a08e671f1461098d578063a457c2d7146109a3578063a52dc2e7146109c357600080fd5b806388790a68116101e257806388790a681461091a5780638da5cb5b14610930578063914eb66a1461094e57806395d89b411461096357600080fd5b80637d73900f146108ae578063807c2d9c146108ce57806382eefb43146108e4578063844d591c146108fa57600080fd5b80632e97766d11610319578063512f9170116102a15780635881f3ef116102705780635881f3ef1461081657806361a23c69146108365780636ad1fe021461084c57806370a08231146108625780637d1db4a51461089857600080fd5b8063512f91701461079d5780635342acb4146107bd578063557ed1ba146107ed57806357a5802f1461080057600080fd5b80633bbac579116102e85780633bbac579146106dc5780633ecad2711461070c5780634a74bb021461073c5780634cb80fd51461075d57806350b20cac1461077d57600080fd5b80632e97766d14610667578063313ce5671461067a578063395093511461069c5780633b97084a146106bc57600080fd5b806318160ddd1161039c5780632563ae831161036b5780632563ae83146105be57806327c8f835146105de5780632af38605146106125780632b112e49146106325780632c4b23341461064757600080fd5b806318160ddd146105495780631870517a1461055e5780632198cf6c1461057e57806323b872dd1461059e57600080fd5b80630d5e5c87116103d85780630d5e5c87146104b25780631245e347146104d257806314353ed11461050a5780631694505e1461052957600080fd5b806303c0f5d4146104155780630504bc7a1461043757806306fdde0314610457578063095ea7b31461048257600080fd5b3661041057005b600080fd5b34801561042157600080fd5b50610435610430366004612809565b610cc0565b005b34801561044357600080fd5b5061043561045236600461283e565b610d1e565b34801561046357600080fd5b5061046c610d6a565b604051610479919061285b565b60405180910390f35b34801561048e57600080fd5b506104a261049d3660046128a9565b610dfc565b6040519015158152602001610479565b3480156104be57600080fd5b506104356104cd3660046128d5565b610e13565b3480156104de57600080fd5b506006546104f2906001600160a01b031681565b6040516001600160a01b039091168152602001610479565b34801561051657600080fd5b50600c545b604051908152602001610479565b34801561053557600080fd5b506022546104f2906001600160a01b031681565b34801561055557600080fd5b50601e5461051b565b34801561056a57600080fd5b506104356105793660046128d5565b610e68565b34801561058a57600080fd5b50610435610599366004612809565b610eb7565b3480156105aa57600080fd5b506104a26105b9366004612901565b610f0c565b3480156105ca57600080fd5b506104356105d9366004612942565b610f77565b3480156105ea57600080fd5b506104f27f000000000000000000000000000000000000000000000000000000000000000081565b34801561061e57600080fd5b5061043561062d366004612809565b610fbf565b34801561063e57600080fd5b5061051b611014565b34801561065357600080fd5b5061043561066236600461283e565b61105e565b34801561067357600080fd5b504361051b565b34801561068657600080fd5b5060055460405160ff9091168152602001610479565b3480156106a857600080fd5b506104a26106b73660046128a9565b6110aa565b3480156106c857600080fd5b506104356106d736600461295d565b6110e0565b3480156106e857600080fd5b506104a26106f736600461283e565b600e6020526000908152604090205460ff1681565b34801561071857600080fd5b506104a261072736600461283e565b60106020526000908152604090205460ff1681565b34801561074857600080fd5b506023546104a290600160a81b900460ff1681565b34801561076957600080fd5b5061043561077836600461283e565b61110f565b34801561078957600080fd5b50610435610798366004612976565b611161565b3480156107a957600080fd5b506007546104f2906001600160a01b031681565b3480156107c957600080fd5b506104a26107d836600461283e565b600a6020526000908152604090205460ff1681565b3480156107f957600080fd5b504261051b565b34801561080c57600080fd5b5061051b60185481565b34801561082257600080fd5b506104f261083136600461283e565b61120d565b34801561084257600080fd5b5061051b60195481565b34801561085857600080fd5b5061051b600c5481565b34801561086e57600080fd5b5061051b61087d36600461283e565b6001600160a01b031660009081526008602052604090205490565b3480156108a457600080fd5b5061051b601f5481565b3480156108ba57600080fd5b506104356108c936600461295d565b611545565b3480156108da57600080fd5b5061051b60205481565b3480156108f057600080fd5b5061051b601c5481565b34801561090657600080fd5b50610435610915366004612809565b611574565b34801561092657600080fd5b5061051b60155481565b34801561093c57600080fd5b506000546001600160a01b03166104f2565b34801561095a57600080fd5b506104356115c9565b34801561096f57600080fd5b5061046c611643565b34801561098457600080fd5b5060215461051b565b34801561099957600080fd5b5061051b601d5481565b3480156109af57600080fd5b506104a26109be3660046128a9565b611652565b3480156109cf57600080fd5b5061051b600f5481565b3480156109e557600080fd5b506104356109f4366004612942565b6116a1565b348015610a0557600080fd5b5061051b601a5481565b348015610a1b57600080fd5b506104a2610a2a36600461283e565b60116020526000908152604090205460ff1681565b348015610a4b57600080fd5b506104a2610a5a3660046128a9565b6116e9565b348015610a6b57600080fd5b50610435610a7a3660046128d5565b6116f6565b348015610a8b57600080fd5b5061051b60145481565b348015610aa157600080fd5b50610435610ab0366004612942565b611745565b348015610ac157600080fd5b5061051b60135481565b348015610ad757600080fd5b506023546104f2906001600160a01b031681565b348015610af757600080fd5b5061051b60165481565b348015610b0d57600080fd5b506104a2610b1c36600461283e565b600b6020526000908152604090205460ff1681565b348015610b3d57600080fd5b5061051b60175481565b348015610b5357600080fd5b506005546104f29061010090046001600160a01b031681565b348015610b7857600080fd5b506023546104a290600160b01b900460ff1681565b348015610b9957600080fd5b5061051b60125481565b348015610baf57600080fd5b5061051b610bbe3660046129fa565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b348015610bf557600080fd5b50610435610c0436600461295d565b6117c7565b348015610c1557600080fd5b50610435610c24366004612809565b6117f6565b348015610c3557600080fd5b5061051b601b5481565b348015610c4b57600080fd5b50610435610c5a36600461295d565b61184b565b348015610c6b57600080fd5b50610435610c7a36600461283e565b61187a565b348015610c8b57600080fd5b50610435610c9a366004612809565b611964565b348015610cab57600080fd5b506023546104a290600160b81b900460ff1681565b6000546001600160a01b03163314610cf35760405162461bcd60e51b8152600401610cea90612a33565b60405180910390fd5b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610d485760405162461bcd60e51b8152600401610cea90612a33565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b606060038054610d7990612a68565b80601f0160208091040260200160405190810160405280929190818152602001828054610da590612a68565b8015610df25780601f10610dc757610100808354040283529160200191610df2565b820191906000526020600020905b815481529060010190602001808311610dd557829003601f168201915b5050505050905090565b6000610e09338484611a18565b5060015b92915050565b6000546001600160a01b03163314610e3d5760405162461bcd60e51b8152600401610cea90612a33565b601583905560168290556017819055610e6081610e5a85856119b9565b906119b9565b601c55505050565b6000546001600160a01b03163314610e925760405162461bcd60e51b8152600401610cea90612a33565b601283905560138290556014819055610eaf81610e5a85856119b9565b601b55505050565b6000546001600160a01b03163314610ee15760405162461bcd60e51b8152600401610cea90612a33565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000610f19848484611b3c565b50610f6c8433610f6785604051806060016040528060288152602001612c53602891396001600160a01b038a1660009081526009602090815260408083203384529091529020549190611fd8565b611a18565b5060015b9392505050565b6000546001600160a01b03163314610fa15760405162461bcd60e51b8152600401610cea90612a33565b60238054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b03163314610fe95760405162461bcd60e51b8152600401610cea90612a33565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600090815260086020526040812054601e5461105991612012565b905090565b6000546001600160a01b031633146110885760405162461bcd60e51b8152600401610cea90612a33565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526009602090815260408083206001600160a01b03871684529091528120549091610e09918590610f6790866119b9565b6000546001600160a01b0316331461110a5760405162461bcd60e51b8152600401610cea90612a33565b602155565b6000546001600160a01b031633146111395760405162461bcd60e51b8152600401610cea90612a33565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b0316331461118b5760405162461bcd60e51b8152600401610cea90612a33565b60c9821061119857600080fd5b60005b828110156112075781601160008686858181106111ba576111ba612aa2565b90506020020160208101906111cf919061283e565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561120081612ace565b905061119b565b50505050565b600080546001600160a01b031633146112385760405162461bcd60e51b8152600401610cea90612a33565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561127b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129f9190612ae7565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113109190612ae7565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561135b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137f9190612ae7565b91506001600160a01b0382166114d657806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f19190612ae7565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561143e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114629190612ae7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156114af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d39190612ae7565b91505b602380546001600160a01b03199081166001600160a01b03858116918217845560228054909316948116949094179091556000908152600b60209081526040808320805460ff199081166001908117909255945490951683526010909152902080549091169091179055919050565b6000546001600160a01b0316331461156f5760405162461bcd60e51b8152600401610cea90612a33565b600f55565b6000546001600160a01b0316331461159e5760405162461bcd60e51b8152600401610cea90612a33565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115f35760405162461bcd60e51b8152600401610cea90612a33565b6000805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03191661dead179055565b606060048054610d7990612a68565b6000610e093384610f6785604051806060016040528060258152602001612c7b602591393360009081526009602090815260408083206001600160a01b038d1684529091529020549190611fd8565b6000546001600160a01b031633146116cb5760405162461bcd60e51b8152600401610cea90612a33565b60238054911515600160b01b0260ff60b01b19909216919091179055565b6000610f6c338484611b3c565b6000546001600160a01b031633146117205760405162461bcd60e51b8152600401610cea90612a33565b60188390556019829055601a81905561173d81610e5a85856119b9565b601d55505050565b6000546001600160a01b0316331461176f5760405162461bcd60e51b8152600401610cea90612a33565b60238054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906117bc90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146117f15760405162461bcd60e51b8152600401610cea90612a33565b601f55565b6000546001600160a01b031633146118205760405162461bcd60e51b8152600401610cea90612a33565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146118755760405162461bcd60e51b8152600401610cea90612a33565b602055565b6000546001600160a01b031633146118a45760405162461bcd60e51b8152600401610cea90612a33565b6001600160a01b0381166119095760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610cea565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461198e5760405162461bcd60e51b8152600401610cea90612a33565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000806119c68385612b04565b905083811015610f705760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610cea565b6001600160a01b038316611a7a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cea565b6001600160a01b038216611adb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cea565b6001600160a01b0383811660008181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611ba25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cea565b6001600160a01b038316611c045760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cea565b602354600160a01b900460ff1615611c2857611c21848484612054565b9050610f70565b6007546001600160a01b038581169116148015611c5257506023546001600160a01b038481169116145b15611c5c5743600c555b6023546001600160a01b0390811690851603611cac57600f54600c54611c829190612b04565b4311611cac576001600160a01b0383166000908152600e60205260409020805460ff191660011790555b6000546001600160a01b03858116911614801590611cd857506000546001600160a01b03848116911614155b15611ce757611ce7848361213a565b6001600160a01b03841660009081526011602052604090205460ff16158015611d2957506001600160a01b03831660009081526011602052604090205460ff16155b15611d9f576000805b60008113611d8e5760408051602081018390529081018590524260608201526080016040516020818303038152906040528051906020012060001c9150611d7b86836064612054565b5080611d8681612b17565b915050611d32565b50611d9b61012c84612b2f565b9250505b3060009081526008602052604090205460215481108015908190611dcd5750602354600160a01b900460ff16155b8015611df257506001600160a01b03861660009081526010602052604090205460ff16155b8015611e075750602354600160a81b900460ff165b15611e2d57602354600160b01b900460ff1615611e245760215491505b611e2d82612206565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260089091529190912054611e7f918690611fd8565b6001600160a01b038716600090815260086020908152604080832093909355600a90529081205460ff1680611ecc57506001600160a01b0386166000908152600a602052604090205460ff165b611ee057611edb878787612341565b611ee2565b845b602354909150600160b81b900460ff168015611f1757506001600160a01b0386166000908152600b602052604090205460ff16155b15611f4d57602054611f4282610e5a896001600160a01b031660009081526008602052604090205490565b1115611f4d57600080fd5b6001600160a01b038616600090815260086020526040902054611f7090826119b9565b6001600160a01b0380881660008181526008602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611fc49085815260200190565b60405180910390a360019350505050610f70565b60008184841115611ffc5760405162461bcd60e51b8152600401610cea919061285b565b5060006120098486612b2f565b95945050505050565b6000610f7083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fd8565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546120a5918490611fd8565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546120d490836119b9565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121289086815260200190565b60405180910390a35060019392505050565b6001600160a01b0382166000908152600e602052604090205460ff16156121995760405162461bcd60e51b815260206004820152601360248201527246726f6d2063616e6e6f7420626520626f742160681b6044820152606401610cea565b601f54811115806121c257506001600160a01b0382166000908152600d602052604090205460ff165b6122025760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610cea565b5050565b6023805460ff60a01b1916600160a01b179055601d5460185460009161223c916002916122369182908790612447565b906124c9565b9050600061224a8383612012565b90506122558161250b565b60185447906000906122759061226c9060026124c9565b601d5490612012565b905060006122976002612236846122366018548861244790919063ffffffff16565b905060006122b483612236601a548761244790919063ffffffff16565b905060006122cc826122c68786612012565b90612012565b905080156122ef576005546122ef9061010090046001600160a01b03168261269e565b811561230b5760065461230b906001600160a01b03168361269e565b60008311801561231b5750600087115b1561232a5761232a87846126d9565b50506023805460ff60a01b19169055505050505050565b6001600160a01b038316600090815260106020526040812054819060ff16156123855761237e6064612236601b548661244790919063ffffffff16565b90506123c3565b6001600160a01b03841660009081526010602052604090205460ff16156123c3576123c06064612236601c548661244790919063ffffffff16565b90505b801561243d57306000908152600860205260409020546123e390826119b9565b30600081815260086020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124349085815260200190565b60405180910390a35b6120098382612012565b60008260000361245957506000610e0d565b60006124658385612b42565b9050826124728583612b61565b14610f705760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610cea565b6000610f7083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127ae565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061254057612540612aa2565b6001600160a01b03928316602091820292909201810191909152602254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612599573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125bd9190612ae7565b816001815181106125d0576125d0612aa2565b6001600160a01b0392831660209182029290920101526022546125f69130911684611a18565b60225460405163791ac94760e01b81526001600160a01b039091169063791ac9479061262f908590600090869030904290600401612bc7565b600060405180830381600087803b15801561264957600080fd5b505af115801561265d573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612692929190612c03565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156126d4573d6000803e3d6000fd5b505050565b6022546126f19030906001600160a01b031684611a18565b6022546001600160a01b031663f305d71982308560008061271a6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612782573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127a79190612c24565b5050505050565b600081836127cf5760405162461bcd60e51b8152600401610cea919061285b565b5060006120098486612b61565b6001600160a01b03811681146127f157600080fd5b50565b8035801515811461280457600080fd5b919050565b6000806040838503121561281c57600080fd5b8235612827816127dc565b9150612835602084016127f4565b90509250929050565b60006020828403121561285057600080fd5b8135610f70816127dc565b600060208083528351808285015260005b818110156128885785810183015185820160400152820161286c565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156128bc57600080fd5b82356128c7816127dc565b946020939093013593505050565b6000806000606084860312156128ea57600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561291657600080fd5b8335612921816127dc565b92506020840135612931816127dc565b929592945050506040919091013590565b60006020828403121561295457600080fd5b610f70826127f4565b60006020828403121561296f57600080fd5b5035919050565b60008060006040848603121561298b57600080fd5b833567ffffffffffffffff808211156129a357600080fd5b818601915086601f8301126129b757600080fd5b8135818111156129c657600080fd5b8760208260051b85010111156129db57600080fd5b6020928301955093506129f191860190506127f4565b90509250925092565b60008060408385031215612a0d57600080fd5b8235612a18816127dc565b91506020830135612a28816127dc565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680612a7c57607f821691505b602082108103612a9c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612ae057612ae0612ab8565b5060010190565b600060208284031215612af957600080fd5b8151610f70816127dc565b80820180821115610e0d57610e0d612ab8565b60006001600160ff1b018201612ae057612ae0612ab8565b81810381811115610e0d57610e0d612ab8565b6000816000190483118215151615612b5c57612b5c612ab8565b500290565b600082612b7e57634e487b7160e01b600052601260045260246000fd5b500490565b600081518084526020808501945080840160005b83811015612bbc5781516001600160a01b031687529582019590820190600101612b97565b509495945050505050565b85815284602082015260a060408201526000612be660a0830186612b83565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000612c1c6040830184612b83565b949350505050565b600080600060608486031215612c3957600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d75b551922831c7696a15314f8985a4307b5fd884de54894121d28a4ab9fac6164736f6c63430008100033

Deployed Bytecode

0x6080604052600436106104095760003560e01c80637d73900f11610213578063c469b6dd11610123578063dc44b6a0116100ab578063f0cd1dac1161007a578063f0cd1dac14610c29578063f1d5f51714610c3f578063f2fde38b14610c5f578063f84ba65d14610c7f578063f872858a14610c9f57600080fd5b8063dc44b6a014610b8d578063dd62ed3e14610ba3578063ec28438a14610be9578063ef422a1814610c0957600080fd5b8063c8607952116100f2578063c860795214610aeb578063c867d60b14610b01578063cab0347114610b31578063d158272d14610b47578063da00097d14610b6c57600080fd5b8063c469b6dd14610a7f578063c49b9a8014610a95578063c5d2418914610ab5578063c816841b14610acb57600080fd5b8063a073d37f116101a6578063a5d69d1f11610175578063a5d69d1f146109d9578063a83f53a7146109f9578063a8e1515014610a0f578063a9059cbb14610a3f578063c2d4640e14610a5f57600080fd5b8063a073d37f14610978578063a08e671f1461098d578063a457c2d7146109a3578063a52dc2e7146109c357600080fd5b806388790a68116101e257806388790a681461091a5780638da5cb5b14610930578063914eb66a1461094e57806395d89b411461096357600080fd5b80637d73900f146108ae578063807c2d9c146108ce57806382eefb43146108e4578063844d591c146108fa57600080fd5b80632e97766d11610319578063512f9170116102a15780635881f3ef116102705780635881f3ef1461081657806361a23c69146108365780636ad1fe021461084c57806370a08231146108625780637d1db4a51461089857600080fd5b8063512f91701461079d5780635342acb4146107bd578063557ed1ba146107ed57806357a5802f1461080057600080fd5b80633bbac579116102e85780633bbac579146106dc5780633ecad2711461070c5780634a74bb021461073c5780634cb80fd51461075d57806350b20cac1461077d57600080fd5b80632e97766d14610667578063313ce5671461067a578063395093511461069c5780633b97084a146106bc57600080fd5b806318160ddd1161039c5780632563ae831161036b5780632563ae83146105be57806327c8f835146105de5780632af38605146106125780632b112e49146106325780632c4b23341461064757600080fd5b806318160ddd146105495780631870517a1461055e5780632198cf6c1461057e57806323b872dd1461059e57600080fd5b80630d5e5c87116103d85780630d5e5c87146104b25780631245e347146104d257806314353ed11461050a5780631694505e1461052957600080fd5b806303c0f5d4146104155780630504bc7a1461043757806306fdde0314610457578063095ea7b31461048257600080fd5b3661041057005b600080fd5b34801561042157600080fd5b50610435610430366004612809565b610cc0565b005b34801561044357600080fd5b5061043561045236600461283e565b610d1e565b34801561046357600080fd5b5061046c610d6a565b604051610479919061285b565b60405180910390f35b34801561048e57600080fd5b506104a261049d3660046128a9565b610dfc565b6040519015158152602001610479565b3480156104be57600080fd5b506104356104cd3660046128d5565b610e13565b3480156104de57600080fd5b506006546104f2906001600160a01b031681565b6040516001600160a01b039091168152602001610479565b34801561051657600080fd5b50600c545b604051908152602001610479565b34801561053557600080fd5b506022546104f2906001600160a01b031681565b34801561055557600080fd5b50601e5461051b565b34801561056a57600080fd5b506104356105793660046128d5565b610e68565b34801561058a57600080fd5b50610435610599366004612809565b610eb7565b3480156105aa57600080fd5b506104a26105b9366004612901565b610f0c565b3480156105ca57600080fd5b506104356105d9366004612942565b610f77565b3480156105ea57600080fd5b506104f27f000000000000000000000000000000000000000000000000000000000000dead81565b34801561061e57600080fd5b5061043561062d366004612809565b610fbf565b34801561063e57600080fd5b5061051b611014565b34801561065357600080fd5b5061043561066236600461283e565b61105e565b34801561067357600080fd5b504361051b565b34801561068657600080fd5b5060055460405160ff9091168152602001610479565b3480156106a857600080fd5b506104a26106b73660046128a9565b6110aa565b3480156106c857600080fd5b506104356106d736600461295d565b6110e0565b3480156106e857600080fd5b506104a26106f736600461283e565b600e6020526000908152604090205460ff1681565b34801561071857600080fd5b506104a261072736600461283e565b60106020526000908152604090205460ff1681565b34801561074857600080fd5b506023546104a290600160a81b900460ff1681565b34801561076957600080fd5b5061043561077836600461283e565b61110f565b34801561078957600080fd5b50610435610798366004612976565b611161565b3480156107a957600080fd5b506007546104f2906001600160a01b031681565b3480156107c957600080fd5b506104a26107d836600461283e565b600a6020526000908152604090205460ff1681565b3480156107f957600080fd5b504261051b565b34801561080c57600080fd5b5061051b60185481565b34801561082257600080fd5b506104f261083136600461283e565b61120d565b34801561084257600080fd5b5061051b60195481565b34801561085857600080fd5b5061051b600c5481565b34801561086e57600080fd5b5061051b61087d36600461283e565b6001600160a01b031660009081526008602052604090205490565b3480156108a457600080fd5b5061051b601f5481565b3480156108ba57600080fd5b506104356108c936600461295d565b611545565b3480156108da57600080fd5b5061051b60205481565b3480156108f057600080fd5b5061051b601c5481565b34801561090657600080fd5b50610435610915366004612809565b611574565b34801561092657600080fd5b5061051b60155481565b34801561093c57600080fd5b506000546001600160a01b03166104f2565b34801561095a57600080fd5b506104356115c9565b34801561096f57600080fd5b5061046c611643565b34801561098457600080fd5b5060215461051b565b34801561099957600080fd5b5061051b601d5481565b3480156109af57600080fd5b506104a26109be3660046128a9565b611652565b3480156109cf57600080fd5b5061051b600f5481565b3480156109e557600080fd5b506104356109f4366004612942565b6116a1565b348015610a0557600080fd5b5061051b601a5481565b348015610a1b57600080fd5b506104a2610a2a36600461283e565b60116020526000908152604090205460ff1681565b348015610a4b57600080fd5b506104a2610a5a3660046128a9565b6116e9565b348015610a6b57600080fd5b50610435610a7a3660046128d5565b6116f6565b348015610a8b57600080fd5b5061051b60145481565b348015610aa157600080fd5b50610435610ab0366004612942565b611745565b348015610ac157600080fd5b5061051b60135481565b348015610ad757600080fd5b506023546104f2906001600160a01b031681565b348015610af757600080fd5b5061051b60165481565b348015610b0d57600080fd5b506104a2610b1c36600461283e565b600b6020526000908152604090205460ff1681565b348015610b3d57600080fd5b5061051b60175481565b348015610b5357600080fd5b506005546104f29061010090046001600160a01b031681565b348015610b7857600080fd5b506023546104a290600160b01b900460ff1681565b348015610b9957600080fd5b5061051b60125481565b348015610baf57600080fd5b5061051b610bbe3660046129fa565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b348015610bf557600080fd5b50610435610c0436600461295d565b6117c7565b348015610c1557600080fd5b50610435610c24366004612809565b6117f6565b348015610c3557600080fd5b5061051b601b5481565b348015610c4b57600080fd5b50610435610c5a36600461295d565b61184b565b348015610c6b57600080fd5b50610435610c7a36600461283e565b61187a565b348015610c8b57600080fd5b50610435610c9a366004612809565b611964565b348015610cab57600080fd5b506023546104a290600160b81b900460ff1681565b6000546001600160a01b03163314610cf35760405162461bcd60e51b8152600401610cea90612a33565b60405180910390fd5b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610d485760405162461bcd60e51b8152600401610cea90612a33565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b606060038054610d7990612a68565b80601f0160208091040260200160405190810160405280929190818152602001828054610da590612a68565b8015610df25780601f10610dc757610100808354040283529160200191610df2565b820191906000526020600020905b815481529060010190602001808311610dd557829003601f168201915b5050505050905090565b6000610e09338484611a18565b5060015b92915050565b6000546001600160a01b03163314610e3d5760405162461bcd60e51b8152600401610cea90612a33565b601583905560168290556017819055610e6081610e5a85856119b9565b906119b9565b601c55505050565b6000546001600160a01b03163314610e925760405162461bcd60e51b8152600401610cea90612a33565b601283905560138290556014819055610eaf81610e5a85856119b9565b601b55505050565b6000546001600160a01b03163314610ee15760405162461bcd60e51b8152600401610cea90612a33565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000610f19848484611b3c565b50610f6c8433610f6785604051806060016040528060288152602001612c53602891396001600160a01b038a1660009081526009602090815260408083203384529091529020549190611fd8565b611a18565b5060015b9392505050565b6000546001600160a01b03163314610fa15760405162461bcd60e51b8152600401610cea90612a33565b60238054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b03163314610fe95760405162461bcd60e51b8152600401610cea90612a33565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b0316600090815260086020526040812054601e5461105991612012565b905090565b6000546001600160a01b031633146110885760405162461bcd60e51b8152600401610cea90612a33565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526009602090815260408083206001600160a01b03871684529091528120549091610e09918590610f6790866119b9565b6000546001600160a01b0316331461110a5760405162461bcd60e51b8152600401610cea90612a33565b602155565b6000546001600160a01b031633146111395760405162461bcd60e51b8152600401610cea90612a33565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b0316331461118b5760405162461bcd60e51b8152600401610cea90612a33565b60c9821061119857600080fd5b60005b828110156112075781601160008686858181106111ba576111ba612aa2565b90506020020160208101906111cf919061283e565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561120081612ace565b905061119b565b50505050565b600080546001600160a01b031633146112385760405162461bcd60e51b8152600401610cea90612a33565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561127b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129f9190612ae7565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113109190612ae7565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561135b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137f9190612ae7565b91506001600160a01b0382166114d657806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f19190612ae7565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561143e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114629190612ae7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156114af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d39190612ae7565b91505b602380546001600160a01b03199081166001600160a01b03858116918217845560228054909316948116949094179091556000908152600b60209081526040808320805460ff199081166001908117909255945490951683526010909152902080549091169091179055919050565b6000546001600160a01b0316331461156f5760405162461bcd60e51b8152600401610cea90612a33565b600f55565b6000546001600160a01b0316331461159e5760405162461bcd60e51b8152600401610cea90612a33565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115f35760405162461bcd60e51b8152600401610cea90612a33565b6000805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03191661dead179055565b606060048054610d7990612a68565b6000610e093384610f6785604051806060016040528060258152602001612c7b602591393360009081526009602090815260408083206001600160a01b038d1684529091529020549190611fd8565b6000546001600160a01b031633146116cb5760405162461bcd60e51b8152600401610cea90612a33565b60238054911515600160b01b0260ff60b01b19909216919091179055565b6000610f6c338484611b3c565b6000546001600160a01b031633146117205760405162461bcd60e51b8152600401610cea90612a33565b60188390556019829055601a81905561173d81610e5a85856119b9565b601d55505050565b6000546001600160a01b0316331461176f5760405162461bcd60e51b8152600401610cea90612a33565b60238054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906117bc90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146117f15760405162461bcd60e51b8152600401610cea90612a33565b601f55565b6000546001600160a01b031633146118205760405162461bcd60e51b8152600401610cea90612a33565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146118755760405162461bcd60e51b8152600401610cea90612a33565b602055565b6000546001600160a01b031633146118a45760405162461bcd60e51b8152600401610cea90612a33565b6001600160a01b0381166119095760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610cea565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461198e5760405162461bcd60e51b8152600401610cea90612a33565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000806119c68385612b04565b905083811015610f705760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610cea565b6001600160a01b038316611a7a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cea565b6001600160a01b038216611adb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cea565b6001600160a01b0383811660008181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611ba25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cea565b6001600160a01b038316611c045760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cea565b602354600160a01b900460ff1615611c2857611c21848484612054565b9050610f70565b6007546001600160a01b038581169116148015611c5257506023546001600160a01b038481169116145b15611c5c5743600c555b6023546001600160a01b0390811690851603611cac57600f54600c54611c829190612b04565b4311611cac576001600160a01b0383166000908152600e60205260409020805460ff191660011790555b6000546001600160a01b03858116911614801590611cd857506000546001600160a01b03848116911614155b15611ce757611ce7848361213a565b6001600160a01b03841660009081526011602052604090205460ff16158015611d2957506001600160a01b03831660009081526011602052604090205460ff16155b15611d9f576000805b60008113611d8e5760408051602081018390529081018590524260608201526080016040516020818303038152906040528051906020012060001c9150611d7b86836064612054565b5080611d8681612b17565b915050611d32565b50611d9b61012c84612b2f565b9250505b3060009081526008602052604090205460215481108015908190611dcd5750602354600160a01b900460ff16155b8015611df257506001600160a01b03861660009081526010602052604090205460ff16155b8015611e075750602354600160a81b900460ff165b15611e2d57602354600160b01b900460ff1615611e245760215491505b611e2d82612206565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260089091529190912054611e7f918690611fd8565b6001600160a01b038716600090815260086020908152604080832093909355600a90529081205460ff1680611ecc57506001600160a01b0386166000908152600a602052604090205460ff165b611ee057611edb878787612341565b611ee2565b845b602354909150600160b81b900460ff168015611f1757506001600160a01b0386166000908152600b602052604090205460ff16155b15611f4d57602054611f4282610e5a896001600160a01b031660009081526008602052604090205490565b1115611f4d57600080fd5b6001600160a01b038616600090815260086020526040902054611f7090826119b9565b6001600160a01b0380881660008181526008602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611fc49085815260200190565b60405180910390a360019350505050610f70565b60008184841115611ffc5760405162461bcd60e51b8152600401610cea919061285b565b5060006120098486612b2f565b95945050505050565b6000610f7083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fd8565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546120a5918490611fd8565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546120d490836119b9565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121289086815260200190565b60405180910390a35060019392505050565b6001600160a01b0382166000908152600e602052604090205460ff16156121995760405162461bcd60e51b815260206004820152601360248201527246726f6d2063616e6e6f7420626520626f742160681b6044820152606401610cea565b601f54811115806121c257506001600160a01b0382166000908152600d602052604090205460ff165b6122025760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610cea565b5050565b6023805460ff60a01b1916600160a01b179055601d5460185460009161223c916002916122369182908790612447565b906124c9565b9050600061224a8383612012565b90506122558161250b565b60185447906000906122759061226c9060026124c9565b601d5490612012565b905060006122976002612236846122366018548861244790919063ffffffff16565b905060006122b483612236601a548761244790919063ffffffff16565b905060006122cc826122c68786612012565b90612012565b905080156122ef576005546122ef9061010090046001600160a01b03168261269e565b811561230b5760065461230b906001600160a01b03168361269e565b60008311801561231b5750600087115b1561232a5761232a87846126d9565b50506023805460ff60a01b19169055505050505050565b6001600160a01b038316600090815260106020526040812054819060ff16156123855761237e6064612236601b548661244790919063ffffffff16565b90506123c3565b6001600160a01b03841660009081526010602052604090205460ff16156123c3576123c06064612236601c548661244790919063ffffffff16565b90505b801561243d57306000908152600860205260409020546123e390826119b9565b30600081815260086020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124349085815260200190565b60405180910390a35b6120098382612012565b60008260000361245957506000610e0d565b60006124658385612b42565b9050826124728583612b61565b14610f705760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610cea565b6000610f7083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127ae565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061254057612540612aa2565b6001600160a01b03928316602091820292909201810191909152602254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612599573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125bd9190612ae7565b816001815181106125d0576125d0612aa2565b6001600160a01b0392831660209182029290920101526022546125f69130911684611a18565b60225460405163791ac94760e01b81526001600160a01b039091169063791ac9479061262f908590600090869030904290600401612bc7565b600060405180830381600087803b15801561264957600080fd5b505af115801561265d573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612692929190612c03565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156126d4573d6000803e3d6000fd5b505050565b6022546126f19030906001600160a01b031684611a18565b6022546001600160a01b031663f305d71982308560008061271a6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612782573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127a79190612c24565b5050505050565b600081836127cf5760405162461bcd60e51b8152600401610cea919061285b565b5060006120098486612b61565b6001600160a01b03811681146127f157600080fd5b50565b8035801515811461280457600080fd5b919050565b6000806040838503121561281c57600080fd5b8235612827816127dc565b9150612835602084016127f4565b90509250929050565b60006020828403121561285057600080fd5b8135610f70816127dc565b600060208083528351808285015260005b818110156128885785810183015185820160400152820161286c565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156128bc57600080fd5b82356128c7816127dc565b946020939093013593505050565b6000806000606084860312156128ea57600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561291657600080fd5b8335612921816127dc565b92506020840135612931816127dc565b929592945050506040919091013590565b60006020828403121561295457600080fd5b610f70826127f4565b60006020828403121561296f57600080fd5b5035919050565b60008060006040848603121561298b57600080fd5b833567ffffffffffffffff808211156129a357600080fd5b818601915086601f8301126129b757600080fd5b8135818111156129c657600080fd5b8760208260051b85010111156129db57600080fd5b6020928301955093506129f191860190506127f4565b90509250925092565b60008060408385031215612a0d57600080fd5b8235612a18816127dc565b91506020830135612a28816127dc565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680612a7c57607f821691505b602082108103612a9c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612ae057612ae0612ab8565b5060010190565b600060208284031215612af957600080fd5b8151610f70816127dc565b80820180821115610e0d57610e0d612ab8565b60006001600160ff1b018201612ae057612ae0612ab8565b81810381811115610e0d57610e0d612ab8565b6000816000190483118215151615612b5c57612b5c612ab8565b500290565b600082612b7e57634e487b7160e01b600052601260045260246000fd5b500490565b600081518084526020808501945080840160005b83811015612bbc5781516001600160a01b031687529582019590820190600101612b97565b509495945050505050565b85815284602082015260a060408201526000612be660a0830186612b83565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000612c1c6040830184612b83565b949350505050565b600080600060608486031215612c3957600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d75b551922831c7696a15314f8985a4307b5fd884de54894121d28a4ab9fac6164736f6c63430008100033

Deployed Bytecode Sourcemap

14439:16807:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23683:109;;;;;;;;;;-1:-1:-1;23683:109:0;;;;;:::i;:::-;;:::i;:::-;;23476:100;;;;;;;;;;-1:-1:-1;23476:100:0;;;;;:::i;:::-;;:::i;18402:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19696:161;;;;;;;;;;-1:-1:-1;19696:161:0;;;;;:::i;:::-;;:::i;:::-;;;1925:14:1;;1918:22;1900:41;;1888:2;1873:18;19696:161:0;1760:187:1;20970:340:0;;;;;;;;;;-1:-1:-1;20970:340:0;;;;;:::i;:::-;;:::i;14799:94::-;;;;;;;;;;-1:-1:-1;14799:94:0;;;;-1:-1:-1;;;;;14799:94:0;;;;;;-1:-1:-1;;;;;2453:32:1;;;2435:51;;2423:2;2408:18;14799:94:0;2273:219:1;23802:80:0;;;;;;;;;;-1:-1:-1;23870:4:0;;23802:80;;;2643:25:1;;;2631:2;2616:18;23802:80:0;2497:177:1;16328:41:0;;;;;;;;;;-1:-1:-1;16328:41:0;;;;-1:-1:-1;;;;;16328:41:0;;;18679:100;;;;;;;;;;-1:-1:-1;18759:12:0;;18679:100;;20629:333;;;;;;;;;;-1:-1:-1;20629:333:0;;;;;:::i;:::-;;:::i;21932:135::-;;;;;;;;;;-1:-1:-1;21932:135:0;;;;;:::i;:::-;;:::i;25207:313::-;;;;;;;;;;-1:-1:-1;25207:313:0;;;;;:::i;:::-;;:::i;21811:113::-;;;;;;;;;;-1:-1:-1;21811:113:0;;;;;:::i;:::-;;:::i;14900:81::-;;;;;;;;;;;;;;;23063:135;;;;;;;;;;-1:-1:-1;23063:135:0;;;;;:::i;:::-;;:::i;22917:128::-;;;;;;;;;;;;;:::i;22464:129::-;;;;;;;;;;-1:-1:-1;22464:129:0;;;;;:::i;:::-;;:::i;23890:87::-;;;;;;;;;;-1:-1:-1;23957:12:0;23890:87;;18588:83;;;;;;;;;;-1:-1:-1;18654:9:0;;18588:83;;18654:9;;;;3910:36:1;;3898:2;3883:18;18588:83:0;3768:184:1;19065:218:0;;;;;;;;;;-1:-1:-1;19065:218:0;;;;;:::i;:::-;;:::i;22185:124::-;;;;;;;;;;-1:-1:-1;22185:124:0;;;;;:::i;:::-;;:::i;15349:38::-;;;;;;;;;;-1:-1:-1;15349:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15430:45;;;;;;;;;;-1:-1:-1;15430:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16443:40;;;;;;;;;;-1:-1:-1;16443:40:0;;;;-1:-1:-1;;;16443:40:0;;;;;;22317:139;;;;;;;;;;-1:-1:-1;22317:139:0;;;;;:::i;:::-;;:::i;23206:260::-;;;;;;;;;;-1:-1:-1;23206:260:0;;;;;:::i;:::-;;:::i;14988:23::-;;;;;;;;;;-1:-1:-1;14988:23:0;;;;-1:-1:-1;;;;;14988:23:0;;;15147:50;;;;;;;;;;-1:-1:-1;15147:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6508:90;;;;;;;;;;-1:-1:-1;6575:15:0;6508:90;;15794:34;;;;;;;;;;;;;;;;24123:807;;;;;;;;;;-1:-1:-1;24123:807:0;;;;;:::i;:::-;;:::i;15835:34::-;;;;;;;;;;;;;;;;15265:23;;;;;;;;;;;;;;;;18787:119;;;;;;;;;;-1:-1:-1;18787:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;18880:18:0;18853:7;18880:18;;;:9;:18;;;;;;;18787:119;16122:58;;;;;;;;;;;;;;;;23584:91;;;;;;;;;;-1:-1:-1;23584:91:0;;;;;:::i;:::-;;:::i;16188:58::-;;;;;;;;;;;;;;;;15959:38;;;;;;;;;;;;;;;;20210:129;;;;;;;;;;-1:-1:-1;20210:129:0;;;;;:::i;:::-;;:::i;15668:36::-;;;;;;;;;;;;;;;;5792:79;;;;;;;;;;-1:-1:-1;5830:7:0;5857:6;-1:-1:-1;;;;;5857:6:0;5792:79;;6017:227;;;;;;;;;;;;;:::i;18493:87::-;;;;;;;;;;;;;:::i;19568:120::-;;;;;;;;;;-1:-1:-1;19657:23:0;;19568:120;;16004:44;;;;;;;;;;;;;;;;19291:269;;;;;;;;;;-1:-1:-1;19291:269:0;;;;;:::i;:::-;;:::i;15396:25::-;;;;;;;;;;;;;;;;22780:125;;;;;;;;;;-1:-1:-1;22780:125:0;;;;;:::i;:::-;;:::i;15876:30::-;;;;;;;;;;;;;;;;15482:50;;;;;;;;;;-1:-1:-1;15482:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25032:167;;;;;;;;;;-1:-1:-1;25032:167:0;;;;;:::i;:::-;;:::i;21322:358::-;;;;;;;;;;-1:-1:-1;21322:358:0;;;;;:::i;:::-;;:::i;15625:30::-;;;;;;;;;;;;;;;;22601:171;;;;;;;;;;-1:-1:-1;22601:171:0;;;;;:::i;:::-;;:::i;15583:35::-;;;;;;;;;;;;;;;;16376:26;;;;;;;;;;-1:-1:-1;16376:26:0;;;;-1:-1:-1;;;;;16376:26:0;;;15711:36;;;;;;;;;;;;;;;;15204:52;;;;;;;;;;-1:-1:-1;15204:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15754:31;;;;;;;;;;;;;;;;14693:99;;;;;;;;;;-1:-1:-1;14693:99:0;;;;;;;-1:-1:-1;;;;;14693:99:0;;;16490:45;;;;;;;;;;-1:-1:-1;16490:45:0;;;;-1:-1:-1;;;16490:45:0;;;;;;15541:35;;;;;;;;;;;;;;;;18914:143;;;;;;;;;;-1:-1:-1;18914:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;19022:18:0;;;18995:7;19022:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18914:143;21692:111;;;;;;;;;;-1:-1:-1;21692:111:0;;;;;:::i;:::-;;:::i;20486:135::-;;;;;;;;;;-1:-1:-1;20486:135:0;;;;;:::i;:::-;;:::i;15915:37::-;;;;;;;;;;;;;;;;22075:102;;;;;;;;;;-1:-1:-1;22075:102:0;;;;;:::i;:::-;;:::i;6252:244::-;;;;;;;;;;-1:-1:-1;6252:244:0;;;;;:::i;:::-;;:::i;20347:127::-;;;;;;;;;;-1:-1:-1;20347:127:0;;;;;:::i;:::-;;:::i;16542:36::-;;;;;;;;;;-1:-1:-1;16542:36:0;;;;-1:-1:-1;;;16542:36:0;;;;;;23683:109;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;23762:13:0;;;::::1;;::::0;;;:5:::1;:13;::::0;;;;:22;;-1:-1:-1;;23762:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23683:109::o;23476:100::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;23548:8:::1;:20:::0;;-1:-1:-1;;;;;;23548:20:0::1;-1:-1:-1::0;;;;;23548:20:0;;;::::1;::::0;;;::::1;::::0;;23476:100::o;18402:83::-;18439:13;18472:5;18465:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18402:83;:::o;19696:161::-;19771:4;19788:39;198:10;19811:7;19820:6;19788:8;:39::i;:::-;-1:-1:-1;19845:4:0;19696:161;;;;;:::o;20970:340::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;21093:17:::1;:35:::0;;;21139:17:::1;:35:::0;;;21185:12:::1;:25:::0;;;21244:58:::1;21200:10:::0;21244:40:::1;21113:15:::0;21159;21244:21:::1;:40::i;:::-;:44:::0;::::1;:58::i;:::-;21223:18;:79:::0;-1:-1:-1;;;20970:340:0:o;20629:333::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;20752:16:::1;:34:::0;;;20797:16:::1;:34:::0;;;20842:11:::1;:24:::0;;;20899:55:::1;20856:10:::0;20899:38:::1;20771:15:::0;20816;20899:20:::1;:38::i;:55::-;20879:17;:75:::0;-1:-1:-1;;;20629:333:0:o;21932:135::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22023:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;22023:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21932:135::o;25207:313::-;25305:4;25322:36;25332:6;25340:9;25351:6;25322:9;:36::i;:::-;-1:-1:-1;25369:121:0;25378:6;198:10;25400:89;25438:6;25400:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25400:19:0;;;;;;:11;:19;;;;;;;;198:10;25400:33;;;;;;;;;;:37;:89::i;:::-;25369:8;:121::i;:::-;-1:-1:-1;25508:4:0;25207:313;;;;;;:::o;21811:113::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;21889:16:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;21889:27:0::1;-1:-1:-1::0;;;;21889:27:0;;::::1;::::0;;;::::1;::::0;;21811:113::o;23063:135::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23153:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;23153:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23063:135::o;22917:128::-;23024:11;-1:-1:-1;;;;;18880:18:0;22970:7;18880:18;;;:9;:18;;;;;;22997:12;;:40;;:16;:40::i;:::-;22990:47;;22917:128;:::o;22464:129::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;22546:17:::1;:39:::0;;-1:-1:-1;;;;;;22546:39:0::1;-1:-1:-1::0;;;;;22546:39:0;;;::::1;::::0;;;::::1;::::0;;22464:129::o;19065:218::-;198:10;19153:4;19202:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19202:34:0;;;;;;;;;;19153:4;;19170:83;;19193:7;;19202:50;;19241:10;19202:38;:50::i;22185:124::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;22267:23:::1;:34:::0;22185:124::o;22317:139::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;22404:22:::1;:44:::0;;-1:-1:-1;;;;;22404:44:0;;::::1;;;-1:-1:-1::0;;;;;;22404:44:0;;::::1;::::0;;;::::1;::::0;;22317:139::o;23206:260::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;23334:3:::1;23315:22:::0;::::1;23307:31;;;::::0;::::1;;23354:9;23349:110;23365:20:::0;;::::1;23349:110;;;23441:6;23407:17;:31;23425:9;;23435:1;23425:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23407:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;23407:31:0;:40;;-1:-1:-1;;23407:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23387:3:::1;::::0;::::1;:::i;:::-;;;23349:110;;;;23206:260:::0;;;:::o;24123:807::-;24203:22;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;24240:35:::1;24297:16;24240:74;;24363:16;-1:-1:-1::0;;;;;24363:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24345:53:0::1;;24407:4;24414:16;-1:-1:-1::0;;;;;24414:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24345:93;::::0;-1:-1:-1;;;;;;24345:93:0::1;::::0;;;;;;-1:-1:-1;;;;;6865:15:1;;;24345:93:0::1;::::0;::::1;6847:34:1::0;6917:15;;6897:18;;;6890:43;6782:18;;24345:93:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24328:110:::0;-1:-1:-1;;;;;;24454:28:0;::::1;24451:225;;24568:16;-1:-1:-1::0;;;;;24568:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24550:74:0::1;;24633:4;24640:16;-1:-1:-1::0;;;;;24640:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24550:114;::::0;-1:-1:-1;;;;;;24550:114:0::1;::::0;;;;;;-1:-1:-1;;;;;6865:15:1;;;24550:114:0::1;::::0;::::1;6847:34:1::0;6917:15;;6897:18;;;6890:43;6782:18;;24550:114:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24533:131;;24451:225;24688:11;:28:::0;;-1:-1:-1;;;;;;24688:28:0;;::::1;-1:-1:-1::0;;;;;24688:28:0;;::::1;::::0;;::::1;::::0;;24750:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;24822:41:0;;;:19:::1;:41;::::0;;;;;;;:48;;-1:-1:-1;;24822:48:0;;::::1;-1:-1:-1::0;24822:48:0;;::::1;::::0;;;24902:11;;;;::::1;24881:34:::0;;:12:::1;:34:::0;;;;;:41;;;;::::1;::::0;;::::1;::::0;;24688:28;24702:14;-1:-1:-1;24123:807:0:o;23584:91::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;23651:6:::1;:16:::0;23584:91::o;20210:129::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20299:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:32;;-1:-1:-1;;20299:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20210:129::o;6017:227::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;6105:6:::1;::::0;;6084:81:::1;::::0;6121:42:::1;::::0;-1:-1:-1;;;;;6105:6:0;;::::1;::::0;6084:81:::1;::::0;::::1;6176:6;:60:::0;;-1:-1:-1;;;;;;6176:60:0::1;6193:42;6176:60;::::0;;6017:227::o;18493:87::-;18532:13;18565:7;18558:14;;;;;:::i;19291:269::-;19384:4;19401:129;198:10;19424:7;19433:96;19472:15;19433:96;;;;;;;;;;;;;;;;;198:10;19433:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19433:34:0;;;;;;;;;;;;:38;:96::i;22780:125::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;22861:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;22861:36:0::1;-1:-1:-1::0;;;;22861:36:0;;::::1;::::0;;;::::1;::::0;;22780:125::o;25032:167::-;25110:4;25127:42;198:10;25151:9;25162:6;25127:9;:42::i;21322:358::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;21463:15:::1;:35:::0;;;21509:15:::1;:35:::0;;;21555:10:::1;:25:::0;;;21620:52:::1;21568:12:::0;21620:36:::1;21481:17:::0;21527;21620:19:::1;:36::i;:52::-;21593:24;:79:::0;-1:-1:-1;;;21322:358:0:o;22601:171::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;22678:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;22678:32:0::1;-1:-1:-1::0;;;;22678:32:0;;::::1;;::::0;;22726:38:::1;::::0;::::1;::::0;::::1;::::0;22702:8;1925:14:1;1918:22;1900:41;;1888:2;1873:18;;1760:187;22726:38:0::1;;;;;;;;22601:171:::0;:::o;21692:111::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;21769:12:::1;:26:::0;21692:111::o;20486:135::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20576:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;20576:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20486:135::o;22075:102::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;22147:10:::1;:22:::0;22075:102::o;6252:244::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6341:22:0;::::1;6333:73;;;::::0;-1:-1:-1;;;6333:73:0;;7146:2:1;6333:73:0::1;::::0;::::1;7128:21:1::0;7185:2;7165:18;;;7158:30;7224:34;7204:18;;;7197:62;-1:-1:-1;;;7275:18:1;;;7268:36;7321:19;;6333:73:0::1;6944:402:1::0;6333:73:0::1;6443:6;::::0;;6422:38:::1;::::0;-1:-1:-1;;;;;6422:38:0;;::::1;::::0;6443:6;::::1;::::0;6422:38:::1;::::0;::::1;6471:6;:17:::0;;-1:-1:-1;;;;;;6471:17:0::1;-1:-1:-1::0;;;;;6471:17:0;;;::::1;::::0;;;::::1;::::0;;6252:244::o;20347:127::-;5926:6;;-1:-1:-1;;;;;5926:6:0;198:10;5926:22;5918:67;;;;-1:-1:-1;;;5918:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20434:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;20434:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20347:127::o;1170:181::-;1228:7;;1260:5;1264:1;1260;:5;:::i;:::-;1248:17;;1289:1;1284;:6;;1276:46;;;;-1:-1:-1;;;1276:46:0;;7683:2:1;1276:46:0;;;7665:21:1;7722:2;7702:18;;;7695:30;7761:29;7741:18;;;7734:57;7808:18;;1276:46:0;7481:351:1;19865:337:0;-1:-1:-1;;;;;19958:19:0;;19950:68;;;;-1:-1:-1;;;19950:68:0;;8039:2:1;19950:68:0;;;8021:21:1;8078:2;8058:18;;;8051:30;8117:34;8097:18;;;8090:62;-1:-1:-1;;;8168:18:1;;;8161:34;8212:19;;19950:68:0;7837:400:1;19950:68:0;-1:-1:-1;;;;;20037:21:0;;20029:68;;;;-1:-1:-1;;;20029:68:0;;8444:2:1;20029:68:0;;;8426:21:1;8483:2;8463:18;;;8456:30;8522:34;8502:18;;;8495:62;-1:-1:-1;;;8573:18:1;;;8566:32;8615:19;;20029:68:0;8242:398:1;20029:68:0;-1:-1:-1;;;;;20110:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;20162:32;;2643:25:1;;;20162:32:0;;2616:18:1;20162:32:0;;;;;;;19865:337;;;:::o;25528:2258::-;25615:4;-1:-1:-1;;;;;25642:20:0;;25634:70;;;;-1:-1:-1;;;25634:70:0;;8847:2:1;25634:70:0;;;8829:21:1;8886:2;8866:18;;;8859:30;8925:34;8905:18;;;8898:62;-1:-1:-1;;;8976:18:1;;;8969:35;9021:19;;25634:70:0;8645:401:1;25634:70:0;-1:-1:-1;;;;;25723:23:0;;25715:71;;;;-1:-1:-1;;;25715:71:0;;9253:2:1;25715:71:0;;;9235:21:1;9292:2;9272:18;;;9265:30;9331:34;9311:18;;;9304:62;-1:-1:-1;;;9382:18:1;;;9375:33;9425:19;;25715:71:0;9051:399:1;25715:71:0;25802:16;;-1:-1:-1;;;25802:16:0;;;;25799:1980;;;25852:41;25867:6;25875:9;25886:6;25852:14;:41::i;:::-;25845:48;;;;25799:1980;25956:8;;-1:-1:-1;;;;;25946:18:0;;;25956:8;;25946:18;:46;;;;-1:-1:-1;25981:11:0;;-1:-1:-1;;;;;25968:24:0;;;25981:11;;25968:24;25946:46;25943:96;;;26015:12;26008:4;:19;25943:96;26065:11;;-1:-1:-1;;;;;26065:11:0;;;26055:21;;;;26051:149;;26121:6;;26114:4;;:13;;;;:::i;:::-;26097:12;:31;26093:96;;-1:-1:-1;;;;;26150:16:0;;;;;;:5;:16;;;;;:23;;-1:-1:-1;;26150:23:0;26169:4;26150:23;;;26093:96;5830:7;5857:6;-1:-1:-1;;;;;26216:17:0;;;5857:6;;26216:17;;;;:41;;-1:-1:-1;5830:7:0;5857:6;-1:-1:-1;;;;;26237:20:0;;;5857:6;;26237:20;;26216:41;26212:75;;;26259:28;26273:6;26280;26259:13;:28::i;:::-;-1:-1:-1;;;;;26308:25:0;;;;;;:17;:25;;;;;;;;26307:26;:59;;;;-1:-1:-1;;;;;;26338:28:0;;;;;;:17;:28;;;;;;;;26337:29;26307:59;26304:359;;;26386:10;;26415:201;26431:1;26427;:5;26415:201;;26496:44;;;;;;9638:19:1;;;9673:12;;;9666:28;;;26524:15:0;9710:12:1;;;9703:28;9747:12;;26496:44:0;;;;;;;;;;;;26486:55;;;;;;26481:61;;26460:84;;26567:29;26582:6;26589:2;26592:3;26567:14;:29::i;:::-;-1:-1:-1;26433:3:0;;;;:::i;:::-;;;;26415:201;;;-1:-1:-1;26634:13:0;26644:3;26634:13;;:::i;:::-;;;26367:296;26304:359;26743:4;26694:28;18880:18;;;:9;:18;;;;;;26819:23;;26795:47;;;;;;;26875:44;;-1:-1:-1;26903:16:0;;-1:-1:-1;;;26903:16:0;;;;26902:17;26875:44;:69;;;;-1:-1:-1;;;;;;26924:20:0;;;;;;:12;:20;;;;;;;;26923:21;26875:69;:94;;;;-1:-1:-1;26948:21:0;;-1:-1:-1;;;26948:21:0;;;;26875:94;26871:305;;;27007:25;;-1:-1:-1;;;27007:25:0;;;;27004:97;;;27078:23;;27055:46;;27004:97;27120:36;27135:20;27120:14;:36::i;:::-;27212:53;;;;;;;;;;;-1:-1:-1;;;27212:53:0;;;;;;;;-1:-1:-1;;;;;27212:17:0;;-1:-1:-1;27212:17:0;;;:9;:17;;;;;;;;:53;;27234:6;;27212:21;:53::i;:::-;-1:-1:-1;;;;;27192:17:0;;;;;;:9;:17;;;;;;;;:73;;;;27305:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;27334:28:0;;;;;;:17;:28;;;;;;;;27305:57;27304:148;;27418:34;27426:6;27434:9;27445:6;27418:7;:34::i;:::-;27304:148;;;27409:6;27304:148;27472:16;;27282:170;;-1:-1:-1;;;;27472:16:0;;;;:51;;;;-1:-1:-1;;;;;;27493:30:0;;;;;;:19;:30;;;;;;;;27492:31;27472:51;27469:133;;;27591:10;;27550:37;27575:11;27550:20;27560:9;-1:-1:-1;;;;;18880:18:0;18853:7;18880:18;;;:9;:18;;;;;;;18787:119;27550:37;:51;;27542:60;;;;;;-1:-1:-1;;;;;27642:20:0;;;;;;:9;:20;;;;;;:37;;27667:11;27642:24;:37::i;:::-;-1:-1:-1;;;;;27619:20:0;;;;;;;:9;:20;;;;;;;:60;;;;27701:40;;;;;;;;;;27729:11;2643:25:1;;2631:2;2616:18;;2497:177;27701:40:0;;;;;;;;27763:4;27756:11;;;;;;;1503:192;1589:7;1625:12;1617:6;;;;1609:29;;;;-1:-1:-1;;;1609:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1649:9:0;1661:5;1665:1;1661;:5;:::i;:::-;1649:17;1503:192;-1:-1:-1;;;;;1503:192:0:o;1359:136::-;1417:7;1444:43;1448:1;1451;1444:43;;;;;;;;;;;;;;;;;:3;:43::i;27794:330::-;27924:53;;;;;;;;;;;-1:-1:-1;;;27924:53:0;;;;;;;;-1:-1:-1;;;;;27924:17:0;;27887:4;27924:17;;;:9;:17;;;;;;;:53;;27946:6;;27924:21;:53::i;:::-;-1:-1:-1;;;;;27904:17:0;;;;;;;:9;:17;;;;;;:73;;;;28011:20;;;;;;;:32;;28036:6;28011:24;:32::i;:::-;-1:-1:-1;;;;;27988:20:0;;;;;;;:9;:20;;;;;;;:55;;;;28059:35;;;;;;;;;;28087:6;2643:25:1;;2631:2;2616:18;;2497:177;28059:35:0;;;;;;;;-1:-1:-1;28112:4:0;27794:330;;;;;:::o;31021:222::-;-1:-1:-1;;;;;31108:13:0;;;;;;:5;:13;;;;;;;;31107:14;31099:46;;;;-1:-1:-1;;;31099:46:0;;10257:2:1;31099:46:0;;;10239:21:1;10296:2;10276:18;;;10269:30;-1:-1:-1;;;10315:18:1;;;10308:49;10374:18;;31099:46:0;10055:343:1;31099:46:0;31174:12;;31164:6;:22;;:49;;;-1:-1:-1;;;;;;31190:23:0;;;;;;:15;:23;;;;;;;;31164:49;31156:79;;;;-1:-1:-1;;;31156:79:0;;10605:2:1;31156:79:0;;;10587:21:1;10644:2;10624:18;;;10617:30;-1:-1:-1;;;10663:18:1;;;10656:47;10720:18;;31156:79:0;10403:341:1;31156:79:0;31021:222;;:::o;28132:1048::-;17001:16;:23;;-1:-1:-1;;;;17001:23:0;-1:-1:-1;;;17001:23:0;;;28269:24:::1;::::0;28248:15:::1;::::0;17001:23;;28236:65:::1;::::0;28299:1:::1;::::0;28236:58:::1;::::0;;;:7;;:11:::1;:28::i;:::-;:32:::0;::::1;:58::i;:65::-;28214:87:::0;-1:-1:-1;28312:21:0::1;28336:24;:7:::0;28214:87;28336:11:::1;:24::i;:::-;28312:48;;28373:31;28390:13;28373:16;:31::i;:::-;28525:15;::::0;28440:21:::1;::::0;28415:22:::1;::::0;28496:52:::1;::::0;28525:22:::1;::::0;28545:1:::1;28525:19;:22::i;:::-;28496:24;::::0;;:28:::1;:52::i;:::-;28474:74;;28569:26;28598:59;28655:1;28598:52;28638:11;28598:35;28617:15;;28598:14;:18;;:35;;;;:::i;:59::-;28569:88;;28668:21;28692:47;28727:11;28692:30;28711:10;;28692:14;:18;;:30;;;;:::i;:47::-;28668:71:::0;-1:-1:-1;28750:26:0::1;28779:57;28668:71:::0;28779:38:::1;:14:::0;28798:18;28779::::1;:38::i;:::-;:42:::0;::::1;:57::i;:::-;28750:86:::0;-1:-1:-1;28852:22:0;;28849:104:::1;;28910:22;::::0;28889:64:::1;::::0;28910:22:::1;::::0;::::1;-1:-1:-1::0;;;;;28910:22:0::1;28934:18:::0;28889:20:::1;:64::i;:::-;28969:17:::0;;28966:89:::1;;29022:17;::::0;29001:54:::1;::::0;-1:-1:-1;;;;;29022:17:0::1;29041:13:::0;29001:20:::1;:54::i;:::-;29092:1;29071:18;:22;:41;;;;;29111:1;29097:11;:15;29071:41;29068:104;;;29127:45;29140:11;29153:18;29127:12;:45::i;:::-;-1:-1:-1::0;;17047:16:0;:24;;-1:-1:-1;;;;17047:24:0;;;-1:-1:-1;;;;;;28132:1048:0:o;30387:622::-;-1:-1:-1;;;;;30548:20:0;;30473:7;30548:20;;;:12;:20;;;;;;30473:7;;30548:20;;30545:223;;;30597:38;30631:3;30597:29;30608:17;;30597:6;:10;;:29;;;;:::i;:38::-;30585:50;;30545:223;;;-1:-1:-1;;;;;30665:23:0;;;;;;:12;:23;;;;;;;;30662:106;;;30717:39;30752:3;30717:30;30728:18;;30717:6;:10;;:30;;;;:::i;:39::-;30705:51;;30662:106;30791:13;;30788:173;;30866:4;30848:24;;;;:9;:24;;;;;;:39;;30877:9;30848:28;:39::i;:::-;30839:4;30821:24;;;;:9;:24;;;;;;;:66;;;;30907:42;;-1:-1:-1;;;;;30907:42:0;;;;;;;30939:9;2643:25:1;;2631:2;2616:18;;2497:177;30907:42:0;;;;;;;;30788:173;30980:21;:6;30991:9;30980:10;:21::i;1703:250::-;1761:7;1785:1;1790;1785:6;1781:47;;-1:-1:-1;1815:1:0;1808:8;;1781:47;1840:9;1852:5;1856:1;1852;:5;:::i;:::-;1840:17;-1:-1:-1;1885:1:0;1876:5;1880:1;1840:17;1876:5;:::i;:::-;:10;1868:56;;;;-1:-1:-1;;;1868:56:0;;11346:2:1;1868:56:0;;;11328:21:1;11385:2;11365:18;;;11358:30;11424:34;11404:18;;;11397:62;-1:-1:-1;;;11475:18:1;;;11468:31;11516:19;;1868:56:0;11144:397:1;1961:132:0;2019:7;2046:39;2050:1;2053;2046:39;;;;;;;;;;;;;;;;;:3;:39::i;29192:666::-;29342:16;;;29356:1;29342:16;;;;;;;;29318:21;;29342:16;;;;;;;;;;-1:-1:-1;29342:16:0;29318:40;;29387:4;29369;29374:1;29369:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29369:23:0;;;:7;;;;;;;;;;:23;;;;29413:15;;:22;;;-1:-1:-1;;;29413:22:0;;;;:15;;;;;:20;;:22;;;;;29369:7;;29413:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29403:4;29408:1;29403:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29403:32:0;;;:7;;;;;;;;;:32;29480:15;;29448:62;;29465:4;;29480:15;29498:11;29448:8;:62::i;:::-;29549:15;;:240;;-1:-1:-1;;;29549:240:0;;-1:-1:-1;;;;;29549:15:0;;;;:66;;:240;;29630:11;;29549:15;;29700:4;;29727;;29763:15;;29549:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29815:35;29832:11;29845:4;29815:35;;;;;;;:::i;:::-;;;;;;;;29247:611;29192:666;:::o;23985:126::-;24077:26;;-1:-1:-1;;;;;24077:18:0;;;:26;;;;;24096:6;;24077:26;;;;24096:6;24077:18;:26;;;;;;;;;;;;;;;;;;;;;23985:126;;:::o;29866:513::-;30046:15;;30014:62;;30031:4;;-1:-1:-1;;;;;30046:15:0;30064:11;30014:8;:62::i;:::-;30119:15;;-1:-1:-1;;;;;30119:15:0;:31;30158:9;30191:4;30211:11;30119:15;;30323:7;5830;5857:6;-1:-1:-1;;;;;5857:6:0;;5792:79;30323:7;30119:252;;;;;;-1:-1:-1;;;;;;30119:252:0;;;-1:-1:-1;;;;;13427:15:1;;;30119:252:0;;;13409:34:1;13459:18;;;13452:34;;;;13502:18;;;13495:34;;;;13545:18;;;13538:34;13609:15;;;13588:19;;;13581:44;30345:15:0;13641:19:1;;;13634:35;13343:19;;30119:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29866:513;;:::o;2101:278::-;2187:7;2222:12;2215:5;2207:28;;;;-1:-1:-1;;;2207:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2246:9:0;2258:5;2262:1;2258;:5;:::i;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:160::-;215:20;;271:13;;264:21;254:32;;244:60;;300:1;297;290:12;244:60;150:160;;;:::o;315:315::-;380:6;388;441:2;429:9;420:7;416:23;412:32;409:52;;;457:1;454;447:12;409:52;496:9;483:23;515:31;540:5;515:31;:::i;:::-;565:5;-1:-1:-1;589:35:1;620:2;605:18;;589:35;:::i;:::-;579:45;;315:315;;;;;:::o;635:247::-;694:6;747:2;735:9;726:7;722:23;718:32;715:52;;;763:1;760;753:12;715:52;802:9;789:23;821:31;846:5;821:31;:::i;887:548::-;999:4;1028:2;1057;1046:9;1039:21;1089:6;1083:13;1132:6;1127:2;1116:9;1112:18;1105:34;1157:1;1167:140;1181:6;1178:1;1175:13;1167:140;;;1276:14;;;1272:23;;1266:30;1242:17;;;1261:2;1238:26;1231:66;1196:10;;1167:140;;;1171:3;1356:1;1351:2;1342:6;1331:9;1327:22;1323:31;1316:42;1426:2;1419;1415:7;1410:2;1402:6;1398:15;1394:29;1383:9;1379:45;1375:54;1367:62;;;;887:548;;;;:::o;1440:315::-;1508:6;1516;1569:2;1557:9;1548:7;1544:23;1540:32;1537:52;;;1585:1;1582;1575:12;1537:52;1624:9;1611:23;1643:31;1668:5;1643:31;:::i;:::-;1693:5;1745:2;1730:18;;;;1717:32;;-1:-1:-1;;;1440:315:1:o;1952:316::-;2029:6;2037;2045;2098:2;2086:9;2077:7;2073:23;2069:32;2066:52;;;2114:1;2111;2104:12;2066:52;-1:-1:-1;;2137:23:1;;;2207:2;2192:18;;2179:32;;-1:-1:-1;2258:2:1;2243:18;;;2230:32;;1952:316;-1:-1:-1;1952:316:1:o;2914:456::-;2991:6;2999;3007;3060:2;3048:9;3039:7;3035:23;3031:32;3028:52;;;3076:1;3073;3066:12;3028:52;3115:9;3102:23;3134:31;3159:5;3134:31;:::i;:::-;3184:5;-1:-1:-1;3241:2:1;3226:18;;3213:32;3254:33;3213:32;3254:33;:::i;:::-;2914:456;;3306:7;;-1:-1:-1;;;3360:2:1;3345:18;;;;3332:32;;2914:456::o;3375:180::-;3431:6;3484:2;3472:9;3463:7;3459:23;3455:32;3452:52;;;3500:1;3497;3490:12;3452:52;3523:26;3539:9;3523:26;:::i;3957:180::-;4016:6;4069:2;4057:9;4048:7;4044:23;4040:32;4037:52;;;4085:1;4082;4075:12;4037:52;-1:-1:-1;4108:23:1;;3957:180;-1:-1:-1;3957:180:1:o;4142:689::-;4234:6;4242;4250;4303:2;4291:9;4282:7;4278:23;4274:32;4271:52;;;4319:1;4316;4309:12;4271:52;4359:9;4346:23;4388:18;4429:2;4421:6;4418:14;4415:34;;;4445:1;4442;4435:12;4415:34;4483:6;4472:9;4468:22;4458:32;;4528:7;4521:4;4517:2;4513:13;4509:27;4499:55;;4550:1;4547;4540:12;4499:55;4590:2;4577:16;4616:2;4608:6;4605:14;4602:34;;;4632:1;4629;4622:12;4602:34;4687:7;4680:4;4670:6;4667:1;4663:14;4659:2;4655:23;4651:34;4648:47;4645:67;;;4708:1;4705;4698:12;4645:67;4739:4;4731:13;;;;-1:-1:-1;4763:6:1;-1:-1:-1;4788:37:1;;4804:20;;;-1:-1:-1;4788:37:1;:::i;:::-;4778:47;;4142:689;;;;;:::o;4836:388::-;4904:6;4912;4965:2;4953:9;4944:7;4940:23;4936:32;4933:52;;;4981:1;4978;4971:12;4933:52;5020:9;5007:23;5039:31;5064:5;5039:31;:::i;:::-;5089:5;-1:-1:-1;5146:2:1;5131:18;;5118:32;5159:33;5118:32;5159:33;:::i;:::-;5211:7;5201:17;;;4836:388;;;;;:::o;5229:356::-;5431:2;5413:21;;;5450:18;;;5443:30;5509:34;5504:2;5489:18;;5482:62;5576:2;5561:18;;5229:356::o;5590:380::-;5669:1;5665:12;;;;5712;;;5733:61;;5787:4;5779:6;5775:17;5765:27;;5733:61;5840:2;5832:6;5829:14;5809:18;5806:38;5803:161;;5886:10;5881:3;5877:20;5874:1;5867:31;5921:4;5918:1;5911:15;5949:4;5946:1;5939:15;5803:161;;5590:380;;;:::o;5975:127::-;6036:10;6031:3;6027:20;6024:1;6017:31;6067:4;6064:1;6057:15;6091:4;6088:1;6081:15;6107:127;6168:10;6163:3;6159:20;6156:1;6149:31;6199:4;6196:1;6189:15;6223:4;6220:1;6213:15;6239:135;6278:3;6299:17;;;6296:43;;6319:18;;:::i;:::-;-1:-1:-1;6366:1:1;6355:13;;6239:135::o;6379:251::-;6449:6;6502:2;6490:9;6481:7;6477:23;6473:32;6470:52;;;6518:1;6515;6508:12;6470:52;6550:9;6544:16;6569:31;6594:5;6569:31;:::i;7351:125::-;7416:9;;;7437:10;;;7434:36;;;7450:18;;:::i;9770:147::-;9808:3;-1:-1:-1;;;;;9829:30:1;;9826:56;;9862:18;;:::i;9922:128::-;9989:9;;;10010:11;;;10007:37;;;10024:18;;:::i;10749:168::-;10789:7;10855:1;10851;10847:6;10843:14;10840:1;10837:21;10832:1;10825:9;10818:17;10814:45;10811:71;;;10862:18;;:::i;:::-;-1:-1:-1;10902:9:1;;10749:168::o;10922:217::-;10962:1;10988;10978:132;;11032:10;11027:3;11023:20;11020:1;11013:31;11067:4;11064:1;11057:15;11095:4;11092:1;11085:15;10978:132;-1:-1:-1;11124:9:1;;10922:217::o;11678:461::-;11731:3;11769:5;11763:12;11796:6;11791:3;11784:19;11822:4;11851:2;11846:3;11842:12;11835:19;;11888:2;11881:5;11877:14;11909:1;11919:195;11933:6;11930:1;11927:13;11919:195;;;11998:13;;-1:-1:-1;;;;;11994:39:1;11982:52;;12054:12;;;;12089:15;;;;12030:1;11948:9;11919:195;;;-1:-1:-1;12130:3:1;;11678:461;-1:-1:-1;;;;;11678:461:1:o;12144:582::-;12443:6;12432:9;12425:25;12486:6;12481:2;12470:9;12466:18;12459:34;12529:3;12524:2;12513:9;12509:18;12502:31;12406:4;12550:57;12602:3;12591:9;12587:19;12579:6;12550:57;:::i;:::-;-1:-1:-1;;;;;12643:32:1;;;;12638:2;12623:18;;12616:60;-1:-1:-1;12707:3:1;12692:19;12685:35;12542:65;12144:582;-1:-1:-1;;;12144:582:1:o;12731:332::-;12938:6;12927:9;12920:25;12981:2;12976;12965:9;12961:18;12954:30;12901:4;13001:56;13053:2;13042:9;13038:18;13030:6;13001:56;:::i;:::-;12993:64;12731:332;-1:-1:-1;;;;12731:332:1:o;13680:306::-;13768:6;13776;13784;13837:2;13825:9;13816:7;13812:23;13808:32;13805:52;;;13853:1;13850;13843:12;13805:52;13882:9;13876:16;13866:26;;13932:2;13921:9;13917:18;13911:25;13901:35;;13976:2;13965:9;13961:18;13955:25;13945:35;;13680:306;;;;;:::o

Swarm Source

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