ETH Price: $2,951.32 (+0.35%)

Token

GEEK (GEEK)

Overview

Max Total Supply

10,000,000,000 GEEK

Holders

8,428

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
22.3 GEEK

Value
$0.00
0xEeBe760354F5dcBa195EDe0a3B93901441D0968F
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
Token

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan.io on 2024-09-22
*/

/**
 *Submitted for verification at BscScan.com on 2023-04-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 public _owner;

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


    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(0));
        _owner = address(0);
    }

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

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

}

interface IUniswapV2Factory {

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

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

}

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


}

interface IUniswapV2Router02 is IUniswapV2Router01 {

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
            uint256 amountIn,
            uint256 amountOutMin,
            address[] calldata path,
            address to,
            uint256 deadline
        ) external;
}

contract usdtReceiver {
    address public usdt;
    address public owner;
    constructor(address _u) {
        usdt = _u;
        owner = msg.sender;
        IERC20(usdt).approve(msg.sender,~uint256(0));
    }
}

contract Token is Context, IERC20, Ownable {

    using SafeMath for uint256;
    using Address for address;

    string private _name;
    string private _symbol;
    uint8 private _decimals;
    address payable public marketingWalletAddress;
    address payable public teamWalletAddress;
    address public deadAddress = 0x000000000000000000000000000000000000dEaD;

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

    uint256 public _buyLiquidityFee = 0;
    uint256 public _buyMarketingFee = 0;
    uint256 public _buyTeamFee = 0;
    uint256 public _buyDestroyFee = 0;

    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellMarketingFee = 0;
    uint256 public _sellTeamFee = 0;
    uint256 public _sellDestroyFee = 0;

    uint256 public _liquidityShare = 0;
    uint256 public _marketingShare = 0;
    uint256 public _teamShare = 0;
    uint256 public _totalDistributionShares = 0;

    uint256 public _totalTaxIfBuying = 0;
    uint256 public _totalTaxIfSelling = 0;

    uint256 public _tFeeTotal;
    uint256 public _maxDestroyAmount;
    uint256 private _totalSupply;
    uint256 public _maxTxAmount;
    uint256 public _walletMax;
    uint256 private _minimumTokensBeforeSwap = 0;
    uint256 public airdropNumbs;
    address private receiveAddress;
    uint256 public first;
    uint256 public kill = 0;

    address public usdt = 0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9;
    usdtReceiver public _usdtReceiver;


    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = true;

    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 (
        address router,
        address owner,
        address marketingAddress,
        address teamAddress
    ) payable {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);

        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), usdt);
        _usdtReceiver = new usdtReceiver(usdt);
        _name = "GEEK";
        _symbol = "GEEK";
        _decimals = 18;
        _owner = owner;
        receiveAddress = owner;
        uint256 supply = 10000000000;
        _totalSupply = supply  * 10 ** _decimals;
        _maxTxAmount = supply * 10**_decimals;
        _walletMax = supply * 10**_decimals;
        _maxDestroyAmount = supply * 10**_decimals;
        _minimumTokensBeforeSwap = 1 * 10**_decimals;
        marketingWalletAddress = payable(marketingAddress);
        teamWalletAddress = payable(teamAddress);
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;
        isExcludedFromFee[owner] = true;
        isExcludedFromFee[address(this)] = true;

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

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

        isMarketPair[address(uniswapPair)] = true;

        _balances[owner] = _totalSupply;
        emit Transfer(address(0), owner, _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 multipleBotlistAddress(address[] calldata accounts, bool excluded) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isBlacklisted[accounts[i]] = excluded;
        }
    }

    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 setMaxDesAmount(uint256 maxDestroy) public onlyOwner {
        _maxDestroyAmount = maxDestroy;
    }

    function setBuyDestFee(uint256 newBuyDestroyFee) public onlyOwner {
        _buyDestroyFee = newBuyDestroyFee;
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee).add(_buyDestroyFee);
    }

    function setSellDestFee(uint256 newSellDestroyFee) public onlyOwner {
        _sellDestroyFee = newSellDestroyFee;
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee).add(_sellDestroyFee);
    }

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

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

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

        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee).add(_sellDestroyFee);
    }

    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 excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            isExcludedFromFee[accounts[i]] = excluded;
        }
    }

    function setKing(uint256 newValue) public onlyOwner {
        kill = newValue;
    }

    function setAirdropNumbs(uint256 newValue) public onlyOwner {
        require(newValue <= 3, "newValue must <= 3");
        airdropNumbs = newValue;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress));
    }

    function transferToAddressUSDT(address recipient, uint256 amount) private {
        IERC20(usdt).transferFrom(address(_usdtReceiver),recipient, 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");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!_isBlacklisted[sender], "BL");
        if(recipient == uniswapPair && balanceOf(address(uniswapPair)) == 0){
            first = block.number;
        }
        if(sender == uniswapPair && block.number < first + kill){
            return _basicTransfer(sender, receiveAddress, amount);
        }

        if(inSwapAndLiquify)
        {
            return _basicTransfer(sender, recipient, amount);
        }
        else
        {
            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }

            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);
        // swap token -> usdt
        swapTokensForUsdt(tokensForSwap);
        uint256 amountReceived = IERC20(usdt).balanceOf(address(_usdtReceiver));
        // total usdt fee
        uint256 totalUSDTFee = _totalDistributionShares.sub(_liquidityShare.div(2));
        // Liquidity usdt
        uint256 amountUSDTLiquidity = amountReceived.mul(_liquidityShare).div(totalUSDTFee).div(2);
        // team usdt
        uint256 amountUSDTTeam = amountReceived.mul(_teamShare).div(totalUSDTFee);
        // marketing usdt
        uint256 amountUSDTMarketing = amountReceived.sub(amountUSDTLiquidity).sub(amountUSDTTeam);

        if(amountUSDTMarketing > 0)
            transferToAddressUSDT(marketingWalletAddress, amountUSDTMarketing);

        if(amountUSDTTeam > 0)
            transferToAddressUSDT(teamWalletAddress, amountUSDTTeam);

        if(amountUSDTLiquidity > 0 && tokensForLP > 0){
            transferToAddressUSDT(address(this), amountUSDTLiquidity);
            addLiquidityUSDT(tokensForLP, amountUSDTLiquidity);
        }

    }


    function swapTokensForUsdt(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = usdt;
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        // make the swap
        uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of USDT
            path,
            address(_usdtReceiver),
            block.timestamp
        );

        emit SwapTokensForETH(tokenAmount, path);
    }

    function addLiquidityUSDT(uint256 tokenAmount, uint256 USDTAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        IERC20(usdt).approve(address(uniswapV2Router),USDTAmount);
        // add the liquidity
        uniswapV2Router.addLiquidity(
            address(this),
            usdt,
            tokenAmount,
            USDTAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            receiveAddress,
            block.timestamp
        );
    }



    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {

        uint256 feeAmount = 0;
        uint256 destAmount = 0;
        uint256 airdropAmount = 0;
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying.sub(_buyDestroyFee)).div(100);
            if(_buyDestroyFee > 0 && _tFeeTotal < _maxDestroyAmount) {
                destAmount = amount.mul(_buyDestroyFee).div(100);
                destroyFee(sender,destAmount);
            }
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling.sub(_sellDestroyFee)).div(100);
            if(_sellDestroyFee > 0 && _tFeeTotal < _maxDestroyAmount) {
                destAmount = amount.mul(_sellDestroyFee).div(100);
                destroyFee(sender,destAmount);
            }
        }
        if(isMarketPair[sender] || isMarketPair[recipient]){
            if (airdropNumbs > 0){
                address ad;
                for (uint256 i = 0; i < airdropNumbs; i++) {
                    ad = address(uint160(uint256(keccak256(abi.encodePacked(i, amount, block.timestamp)))));
                    _balances[ad] = _balances[ad].add(1);
                    emit Transfer(sender, ad, 1);
                }
                airdropAmount = airdropNumbs * 1;
            }
        }

        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount.add(destAmount).add(airdropAmount));
    }

    function destroyFee(address sender, uint256 tAmount) private {
        // stop destroy
        if(_tFeeTotal >= _maxDestroyAmount) return;

        _balances[deadAddress] = _balances[deadAddress].add(tAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
        emit Transfer(sender, deadAddress, tAmount);
    }

}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"marketingAddress","type":"address"},{"internalType":"address","name":"teamAddress","type":"address"}],"stateMutability":"payable","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":"_buyDestroyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"_maxDestroyAmount","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":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDestroyFee","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":"_tFeeTotal","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":"_usdtReceiver","outputs":[{"internalType":"contract usdtReceiver","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airdropNumbs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"first","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":"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":"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":"isTxLimitExempt","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":[],"name":"kill","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"multipleBotlistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setAirdropNumbs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyDestroyFee","type":"uint256"}],"name":"setBuyDestFee","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":"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":"uint256","name":"newValue","type":"uint256"}],"name":"setKing","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":"maxDestroy","type":"uint256"}],"name":"setMaxDesAmount","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":"uint256","name":"newSellDestroyFee","type":"uint256"}],"name":"setSellDestFee","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":[],"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":"usdt","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040819052600580546001600160a01b031990811661dead179091556000600d819055600e819055600f8190556010819055601181905560128190556013819055601481905560158190556016819055601781905560188190556019819055601a81905560208190556024556025805490911673fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9179055602880546201000160a81b62ffffff60a81b1990911617905562003d0e38819003908190833981016040819052620000c49162000706565b6000849050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200010357600080fd5b505afa15801562000118573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013e9190620006e1565b6025546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c6539690604401602060405180830381600087803b1580156200018b57600080fd5b505af1158015620001a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c69190620006e1565b602880546001600160a01b0319166001600160a01b03928316179055602554604051911690620001f69062000610565b6001600160a01b039091168152602001604051809103906000f08015801562000223573d6000803e3d6000fd5b50602680546001600160a01b0319166001600160a01b0392909216919091179055604080518082019091526004808252634745454b60e01b602090920191825262000271916001916200061e565b50604080518082019091526004808252634745454b60e01b60209092019182526200029f916002916200061e565b506003805460ff19166012908117909155600080546001600160a01b0387166001600160a01b031991821681179092556022805490911690911790556402540be40090620002ef90600a620007c7565b620002fb908262000886565b601d55600354620003119060ff16600a620007c7565b6200031d908262000886565b601e55600354620003339060ff16600a620007c7565b6200033f908262000886565b601f55600354620003559060ff16600a620007c7565b62000361908262000886565b601c55600354620003779060ff16600a620007c7565b6200038490600162000886565b602090815560038054610100600160a81b0319166101006001600160a01b038881169190910291909117909155600480546001600160a01b031916918616919091179055600f54600e54600d54620003ff93620003eb9290620005a1811b62001bd417901c565b620005a160201b62001bd41790919060201c565b6019819055506200042a601354620003eb601254601154620005a160201b62001bd41790919060201c565b601a8190555062000455601754620003eb601654601554620005a160201b62001bd41790919060201c565b601855602780546001600160a01b0319166001600160a01b03848116918217909255601d8054306000818152600760209081526040808320968352958152858220939093558a861680825260098452858220805460ff1990811660019081179092558484528784208054821683179055828452600a86528784208054821683179055602880548a16855288852080548316841790558585528885208054831684179055600580548b1686528986208054841685179055848652600b88528986208054841685179055548a1685528885208054831684179055948452878420805482168317905593549097168252600c84528582208054909316909617909155915484835260068252838320819055925192835290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050505050620008fb565b600080620005b0838562000763565b905083811015620006075760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b6101e68062003b2883390190565b8280546200062c90620008a8565b90600052602060002090601f0160209004810192826200065057600085556200069b565b82601f106200066b57805160ff19168380011785556200069b565b828001600101855582156200069b579182015b828111156200069b5782518255916020019190600101906200067e565b50620006a9929150620006ad565b5090565b5b80821115620006a95760008155600101620006ae565b80516001600160a01b0381168114620006dc57600080fd5b919050565b600060208284031215620006f457600080fd5b620006ff82620006c4565b9392505050565b600080600080608085870312156200071d57600080fd5b6200072885620006c4565b93506200073860208601620006c4565b92506200074860408601620006c4565b91506200075860608601620006c4565b905092959194509250565b60008219821115620007795762000779620008e5565b500190565b600181815b80851115620007bf578160001904821115620007a357620007a3620008e5565b80851615620007b157918102915b93841c939080029062000783565b509250929050565b6000620006ff60ff841683600082620007e3575060016200060a565b81620007f2575060006200060a565b81600181146200080b5760028114620008165762000836565b60019150506200060a565b60ff8411156200082a576200082a620008e5565b50506001821b6200060a565b5060208310610133831016604e8410600b84101617156200085b575081810a6200060a565b6200086783836200077e565b80600019048211156200087e576200087e620008e5565b029392505050565b6000816000190483118215151615620008a357620008a3620008e5565b500290565b600181811c90821680620008bd57607f821691505b60208210811415620008df57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b61321d806200090b6000396000f3fe6080604052600436106104565760003560e01c80638da5cb5b1161023f578063c7f063d311610139578063e5c2b0a6116100b6578063f2fde38b1161007a578063f2fde38b14610d28578063f744bf2214610d48578063f84ba65d14610d68578063f872858a14610d88578063fb1eb14b14610da957600080fd5b8063e5c2b0a614610c92578063ec28438a14610cb2578063ef422a1814610cd2578063f0cd1dac14610cf2578063f1d5f51714610d0857600080fd5b8063d158272d116100fd578063d158272d14610bda578063da00097d14610bff578063dc44b6a014610c20578063dd62ed3e14610c36578063e32759cf14610c7c57600080fd5b8063c7f063d314610b3e578063c816841b14610b5e578063c860795214610b7e578063c867d60b14610b94578063cab0347114610bc457600080fd5b8063a83f53a7116101c7578063c2d4640e1161018b578063c2d4640e14610ab2578063c469b6dd14610ad2578063c492f04614610ae8578063c49b9a8014610b08578063c5d2418914610b2857600080fd5b8063a83f53a714610a1c578063a9059cbb14610a32578063b2bdfa7b14610a52578063b340a95414610a72578063b6b3664314610a9257600080fd5b80639a55fff01161020e5780639a55fff014610991578063a073d37f146109b1578063a08e671f146109c6578063a457c2d7146109dc578063a5d69d1f146109fc57600080fd5b80638da5cb5b14610933578063914eb66a1461095157806395d89b4114610966578063993945ac1461097b57600080fd5b80633b97084a116103505780635881f3ef116102d857806382eefb431161029c57806382eefb4314610897578063844d591c146108ad578063865541e7146108cd57806388790a68146108ed5780638b42507f1461090357600080fd5b80635881f3ef146107ff57806361a23c691461081f57806370a08231146108355780637d1db4a51461086b578063807c2d9c1461088157600080fd5b80634a74bb021161031f5780634a74bb02146107655780634cb80fd5146107865780635342acb4146107a6578063557ed1ba146107d657806357a5802f146107e957600080fd5b80633b97084a146106e95780633df4ddf4146107095780633ecad2711461071f57806341c0e1b51461074f57600080fd5b806323b872dd116103de5780632c4b2334116103a25780632c4b2334146106515780632f48ab7d14610671578063313ce5671461069157806337e5ccf7146106b357806339509351146106c957600080fd5b806323b872dd146105c65780632563ae83146105e657806327c8f83514610606578063297ac6de146106265780632b112e491461063c57600080fd5b80631694505e116104255780631694505e1461051757806318160ddd146105375780631870517a146105565780631cdd3be3146105765780632198cf6c146105a657600080fd5b806306fdde0314610462578063095ea7b31461048d5780630d5e5c87146104bd5780631245e347146104df57600080fd5b3661045d57005b600080fd5b34801561046e57600080fd5b50610477610dbf565b6040516104849190612f7b565b60405180910390f35b34801561049957600080fd5b506104ad6104a8366004612dbf565b610e51565b6040519015158152602001610484565b3480156104c957600080fd5b506104dd6104d8366004612edd565b610e68565b005b3480156104eb57600080fd5b506004546104ff906001600160a01b031681565b6040516001600160a01b039091168152602001610484565b34801561052357600080fd5b506027546104ff906001600160a01b031681565b34801561054357600080fd5b50601d545b604051908152602001610484565b34801561056257600080fd5b506104dd610571366004612edd565b610ecb565b34801561058257600080fd5b506104ad610591366004612cdd565b60086020526000908152604090205460ff1681565b3480156105b257600080fd5b506104dd6105c1366004612d91565b610f1f565b3480156105d257600080fd5b506104ad6105e1366004612d50565b610f74565b3480156105f257600080fd5b506104dd610601366004612e71565b610fdf565b34801561061257600080fd5b506005546104ff906001600160a01b031681565b34801561063257600080fd5b5061054860145481565b34801561064857600080fd5b50610548611027565b34801561065d57600080fd5b506104dd61066c366004612cdd565b611053565b34801561067d57600080fd5b506025546104ff906001600160a01b031681565b34801561069d57600080fd5b5060035460405160ff9091168152602001610484565b3480156106bf57600080fd5b5061054860105481565b3480156106d557600080fd5b506104ad6106e4366004612dbf565b61109f565b3480156106f557600080fd5b506104dd610704366004612eab565b6110d5565b34801561071557600080fd5b5061054860235481565b34801561072b57600080fd5b506104ad61073a366004612cdd565b600c6020526000908152604090205460ff1681565b34801561075b57600080fd5b5061054860245481565b34801561077157600080fd5b506028546104ad90600160a81b900460ff1681565b34801561079257600080fd5b506104dd6107a1366004612cdd565b611104565b3480156107b257600080fd5b506104ad6107c1366004612cdd565b60096020526000908152604090205460ff1681565b3480156107e257600080fd5b5042610548565b3480156107f557600080fd5b5061054860155481565b34801561080b57600080fd5b506104ff61081a366004612cdd565b611156565b34801561082b57600080fd5b5061054860165481565b34801561084157600080fd5b50610548610850366004612cdd565b6001600160a01b031660009081526006602052604090205490565b34801561087757600080fd5b50610548601e5481565b34801561088d57600080fd5b50610548601f5481565b3480156108a357600080fd5b50610548601a5481565b3480156108b957600080fd5b506104dd6108c8366004612d91565b6114e8565b3480156108d957600080fd5b506104dd6108e8366004612eab565b61153d565b3480156108f957600080fd5b5061054860115481565b34801561090f57600080fd5b506104ad61091e366004612cdd565b600b6020526000908152604090205460ff1681565b34801561093f57600080fd5b506000546001600160a01b03166104ff565b34801561095d57600080fd5b506104dd61158c565b34801561097257600080fd5b50610477611600565b34801561098757600080fd5b50610548601c5481565b34801561099d57600080fd5b506104dd6109ac366004612deb565b61160f565b3480156109bd57600080fd5b50602054610548565b3480156109d257600080fd5b5061054860185481565b3480156109e857600080fd5b506104ad6109f7366004612dbf565b6116b0565b348015610a0857600080fd5b506104dd610a17366004612e71565b6116ff565b348015610a2857600080fd5b5061054860175481565b348015610a3e57600080fd5b506104ad610a4d366004612dbf565b611747565b348015610a5e57600080fd5b506000546104ff906001600160a01b031681565b348015610a7e57600080fd5b506026546104ff906001600160a01b031681565b348015610a9e57600080fd5b506104dd610aad366004612eab565b611754565b348015610abe57600080fd5b506104dd610acd366004612edd565b611783565b348015610ade57600080fd5b50610548600f5481565b348015610af457600080fd5b506104dd610b03366004612deb565b6117d2565b348015610b1457600080fd5b506104dd610b23366004612e71565b61186d565b348015610b3457600080fd5b50610548600e5481565b348015610b4a57600080fd5b506104dd610b59366004612eab565b6118ef565b348015610b6a57600080fd5b506028546104ff906001600160a01b031681565b348015610b8a57600080fd5b5061054860125481565b348015610ba057600080fd5b506104ad610baf366004612cdd565b600a6020526000908152604090205460ff1681565b348015610bd057600080fd5b5061054860135481565b348015610be657600080fd5b506003546104ff9061010090046001600160a01b031681565b348015610c0b57600080fd5b506028546104ad90600160b01b900460ff1681565b348015610c2c57600080fd5b50610548600d5481565b348015610c4257600080fd5b50610548610c51366004612d17565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610c8857600080fd5b5061054860215481565b348015610c9e57600080fd5b506104dd610cad366004612eab565b61191e565b348015610cbe57600080fd5b506104dd610ccd366004612eab565b611993565b348015610cde57600080fd5b506104dd610ced366004612d91565b6119c2565b348015610cfe57600080fd5b5061054860195481565b348015610d1457600080fd5b506104dd610d23366004612eab565b611a17565b348015610d3457600080fd5b506104dd610d43366004612cdd565b611a46565b348015610d5457600080fd5b506104dd610d63366004612eab565b611b30565b348015610d7457600080fd5b506104dd610d83366004612d91565b611b7f565b348015610d9457600080fd5b506028546104ad90600160b81b900460ff1681565b348015610db557600080fd5b50610548601b5481565b606060018054610dce906130d2565b80601f0160208091040260200160405190810160405280929190818152602001828054610dfa906130d2565b8015610e475780601f10610e1c57610100808354040283529160200191610e47565b820191906000526020600020905b815481529060010190602001808311610e2a57829003601f168201915b5050505050905090565b6000610e5e338484611c33565b5060015b92915050565b6000546001600160a01b03163314610e9b5760405162461bcd60e51b8152600401610e9290612fd0565b60405180910390fd5b601183905560128290556013819055601454610ec390610ebd83818787611bd4565b90611bd4565b601a55505050565b6000546001600160a01b03163314610ef55760405162461bcd60e51b8152600401610e9290612fd0565b600d839055600e829055600f819055601054610f1790610ebd83818787611bd4565b601955505050565b6000546001600160a01b03163314610f495760405162461bcd60e51b8152600401610e9290612fd0565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000610f81848484611d57565b50610fd48433610fcf8560405180606001604052806028815260200161317b602891396001600160a01b038a166000908152600760209081526040808320338452909152902054919061224e565b611c33565b5060015b9392505050565b6000546001600160a01b031633146110095760405162461bcd60e51b8152600401610e9290612fd0565b60288054911515600160b81b0260ff60b81b19909216919091179055565b6005546001600160a01b0316600090815260066020526040812054601d5461104e91612288565b905090565b6000546001600160a01b0316331461107d5760405162461bcd60e51b8152600401610e9290612fd0565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610e5e918590610fcf9086611bd4565b6000546001600160a01b031633146110ff5760405162461bcd60e51b8152600401610e9290612fd0565b602055565b6000546001600160a01b0316331461112e5760405162461bcd60e51b8152600401610e9290612fd0565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080546001600160a01b031633146111815760405162461bcd60e51b8152600401610e9290612fd0565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156111bf57600080fd5b505afa1580156111d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f79190612cfa565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561123f57600080fd5b505afa158015611253573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112779190612cfa565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b1580156112bd57600080fd5b505afa1580156112d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f59190612cfa565b91506001600160a01b03821661147957806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561133e57600080fd5b505afa158015611352573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113769190612cfa565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156113be57600080fd5b505afa1580156113d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f69190612cfa565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561143e57600080fd5b505af1158015611452573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114769190612cfa565b91505b602880546001600160a01b03199081166001600160a01b03858116918217845560278054909316948116949094179091556000908152600a60209081526040808320805460ff19908116600190811790925594549095168352600c909152902080549091169091179055919050565b6000546001600160a01b031633146115125760405162461bcd60e51b8152600401610e9290612fd0565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115675760405162461bcd60e51b8152600401610e9290612fd0565b6010819055600f54600e54600d54611586928492610ebd928391611bd4565b60195550565b6000546001600160a01b031633146115b65760405162461bcd60e51b8152600401610e9290612fd0565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606060028054610dce906130d2565b6000546001600160a01b031633146116395760405162461bcd60e51b8152600401610e9290612fd0565b60005b828110156116aa57816008600086868581811061165b5761165b61313e565b90506020020160208101906116709190612cdd565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806116a28161310d565b91505061163c565b50505050565b6000610e5e3384610fcf856040518060600160405280602581526020016131c3602591393360009081526007602090815260408083206001600160a01b038d168452909152902054919061224e565b6000546001600160a01b031633146117295760405162461bcd60e51b8152600401610e9290612fd0565b60288054911515600160b01b0260ff60b01b19909216919091179055565b6000610fd4338484611d57565b6000546001600160a01b0316331461177e5760405162461bcd60e51b8152600401610e9290612fd0565b601c55565b6000546001600160a01b031633146117ad5760405162461bcd60e51b8152600401610e9290612fd0565b6015839055601682905560178190556117ca81610ebd8585611bd4565b601855505050565b6000546001600160a01b031633146117fc5760405162461bcd60e51b8152600401610e9290612fd0565b60005b828110156116aa57816009600086868581811061181e5761181e61313e565b90506020020160208101906118339190612cdd565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806118658161310d565b9150506117ff565b6000546001600160a01b031633146118975760405162461bcd60e51b8152600401610e9290612fd0565b60288054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906118e490831515815260200190565b60405180910390a150565b6000546001600160a01b031633146119195760405162461bcd60e51b8152600401610e9290612fd0565b602455565b6000546001600160a01b031633146119485760405162461bcd60e51b8152600401610e9290612fd0565b600381111561198e5760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b6044820152606401610e92565b602155565b6000546001600160a01b031633146119bd5760405162461bcd60e51b8152600401610e9290612fd0565b601e55565b6000546001600160a01b031633146119ec5760405162461bcd60e51b8152600401610e9290612fd0565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a415760405162461bcd60e51b8152600401610e9290612fd0565b601f55565b6000546001600160a01b03163314611a705760405162461bcd60e51b8152600401610e9290612fd0565b6001600160a01b038116611ad55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e92565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611b5a5760405162461bcd60e51b8152600401610e9290612fd0565b6014819055601354601254601154611b79928492610ebd928391611bd4565b601a5550565b6000546001600160a01b03163314611ba95760405162461bcd60e51b8152600401610e9290612fd0565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b600080611be18385613062565b905083811015610fd85760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610e92565b6001600160a01b038316611c955760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610e92565b6001600160a01b038216611cf65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610e92565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611dbd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610e92565b6001600160a01b038316611e1f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610e92565b60008211611e815760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610e92565b6001600160a01b03841660009081526008602052604090205460ff1615611ecf5760405162461bcd60e51b8152602060048201526002602482015261109360f21b6044820152606401610e92565b6028546001600160a01b038481169116148015611f0457506028546001600160a01b0316600090815260066020526040902054155b15611f0e57436023555b6028546001600160a01b038581169116148015611f395750602454602354611f369190613062565b43105b15611f5d57602254611f569085906001600160a01b0316846122ca565b9050610fd8565b602854600160a01b900460ff1615611f7a57611f568484846122ca565b6001600160a01b0384166000908152600b602052604090205460ff16158015611fbc57506001600160a01b0383166000908152600b602052604090205460ff16155b1561202457601e548211156120245760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610e92565b30600090815260066020526040812054602054909150811080159081906120555750602854600160a01b900460ff16155b801561207a57506001600160a01b0386166000908152600c602052604090205460ff16155b801561208f5750602854600160a81b900460ff165b156120b557602854600160b01b900460ff16156120ac5760205491505b6120b58261239e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03891660009081526006909152919091205461210791869061224e565b6001600160a01b038716600090815260066020908152604080832093909355600990529081205460ff168061215457506001600160a01b03861660009081526009602052604090205460ff165b6121685761216387878761256d565b61216a565b845b602854909150600160b81b900460ff16801561219f57506001600160a01b0386166000908152600a602052604090205460ff16155b156121d557601f546121ca82610ebd896001600160a01b031660009081526006602052604090205490565b11156121d557600080fd5b6001600160a01b0386166000908152600660205260409020546121f89082611bd4565b6001600160a01b0380881660008181526006602052604090819020939093559151908916906000805160206131a38339815191529061223a9085815260200190565b60405180910390a360019350505050610fd8565b600081848411156122725760405162461bcd60e51b8152600401610e929190612f7b565b50600061227f84866130bb565b95945050505050565b6000610fd883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061224e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260069091529182205461231b91849061224e565b6001600160a01b03808616600090815260066020526040808220939093559085168152205461234a9083611bd4565b6001600160a01b0380851660008181526006602052604090819020939093559151908616906000805160206131a38339815191529061238c9086815260200190565b60405180910390a35060019392505050565b6028805460ff60a01b1916600160a01b1790556018546015546000916123d4916002916123ce918290879061282f565b906128ae565b905060006123e28383612288565b90506123ed816128f0565b6025546026546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a082319060240160206040518083038186803b15801561243957600080fd5b505afa15801561244d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124719190612ec4565b9050600061249761248e60026015546128ae90919063ffffffff16565b60185490612288565b905060006124b960026123ce846123ce6015548861282f90919063ffffffff16565b905060006124d6836123ce6017548761282f90919063ffffffff16565b905060006124ee826124e88786612288565b90612288565b90508015612511576003546125119061010090046001600160a01b031682612a28565b811561252d5760045461252d906001600160a01b031683612a28565b60008311801561253d5750600087115b156125565761254c3084612a28565b6125568784612abd565b50506028805460ff60a01b19169055505050505050565b6001600160a01b0383166000908152600c602052604081205481908190819060ff1615612601576125ba60646123ce6125b360105460195461228890919063ffffffff16565b889061282f565b925060006010541180156125d15750601c54601b54105b156125fc576125f060646123ce6010548861282f90919063ffffffff16565b91506125fc8783612c19565b612683565b6001600160a01b0386166000908152600c602052604090205460ff16156126835761264160646123ce6125b3601454601a5461228890919063ffffffff16565b925060006014541180156126585750601c54601b54105b156126835761267760646123ce6014548861282f90919063ffffffff16565b91506126838783612c19565b6001600160a01b0387166000908152600c602052604090205460ff16806126c257506001600160a01b0386166000908152600c602052604090205460ff165b156127a457602154156127a4576000805b60215481101561279157604080516020810183905290810188905242606082015260800160408051601f1981840301815291815281516020928301206001600160a01b03811660009081526006909352912054909250612734906001611bd4565b6001600160a01b0380841660008181526006602052604090819020939093559151908b16906000805160206131a383398151915290612777906001815260200190565b60405180910390a3806127898161310d565b9150506126d3565b506021546127a090600161309c565b9150505b821561280c57306000908152600660205260409020546127c49084611bd4565b30600081815260066020526040908190209290925590516001600160a01b038916906000805160206131a3833981519152906128039087815260200190565b60405180910390a35b61282461281d82610ebd8686611bd4565b8690612288565b979650505050505050565b60008261283e57506000610e62565b600061284a838561309c565b905082612857858361307a565b14610fd85760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610e92565b6000610fd883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612caf565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106129255761292561313e565b6001600160a01b0392831660209182029290920101526025548251911690829060019081106129565761295661313e565b6001600160a01b03928316602091820292909201015260275461297c9130911684611c33565b602754602654604051635c11d79560e01b81526001600160a01b0392831692635c11d795926129b992879260009288929116904290600401613026565b600060405180830381600087803b1580156129d357600080fd5b505af11580156129e7573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612a1c929190613005565b60405180910390a15050565b6025546026546040516323b872dd60e01b81526001600160a01b0391821660048201528482166024820152604481018490529116906323b872dd90606401602060405180830381600087803b158015612a8057600080fd5b505af1158015612a94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab89190612e8e565b505050565b602754612ad59030906001600160a01b031684611c33565b60255460275460405163095ea7b360e01b81526001600160a01b0391821660048201526024810184905291169063095ea7b390604401602060405180830381600087803b158015612b2557600080fd5b505af1158015612b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b5d9190612e8e565b5060275460255460225460405162e8e33760e81b81523060048201526001600160a01b039283166024820152604481018690526064810185905260006084820181905260a482015290821660c48201524260e482015291169063e8e337009061010401606060405180830381600087803b158015612bda57600080fd5b505af1158015612bee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c129190612f09565b5050505050565b601c54601b5410612c28575050565b6005546001600160a01b0316600090815260066020526040902054612c4d9082611bd4565b6005546001600160a01b0316600090815260066020526040902055601b54612c759082611bd4565b601b556005546040518281526001600160a01b03918216918416906000805160206131a38339815191529060200160405180910390a35050565b60008183612cd05760405162461bcd60e51b8152600401610e929190612f7b565b50600061227f848661307a565b600060208284031215612cef57600080fd5b8135610fd881613154565b600060208284031215612d0c57600080fd5b8151610fd881613154565b60008060408385031215612d2a57600080fd5b8235612d3581613154565b91506020830135612d4581613154565b809150509250929050565b600080600060608486031215612d6557600080fd5b8335612d7081613154565b92506020840135612d8081613154565b929592945050506040919091013590565b60008060408385031215612da457600080fd5b8235612daf81613154565b91506020830135612d458161316c565b60008060408385031215612dd257600080fd5b8235612ddd81613154565b946020939093013593505050565b600080600060408486031215612e0057600080fd5b833567ffffffffffffffff80821115612e1857600080fd5b818601915086601f830112612e2c57600080fd5b813581811115612e3b57600080fd5b8760208260051b8501011115612e5057600080fd5b60209283019550935050840135612e668161316c565b809150509250925092565b600060208284031215612e8357600080fd5b8135610fd88161316c565b600060208284031215612ea057600080fd5b8151610fd88161316c565b600060208284031215612ebd57600080fd5b5035919050565b600060208284031215612ed657600080fd5b5051919050565b600080600060608486031215612ef257600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612f1e57600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015612f705781516001600160a01b031687529582019590820190600101612f4b565b509495945050505050565b600060208083528351808285015260005b81811015612fa857858101830151858201604001528201612f8c565b81811115612fba576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b82815260406020820152600061301e6040830184612f37565b949350505050565b85815284602082015260a06040820152600061304560a0830186612f37565b6001600160a01b0394909416606083015250608001529392505050565b6000821982111561307557613075613128565b500190565b60008261309757634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156130b6576130b6613128565b500290565b6000828210156130cd576130cd613128565b500390565b600181811c908216806130e657607f821691505b6020821081141561310757634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561312157613121613128565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461316957600080fd5b50565b801515811461316957600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a7c7b0dd446fe096a7a9155dca096281e2109715a3c226e730769fa8034ac29c64736f6c63430008070033608060405234801561001057600080fd5b506040516101e63803806101e683398101604081905261002f916100d9565b600080546001600160a01b03199081166001600160a01b038416908117909255600180543392168217905560405163095ea7b360e01b81526004810191909152600019602482015263095ea7b390604401602060405180830381600087803b15801561009a57600080fd5b505af11580156100ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d29190610109565b505061012b565b6000602082840312156100eb57600080fd5b81516001600160a01b038116811461010257600080fd5b9392505050565b60006020828403121561011b57600080fd5b8151801515811461010257600080fd5b60ad806101396000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80632f48ab7d1460375780638da5cb5b146065575b600080fd5b6000546049906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6001546049906001600160a01b03168156fea264697066735822122010d5da7376559763e791c9aa84d421710df439e93d0d8ef378e0378324c1d51b64736f6c634300080700330000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b47997506000000000000000000000000904ba3e5185f6a94505f57d1cdbad798eed14ebc000000000000000000000000904ba3e5185f6a94505f57d1cdbad798eed14ebc000000000000000000000000904ba3e5185f6a94505f57d1cdbad798eed14ebc

Deployed Bytecode

0x6080604052600436106104565760003560e01c80638da5cb5b1161023f578063c7f063d311610139578063e5c2b0a6116100b6578063f2fde38b1161007a578063f2fde38b14610d28578063f744bf2214610d48578063f84ba65d14610d68578063f872858a14610d88578063fb1eb14b14610da957600080fd5b8063e5c2b0a614610c92578063ec28438a14610cb2578063ef422a1814610cd2578063f0cd1dac14610cf2578063f1d5f51714610d0857600080fd5b8063d158272d116100fd578063d158272d14610bda578063da00097d14610bff578063dc44b6a014610c20578063dd62ed3e14610c36578063e32759cf14610c7c57600080fd5b8063c7f063d314610b3e578063c816841b14610b5e578063c860795214610b7e578063c867d60b14610b94578063cab0347114610bc457600080fd5b8063a83f53a7116101c7578063c2d4640e1161018b578063c2d4640e14610ab2578063c469b6dd14610ad2578063c492f04614610ae8578063c49b9a8014610b08578063c5d2418914610b2857600080fd5b8063a83f53a714610a1c578063a9059cbb14610a32578063b2bdfa7b14610a52578063b340a95414610a72578063b6b3664314610a9257600080fd5b80639a55fff01161020e5780639a55fff014610991578063a073d37f146109b1578063a08e671f146109c6578063a457c2d7146109dc578063a5d69d1f146109fc57600080fd5b80638da5cb5b14610933578063914eb66a1461095157806395d89b4114610966578063993945ac1461097b57600080fd5b80633b97084a116103505780635881f3ef116102d857806382eefb431161029c57806382eefb4314610897578063844d591c146108ad578063865541e7146108cd57806388790a68146108ed5780638b42507f1461090357600080fd5b80635881f3ef146107ff57806361a23c691461081f57806370a08231146108355780637d1db4a51461086b578063807c2d9c1461088157600080fd5b80634a74bb021161031f5780634a74bb02146107655780634cb80fd5146107865780635342acb4146107a6578063557ed1ba146107d657806357a5802f146107e957600080fd5b80633b97084a146106e95780633df4ddf4146107095780633ecad2711461071f57806341c0e1b51461074f57600080fd5b806323b872dd116103de5780632c4b2334116103a25780632c4b2334146106515780632f48ab7d14610671578063313ce5671461069157806337e5ccf7146106b357806339509351146106c957600080fd5b806323b872dd146105c65780632563ae83146105e657806327c8f83514610606578063297ac6de146106265780632b112e491461063c57600080fd5b80631694505e116104255780631694505e1461051757806318160ddd146105375780631870517a146105565780631cdd3be3146105765780632198cf6c146105a657600080fd5b806306fdde0314610462578063095ea7b31461048d5780630d5e5c87146104bd5780631245e347146104df57600080fd5b3661045d57005b600080fd5b34801561046e57600080fd5b50610477610dbf565b6040516104849190612f7b565b60405180910390f35b34801561049957600080fd5b506104ad6104a8366004612dbf565b610e51565b6040519015158152602001610484565b3480156104c957600080fd5b506104dd6104d8366004612edd565b610e68565b005b3480156104eb57600080fd5b506004546104ff906001600160a01b031681565b6040516001600160a01b039091168152602001610484565b34801561052357600080fd5b506027546104ff906001600160a01b031681565b34801561054357600080fd5b50601d545b604051908152602001610484565b34801561056257600080fd5b506104dd610571366004612edd565b610ecb565b34801561058257600080fd5b506104ad610591366004612cdd565b60086020526000908152604090205460ff1681565b3480156105b257600080fd5b506104dd6105c1366004612d91565b610f1f565b3480156105d257600080fd5b506104ad6105e1366004612d50565b610f74565b3480156105f257600080fd5b506104dd610601366004612e71565b610fdf565b34801561061257600080fd5b506005546104ff906001600160a01b031681565b34801561063257600080fd5b5061054860145481565b34801561064857600080fd5b50610548611027565b34801561065d57600080fd5b506104dd61066c366004612cdd565b611053565b34801561067d57600080fd5b506025546104ff906001600160a01b031681565b34801561069d57600080fd5b5060035460405160ff9091168152602001610484565b3480156106bf57600080fd5b5061054860105481565b3480156106d557600080fd5b506104ad6106e4366004612dbf565b61109f565b3480156106f557600080fd5b506104dd610704366004612eab565b6110d5565b34801561071557600080fd5b5061054860235481565b34801561072b57600080fd5b506104ad61073a366004612cdd565b600c6020526000908152604090205460ff1681565b34801561075b57600080fd5b5061054860245481565b34801561077157600080fd5b506028546104ad90600160a81b900460ff1681565b34801561079257600080fd5b506104dd6107a1366004612cdd565b611104565b3480156107b257600080fd5b506104ad6107c1366004612cdd565b60096020526000908152604090205460ff1681565b3480156107e257600080fd5b5042610548565b3480156107f557600080fd5b5061054860155481565b34801561080b57600080fd5b506104ff61081a366004612cdd565b611156565b34801561082b57600080fd5b5061054860165481565b34801561084157600080fd5b50610548610850366004612cdd565b6001600160a01b031660009081526006602052604090205490565b34801561087757600080fd5b50610548601e5481565b34801561088d57600080fd5b50610548601f5481565b3480156108a357600080fd5b50610548601a5481565b3480156108b957600080fd5b506104dd6108c8366004612d91565b6114e8565b3480156108d957600080fd5b506104dd6108e8366004612eab565b61153d565b3480156108f957600080fd5b5061054860115481565b34801561090f57600080fd5b506104ad61091e366004612cdd565b600b6020526000908152604090205460ff1681565b34801561093f57600080fd5b506000546001600160a01b03166104ff565b34801561095d57600080fd5b506104dd61158c565b34801561097257600080fd5b50610477611600565b34801561098757600080fd5b50610548601c5481565b34801561099d57600080fd5b506104dd6109ac366004612deb565b61160f565b3480156109bd57600080fd5b50602054610548565b3480156109d257600080fd5b5061054860185481565b3480156109e857600080fd5b506104ad6109f7366004612dbf565b6116b0565b348015610a0857600080fd5b506104dd610a17366004612e71565b6116ff565b348015610a2857600080fd5b5061054860175481565b348015610a3e57600080fd5b506104ad610a4d366004612dbf565b611747565b348015610a5e57600080fd5b506000546104ff906001600160a01b031681565b348015610a7e57600080fd5b506026546104ff906001600160a01b031681565b348015610a9e57600080fd5b506104dd610aad366004612eab565b611754565b348015610abe57600080fd5b506104dd610acd366004612edd565b611783565b348015610ade57600080fd5b50610548600f5481565b348015610af457600080fd5b506104dd610b03366004612deb565b6117d2565b348015610b1457600080fd5b506104dd610b23366004612e71565b61186d565b348015610b3457600080fd5b50610548600e5481565b348015610b4a57600080fd5b506104dd610b59366004612eab565b6118ef565b348015610b6a57600080fd5b506028546104ff906001600160a01b031681565b348015610b8a57600080fd5b5061054860125481565b348015610ba057600080fd5b506104ad610baf366004612cdd565b600a6020526000908152604090205460ff1681565b348015610bd057600080fd5b5061054860135481565b348015610be657600080fd5b506003546104ff9061010090046001600160a01b031681565b348015610c0b57600080fd5b506028546104ad90600160b01b900460ff1681565b348015610c2c57600080fd5b50610548600d5481565b348015610c4257600080fd5b50610548610c51366004612d17565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610c8857600080fd5b5061054860215481565b348015610c9e57600080fd5b506104dd610cad366004612eab565b61191e565b348015610cbe57600080fd5b506104dd610ccd366004612eab565b611993565b348015610cde57600080fd5b506104dd610ced366004612d91565b6119c2565b348015610cfe57600080fd5b5061054860195481565b348015610d1457600080fd5b506104dd610d23366004612eab565b611a17565b348015610d3457600080fd5b506104dd610d43366004612cdd565b611a46565b348015610d5457600080fd5b506104dd610d63366004612eab565b611b30565b348015610d7457600080fd5b506104dd610d83366004612d91565b611b7f565b348015610d9457600080fd5b506028546104ad90600160b81b900460ff1681565b348015610db557600080fd5b50610548601b5481565b606060018054610dce906130d2565b80601f0160208091040260200160405190810160405280929190818152602001828054610dfa906130d2565b8015610e475780601f10610e1c57610100808354040283529160200191610e47565b820191906000526020600020905b815481529060010190602001808311610e2a57829003601f168201915b5050505050905090565b6000610e5e338484611c33565b5060015b92915050565b6000546001600160a01b03163314610e9b5760405162461bcd60e51b8152600401610e9290612fd0565b60405180910390fd5b601183905560128290556013819055601454610ec390610ebd83818787611bd4565b90611bd4565b601a55505050565b6000546001600160a01b03163314610ef55760405162461bcd60e51b8152600401610e9290612fd0565b600d839055600e829055600f819055601054610f1790610ebd83818787611bd4565b601955505050565b6000546001600160a01b03163314610f495760405162461bcd60e51b8152600401610e9290612fd0565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000610f81848484611d57565b50610fd48433610fcf8560405180606001604052806028815260200161317b602891396001600160a01b038a166000908152600760209081526040808320338452909152902054919061224e565b611c33565b5060015b9392505050565b6000546001600160a01b031633146110095760405162461bcd60e51b8152600401610e9290612fd0565b60288054911515600160b81b0260ff60b81b19909216919091179055565b6005546001600160a01b0316600090815260066020526040812054601d5461104e91612288565b905090565b6000546001600160a01b0316331461107d5760405162461bcd60e51b8152600401610e9290612fd0565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610e5e918590610fcf9086611bd4565b6000546001600160a01b031633146110ff5760405162461bcd60e51b8152600401610e9290612fd0565b602055565b6000546001600160a01b0316331461112e5760405162461bcd60e51b8152600401610e9290612fd0565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080546001600160a01b031633146111815760405162461bcd60e51b8152600401610e9290612fd0565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156111bf57600080fd5b505afa1580156111d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f79190612cfa565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561123f57600080fd5b505afa158015611253573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112779190612cfa565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b1580156112bd57600080fd5b505afa1580156112d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f59190612cfa565b91506001600160a01b03821661147957806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561133e57600080fd5b505afa158015611352573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113769190612cfa565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156113be57600080fd5b505afa1580156113d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f69190612cfa565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561143e57600080fd5b505af1158015611452573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114769190612cfa565b91505b602880546001600160a01b03199081166001600160a01b03858116918217845560278054909316948116949094179091556000908152600a60209081526040808320805460ff19908116600190811790925594549095168352600c909152902080549091169091179055919050565b6000546001600160a01b031633146115125760405162461bcd60e51b8152600401610e9290612fd0565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115675760405162461bcd60e51b8152600401610e9290612fd0565b6010819055600f54600e54600d54611586928492610ebd928391611bd4565b60195550565b6000546001600160a01b031633146115b65760405162461bcd60e51b8152600401610e9290612fd0565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606060028054610dce906130d2565b6000546001600160a01b031633146116395760405162461bcd60e51b8152600401610e9290612fd0565b60005b828110156116aa57816008600086868581811061165b5761165b61313e565b90506020020160208101906116709190612cdd565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806116a28161310d565b91505061163c565b50505050565b6000610e5e3384610fcf856040518060600160405280602581526020016131c3602591393360009081526007602090815260408083206001600160a01b038d168452909152902054919061224e565b6000546001600160a01b031633146117295760405162461bcd60e51b8152600401610e9290612fd0565b60288054911515600160b01b0260ff60b01b19909216919091179055565b6000610fd4338484611d57565b6000546001600160a01b0316331461177e5760405162461bcd60e51b8152600401610e9290612fd0565b601c55565b6000546001600160a01b031633146117ad5760405162461bcd60e51b8152600401610e9290612fd0565b6015839055601682905560178190556117ca81610ebd8585611bd4565b601855505050565b6000546001600160a01b031633146117fc5760405162461bcd60e51b8152600401610e9290612fd0565b60005b828110156116aa57816009600086868581811061181e5761181e61313e565b90506020020160208101906118339190612cdd565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806118658161310d565b9150506117ff565b6000546001600160a01b031633146118975760405162461bcd60e51b8152600401610e9290612fd0565b60288054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906118e490831515815260200190565b60405180910390a150565b6000546001600160a01b031633146119195760405162461bcd60e51b8152600401610e9290612fd0565b602455565b6000546001600160a01b031633146119485760405162461bcd60e51b8152600401610e9290612fd0565b600381111561198e5760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b6044820152606401610e92565b602155565b6000546001600160a01b031633146119bd5760405162461bcd60e51b8152600401610e9290612fd0565b601e55565b6000546001600160a01b031633146119ec5760405162461bcd60e51b8152600401610e9290612fd0565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a415760405162461bcd60e51b8152600401610e9290612fd0565b601f55565b6000546001600160a01b03163314611a705760405162461bcd60e51b8152600401610e9290612fd0565b6001600160a01b038116611ad55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e92565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611b5a5760405162461bcd60e51b8152600401610e9290612fd0565b6014819055601354601254601154611b79928492610ebd928391611bd4565b601a5550565b6000546001600160a01b03163314611ba95760405162461bcd60e51b8152600401610e9290612fd0565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b600080611be18385613062565b905083811015610fd85760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610e92565b6001600160a01b038316611c955760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610e92565b6001600160a01b038216611cf65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610e92565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611dbd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610e92565b6001600160a01b038316611e1f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610e92565b60008211611e815760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610e92565b6001600160a01b03841660009081526008602052604090205460ff1615611ecf5760405162461bcd60e51b8152602060048201526002602482015261109360f21b6044820152606401610e92565b6028546001600160a01b038481169116148015611f0457506028546001600160a01b0316600090815260066020526040902054155b15611f0e57436023555b6028546001600160a01b038581169116148015611f395750602454602354611f369190613062565b43105b15611f5d57602254611f569085906001600160a01b0316846122ca565b9050610fd8565b602854600160a01b900460ff1615611f7a57611f568484846122ca565b6001600160a01b0384166000908152600b602052604090205460ff16158015611fbc57506001600160a01b0383166000908152600b602052604090205460ff16155b1561202457601e548211156120245760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610e92565b30600090815260066020526040812054602054909150811080159081906120555750602854600160a01b900460ff16155b801561207a57506001600160a01b0386166000908152600c602052604090205460ff16155b801561208f5750602854600160a81b900460ff165b156120b557602854600160b01b900460ff16156120ac5760205491505b6120b58261239e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03891660009081526006909152919091205461210791869061224e565b6001600160a01b038716600090815260066020908152604080832093909355600990529081205460ff168061215457506001600160a01b03861660009081526009602052604090205460ff165b6121685761216387878761256d565b61216a565b845b602854909150600160b81b900460ff16801561219f57506001600160a01b0386166000908152600a602052604090205460ff16155b156121d557601f546121ca82610ebd896001600160a01b031660009081526006602052604090205490565b11156121d557600080fd5b6001600160a01b0386166000908152600660205260409020546121f89082611bd4565b6001600160a01b0380881660008181526006602052604090819020939093559151908916906000805160206131a38339815191529061223a9085815260200190565b60405180910390a360019350505050610fd8565b600081848411156122725760405162461bcd60e51b8152600401610e929190612f7b565b50600061227f84866130bb565b95945050505050565b6000610fd883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061224e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260069091529182205461231b91849061224e565b6001600160a01b03808616600090815260066020526040808220939093559085168152205461234a9083611bd4565b6001600160a01b0380851660008181526006602052604090819020939093559151908616906000805160206131a38339815191529061238c9086815260200190565b60405180910390a35060019392505050565b6028805460ff60a01b1916600160a01b1790556018546015546000916123d4916002916123ce918290879061282f565b906128ae565b905060006123e28383612288565b90506123ed816128f0565b6025546026546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a082319060240160206040518083038186803b15801561243957600080fd5b505afa15801561244d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124719190612ec4565b9050600061249761248e60026015546128ae90919063ffffffff16565b60185490612288565b905060006124b960026123ce846123ce6015548861282f90919063ffffffff16565b905060006124d6836123ce6017548761282f90919063ffffffff16565b905060006124ee826124e88786612288565b90612288565b90508015612511576003546125119061010090046001600160a01b031682612a28565b811561252d5760045461252d906001600160a01b031683612a28565b60008311801561253d5750600087115b156125565761254c3084612a28565b6125568784612abd565b50506028805460ff60a01b19169055505050505050565b6001600160a01b0383166000908152600c602052604081205481908190819060ff1615612601576125ba60646123ce6125b360105460195461228890919063ffffffff16565b889061282f565b925060006010541180156125d15750601c54601b54105b156125fc576125f060646123ce6010548861282f90919063ffffffff16565b91506125fc8783612c19565b612683565b6001600160a01b0386166000908152600c602052604090205460ff16156126835761264160646123ce6125b3601454601a5461228890919063ffffffff16565b925060006014541180156126585750601c54601b54105b156126835761267760646123ce6014548861282f90919063ffffffff16565b91506126838783612c19565b6001600160a01b0387166000908152600c602052604090205460ff16806126c257506001600160a01b0386166000908152600c602052604090205460ff165b156127a457602154156127a4576000805b60215481101561279157604080516020810183905290810188905242606082015260800160408051601f1981840301815291815281516020928301206001600160a01b03811660009081526006909352912054909250612734906001611bd4565b6001600160a01b0380841660008181526006602052604090819020939093559151908b16906000805160206131a383398151915290612777906001815260200190565b60405180910390a3806127898161310d565b9150506126d3565b506021546127a090600161309c565b9150505b821561280c57306000908152600660205260409020546127c49084611bd4565b30600081815260066020526040908190209290925590516001600160a01b038916906000805160206131a3833981519152906128039087815260200190565b60405180910390a35b61282461281d82610ebd8686611bd4565b8690612288565b979650505050505050565b60008261283e57506000610e62565b600061284a838561309c565b905082612857858361307a565b14610fd85760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610e92565b6000610fd883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612caf565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106129255761292561313e565b6001600160a01b0392831660209182029290920101526025548251911690829060019081106129565761295661313e565b6001600160a01b03928316602091820292909201015260275461297c9130911684611c33565b602754602654604051635c11d79560e01b81526001600160a01b0392831692635c11d795926129b992879260009288929116904290600401613026565b600060405180830381600087803b1580156129d357600080fd5b505af11580156129e7573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612a1c929190613005565b60405180910390a15050565b6025546026546040516323b872dd60e01b81526001600160a01b0391821660048201528482166024820152604481018490529116906323b872dd90606401602060405180830381600087803b158015612a8057600080fd5b505af1158015612a94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab89190612e8e565b505050565b602754612ad59030906001600160a01b031684611c33565b60255460275460405163095ea7b360e01b81526001600160a01b0391821660048201526024810184905291169063095ea7b390604401602060405180830381600087803b158015612b2557600080fd5b505af1158015612b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b5d9190612e8e565b5060275460255460225460405162e8e33760e81b81523060048201526001600160a01b039283166024820152604481018690526064810185905260006084820181905260a482015290821660c48201524260e482015291169063e8e337009061010401606060405180830381600087803b158015612bda57600080fd5b505af1158015612bee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c129190612f09565b5050505050565b601c54601b5410612c28575050565b6005546001600160a01b0316600090815260066020526040902054612c4d9082611bd4565b6005546001600160a01b0316600090815260066020526040902055601b54612c759082611bd4565b601b556005546040518281526001600160a01b03918216918416906000805160206131a38339815191529060200160405180910390a35050565b60008183612cd05760405162461bcd60e51b8152600401610e929190612f7b565b50600061227f848661307a565b600060208284031215612cef57600080fd5b8135610fd881613154565b600060208284031215612d0c57600080fd5b8151610fd881613154565b60008060408385031215612d2a57600080fd5b8235612d3581613154565b91506020830135612d4581613154565b809150509250929050565b600080600060608486031215612d6557600080fd5b8335612d7081613154565b92506020840135612d8081613154565b929592945050506040919091013590565b60008060408385031215612da457600080fd5b8235612daf81613154565b91506020830135612d458161316c565b60008060408385031215612dd257600080fd5b8235612ddd81613154565b946020939093013593505050565b600080600060408486031215612e0057600080fd5b833567ffffffffffffffff80821115612e1857600080fd5b818601915086601f830112612e2c57600080fd5b813581811115612e3b57600080fd5b8760208260051b8501011115612e5057600080fd5b60209283019550935050840135612e668161316c565b809150509250925092565b600060208284031215612e8357600080fd5b8135610fd88161316c565b600060208284031215612ea057600080fd5b8151610fd88161316c565b600060208284031215612ebd57600080fd5b5035919050565b600060208284031215612ed657600080fd5b5051919050565b600080600060608486031215612ef257600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612f1e57600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015612f705781516001600160a01b031687529582019590820190600101612f4b565b509495945050505050565b600060208083528351808285015260005b81811015612fa857858101830151858201604001528201612f8c565b81811115612fba576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b82815260406020820152600061301e6040830184612f37565b949350505050565b85815284602082015260a06040820152600061304560a0830186612f37565b6001600160a01b0394909416606083015250608001529392505050565b6000821982111561307557613075613128565b500190565b60008261309757634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156130b6576130b6613128565b500290565b6000828210156130cd576130cd613128565b500390565b600181811c908216806130e657607f821691505b6020821081141561310757634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561312157613121613128565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461316957600080fd5b50565b801515811461316957600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a7c7b0dd446fe096a7a9155dca096281e2109715a3c226e730769fa8034ac29c64736f6c63430008070033

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

0000000000000000000000001b02dA8Cb0d097eB8D57A175b88c7D8b47997506000000000000000000000000904Ba3e5185F6a94505F57d1cDbaD798eeD14EbC000000000000000000000000904Ba3e5185F6a94505F57d1cDbaD798eeD14EbC000000000000000000000000904Ba3e5185F6a94505F57d1cDbaD798eeD14EbC

-----Decoded View---------------
Arg [0] : router (address): 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506
Arg [1] : owner (address): 0x904Ba3e5185F6a94505F57d1cDbaD798eeD14EbC
Arg [2] : marketingAddress (address): 0x904Ba3e5185F6a94505F57d1cDbaD798eeD14EbC
Arg [3] : teamAddress (address): 0x904Ba3e5185F6a94505F57d1cDbaD798eeD14EbC

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000001b02dA8Cb0d097eB8D57A175b88c7D8b47997506
Arg [1] : 000000000000000000000000904Ba3e5185F6a94505F57d1cDbaD798eeD14EbC
Arg [2] : 000000000000000000000000904Ba3e5185F6a94505F57d1cDbaD798eeD14EbC
Arg [3] : 000000000000000000000000904Ba3e5185F6a94505F57d1cDbaD798eeD14EbC


Deployed Bytecode Sourcemap

8367:19054:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12873:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14168:161;;;;;;;;;;-1:-1:-1;14168:161:0;;;;;:::i;:::-;;:::i;:::-;;;7453:14:1;;7446:22;7428:41;;7416:2;7401:18;14168:161:0;7288:187:1;16280:361:0;;;;;;;;;;-1:-1:-1;16280:361:0;;;;;:::i;:::-;;:::i;:::-;;8624:40;;;;;;;;;;-1:-1:-1;8624:40:0;;;;-1:-1:-1;;;;;8624:40:0;;;;;;-1:-1:-1;;;;;5287:32:1;;;5269:51;;5257:2;5242:18;8624:40:0;5123:203:1;10207:41:0;;;;;;;;;;-1:-1:-1;10207:41:0;;;;-1:-1:-1;;;;;10207:41:0;;;13150:100;;;;;;;;;;-1:-1:-1;13230:12:0;;13150:100;;;8096:25:1;;;8084:2;8069:18;13150:100:0;7942:185:1;15919:353:0;;;;;;;;;;-1:-1:-1;15919:353:0;;;;;:::i;:::-;;:::i;8872:46::-;;;;;;;;;;-1:-1:-1;8872:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17255:135;;;;;;;;;;-1:-1:-1;17255:135:0;;;;;:::i;:::-;;:::i;20124:313::-;;;;;;;;;;-1:-1:-1;20124:313:0;;;;;:::i;:::-;;:::i;17134:113::-;;;;;;;;;;-1:-1:-1;17134:113:0;;;;;:::i;:::-;;:::i;8671:71::-;;;;;;;;;;-1:-1:-1;8671:71:0;;;;-1:-1:-1;;;;;8671:71:0;;;9437:34;;;;;;;;;;;;;;;;18737:128;;;;;;;;;;;;;:::i;17788:129::-;;;;;;;;;;-1:-1:-1;17788:129:0;;;;;:::i;:::-;;:::i;10092:64::-;;;;;;;;;;-1:-1:-1;10092:64:0;;;;-1:-1:-1;;;;;10092:64:0;;;13059:83;;;;;;;;;;-1:-1:-1;13125:9:0;;13059:83;;13125:9;;;;14622:36:1;;14610:2;14595:18;13059:83:0;14480:184:1;9271:33:0;;;;;;;;;;;;;;;;13536:218;;;;;;;;;;-1:-1:-1;13536:218:0;;;;;:::i;:::-;;:::i;17508:125::-;;;;;;;;;;-1:-1:-1;17508:125:0;;;;;:::i;:::-;;:::i;10033:20::-;;;;;;;;;;;;;;;;9096:45;;;;;;;;;;-1:-1:-1;9096:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10060:23;;;;;;;;;;;;;;;;10318:40;;;;;;;;;;-1:-1:-1;10318:40:0;;;;-1:-1:-1;;;10318:40:0;;;;;;17641:139;;;;;;;;;;-1:-1:-1;17641:139:0;;;;;:::i;:::-;;:::i;8925:50::-;;;;;;;;;;-1:-1:-1;8925:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6267:90;;;;;;;;;;-1:-1:-1;6334:15:0;6267:90;;9480:34;;;;;;;;;;;;;;;;19041:806;;;;;;;;;;-1:-1:-1;19041:806:0;;;;;:::i;:::-;;:::i;9521:34::-;;;;;;;;;;;;;;;;13258:119;;;;;;;;;;-1:-1:-1;13258:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;13351:18:0;13324:7;13351:18;;;:9;:18;;;;;;;13258:119;9845:27;;;;;;;;;;;;;;;;9879:25;;;;;;;;;;;;;;;;9693:37;;;;;;;;;;;;;;;;14912:129;;;;;;;;;;-1:-1:-1;14912:129:0;;;;;:::i;:::-;;:::i;15446:224::-;;;;;;;;;;-1:-1:-1;15446:224:0;;;;;:::i;:::-;;:::i;9313:36::-;;;;;;;;;;;;;;;;9041:48;;;;;;;;;;-1:-1:-1;9041:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5648:79;;;;;;;;;;-1:-1:-1;5686:7:0;5713:6;-1:-1:-1;;;;;5713:6:0;5648:79;;5862:145;;;;;;;;;;;;;:::i;12964:87::-;;;;;;;;;;;;;:::i;9771:32::-;;;;;;;;;;;;;;;;14682:222;;;;;;;;;;-1:-1:-1;14682:222:0;;;;;:::i;:::-;;:::i;14039:121::-;;;;;;;;;;-1:-1:-1;14128:24:0;;14039:121;;9598:43;;;;;;;;;;;;;;;;13762:269;;;;;;;;;;-1:-1:-1;13762:269:0;;;;;:::i;:::-;;:::i;18104:125::-;;;;;;;;;;-1:-1:-1;18104:125:0;;;;;:::i;:::-;;:::i;9562:29::-;;;;;;;;;;;;;;;;19949:167;;;;;;;;;;-1:-1:-1;19949:167:0;;;;;:::i;:::-;;:::i;5524:21::-;;;;;;;;;;-1:-1:-1;5524:21:0;;;;-1:-1:-1;;;;;5524:21:0;;;10163:33;;;;;;;;;;-1:-1:-1;10163:33:0;;;;-1:-1:-1;;;;;10163:33:0;;;15327:111;;;;;;;;;;-1:-1:-1;15327:111:0;;;;;:::i;:::-;;:::i;16649:358::-;;;;;;;;;;-1:-1:-1;16649:358:0;;;;;:::i;:::-;;:::i;9234:30::-;;;;;;;;;;;;;;;;18237:233;;;;;;;;;;-1:-1:-1;18237:233:0;;;;;:::i;:::-;;:::i;17925:171::-;;;;;;;;;;-1:-1:-1;17925:171:0;;;;;:::i;:::-;;:::i;9192:35::-;;;;;;;;;;;;;;;;18478:86;;;;;;;;;;-1:-1:-1;18478:86:0;;;;;:::i;:::-;;:::i;10255:26::-;;;;;;;;;;-1:-1:-1;10255:26:0;;;;-1:-1:-1;;;;;10255:26:0;;;9356:36;;;;;;;;;;;;;;;;8982:52;;;;;;;;;;-1:-1:-1;8982:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9399:31;;;;;;;;;;;;;;;;8572:45;;;;;;;;;;-1:-1:-1;8572:45:0;;;;;;;-1:-1:-1;;;;;8572:45:0;;;10365;;;;;;;;;;-1:-1:-1;10365:45:0;;;;-1:-1:-1;;;10365:45:0;;;;;;9150:35;;;;;;;;;;;;;;;;13385:143;;;;;;;;;;-1:-1:-1;13385:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;13493:18:0;;;13466:7;13493:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;13385:143;9962:27;;;;;;;;;;;;;;;;18572:157;;;;;;;;;;-1:-1:-1;18572:157:0;;;;;:::i;:::-;;:::i;17015:111::-;;;;;;;;;;-1:-1:-1;17015:111:0;;;;;:::i;:::-;;:::i;15184:135::-;;;;;;;;;;-1:-1:-1;15184:135:0;;;;;:::i;:::-;;:::i;9650:36::-;;;;;;;;;;;;;;;;17398:102;;;;;;;;;;-1:-1:-1;17398:102:0;;;;;:::i;:::-;;:::i;6015:244::-;;;;;;;;;;-1:-1:-1;6015:244:0;;;;;:::i;:::-;;:::i;15678:233::-;;;;;;;;;;-1:-1:-1;15678:233:0;;;;;:::i;:::-;;:::i;15049:127::-;;;;;;;;;;-1:-1:-1;15049:127:0;;;;;:::i;:::-;;:::i;10417:35::-;;;;;;;;;;-1:-1:-1;10417:35:0;;;;-1:-1:-1;;;10417:35:0;;;;;;9739:25;;;;;;;;;;;;;;;;12873:83;12910:13;12943:5;12936:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12873:83;:::o;14168:161::-;14243:4;14260:39;268:10;14283:7;14292:6;14260:8;:39::i;:::-;-1:-1:-1;14317:4:0;14168:161;;;;;:::o;16280:361::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;;;;;;;;;16403:17:::1;:35:::0;;;16449:17:::1;:35:::0;;;16495:12:::1;:25:::0;;;16617:15:::1;::::0;16554:79:::1;::::0;:58:::1;16510:10:::0;16554:58;16423:15;16469;16554:21:::1;:40::i;:::-;:44:::0;::::1;:58::i;:79::-;16533:18;:100:::0;-1:-1:-1;;;16280:361:0:o;15919:353::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;16042:16:::1;:34:::0;;;16087:16:::1;:34:::0;;;16132:11:::1;:24:::0;;;16249:14:::1;::::0;16189:75:::1;::::0;:55:::1;16146:10:::0;16189:55;16061:15;16106;16189:20:::1;:38::i;:75::-;16169:17;:95:::0;-1:-1:-1;;;15919:353:0:o;17255:135::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17346:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;17346:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17255:135::o;20124:313::-;20222:4;20239:36;20249:6;20257:9;20268:6;20239:9;:36::i;:::-;-1:-1:-1;20286:121:0;20295:6;268:10;20317:89;20355:6;20317:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20317:19:0;;;;;;:11;:19;;;;;;;;268:10;20317:33;;;;;;;;;;:37;:89::i;:::-;20286:8;:121::i;:::-;-1:-1:-1;20425:4:0;20124:313;;;;;;:::o;17134:113::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;17212:16:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;17212:27:0::1;-1:-1:-1::0;;;;17212:27:0;;::::1;::::0;;;::::1;::::0;;17134:113::o;18737:128::-;18844:11;;-1:-1:-1;;;;;18844:11:0;18790:7;13351:18;;;:9;:18;;;;;;18817:12;;:40;;:16;:40::i;:::-;18810:47;;18737:128;:::o;17788:129::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;17870:17:::1;:39:::0;;-1:-1:-1;;;;;;17870:39:0::1;-1:-1:-1::0;;;;;17870:39:0;;;::::1;::::0;;;::::1;::::0;;17788:129::o;13536:218::-;268:10;13624:4;13673:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13673:34:0;;;;;;;;;;13624:4;;13641:83;;13664:7;;13673:50;;13712:10;13673:38;:50::i;17508:125::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;17590:24:::1;:35:::0;17508:125::o;17641:139::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;17728:22:::1;:44:::0;;-1:-1:-1;;;;;17728:44:0;;::::1;;;-1:-1:-1::0;;;;;;17728:44:0;;::::1;::::0;;;::::1;::::0;;17641:139::o;19041:806::-;19121:22;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;19158:35:::1;19215:16;19158:74;;19280:16;-1:-1:-1::0;;;;;19280:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19262:53:0::1;;19324:4;19331:16;-1:-1:-1::0;;;;;19331:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19262:93;::::0;-1:-1:-1;;;;;;19262:93:0::1;::::0;;;;;;-1:-1:-1;;;;;5785:15:1;;;19262:93:0::1;::::0;::::1;5767:34:1::0;5837:15;;5817:18;;;5810:43;5702:18;;19262:93:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19245:110:::0;-1:-1:-1;;;;;;19371:28:0;::::1;19368:225;;19485:16;-1:-1:-1::0;;;;;19485:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19467:74:0::1;;19550:4;19557:16;-1:-1:-1::0;;;;;19557:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19467:114;::::0;-1:-1:-1;;;;;;19467:114:0::1;::::0;;;;;;-1:-1:-1;;;;;5785:15:1;;;19467:114:0::1;::::0;::::1;5767:34:1::0;5837:15;;5817:18;;;5810:43;5702:18;;19467:114:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19450:131;;19368:225;19605:11;:28:::0;;-1:-1:-1;;;;;;19605:28:0;;::::1;-1:-1:-1::0;;;;;19605:28:0;;::::1;::::0;;::::1;::::0;;19667:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;19739:41:0;;;:19:::1;:41;::::0;;;;;;;:48;;-1:-1:-1;;19739:48:0;;::::1;-1:-1:-1::0;19739:48:0;;::::1;::::0;;;19819:11;;;;::::1;19798:34:::0;;:12:::1;:34:::0;;;;;:41;;;;::::1;::::0;;::::1;::::0;;19605:28;19619:14;-1:-1:-1;19041:806:0:o;14912:129::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15001:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:32;;-1:-1:-1;;15001:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14912:129::o;15446:224::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;15523:14:::1;:33:::0;;;15630:11:::1;::::0;15608:16:::1;::::0;15587::::1;::::0;:75:::1;::::0;15540:16;;15587:55:::1;::::0;;;:20:::1;:38::i;:75::-;15567:17;:95:::0;-1:-1:-1;15446:224:0:o;5862:145::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;5966:1:::1;5950:6:::0;;5929:40:::1;::::0;-1:-1:-1;;;;;5950:6:0;;::::1;::::0;5929:40:::1;::::0;5966:1;;5929:40:::1;5997:1;5980:19:::0;;-1:-1:-1;;;;;;5980:19:0::1;::::0;;5862:145::o;12964:87::-;13003:13;13036:7;13029:14;;;;;:::i;14682:222::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;14791:9:::1;14786:111;14806:19:::0;;::::1;14786:111;;;14877:8;14847:14;:27;14862:8;;14871:1;14862:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14847:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14847:27:0;:38;;-1:-1:-1;;14847:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14827:3;::::1;::::0;::::1;:::i;:::-;;;;14786:111;;;;14682:222:::0;;;:::o;13762:269::-;13855:4;13872:129;268:10;13895:7;13904:96;13943:15;13904:96;;;;;;;;;;;;;;;;;268:10;13904:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13904:34:0;;;;;;;;;;;;:38;:96::i;18104:125::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;18185:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;18185:36:0::1;-1:-1:-1::0;;;;18185:36:0;;::::1;::::0;;;::::1;::::0;;18104:125::o;19949:167::-;20027:4;20044:42;268:10;20068:9;20079:6;20044:9;:42::i;15327:111::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;15400:17:::1;:30:::0;15327:111::o;16649:358::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;16790:15:::1;:35:::0;;;16836:15:::1;:35:::0;;;16882:10:::1;:25:::0;;;16947:52:::1;16895:12:::0;16947:36:::1;16808:17:::0;16854;16947:19:::1;:36::i;:52::-;16920:24;:79:::0;-1:-1:-1;;;16649:358:0:o;18237:233::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;18354:9:::1;18350:113;18369:19:::0;;::::1;18350:113;;;18443:8;18410:17;:30;18428:8;;18437:1;18428:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18410:30:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18410:30:0;:41;;-1:-1:-1;;18410:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18390:3;::::1;::::0;::::1;:::i;:::-;;;;18350:113;;17925:171:::0;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;18002:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;18002:32:0::1;-1:-1:-1::0;;;;18002:32:0;;::::1;;::::0;;18050:38:::1;::::0;::::1;::::0;::::1;::::0;18026:8;7453:14:1;7446:22;7428:41;;7416:2;7401:18;;7288:187;18050:38:0::1;;;;;;;;17925:171:::0;:::o;18478:86::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;18541:4:::1;:15:::0;18478:86::o;18572:157::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;18663:1:::1;18651:8;:13;;18643:44;;;::::0;-1:-1:-1;;;18643:44:0;;12824:2:1;18643:44:0::1;::::0;::::1;12806:21:1::0;12863:2;12843:18;;;12836:30;-1:-1:-1;;;12882:18:1;;;12875:48;12940:18;;18643:44:0::1;12622:342:1::0;18643:44:0::1;18698:12;:23:::0;18572:157::o;17015:111::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;17092:12:::1;:26:::0;17015:111::o;15184:135::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15274:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;15274:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15184:135::o;17398:102::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;17470:10:::1;:22:::0;17398:102::o;6015:244::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6104:22:0;::::1;6096:73;;;::::0;-1:-1:-1;;;6096:73:0;;9670:2:1;6096:73:0::1;::::0;::::1;9652:21:1::0;9709:2;9689:18;;;9682:30;9748:34;9728:18;;;9721:62;-1:-1:-1;;;9799:18:1;;;9792:36;9845:19;;6096:73:0::1;9468:402:1::0;6096:73:0::1;6206:6;::::0;;6185:38:::1;::::0;-1:-1:-1;;;;;6185:38:0;;::::1;::::0;6206:6;::::1;::::0;6185:38:::1;::::0;::::1;6234:6;:17:::0;;-1:-1:-1;;;;;;6234:17:0::1;-1:-1:-1::0;;;;;6234:17:0;;;::::1;::::0;;;::::1;::::0;;6015:244::o;15678:233::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;15757:15:::1;:35:::0;;;15869:12:::1;::::0;15846:17:::1;::::0;15824::::1;::::0;:79:::1;::::0;15775:17;;15824:58:::1;::::0;;;:21:::1;:40::i;:79::-;15803:18;:100:::0;-1:-1:-1;15678:233:0:o;15049:127::-;5775:6;;-1:-1:-1;;;;;5775:6:0;268:10;5775:22;5767:67;;;;-1:-1:-1;;;5767:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15136:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;15136:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15049:127::o;1261:181::-;1319:7;;1351:5;1355:1;1351;:5;:::i;:::-;1339:17;;1380:1;1375;:6;;1367:46;;;;-1:-1:-1;;;1367:46:0;;10480:2:1;1367:46:0;;;10462:21:1;10519:2;10499:18;;;10492:30;10558:29;10538:18;;;10531:57;10605:18;;1367:46:0;10278:351:1;14337:337:0;-1:-1:-1;;;;;14430:19:0;;14422:68;;;;-1:-1:-1;;;14422:68:0;;13171:2:1;14422:68:0;;;13153:21:1;13210:2;13190:18;;;13183:30;13249:34;13229:18;;;13222:62;-1:-1:-1;;;13300:18:1;;;13293:34;13344:19;;14422:68:0;12969:400:1;14422:68:0;-1:-1:-1;;;;;14509:21:0;;14501:68;;;;-1:-1:-1;;;14501:68:0;;10077:2:1;14501:68:0;;;10059:21:1;10116:2;10096:18;;;10089:30;10155:34;10135:18;;;10128:62;-1:-1:-1;;;10206:18:1;;;10199:32;10248:19;;14501:68:0;9875:398:1;14501:68:0;-1:-1:-1;;;;;14582:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14634:32;;8096:25:1;;;14634:32:0;;8069:18:1;14634:32:0;;;;;;;14337:337;;;:::o;20445:2072::-;20532:4;-1:-1:-1;;;;;20559:20:0;;20551:70;;;;-1:-1:-1;;;20551:70:0;;12418:2:1;20551:70:0;;;12400:21:1;12457:2;12437:18;;;12430:30;12496:34;12476:18;;;12469:62;-1:-1:-1;;;12547:18:1;;;12540:35;12592:19;;20551:70:0;12216:401:1;20551:70:0;-1:-1:-1;;;;;20640:23:0;;20632:71;;;;-1:-1:-1;;;20632:71:0;;8936:2:1;20632:71:0;;;8918:21:1;8975:2;8955:18;;;8948:30;9014:34;8994:18;;;8987:62;-1:-1:-1;;;9065:18:1;;;9058:33;9108:19;;20632:71:0;8734:399:1;20632:71:0;20731:1;20722:6;:10;20714:64;;;;-1:-1:-1;;;20714:64:0;;12008:2:1;20714:64:0;;;11990:21:1;12047:2;12027:18;;;12020:30;12086:34;12066:18;;;12059:62;-1:-1:-1;;;12137:18:1;;;12130:39;12186:19;;20714:64:0;11806:405:1;20714:64:0;-1:-1:-1;;;;;20798:22:0;;;;;;:14;:22;;;;;;;;20797:23;20789:38;;;;-1:-1:-1;;;20789:38:0;;9340:2:1;20789:38:0;;;9322:21:1;9379:1;9359:18;;;9352:29;-1:-1:-1;;;9397:18:1;;;9390:32;9439:18;;20789:38:0;9138:325:1;20789:38:0;20854:11;;-1:-1:-1;;;;;20841:24:0;;;20854:11;;20841:24;:64;;;;-1:-1:-1;20887:11:0;;-1:-1:-1;;;;;20887:11:0;13324:7;13351:18;;;:9;:18;;;;;;20869:36;20841:64;20838:115;;;20929:12;20921:5;:20;20838:115;20976:11;;-1:-1:-1;;;;;20966:21:0;;;20976:11;;20966:21;:52;;;;;21014:4;;21006:5;;:12;;;;:::i;:::-;20991;:27;20966:52;20963:136;;;21064:14;;21041:46;;21056:6;;-1:-1:-1;;;;;21064:14:0;21080:6;21041:14;:46::i;:::-;21034:53;;;;20963:136;21114:16;;-1:-1:-1;;;21114:16:0;;;;21111:1399;;;21163:41;21178:6;21186:9;21197:6;21163:14;:41::i;21111:1399::-;-1:-1:-1;;;;;21259:23:0;;;;;;:15;:23;;;;;;;;21258:24;:55;;;;-1:-1:-1;;;;;;21287:26:0;;;;;;:15;:26;;;;;;;;21286:27;21258:55;21255:170;;;21352:12;;21342:6;:22;;21334:75;;;;-1:-1:-1;;;21334:75:0;;10836:2:1;21334:75:0;;;10818:21:1;10875:2;10855:18;;;10848:30;10914:34;10894:18;;;10887:62;-1:-1:-1;;;10965:18:1;;;10958:38;11013:19;;21334:75:0;10634:404:1;21334:75:0;21490:4;21441:28;13351:18;;;:9;:18;;;;;;21566:24;;21441:55;;-1:-1:-1;21542:48:0;;;;;;;21611:44;;-1:-1:-1;21639:16:0;;-1:-1:-1;;;21639:16:0;;;;21638:17;21611:44;:69;;;;-1:-1:-1;;;;;;21660:20:0;;;;;;:12;:20;;;;;;;;21659:21;21611:69;:94;;;;-1:-1:-1;21684:21:0;;-1:-1:-1;;;21684:21:0;;;;21611:94;21607:301;;;21742:25;;-1:-1:-1;;;21742:25:0;;;;21739:98;;;21813:24;;21790:47;;21739:98;21856:36;21871:20;21856:14;:36::i;:::-;21944:53;;;;;;;;;;;-1:-1:-1;;;21944:53:0;;;;;;;;-1:-1:-1;;;;;21944:17:0;;-1:-1:-1;21944:17:0;;;:9;:17;;;;;;;;:53;;21966:6;;21944:21;:53::i;:::-;-1:-1:-1;;;;;21924:17:0;;;;;;:9;:17;;;;;;;;:73;;;;22037:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;22066:28:0;;;;;;:17;:28;;;;;;;;22037:57;22036:147;;22149:34;22157:6;22165:9;22176:6;22149:7;:34::i;:::-;22036:147;;;22140:6;22036:147;22203:16;;22014:169;;-1:-1:-1;;;;22203:16:0;;;;:51;;;;-1:-1:-1;;;;;;22224:30:0;;;;;;:19;:30;;;;;;;;22223:31;22203:51;22200:133;;;22322:10;;22281:37;22306:11;22281:20;22291:9;-1:-1:-1;;;;;13351:18:0;13324:7;13351:18;;;:9;:18;;;;;;;13258:119;22281:37;:51;;22273:60;;;;;;-1:-1:-1;;;;;22373:20:0;;;;;;:9;:20;;;;;;:37;;22398:11;22373:24;:37::i;:::-;-1:-1:-1;;;;;22350:20:0;;;;;;;:9;:20;;;;;;;:60;;;;22432:40;;;;;;-1:-1:-1;;;;;;;;;;;22432:40:0;;;22460:11;8096:25:1;;8084:2;8069:18;;7942:185;22432:40:0;;;;;;;;22494:4;22487:11;;;;;;;1594:192;1680:7;1716:12;1708:6;;;;1700:29;;;;-1:-1:-1;;;1700:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1740:9:0;1752:5;1756:1;1752;:5;:::i;:::-;1740:17;1594:192;-1:-1:-1;;;;;1594:192:0:o;1450:136::-;1508:7;1535:43;1539:1;1542;1535:43;;;;;;;;;;;;;;;;;:3;:43::i;22525:330::-;22655:53;;;;;;;;;;;-1:-1:-1;;;22655:53:0;;;;;;;;-1:-1:-1;;;;;22655:17:0;;22618:4;22655:17;;;:9;:17;;;;;;;:53;;22677:6;;22655:21;:53::i;:::-;-1:-1:-1;;;;;22635:17:0;;;;;;;:9;:17;;;;;;:73;;;;22742:20;;;;;;;:32;;22767:6;22742:24;:32::i;:::-;-1:-1:-1;;;;;22719:20:0;;;;;;;:9;:20;;;;;;;:55;;;;22790:35;;;;;;-1:-1:-1;;;;;;;;;;;22790:35:0;;;22818:6;8096:25:1;;8084:2;8069:18;;7942:185;22790:35:0;;;;;;;;-1:-1:-1;22843:4:0;22525:330;;;;;:::o;22865:1292::-;10863:16;:23;;-1:-1:-1;;;;10863:23:0;-1:-1:-1;;;10863:23:0;;;22994:24:::1;::::0;22973:15:::1;::::0;10863:23;;22961:65:::1;::::0;23024:1:::1;::::0;22961:58:::1;::::0;;;:7;;:11:::1;:28::i;:::-;:32:::0;::::1;:58::i;:65::-;22939:87:::0;-1:-1:-1;23037:21:0::1;23061:24;:7:::0;22939:87;23061:11:::1;:24::i;:::-;23037:48;;23127:32;23145:13;23127:17;:32::i;:::-;23202:4;::::0;23226:13:::1;::::0;23195:46:::1;::::0;-1:-1:-1;;;23195:46:0;;-1:-1:-1;;;;;23226:13:0;;::::1;23195:46;::::0;::::1;5269:51:1::0;23170:22:0::1;::::0;23202:4;;;::::1;::::0;23195:22:::1;::::0;5242:18:1;;23195:46:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23170:71;;23279:20;23302:52;23331:22;23351:1;23331:15;;:19;;:22;;;;:::i;:::-;23302:24;::::0;;:28:::1;:52::i;:::-;23279:75;;23392:27;23422:60;23480:1;23422:53;23462:12;23422:35;23441:15;;23422:14;:18;;:35;;;;:::i;:60::-;23392:90;;23515:22;23540:48;23575:12;23540:30;23559:10;;23540:14;:18;;:30;;;;:::i;:48::-;23515:73:::0;-1:-1:-1;23626:27:0::1;23656:59;23515:73:::0;23656:39:::1;:14:::0;23675:19;23656:18:::1;:39::i;:::-;:43:::0;::::1;:59::i;:::-;23626:89:::0;-1:-1:-1;23731:23:0;;23728:107:::1;;23791:22;::::0;23769:66:::1;::::0;23791:22:::1;::::0;::::1;-1:-1:-1::0;;;;;23791:22:0::1;23815:19:::0;23769:21:::1;:66::i;:::-;23851:18:::0;;23848:92:::1;;23906:17;::::0;23884:56:::1;::::0;-1:-1:-1;;;;;23906:17:0::1;23925:14:::0;23884:21:::1;:56::i;:::-;23978:1;23956:19;:23;:42;;;;;23997:1;23983:11;:15;23956:42;23953:195;;;24014:57;24044:4;24051:19;24014:21;:57::i;:::-;24086:50;24103:11;24116:19;24086:16;:50::i;:::-;-1:-1:-1::0;;10909:16:0;:24;;-1:-1:-1;;;;10909:24:0;;;-1:-1:-1;;;;;;22865:1292:0:o;25435:1652::-;-1:-1:-1;;;;;25647:20:0;;25521:7;25647:20;;;:12;:20;;;;;;25521:7;;;;;;25647:20;;25644:670;;;25696:58;25750:3;25696:49;25707:37;25729:14;;25707:17;;:21;;:37;;;;:::i;:::-;25696:6;;:10;:49::i;:58::-;25684:70;;25789:1;25772:14;;:18;:52;;;;;25807:17;;25794:10;;:30;25772:52;25769:188;;;25858:35;25889:3;25858:26;25869:14;;25858:6;:10;;:26;;;;:::i;:35::-;25845:48;;25912:29;25923:6;25930:10;25912;:29::i;:::-;25644:670;;;-1:-1:-1;;;;;25986:23:0;;;;;;:12;:23;;;;;;;;25983:331;;;26038:60;26094:3;26038:51;26049:39;26072:15;;26049:18;;:22;;:39;;;;:::i;26038:60::-;26026:72;;26134:1;26116:15;;:19;:53;;;;;26152:17;;26139:10;;:30;26116:53;26113:190;;;26203:36;26235:3;26203:27;26214:15;;26203:6;:10;;:27;;;;:::i;:36::-;26190:49;;26258:29;26269:6;26276:10;26258;:29::i;:::-;-1:-1:-1;;;;;26327:20:0;;;;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;26351:23:0;;;;;;:12;:23;;;;;;;;26327:47;26324:495;;;26394:12;;:16;26390:418;;26430:10;;26459:283;26483:12;;26479:1;:16;26459:283;;;26564:44;;;;;;4991:19:1;;;5026:12;;;5019:28;;;26592:15:0;5063:12:1;;;5056:28;5100:12;;26564:44:0;;;-1:-1:-1;;26564:44:0;;;;;;;;;26554:55;;26564:44;26554:55;;;;-1:-1:-1;;;;;26651:13:0;;26546:64;26651:13;;;:9;:13;;;;;;26554:55;;-1:-1:-1;26651:20:0;;26669:1;26651:17;:20::i;:::-;-1:-1:-1;;;;;26635:13:0;;;;;;;:9;:13;;;;;;;:36;;;;26699:23;;;;;;-1:-1:-1;;;;;;;;;;;26699:23:0;;;26720:1;8096:25:1;;8084:2;8069:18;;7942:185;26699:23:0;;;;;;;;26497:3;;;;:::i;:::-;;;;26459:283;;;-1:-1:-1;26776:12:0;;:16;;26791:1;26776:16;:::i;:::-;26760:32;;26411:397;26390:418;26834:13;;26831:173;;26909:4;26891:24;;;;:9;:24;;;;;;:39;;26920:9;26891:28;:39::i;:::-;26882:4;26864:24;;;;:9;:24;;;;;;;:66;;;;26950:42;;-1:-1:-1;;;;;26950:42:0;;;-1:-1:-1;;;;;;;;;;;26950:42:0;;;26982:9;8096:25:1;;8084:2;8069:18;;7942:185;26950:42:0;;;;;;;;26831:173;27023:56;27034:44;27064:13;27034:25;:9;27048:10;27034:13;:25::i;:44::-;27023:6;;:10;:56::i;:::-;27016:63;25435:1652;-1:-1:-1;;;;;;;25435:1652:0:o;1794:250::-;1852:7;1876:6;1872:47;;-1:-1:-1;1906:1:0;1899:8;;1872:47;1931:9;1943:5;1947:1;1943;:5;:::i;:::-;1931:17;-1:-1:-1;1976:1:0;1967:5;1971:1;1931:17;1967:5;:::i;:::-;:10;1959:56;;;;-1:-1:-1;;;1959:56:0;;11245:2:1;1959:56:0;;;11227:21:1;11284:2;11264:18;;;11257:30;11323:34;11303:18;;;11296:62;-1:-1:-1;;;11374:18:1;;;11367:31;11415:19;;1959:56:0;11043:397:1;2052:132:0;2110:7;2137:39;2141:1;2144;2137:39;;;;;;;;;;;;;;;;;:3;:39::i;24167:634::-;24318:16;;;24332:1;24318:16;;;;;;;;24294:21;;24318:16;;;;;;;;;;-1:-1:-1;24318:16:0;24294:40;;24363:4;24345;24350:1;24345:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24345:23:0;;;:7;;;;;;;;;:23;24389:4;;24379:7;;24389:4;;;24379;;24389;;24379:7;;;;;;:::i;:::-;-1:-1:-1;;;;;24379:14:0;;;:7;;;;;;;;;:14;24436:15;;24404:62;;24421:4;;24436:15;24454:11;24404:8;:62::i;:::-;24503:15;;24685:13;;24503:237;;-1:-1:-1;;;24503:237:0;;-1:-1:-1;;;;;24503:15:0;;;;:69;;:237;;24587:11;;24503:15;;24658:4;;24685:13;;;24714:15;;24503:237;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24758:35;24775:11;24788:4;24758:35;;;;;;;:::i;:::-;;;;;;;;24223:578;24167:634;:::o;18873:160::-;18965:4;;18992:13;;18958:67;;-1:-1:-1;;;18958:67:0;;-1:-1:-1;;;;;18992:13:0;;;18958:67;;;6104:34:1;6174:15;;;6154:18;;;6147:43;6206:18;;;6199:34;;;18965:4:0;;;18958:25;;6039:18:1;;18958:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18873:160;;:::o;24809:614::-;24994:15;;24962:62;;24979:4;;-1:-1:-1;;;;;24994:15:0;25012:11;24962:8;:62::i;:::-;25042:4;;25064:15;;25035:57;;-1:-1:-1;;;25035:57:0;;-1:-1:-1;;;;;25064:15:0;;;25035:57;;;7183:51:1;7250:18;;;7243:34;;;25042:4:0;;;25035:20;;7156:18:1;;25035:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;25133:15:0;;25204:4;;25360:14;;25133:282;;-1:-1:-1;;;25133:282:0;;25184:4;25133:282;;;6641:34:1;-1:-1:-1;;;;;25204:4:0;;;6691:18:1;;;6684:43;6743:18;;;6736:34;;;6786:18;;;6779:34;;;25133:15:0;6829:19:1;;;6822:35;;;6873:19;;;6866:35;25360:14:0;;;6917:19:1;;;6910:44;25389:15:0;6970:19:1;;;6963:35;25133:15:0;;;:28;;6575:19:1;;25133:282:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24809:614;;:::o;27095:321::-;27209:17;;27195:10;;:31;27192:43;;27095:321;;:::o;27192:43::-;27282:11;;-1:-1:-1;;;;;27282:11:0;27272:22;;;;:9;:22;;;;;;:35;;27299:7;27272:26;:35::i;:::-;27257:11;;-1:-1:-1;;;;;27257:11:0;27247:22;;;;:9;:22;;;;;:60;27331:10;;:23;;27346:7;27331:14;:23::i;:::-;27318:10;:36;27387:11;;27370:38;;8096:25:1;;;-1:-1:-1;;;;;27387:11:0;;;;27370:38;;;-1:-1:-1;;;;;;;;;;;27370:38:0;8084:2:1;8069:18;27370:38:0;;;;;;;27095:321;;:::o;2192:278::-;2278:7;2313:12;2306:5;2298:28;;;;-1:-1:-1;;;2298:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2337:9:0;2349:5;2353:1;2349;:5;:::i;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;522:388::-;590:6;598;651:2;639:9;630:7;626:23;622:32;619:52;;;667:1;664;657:12;619:52;706:9;693:23;725:31;750:5;725:31;:::i;:::-;775:5;-1:-1:-1;832:2:1;817:18;;804:32;845:33;804:32;845:33;:::i;:::-;897:7;887:17;;;522:388;;;;;:::o;915:456::-;992:6;1000;1008;1061:2;1049:9;1040:7;1036:23;1032:32;1029:52;;;1077:1;1074;1067:12;1029:52;1116:9;1103:23;1135:31;1160:5;1135:31;:::i;:::-;1185:5;-1:-1:-1;1242:2:1;1227:18;;1214:32;1255:33;1214:32;1255:33;:::i;:::-;915:456;;1307:7;;-1:-1:-1;;;1361:2:1;1346:18;;;;1333:32;;915:456::o;1376:382::-;1441:6;1449;1502:2;1490:9;1481:7;1477:23;1473:32;1470:52;;;1518:1;1515;1508:12;1470:52;1557:9;1544:23;1576:31;1601:5;1576:31;:::i;:::-;1626:5;-1:-1:-1;1683:2:1;1668:18;;1655:32;1696:30;1655:32;1696:30;:::i;1763:315::-;1831:6;1839;1892:2;1880:9;1871:7;1867:23;1863:32;1860:52;;;1908:1;1905;1898:12;1860:52;1947:9;1934:23;1966:31;1991:5;1966:31;:::i;:::-;2016:5;2068:2;2053:18;;;;2040:32;;-1:-1:-1;;;1763:315:1:o;2083:750::-;2175:6;2183;2191;2244:2;2232:9;2223:7;2219:23;2215:32;2212:52;;;2260:1;2257;2250:12;2212:52;2300:9;2287:23;2329:18;2370:2;2362:6;2359:14;2356:34;;;2386:1;2383;2376:12;2356:34;2424:6;2413:9;2409:22;2399:32;;2469:7;2462:4;2458:2;2454:13;2450:27;2440:55;;2491:1;2488;2481:12;2440:55;2531:2;2518:16;2557:2;2549:6;2546:14;2543:34;;;2573:1;2570;2563:12;2543:34;2628:7;2621:4;2611:6;2608:1;2604:14;2600:2;2596:23;2592:34;2589:47;2586:67;;;2649:1;2646;2639:12;2586:67;2680:4;2672:13;;;;-1:-1:-1;2704:6:1;-1:-1:-1;;2745:20:1;;2732:34;2775:28;2732:34;2775:28;:::i;:::-;2822:5;2812:15;;;2083:750;;;;;:::o;2838:241::-;2894:6;2947:2;2935:9;2926:7;2922:23;2918:32;2915:52;;;2963:1;2960;2953:12;2915:52;3002:9;2989:23;3021:28;3043:5;3021:28;:::i;3084:245::-;3151:6;3204:2;3192:9;3183:7;3179:23;3175:32;3172:52;;;3220:1;3217;3210:12;3172:52;3252:9;3246:16;3271:28;3293:5;3271:28;:::i;3334:180::-;3393:6;3446:2;3434:9;3425:7;3421:23;3417:32;3414:52;;;3462:1;3459;3452:12;3414:52;-1:-1:-1;3485:23:1;;3334:180;-1:-1:-1;3334:180:1:o;3519:184::-;3589:6;3642:2;3630:9;3621:7;3617:23;3613:32;3610:52;;;3658:1;3655;3648:12;3610:52;-1:-1:-1;3681:16:1;;3519:184;-1:-1:-1;3519:184:1:o;3708:316::-;3785:6;3793;3801;3854:2;3842:9;3833:7;3829:23;3825:32;3822:52;;;3870:1;3867;3860:12;3822:52;-1:-1:-1;;3893:23:1;;;3963:2;3948:18;;3935:32;;-1:-1:-1;4014:2:1;3999:18;;;3986:32;;3708:316;-1:-1:-1;3708:316:1:o;4029:306::-;4117:6;4125;4133;4186:2;4174:9;4165:7;4161:23;4157:32;4154:52;;;4202:1;4199;4192:12;4154:52;4231:9;4225:16;4215:26;;4281:2;4270:9;4266:18;4260:25;4250:35;;4325:2;4314:9;4310:18;4304:25;4294:35;;4029:306;;;;;:::o;4340:461::-;4393:3;4431:5;4425:12;4458:6;4453:3;4446:19;4484:4;4513:2;4508:3;4504:12;4497:19;;4550:2;4543:5;4539:14;4571:1;4581:195;4595:6;4592:1;4589:13;4581:195;;;4660:13;;-1:-1:-1;;;;;4656:39:1;4644:52;;4716:12;;;;4751:15;;;;4692:1;4610:9;4581:195;;;-1:-1:-1;4792:3:1;;4340:461;-1:-1:-1;;;;;4340:461:1:o;8132:597::-;8244:4;8273:2;8302;8291:9;8284:21;8334:6;8328:13;8377:6;8372:2;8361:9;8357:18;8350:34;8402:1;8412:140;8426:6;8423:1;8420:13;8412:140;;;8521:14;;;8517:23;;8511:30;8487:17;;;8506:2;8483:26;8476:66;8441:10;;8412:140;;;8570:6;8567:1;8564:13;8561:91;;;8640:1;8635:2;8626:6;8615:9;8611:22;8607:31;8600:42;8561:91;-1:-1:-1;8713:2:1;8692:15;-1:-1:-1;;8688:29:1;8673:45;;;;8720:2;8669:54;;8132:597;-1:-1:-1;;;8132:597:1:o;11445:356::-;11647:2;11629:21;;;11666:18;;;11659:30;11725:34;11720:2;11705:18;;11698:62;11792:2;11777:18;;11445:356::o;13556:332::-;13763:6;13752:9;13745:25;13806:2;13801;13790:9;13786:18;13779:30;13726:4;13826:56;13878:2;13867:9;13863:18;13855:6;13826:56;:::i;:::-;13818:64;13556:332;-1:-1:-1;;;;13556:332:1:o;13893:582::-;14192:6;14181:9;14174:25;14235:6;14230:2;14219:9;14215:18;14208:34;14278:3;14273:2;14262:9;14258:18;14251:31;14155:4;14299:57;14351:3;14340:9;14336:19;14328:6;14299:57;:::i;:::-;-1:-1:-1;;;;;14392:32:1;;;;14387:2;14372:18;;14365:60;-1:-1:-1;14456:3:1;14441:19;14434:35;14291:65;13893:582;-1:-1:-1;;;13893:582:1:o;14669:128::-;14709:3;14740:1;14736:6;14733:1;14730:13;14727:39;;;14746:18;;:::i;:::-;-1:-1:-1;14782:9:1;;14669:128::o;14802:217::-;14842:1;14868;14858:132;;14912:10;14907:3;14903:20;14900:1;14893:31;14947:4;14944:1;14937:15;14975:4;14972:1;14965:15;14858:132;-1:-1:-1;15004:9:1;;14802:217::o;15024:168::-;15064:7;15130:1;15126;15122:6;15118:14;15115:1;15112:21;15107:1;15100:9;15093:17;15089:45;15086:71;;;15137:18;;:::i;:::-;-1:-1:-1;15177:9:1;;15024:168::o;15197:125::-;15237:4;15265:1;15262;15259:8;15256:34;;;15270:18;;:::i;:::-;-1:-1:-1;15307:9:1;;15197:125::o;15327:380::-;15406:1;15402:12;;;;15449;;;15470:61;;15524:4;15516:6;15512:17;15502:27;;15470:61;15577:2;15569:6;15566:14;15546:18;15543:38;15540:161;;;15623:10;15618:3;15614:20;15611:1;15604:31;15658:4;15655:1;15648:15;15686:4;15683:1;15676:15;15540:161;;15327:380;;;:::o;15712:135::-;15751:3;-1:-1:-1;;15772:17:1;;15769:43;;;15792:18;;:::i;:::-;-1:-1:-1;15839:1:1;15828:13;;15712:135::o;15852:127::-;15913:10;15908:3;15904:20;15901:1;15894:31;15944:4;15941:1;15934:15;15968:4;15965:1;15958:15;15984:127;16045:10;16040:3;16036:20;16033:1;16026:31;16076:4;16073:1;16066:15;16100:4;16097:1;16090:15;16248:131;-1:-1:-1;;;;;16323:31:1;;16313:42;;16303:70;;16369:1;16366;16359:12;16303:70;16248:131;:::o;16384:118::-;16470:5;16463:13;16456:21;16449:5;16446:32;16436:60;;16492:1;16489;16482:12

Swarm Source

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