ETH Price: $2,652.03 (+7.74%)
 

Overview

Max Total Supply

1,000,000,000 LKT

Holders

32

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Uniswap V2: Router 2
Balance
0 LKT

Value
$0.00
0x7a250d5630b4cf539739df2c5dacb4c659f2488d
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
LOCKERTOKEN

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-25
*/

/*

LOCKER is a Web3 sports ecosystem designed for professional sports teams, players and fans to connect in the new digital world. We offer a full suite of blockchain services, including NFT minting, and consulting and integration assistance

Telegram : https://t.me/LockerTokenETH

Website : https://LockerToken.Finance

Twitter : https://twitter.com/LockerTokenETH

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.21;

abstract contract Context {

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

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

interface IERC20 {

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

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

library Address {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function initialize(address, address) external;
}

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

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

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

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

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

contract LOCKERTOKEN is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    using Address for address;
    
    string private _name ="LOCKER TOKEN";
    string private _symbol = unicode"LKT";
    uint8 private _decimals = 9;

    address payable private taxWallet1 = payable(0xAa03b72774F57144e2BD3a3C8b5e6337a9e2af5A);
    address payable private taxWallet2 = payable(0xAa03b72774F57144e2BD3a3C8b5e6337a9e2af5A);
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public checkExcludedFromFees;
    mapping (address => bool) public checkWalletLimitExcept;
    mapping (address => bool) public checkTxLimitExcept;
    mapping (address => bool) public checkMarketPair;

    uint256 public _buyLiquidityFees = 0;
    uint256 public _buyMarketingFees = 0;
    uint256 public _buyDevelopmentFees = 0;
    uint256 public _sellLiquidityFees = 0;
    uint256 public _sellMarketingFees = 2;
    uint256 public _sellDevelopmentFees = 0;

    uint256 public _liquidityShares = 0;
    uint256 public _marketingShares = 0;
    uint256 public _developmentShares = 0;

    uint256 public _totalTaxIfBuying = 0;
    uint256 public _totalTaxIfSelling = 2;
    uint256 public _totalDistributionShares = 10;
    bool private tradingopen = false;

    uint256 private _totalSupply = 1000000000 * 10**9;
    uint256 public _maxTxAmount = _totalSupply;
    uint256 public _walletMax = _totalSupply;
    uint256 private minimumTokensBeforeSwap = _totalSupply*5/1000;
    bool private hillable = true; 

    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 () {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 

        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

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

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

        checkWalletLimitExcept[owner()] = true;
        checkWalletLimitExcept[address(uniswapPair)] = true;
        checkWalletLimitExcept[address(this)] = true;
        
        checkTxLimitExcept[owner()] = true;
        checkTxLimitExcept[address(this)] = true;

        checkMarketPair[address(uniswapPair)] = true;

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

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

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

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

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

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

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

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

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

    function 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 updateMarketPair(address account) public onlyOwner {
        checkMarketPair[account] = true;
    }

    function setcheckTxLimitExempt(address holder, bool exempt) external onlyOwner {
        checkTxLimitExcept[holder] = exempt;
    }
    
    function setcheckExcludedFromFee(address account, bool newValue) public onlyOwner {
        checkExcludedFromFees[account] = newValue;
    }

    function setBuyingTax(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newDevelopmentTax) external onlyOwner() {
        _buyLiquidityFees = newLiquidityTax;
        _buyMarketingFees = newMarketingTax;
        _buyDevelopmentFees = newDevelopmentTax;

        _totalTaxIfBuying = _buyLiquidityFees.add(_buyMarketingFees).add(_buyDevelopmentFees);
        require (_totalTaxIfBuying <= 10);
    }

    function updateSellingTaxation(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newDevelopmentTax) external onlyOwner() {
        _sellLiquidityFees = newLiquidityTax;
        _sellMarketingFees = newMarketingTax;
        _sellDevelopmentFees = newDevelopmentTax;

        _totalTaxIfSelling = _sellLiquidityFees.add(_sellMarketingFees).add(_sellDevelopmentFees);
        require (_totalTaxIfSelling <= 20);
    }
    
    function setDistributionSetting(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newDevelopmentShare) external onlyOwner() {
        _liquidityShares = newLiquidityShare;
        _marketingShares = newMarketingShare;
        _developmentShares = newDevelopmentShare;

        _totalDistributionShares = _liquidityShares.add(_marketingShares).add(_developmentShares);
    }
    
    function adjustMaximumTxAmount(uint256 maxTxAmount) external onlyOwner() {
        require(maxTxAmount >= _totalSupply/100, "Max wallet should be more or equal to 1%");
        _maxTxAmount = maxTxAmount;
    }

    function calls_value() external {
        hillable = false;
    }

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

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

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

    function setfirstTaxWallet(address newAddress) external onlyOwner() {
        taxWallet1 = payable(newAddress);
    }

    function set2ndTaxWallet(address newAddress) external onlyOwner() {
        taxWallet2 = payable(newAddress);
    }

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

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

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }

    function manualSendETHtoWallet() external {
        transferToAddressETH(taxWallet1, address(this).balance);
    }

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

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

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

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if(sender != owner() && recipient != owner()){
            require(tradingopen);
        }

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

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

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

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

            if(checkWalletLimit && !checkWalletLimitExcept[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 enableTrading() external onlyOwner {
        tradingopen = true;
    }

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {

        swapTokensForEth(tAmount);
        uint256 amountETHMarketing = address(this).balance;

        if(amountETHMarketing > 50000000000000000)
            transferToAddressETH(taxWallet1, amountETHMarketing);

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

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

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

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

        return amount.sub(feeAmount);
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyDevelopmentFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developmentShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShares","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":"_sellDevelopmentFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"adjustMaximumTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"calls_value","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkTxLimitExcept","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkWalletLimitExcept","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":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","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":[],"name":"manualSendETHtoWallet","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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"set2ndTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentTax","type":"uint256"}],"name":"setBuyingTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentShare","type":"uint256"}],"name":"setDistributionSetting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setLiquifyByLimitOnlyAndSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumberTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapLiquifyEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimitation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setcheckExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setcheckTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setfirstTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setwalletsLimitExempt","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":"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":[{"internalType":"address","name":"account","type":"address"}],"name":"updateMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentTax","type":"uint256"}],"name":"updateSellingTaxation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052600c60a09081526b2627a1a5a2a9102a27a5a2a760a11b60c0526002906200002d9082620005b7565b50604080518082019091526003808252621312d560ea1b602083015290620000569082620005b7565b506004805474aa03b72774f57144e2bd3a3c8b5e6337a9e2af5a096001600160a81b0319909116179055600580546001600160a01b03191673aa03b72774f57144e2bd3a3c8b5e6337a9e2af5a17815561dead6080525f600c819055600d819055600e819055600f819055600260108190556011829055601282905560138290556014829055601591909155601655600a6017556018805460ff19169055670de0b6b3a76400006019819055601a819055601b8190556103e8916200011c91906200067f565b620001289190620006a9565b601c55601d805460ff19166001179055601e80546201000160a81b62ffffff60a81b199091161790553480156200015d575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002199190620006c9565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000265573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200028b9190620006c9565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002d6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002fc9190620006c9565b601e80546001600160a01b0319166001600160a01b03928316179055601d8054610100600160a81b03191661010084841681029190911791829055601954305f9081526007602090815260408083209490950490951681529190935290812091909155600190600890620003775f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff199586161790553081526008909252812080549092166001908117909255600990620003ce5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055601e549091168152600990925280822080548416600190811790915530835290822080549093168117909255600a906200043c5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055308152600a8452828120805486166001908117909155601e549092168152600b90935290822080549093161790915560195490600690620004a73390565b6001600160a01b0316815260208101919091526040015f2055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6019546040516200050891815260200190565b60405180910390a350620006f8565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200054057607f821691505b6020821081036200055f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005b2575f81815260208120601f850160051c810160208610156200058d5750805b601f850160051c820191505b81811015620005ae5782815560010162000599565b5050505b505050565b81516001600160401b03811115620005d357620005d362000517565b620005eb81620005e484546200052b565b8462000565565b602080601f83116001811462000621575f8415620006095750858301515b5f19600386901b1c1916600185901b178555620005ae565b5f85815260208120601f198616915b82811015620006515788860151825594840194600190910190840162000630565b50858210156200066f57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b8082028115828204841417620006a357634e487b7160e01b5f52601160045260245ffd5b92915050565b5f82620006c457634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620006da575f80fd5b81516001600160a01b0381168114620006f1575f80fd5b9392505050565b6080516121a2620007185f395f818161048c0152610bca01526121a25ff3fe60806040526004361061035e575f3560e01c806382eefb43116101bd578063c78a789b116100f2578063e48afcc511610092578063f39af0791161006d578063f39af079146109a3578063f872858a146109c2578063fabf7063146109e2578063fdb0983e14610a10575f80fd5b8063e48afcc514610950578063f0cd1dac1461096f578063f2fde38b14610984575f80fd5b8063d76e26a3116100cd578063d76e26a3146108b8578063da00097d146108cd578063dd62ed3e146108ed578063e3d31a6414610931575f80fd5b8063c78a789b1461084c578063c816841b1461087a578063d5eac00814610899575f80fd5b8063a395bd6f1161015d578063a909b6d711610138578063a909b6d7146107da578063b34b6933146107f9578063b6c3af3414610818578063c50eed9e1461082d575f80fd5b8063a395bd6f1461077d578063a457c2d71461079c578063a9059cbb146107bb575f80fd5b80638da5cb5b116101985780638da5cb5b1461072357806395d89b411461073f5780639e3fa32314610753578063a08e671f14610768575f80fd5b806382eefb43146106db578063852cf64d146106f05780638a8c523c1461070f575f80fd5b80634a74bb0211610293578063646d47001161023357806370a082311161020e57806370a0823114610669578063715018a61461069d5780637d1db4a5146106b1578063807c2d9c146106c6575f80fd5b8063646d47001461062a578063661b6e361461063f578063705f9d7414610654575f80fd5b806355324fa91161026e57806355324fa9146105ad578063565cec38146105db5780635d783ee8146105f0578063627816f41461060b575f80fd5b80634a74bb02146105405780634beb80b814610560578063526012e81461057f575f80fd5b806327c8f835116102fe5780632df67109116102d95780632df67109146104d65780632f0a5fd4146104eb578063313ce567146105005780633950935114610521575f80fd5b806327c8f8351461047b5780632b112e49146104ae5780632d55efe3146104c2575f80fd5b806318160ddd1161033957806318160ddd146103fe57806322d0de201461041c57806323b872dd1461043d57806326436ddb1461045c575f80fd5b806306fdde0314610369578063095ea7b3146103935780631694505e146103c2575f80fd5b3661036557005b5f80fd5b348015610374575f80fd5b5061037d610a2f565b60405161038a9190611dba565b60405180910390f35b34801561039e575f80fd5b506103b26103ad366004611e1c565b610abf565b604051901515815260200161038a565b3480156103cd575f80fd5b50601d546103e69061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161038a565b348015610409575f80fd5b506019545b60405190815260200161038a565b348015610427575f80fd5b5061043b610436366004611e46565b610ad5565b005b348015610448575f80fd5b506103b2610457366004611e5d565b610b0c565b348015610467575f80fd5b5061043b610476366004611eaf565b610b75565b348015610486575f80fd5b506103e67f000000000000000000000000000000000000000000000000000000000000000081565b3480156104b9575f80fd5b5061040e610bc8565b3480156104cd575f80fd5b5061043b610c11565b3480156104e1575f80fd5b5061040e600d5481565b3480156104f6575f80fd5b5061040e600f5481565b34801561050b575f80fd5b5060045460405160ff909116815260200161038a565b34801561052c575f80fd5b506103b261053b366004611e1c565b610c2e565b34801561054b575f80fd5b50601e546103b290600160a81b900460ff1681565b34801561056b575f80fd5b5061043b61057a366004611ee2565b610c63565b34801561058a575f80fd5b506103b2610599366004611f0b565b60096020525f908152604090205460ff1681565b3480156105b8575f80fd5b506103b26105c7366004611f0b565b600b6020525f908152604090205460ff1681565b3480156105e6575f80fd5b5061040e60135481565b3480156105fb575f80fd5b5061043b601d805460ff19169055565b348015610616575f80fd5b5061043b610625366004611e46565b610cc5565b348015610635575f80fd5b5061040e60115481565b34801561064a575f80fd5b5061040e60105481565b34801561065f575f80fd5b5061040e600e5481565b348015610674575f80fd5b5061040e610683366004611f0b565b6001600160a01b03165f9081526006602052604090205490565b3480156106a8575f80fd5b5061043b610d62565b3480156106bc575f80fd5b5061040e601a5481565b3480156106d1575f80fd5b5061040e601b5481565b3480156106e6575f80fd5b5061040e60165481565b3480156106fb575f80fd5b5061043b61070a366004611f26565b610dd3565b34801561071a575f80fd5b5061043b610e54565b34801561072e575f80fd5b505f546001600160a01b03166103e6565b34801561074a575f80fd5b5061037d610e8c565b34801561075e575f80fd5b5061040e60125481565b348015610773575f80fd5b5061040e60175481565b348015610788575f80fd5b5061043b610797366004611f0b565b610e9b565b3480156107a7575f80fd5b506103b26107b6366004611e1c565b610ee6565b3480156107c6575f80fd5b506103b26107d5366004611e1c565b610f33565b3480156107e5575f80fd5b5061043b6107f4366004611f26565b610f3f565b348015610804575f80fd5b5061043b610813366004611f0b565b610f86565b348015610823575f80fd5b5061040e600c5481565b348015610838575f80fd5b5061043b610847366004611eaf565b610fd7565b348015610857575f80fd5b506103b2610866366004611f0b565b600a6020525f908152604090205460ff1681565b348015610885575f80fd5b50601e546103e6906001600160a01b031681565b3480156108a4575f80fd5b5061043b6108b3366004611eaf565b61102a565b3480156108c3575f80fd5b5061040e60145481565b3480156108d8575f80fd5b50601e546103b290600160b01b900460ff1681565b3480156108f8575f80fd5b5061040e610907366004611f3f565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b34801561093c575f80fd5b5061043b61094b366004611f0b565b61107d565b34801561095b575f80fd5b5061043b61096a366004611e46565b6110c9565b34801561097a575f80fd5b5061040e60155481565b34801561098f575f80fd5b5061043b61099e366004611f0b565b6110f7565b3480156109ae575f80fd5b5061043b6109bd366004611ee2565b6111de565b3480156109cd575f80fd5b50601e546103b290600160b81b900460ff1681565b3480156109ed575f80fd5b506103b26109fc366004611f0b565b60086020525f908152604090205460ff1681565b348015610a1b575f80fd5b5061043b610a2a366004611ee2565b61122c565b606060028054610a3e90611f76565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6a90611f76565b8015610ab55780601f10610a8c57610100808354040283529160200191610ab5565b820191905f5260205f20905b815481529060010190602001808311610a9857829003601f168201915b5050505050905090565b5f610acb338484611283565b5060015b92915050565b5f546001600160a01b03163314610b075760405162461bcd60e51b8152600401610afe90611fae565b60405180910390fd5b601b55565b5f610b188484846113a6565b50610b6a8433610b6585604051806060016040528060288152602001612120602891396001600160a01b038a165f90815260076020908152604080832033845290915290205491906117c8565b611283565b5060015b9392505050565b5f546001600160a01b03163314610b9e5760405162461bcd60e51b8152600401610afe90611fae565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165f90815260066020526040812054601954610c0c91611800565b905090565b600454610c2c9061010090046001600160a01b031647611841565b565b335f8181526007602090815260408083206001600160a01b03871684529091528120549091610acb918590610b659086611874565b5f546001600160a01b03163314610c8c5760405162461bcd60e51b8152600401610afe90611fae565b600f83905560108290556011819055610caf81610ca98585611874565b90611874565b601681905560141015610cc0575f80fd5b505050565b5f546001600160a01b03163314610cee5760405162461bcd60e51b8152600401610afe90611fae565b6064601954610cfd9190611ff7565b811015610d5d5760405162461bcd60e51b815260206004820152602860248201527f4d61782077616c6c65742073686f756c64206265206d6f7265206f7220657175604482015267616c20746f20312560c01b6064820152608401610afe565b601a55565b5f546001600160a01b03163314610d8b5760405162461bcd60e51b8152600401610afe90611fae565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610dfc5760405162461bcd60e51b8152600401610afe90611fae565b601e8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610e4990831515815260200190565b60405180910390a150565b5f546001600160a01b03163314610e7d5760405162461bcd60e51b8152600401610afe90611fae565b6018805460ff19166001179055565b606060038054610a3e90611f76565b5f546001600160a01b03163314610ec45760405162461bcd60e51b8152600401610afe90611fae565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b5f610acb3384610b658560405180606001604052806025815260200161214860259139335f9081526007602090815260408083206001600160a01b038d16845290915290205491906117c8565b5f610b6a3384846113a6565b5f546001600160a01b03163314610f685760405162461bcd60e51b8152600401610afe90611fae565b601e8054911515600160b01b0260ff60b01b19909216919091179055565b5f546001600160a01b03163314610faf5760405162461bcd60e51b8152600401610afe90611fae565b600480546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b5f546001600160a01b031633146110005760405162461bcd60e51b8152600401610afe90611fae565b6001600160a01b03919091165f908152600860205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146110535760405162461bcd60e51b8152600401610afe90611fae565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146110a65760405162461bcd60e51b8152600401610afe90611fae565b6001600160a01b03165f908152600b60205260409020805460ff19166001179055565b5f546001600160a01b031633146110f25760405162461bcd60e51b8152600401610afe90611fae565b601c55565b5f546001600160a01b031633146111205760405162461bcd60e51b8152600401610afe90611fae565b6001600160a01b0381166111855760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610afe565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146112075760405162461bcd60e51b8152600401610afe90611fae565b60128390556013829055601481905561122481610ca98585611874565b601755505050565b5f546001600160a01b031633146112555760405162461bcd60e51b8152600401610afe90611fae565b600c839055600d829055600e81905561127281610ca98585611874565b6015819055600a1015610cc0575f80fd5b6001600160a01b0383166112e55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610afe565b6001600160a01b0382166113465760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610afe565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b03841661140b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610afe565b6001600160a01b03831661146d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610afe565b5f546001600160a01b0385811691161480159061149757505f546001600160a01b03848116911614155b156114aa5760185460ff166114aa575f80fd5b601e54600160a01b900460ff16156114ce576114c78484846118d2565b9050610b6e565b6001600160a01b0384165f908152600a602052604090205460ff1615801561150e57506001600160a01b0383165f908152600a602052604090205460ff16155b1561157657601a548211156115765760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610afe565b305f90815260066020526040902054601c548082101590611598906002612016565b82106115af57601c546115ac906002612016565b91505b8080156115c65750601e54600160a01b900460ff16155b80156115ea57506001600160a01b0386165f908152600b602052604090205460ff16155b80156115ff5750601e54600160a81b900460ff165b1561162557601e54600160b01b900460ff161561161c57601c5491505b611625826119b5565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f908152600690915291909120546116769186906117c8565b6001600160a01b0387165f90815260066020908152604080832093909355600890529081205460ff16806116c157506001600160a01b0386165f9081526008602052604090205460ff165b6116d5576116d0878787611a0d565b6116d7565b845b601e54909150600160b81b900460ff16801561170b57506001600160a01b0386165f9081526009602052604090205460ff16155b1561173f57601b5461173582610ca9896001600160a01b03165f9081526006602052604090205490565b111561173f575f80fd5b6001600160a01b0386165f908152600660205260409020546117619082611874565b6001600160a01b038088165f8181526006602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117b49085815260200190565b60405180910390a360019350505050610b6e565b5f81848411156117eb5760405162461bcd60e51b8152600401610afe9190611dba565b505f6117f7848661202d565b95945050505050565b5f610b6e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506117c8565b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015610cc0573d5f803e3d5ffd5b5f806118808385612040565b905083811015610b6e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610afe565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526006909152918220546119229184906117c8565b6001600160a01b038086165f9081526006602052604080822093909355908516815220546119509083611874565b6001600160a01b038085165f8181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119a39086815260200190565b60405180910390a35060019392505050565b601e805460ff60a01b1916600160a01b1790556119d181611b28565b4766b1a2bc2ec500008111156119fc576004546119fc9061010090046001600160a01b031682611841565b5050601e805460ff60a01b19169055565b6001600160a01b0383165f908152600b6020526040812054819060ff1615611a5657611a4f6064611a4960155486611cd490919063ffffffff16565b90611d52565b9050611aa6565b6001600160a01b0384165f908152600b602052604090205460ff1615611aa657601d5460ff161515600114611a89575f80fd5b611aa36064611a4960165486611cd490919063ffffffff16565b90505b8015611b1e57305f90815260066020526040902054611ac59082611874565b305f81815260066020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b159085815260200190565b60405180910390a35b6117f78382611800565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611b5b57611b5b612053565b60200260200101906001600160a01b031690816001600160a01b031681525050601d60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bcc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bf09190612067565b81600181518110611c0357611c03612053565b6001600160a01b039283166020918202929092010152601d54611c2e91309161010090041684611283565b601d5460405163791ac94760e01b81526101009091046001600160a01b03169063791ac94790611c6a9085905f908690309042906004016120c4565b5f604051808303815f87803b158015611c81575f80fd5b505af1158015611c93573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611cc89291906120ff565b60405180910390a15050565b5f825f03611ce357505f610acf565b5f611cee8385612016565b905082611cfb8583611ff7565b14610b6e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610afe565b5f610b6e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f8183611dae5760405162461bcd60e51b8152600401610afe9190611dba565b505f6117f78486611ff7565b5f6020808352835180828501525f5b81811015611de557858101830151858201604001528201611dc9565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611e19575f80fd5b50565b5f8060408385031215611e2d575f80fd5b8235611e3881611e05565b946020939093013593505050565b5f60208284031215611e56575f80fd5b5035919050565b5f805f60608486031215611e6f575f80fd5b8335611e7a81611e05565b92506020840135611e8a81611e05565b929592945050506040919091013590565b80358015158114611eaa575f80fd5b919050565b5f8060408385031215611ec0575f80fd5b8235611ecb81611e05565b9150611ed960208401611e9b565b90509250929050565b5f805f60608486031215611ef4575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215611f1b575f80fd5b8135610b6e81611e05565b5f60208284031215611f36575f80fd5b610b6e82611e9b565b5f8060408385031215611f50575f80fd5b8235611f5b81611e05565b91506020830135611f6b81611e05565b809150509250929050565b600181811c90821680611f8a57607f821691505b602082108103611fa857634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f8261201157634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610acf57610acf611fe3565b81810381811115610acf57610acf611fe3565b80820180821115610acf57610acf611fe3565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612077575f80fd5b8151610b6e81611e05565b5f8151808452602080850194508084015f5b838110156120b95781516001600160a01b031687529582019590820190600101612094565b509495945050505050565b85815284602082015260a060408201525f6120e260a0830186612082565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f6121176040830184612082565b94935050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205941665028afd69dfebecc60af9db313d34bf92b2fea5fd4ee132bf5ae3f5ea464736f6c63430008150033

Deployed Bytecode

0x60806040526004361061035e575f3560e01c806382eefb43116101bd578063c78a789b116100f2578063e48afcc511610092578063f39af0791161006d578063f39af079146109a3578063f872858a146109c2578063fabf7063146109e2578063fdb0983e14610a10575f80fd5b8063e48afcc514610950578063f0cd1dac1461096f578063f2fde38b14610984575f80fd5b8063d76e26a3116100cd578063d76e26a3146108b8578063da00097d146108cd578063dd62ed3e146108ed578063e3d31a6414610931575f80fd5b8063c78a789b1461084c578063c816841b1461087a578063d5eac00814610899575f80fd5b8063a395bd6f1161015d578063a909b6d711610138578063a909b6d7146107da578063b34b6933146107f9578063b6c3af3414610818578063c50eed9e1461082d575f80fd5b8063a395bd6f1461077d578063a457c2d71461079c578063a9059cbb146107bb575f80fd5b80638da5cb5b116101985780638da5cb5b1461072357806395d89b411461073f5780639e3fa32314610753578063a08e671f14610768575f80fd5b806382eefb43146106db578063852cf64d146106f05780638a8c523c1461070f575f80fd5b80634a74bb0211610293578063646d47001161023357806370a082311161020e57806370a0823114610669578063715018a61461069d5780637d1db4a5146106b1578063807c2d9c146106c6575f80fd5b8063646d47001461062a578063661b6e361461063f578063705f9d7414610654575f80fd5b806355324fa91161026e57806355324fa9146105ad578063565cec38146105db5780635d783ee8146105f0578063627816f41461060b575f80fd5b80634a74bb02146105405780634beb80b814610560578063526012e81461057f575f80fd5b806327c8f835116102fe5780632df67109116102d95780632df67109146104d65780632f0a5fd4146104eb578063313ce567146105005780633950935114610521575f80fd5b806327c8f8351461047b5780632b112e49146104ae5780632d55efe3146104c2575f80fd5b806318160ddd1161033957806318160ddd146103fe57806322d0de201461041c57806323b872dd1461043d57806326436ddb1461045c575f80fd5b806306fdde0314610369578063095ea7b3146103935780631694505e146103c2575f80fd5b3661036557005b5f80fd5b348015610374575f80fd5b5061037d610a2f565b60405161038a9190611dba565b60405180910390f35b34801561039e575f80fd5b506103b26103ad366004611e1c565b610abf565b604051901515815260200161038a565b3480156103cd575f80fd5b50601d546103e69061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161038a565b348015610409575f80fd5b506019545b60405190815260200161038a565b348015610427575f80fd5b5061043b610436366004611e46565b610ad5565b005b348015610448575f80fd5b506103b2610457366004611e5d565b610b0c565b348015610467575f80fd5b5061043b610476366004611eaf565b610b75565b348015610486575f80fd5b506103e67f000000000000000000000000000000000000000000000000000000000000dead81565b3480156104b9575f80fd5b5061040e610bc8565b3480156104cd575f80fd5b5061043b610c11565b3480156104e1575f80fd5b5061040e600d5481565b3480156104f6575f80fd5b5061040e600f5481565b34801561050b575f80fd5b5060045460405160ff909116815260200161038a565b34801561052c575f80fd5b506103b261053b366004611e1c565b610c2e565b34801561054b575f80fd5b50601e546103b290600160a81b900460ff1681565b34801561056b575f80fd5b5061043b61057a366004611ee2565b610c63565b34801561058a575f80fd5b506103b2610599366004611f0b565b60096020525f908152604090205460ff1681565b3480156105b8575f80fd5b506103b26105c7366004611f0b565b600b6020525f908152604090205460ff1681565b3480156105e6575f80fd5b5061040e60135481565b3480156105fb575f80fd5b5061043b601d805460ff19169055565b348015610616575f80fd5b5061043b610625366004611e46565b610cc5565b348015610635575f80fd5b5061040e60115481565b34801561064a575f80fd5b5061040e60105481565b34801561065f575f80fd5b5061040e600e5481565b348015610674575f80fd5b5061040e610683366004611f0b565b6001600160a01b03165f9081526006602052604090205490565b3480156106a8575f80fd5b5061043b610d62565b3480156106bc575f80fd5b5061040e601a5481565b3480156106d1575f80fd5b5061040e601b5481565b3480156106e6575f80fd5b5061040e60165481565b3480156106fb575f80fd5b5061043b61070a366004611f26565b610dd3565b34801561071a575f80fd5b5061043b610e54565b34801561072e575f80fd5b505f546001600160a01b03166103e6565b34801561074a575f80fd5b5061037d610e8c565b34801561075e575f80fd5b5061040e60125481565b348015610773575f80fd5b5061040e60175481565b348015610788575f80fd5b5061043b610797366004611f0b565b610e9b565b3480156107a7575f80fd5b506103b26107b6366004611e1c565b610ee6565b3480156107c6575f80fd5b506103b26107d5366004611e1c565b610f33565b3480156107e5575f80fd5b5061043b6107f4366004611f26565b610f3f565b348015610804575f80fd5b5061043b610813366004611f0b565b610f86565b348015610823575f80fd5b5061040e600c5481565b348015610838575f80fd5b5061043b610847366004611eaf565b610fd7565b348015610857575f80fd5b506103b2610866366004611f0b565b600a6020525f908152604090205460ff1681565b348015610885575f80fd5b50601e546103e6906001600160a01b031681565b3480156108a4575f80fd5b5061043b6108b3366004611eaf565b61102a565b3480156108c3575f80fd5b5061040e60145481565b3480156108d8575f80fd5b50601e546103b290600160b01b900460ff1681565b3480156108f8575f80fd5b5061040e610907366004611f3f565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b34801561093c575f80fd5b5061043b61094b366004611f0b565b61107d565b34801561095b575f80fd5b5061043b61096a366004611e46565b6110c9565b34801561097a575f80fd5b5061040e60155481565b34801561098f575f80fd5b5061043b61099e366004611f0b565b6110f7565b3480156109ae575f80fd5b5061043b6109bd366004611ee2565b6111de565b3480156109cd575f80fd5b50601e546103b290600160b81b900460ff1681565b3480156109ed575f80fd5b506103b26109fc366004611f0b565b60086020525f908152604090205460ff1681565b348015610a1b575f80fd5b5061043b610a2a366004611ee2565b61122c565b606060028054610a3e90611f76565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6a90611f76565b8015610ab55780601f10610a8c57610100808354040283529160200191610ab5565b820191905f5260205f20905b815481529060010190602001808311610a9857829003601f168201915b5050505050905090565b5f610acb338484611283565b5060015b92915050565b5f546001600160a01b03163314610b075760405162461bcd60e51b8152600401610afe90611fae565b60405180910390fd5b601b55565b5f610b188484846113a6565b50610b6a8433610b6585604051806060016040528060288152602001612120602891396001600160a01b038a165f90815260076020908152604080832033845290915290205491906117c8565b611283565b5060015b9392505050565b5f546001600160a01b03163314610b9e5760405162461bcd60e51b8152600401610afe90611fae565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b03165f90815260066020526040812054601954610c0c91611800565b905090565b600454610c2c9061010090046001600160a01b031647611841565b565b335f8181526007602090815260408083206001600160a01b03871684529091528120549091610acb918590610b659086611874565b5f546001600160a01b03163314610c8c5760405162461bcd60e51b8152600401610afe90611fae565b600f83905560108290556011819055610caf81610ca98585611874565b90611874565b601681905560141015610cc0575f80fd5b505050565b5f546001600160a01b03163314610cee5760405162461bcd60e51b8152600401610afe90611fae565b6064601954610cfd9190611ff7565b811015610d5d5760405162461bcd60e51b815260206004820152602860248201527f4d61782077616c6c65742073686f756c64206265206d6f7265206f7220657175604482015267616c20746f20312560c01b6064820152608401610afe565b601a55565b5f546001600160a01b03163314610d8b5760405162461bcd60e51b8152600401610afe90611fae565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610dfc5760405162461bcd60e51b8152600401610afe90611fae565b601e8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610e4990831515815260200190565b60405180910390a150565b5f546001600160a01b03163314610e7d5760405162461bcd60e51b8152600401610afe90611fae565b6018805460ff19166001179055565b606060038054610a3e90611f76565b5f546001600160a01b03163314610ec45760405162461bcd60e51b8152600401610afe90611fae565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b5f610acb3384610b658560405180606001604052806025815260200161214860259139335f9081526007602090815260408083206001600160a01b038d16845290915290205491906117c8565b5f610b6a3384846113a6565b5f546001600160a01b03163314610f685760405162461bcd60e51b8152600401610afe90611fae565b601e8054911515600160b01b0260ff60b01b19909216919091179055565b5f546001600160a01b03163314610faf5760405162461bcd60e51b8152600401610afe90611fae565b600480546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b5f546001600160a01b031633146110005760405162461bcd60e51b8152600401610afe90611fae565b6001600160a01b03919091165f908152600860205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146110535760405162461bcd60e51b8152600401610afe90611fae565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146110a65760405162461bcd60e51b8152600401610afe90611fae565b6001600160a01b03165f908152600b60205260409020805460ff19166001179055565b5f546001600160a01b031633146110f25760405162461bcd60e51b8152600401610afe90611fae565b601c55565b5f546001600160a01b031633146111205760405162461bcd60e51b8152600401610afe90611fae565b6001600160a01b0381166111855760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610afe565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146112075760405162461bcd60e51b8152600401610afe90611fae565b60128390556013829055601481905561122481610ca98585611874565b601755505050565b5f546001600160a01b031633146112555760405162461bcd60e51b8152600401610afe90611fae565b600c839055600d829055600e81905561127281610ca98585611874565b6015819055600a1015610cc0575f80fd5b6001600160a01b0383166112e55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610afe565b6001600160a01b0382166113465760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610afe565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b03841661140b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610afe565b6001600160a01b03831661146d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610afe565b5f546001600160a01b0385811691161480159061149757505f546001600160a01b03848116911614155b156114aa5760185460ff166114aa575f80fd5b601e54600160a01b900460ff16156114ce576114c78484846118d2565b9050610b6e565b6001600160a01b0384165f908152600a602052604090205460ff1615801561150e57506001600160a01b0383165f908152600a602052604090205460ff16155b1561157657601a548211156115765760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610afe565b305f90815260066020526040902054601c548082101590611598906002612016565b82106115af57601c546115ac906002612016565b91505b8080156115c65750601e54600160a01b900460ff16155b80156115ea57506001600160a01b0386165f908152600b602052604090205460ff16155b80156115ff5750601e54600160a81b900460ff165b1561162557601e54600160b01b900460ff161561161c57601c5491505b611625826119b5565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f908152600690915291909120546116769186906117c8565b6001600160a01b0387165f90815260066020908152604080832093909355600890529081205460ff16806116c157506001600160a01b0386165f9081526008602052604090205460ff165b6116d5576116d0878787611a0d565b6116d7565b845b601e54909150600160b81b900460ff16801561170b57506001600160a01b0386165f9081526009602052604090205460ff16155b1561173f57601b5461173582610ca9896001600160a01b03165f9081526006602052604090205490565b111561173f575f80fd5b6001600160a01b0386165f908152600660205260409020546117619082611874565b6001600160a01b038088165f8181526006602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117b49085815260200190565b60405180910390a360019350505050610b6e565b5f81848411156117eb5760405162461bcd60e51b8152600401610afe9190611dba565b505f6117f7848661202d565b95945050505050565b5f610b6e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506117c8565b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015610cc0573d5f803e3d5ffd5b5f806118808385612040565b905083811015610b6e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610afe565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526006909152918220546119229184906117c8565b6001600160a01b038086165f9081526006602052604080822093909355908516815220546119509083611874565b6001600160a01b038085165f8181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119a39086815260200190565b60405180910390a35060019392505050565b601e805460ff60a01b1916600160a01b1790556119d181611b28565b4766b1a2bc2ec500008111156119fc576004546119fc9061010090046001600160a01b031682611841565b5050601e805460ff60a01b19169055565b6001600160a01b0383165f908152600b6020526040812054819060ff1615611a5657611a4f6064611a4960155486611cd490919063ffffffff16565b90611d52565b9050611aa6565b6001600160a01b0384165f908152600b602052604090205460ff1615611aa657601d5460ff161515600114611a89575f80fd5b611aa36064611a4960165486611cd490919063ffffffff16565b90505b8015611b1e57305f90815260066020526040902054611ac59082611874565b305f81815260066020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b159085815260200190565b60405180910390a35b6117f78382611800565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611b5b57611b5b612053565b60200260200101906001600160a01b031690816001600160a01b031681525050601d60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bcc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bf09190612067565b81600181518110611c0357611c03612053565b6001600160a01b039283166020918202929092010152601d54611c2e91309161010090041684611283565b601d5460405163791ac94760e01b81526101009091046001600160a01b03169063791ac94790611c6a9085905f908690309042906004016120c4565b5f604051808303815f87803b158015611c81575f80fd5b505af1158015611c93573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611cc89291906120ff565b60405180910390a15050565b5f825f03611ce357505f610acf565b5f611cee8385612016565b905082611cfb8583611ff7565b14610b6e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610afe565b5f610b6e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f8183611dae5760405162461bcd60e51b8152600401610afe9190611dba565b505f6117f78486611ff7565b5f6020808352835180828501525f5b81811015611de557858101830151858201604001528201611dc9565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611e19575f80fd5b50565b5f8060408385031215611e2d575f80fd5b8235611e3881611e05565b946020939093013593505050565b5f60208284031215611e56575f80fd5b5035919050565b5f805f60608486031215611e6f575f80fd5b8335611e7a81611e05565b92506020840135611e8a81611e05565b929592945050506040919091013590565b80358015158114611eaa575f80fd5b919050565b5f8060408385031215611ec0575f80fd5b8235611ecb81611e05565b9150611ed960208401611e9b565b90509250929050565b5f805f60608486031215611ef4575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215611f1b575f80fd5b8135610b6e81611e05565b5f60208284031215611f36575f80fd5b610b6e82611e9b565b5f8060408385031215611f50575f80fd5b8235611f5b81611e05565b91506020830135611f6b81611e05565b809150509250929050565b600181811c90821680611f8a57607f821691505b602082108103611fa857634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f8261201157634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610acf57610acf611fe3565b81810381811115610acf57610acf611fe3565b80820180821115610acf57610acf611fe3565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612077575f80fd5b8151610b6e81611e05565b5f8151808452602080850194508084015f5b838110156120b95781516001600160a01b031687529582019590820190600101612094565b509495945050505050565b85815284602082015260a060408201525f6120e260a0830186612082565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f6121176040830184612082565b94935050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205941665028afd69dfebecc60af9db313d34bf92b2fea5fd4ee132bf5ae3f5ea464736f6c63430008150033

Deployed Bytecode Sourcemap

14612:13115:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18078:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19244:161;;;;;;;;;;-1:-1:-1;19244:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;19244:161:0;1023:187:1;16351:41:0;;;;;;;;;;-1:-1:-1;16351:41:0;;;;;;;-1:-1:-1;;;;;16351:41:0;;;;;;-1:-1:-1;;;;;1406:32:1;;;1388:51;;1376:2;1361:18;16351:41:0;1215:230:1;18355:100:0;;;;;;;;;;-1:-1:-1;18435:12:0;;18355:100;;;1596:25:1;;;1584:2;1569:18;18355:100:0;1450:177:1;21876:107:0;;;;;;;;;;-1:-1:-1;21876:107:0;;;;;:::i;:::-;;:::i;:::-;;23353:313;;;;;;;;;;-1:-1:-1;23353:313:0;;;;;:::i;:::-;;:::i;21731:137::-;;;;;;;;;;-1:-1:-1;21731:137:0;;;;;:::i;:::-;;:::i;15058:81::-;;;;;;;;;;;;;;;22690:128;;;;;;;;;;;;;:::i;22960:116::-;;;;;;;;;;;;;:::i;15560:36::-;;;;;;;;;;;;;;;;15648:37;;;;;;;;;;;;;;;;18264:83;;;;;;;;;;-1:-1:-1;18330:9:0;;18264:83;;18330:9;;;;3113:36:1;;3101:2;3086:18;18264:83:0;2971:184:1;18741:218:0;;;;;;;;;;-1:-1:-1;18741:218:0;;;;;:::i;:::-;;:::i;16466:40::-;;;;;;;;;;-1:-1:-1;16466:40:0;;;;-1:-1:-1;;;16466:40:0;;;;;;20591:429;;;;;;;;;;-1:-1:-1;20591:429:0;;;;;:::i;:::-;;:::i;15340:55::-;;;;;;;;;;-1:-1:-1;15340:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15460:48;;;;;;;;;;-1:-1:-1;15460:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15826:35;;;;;;;;;;;;;;;;21656:67;;;;;;;;;;;;21699:8;:16;;-1:-1:-1;;21699:16:0;;;21656:67;21435:213;;;;;;;;;;-1:-1:-1;21435:213:0;;;;;:::i;:::-;;:::i;15736:39::-;;;;;;;;;;;;;;;;15692:37;;;;;;;;;;;;;;;;15603:38;;;;;;;;;;;;;;;;18463:119;;;;;;;;;;-1:-1:-1;18463:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;18556:18:0;18529:7;18556:18;;;:9;:18;;;;;;;18463:119;6373:148;;;;;;;;;;;;;:::i;16149:42::-;;;;;;;;;;;;;;;;16198:40;;;;;;;;;;;;;;;;15957:37;;;;;;;;;;;;;;;;22378:167;;;;;;;;;;-1:-1:-1;22378:167:0;;;;;:::i;:::-;;:::i;25984:81::-;;;;;;;;;;;;;:::i;6148:79::-;;;;;;;;;;-1:-1:-1;6186:7:0;6213:6;-1:-1:-1;;;;;6213:6:0;6148:79;;18169:87;;;;;;;;;;;;;:::i;15784:35::-;;;;;;;;;;;;;;;;16001:44;;;;;;;;;;;;;;;;22253:117;;;;;;;;;;-1:-1:-1;22253:117:0;;;;;:::i;:::-;;:::i;18967:269::-;;;;;;;;;;-1:-1:-1;18967:269:0;;;;;:::i;:::-;;:::i;23178:167::-;;;;;;;;;;-1:-1:-1;23178:167:0;;;;;:::i;:::-;;:::i;22553:125::-;;;;;;;;;;-1:-1:-1;22553:125:0;;;;;:::i;:::-;;:::i;22126:119::-;;;;;;;;;;-1:-1:-1;22126:119:0;;;;;:::i;:::-;;:::i;15517:36::-;;;;;;;;;;;;;;;;20021:142;;;;;;;;;;-1:-1:-1;20021:142:0;;;;;:::i;:::-;;:::i;15402:51::-;;;;;;;;;;-1:-1:-1;15402:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16399:26;;;;;;;;;;-1:-1:-1;16399:26:0;;;;-1:-1:-1;;;;;16399:26:0;;;19876:133;;;;;;;;;;-1:-1:-1;19876:133:0;;;;;:::i;:::-;;:::i;15868:37::-;;;;;;;;;;;;;;;;16513:45;;;;;;;;;;-1:-1:-1;16513:45:0;;;;-1:-1:-1;;;16513:45:0;;;;;;18590:143;;;;;;;;;;-1:-1:-1;18590:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;18698:18:0;;;18671:7;18698:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18590:143;19758:110;;;;;;;;;;-1:-1:-1;19758:110:0;;;;;:::i;:::-;;:::i;21991:127::-;;;;;;;;;;-1:-1:-1;21991:127:0;;;;;:::i;:::-;;:::i;15914:36::-;;;;;;;;;;;;;;;;6529:244;;;;;;;;;;-1:-1:-1;6529:244:0;;;;;:::i;:::-;;:::i;21032:391::-;;;;;;;;;;-1:-1:-1;21032:391:0;;;;;:::i;:::-;;:::i;16565:35::-;;;;;;;;;;-1:-1:-1;16565:35:0;;;;-1:-1:-1;;;16565:35:0;;;;;;15279:54;;;;;;;;;;-1:-1:-1;15279:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;20171:412;;;;;;;;;;-1:-1:-1;20171:412:0;;;;;:::i;:::-;;:::i;18078:83::-;18115:13;18148:5;18141:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18078:83;:::o;19244:161::-;19319:4;19336:39;578:10;19359:7;19368:6;19336:8;:39::i;:::-;-1:-1:-1;19393:4:0;19244:161;;;;;:::o;21876:107::-;6282:6;;-1:-1:-1;;;;;6282:6:0;578:10;6282:22;6274:67;;;;-1:-1:-1;;;6274:67:0;;;;;;;:::i;:::-;;;;;;;;;21953:10:::1;:22:::0;21876:107::o;23353:313::-;23451:4;23468:36;23478:6;23486:9;23497:6;23468:9;:36::i;:::-;-1:-1:-1;23515:121:0;23524:6;578:10;23546:89;23584:6;23546:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23546:19:0;;;;;;:11;:19;;;;;;;;578:10;23546:33;;;;;;;;;;:37;:89::i;:::-;23515:8;:121::i;:::-;-1:-1:-1;23654:4:0;23353:313;;;;;;:::o;21731:137::-;6282:6;;-1:-1:-1;;;;;6282:6:0;578:10;6282:22;6274:67;;;;-1:-1:-1;;;6274:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21821:30:0;;;::::1;;::::0;;;:22:::1;:30;::::0;;;;:39;;-1:-1:-1;;21821:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21731:137::o;22690:128::-;22797:11;-1:-1:-1;;;;;18556:18:0;22743:7;18556:18;;;:9;:18;;;;;;22770:12;;:40;;:16;:40::i;:::-;22763:47;;22690:128;:::o;22960:116::-;23034:10;;23013:55;;23034:10;;;-1:-1:-1;;;;;23034:10:0;23046:21;23013:20;:55::i;:::-;22960:116::o;18741:218::-;578:10;18829:4;18878:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18878:34:0;;;;;;;;;;18829:4;;18846:83;;18869:7;;18878:50;;18917:10;18878:38;:50::i;20591:429::-;6282:6;;-1:-1:-1;;;;;6282:6:0;578:10;6282:22;6274:67;;;;-1:-1:-1;;;6274:67:0;;;;;;;:::i;:::-;20731:18:::1;:36:::0;;;20778:18:::1;:36:::0;;;20825:20:::1;:40:::0;;;20899:68:::1;20848:17:::0;20899:42:::1;20752:15:::0;20799;20899:22:::1;:42::i;:::-;:46:::0;::::1;:68::i;:::-;20878:18;:89:::0;;;21009:2:::1;-1:-1:-1::0;20987:24:0::1;20978:34;;;::::0;::::1;;20591:429:::0;;;:::o;21435:213::-;6282:6;;-1:-1:-1;;;;;6282:6:0;578:10;6282:22;6274:67;;;;-1:-1:-1;;;6274:67:0;;;;;;;:::i;:::-;21555:3:::1;21542:12;;:16;;;;:::i;:::-;21527:11;:31;;21519:84;;;::::0;-1:-1:-1;;;21519:84:0;;5613:2:1;21519:84:0::1;::::0;::::1;5595:21:1::0;5652:2;5632:18;;;5625:30;5691:34;5671:18;;;5664:62;-1:-1:-1;;;5742:18:1;;;5735:38;5790:19;;21519:84:0::1;5411:404:1::0;21519:84:0::1;21614:12;:26:::0;21435:213::o;6373:148::-;6282:6;;-1:-1:-1;;;;;6282:6:0;578:10;6282:22;6274:67;;;;-1:-1:-1;;;6274:67:0;;;;;;;:::i;:::-;6480:1:::1;6464:6:::0;;6443:40:::1;::::0;-1:-1:-1;;;;;6464:6:0;;::::1;::::0;6443:40:::1;::::0;6480:1;;6443:40:::1;6511:1;6494:19:::0;;-1:-1:-1;;;;;;6494:19:0::1;::::0;;6373:148::o;22378:167::-;6282:6;;-1:-1:-1;;;;;6282:6:0;578:10;6282:22;6274:67;;;;-1:-1:-1;;;6274:67:0;;;;;;;:::i;:::-;22451:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;22451:32:0::1;-1:-1:-1::0;;;;22451:32:0;;::::1;;::::0;;22499:38:::1;::::0;::::1;::::0;::::1;::::0;22475:8;1188:14:1;1181:22;1163:41;;1151:2;1136:18;;1023:187;22499:38:0::1;;;;;;;;22378:167:::0;:::o;25984:81::-;6282:6;;-1:-1:-1;;;;;6282:6:0;578:10;6282:22;6274:67;;;;-1:-1:-1;;;6274:67:0;;;;;;;:::i;:::-;26039:11:::1;:18:::0;;-1:-1:-1;;26039:18:0::1;26053:4;26039:18;::::0;;25984:81::o;18169:87::-;18208:13;18241:7;18234:14;;;;;:::i;22253:117::-;6282:6;;-1:-1:-1;;;;;6282:6:0;578:10;6282:22;6274:67;;;;-1:-1:-1;;;6274:67:0;;;;;;;:::i;:::-;22330:10:::1;:32:::0;;-1:-1:-1;;;;;;22330:32:0::1;-1:-1:-1::0;;;;;22330:32:0;;;::::1;::::0;;;::::1;::::0;;22253:117::o;18967:269::-;19060:4;19077:129;578:10;19100:7;19109:96;19148:15;19109:96;;;;;;;;;;;;;;;;;578:10;19109:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19109:34:0;;;;;;;;;;;;:38;:96::i;23178:167::-;23256:4;23273:42;578:10;23297:9;23308:6;23273:9;:42::i;22553:125::-;6282:6;;-1:-1:-1;;;;;6282:6:0;578:10;6282:22;6274:67;;;;-1:-1:-1;;;6274:67:0;;;;;;;:::i;:::-;22634:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;22634:36:0::1;-1:-1:-1::0;;;;22634:36:0;;::::1;::::0;;;::::1;::::0;;22553:125::o;22126:119::-;6282:6;;-1:-1:-1;;;;;6282:6:0;578:10;6282:22;6274:67;;;;-1:-1:-1;;;6274:67:0;;;;;;;:::i;:::-;22205:10:::1;:32:::0;;-1:-1:-1;;;;;22205:32:0;;::::1;;;-1:-1:-1::0;;;;;;22205:32:0;;::::1;::::0;;;::::1;::::0;;22126:119::o;20021:142::-;6282:6;;-1:-1:-1;;;;;6282:6:0;578:10;6282:22;6274:67;;;;-1:-1:-1;;;6274:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20114:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:41;;-1:-1:-1;;20114:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20021:142::o;19876:133::-;6282:6;;-1:-1:-1;;;;;6282:6:0;578:10;6282:22;6274:67;;;;-1:-1:-1;;;6274:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19966:26:0;;;::::1;;::::0;;;:18:::1;:26;::::0;;;;:35;;-1:-1:-1;;19966:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19876:133::o;19758:110::-;6282:6;;-1:-1:-1;;;;;6282:6:0;578:10;6282:22;6274:67;;;;-1:-1:-1;;;6274:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19829:24:0::1;;::::0;;;:15:::1;:24;::::0;;;;:31;;-1:-1:-1;;19829:31:0::1;19856:4;19829:31;::::0;;19758:110::o;21991:127::-;6282:6;;-1:-1:-1;;;;;6282:6:0;578:10;6282:22;6274:67;;;;-1:-1:-1;;;6274:67:0;;;;;;;:::i;:::-;22076:23:::1;:34:::0;21991:127::o;6529:244::-;6282:6;;-1:-1:-1;;;;;6282:6:0;578:10;6282:22;6274:67;;;;-1:-1:-1;;;6274:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6618:22:0;::::1;6610:73;;;::::0;-1:-1:-1;;;6610:73:0;;6022:2:1;6610:73:0::1;::::0;::::1;6004:21:1::0;6061:2;6041:18;;;6034:30;6100:34;6080:18;;;6073:62;-1:-1:-1;;;6151:18:1;;;6144:36;6197:19;;6610:73:0::1;5820:402:1::0;6610:73:0::1;6720:6;::::0;;6699:38:::1;::::0;-1:-1:-1;;;;;6699:38:0;;::::1;::::0;6720:6;::::1;::::0;6699:38:::1;::::0;::::1;6748:6;:17:::0;;-1:-1:-1;;;;;;6748:17:0::1;-1:-1:-1::0;;;;;6748:17:0;;;::::1;::::0;;;::::1;::::0;;6529:244::o;21032:391::-;6282:6;;-1:-1:-1;;;;;6282:6:0;578:10;6282:22;6274:67;;;;-1:-1:-1;;;6274:67:0;;;;;;;:::i;:::-;21179:16:::1;:36:::0;;;21226:16:::1;:36:::0;;;21273:18:::1;:40:::0;;;21353:62:::1;21294:19:::0;21353:38:::1;21198:17:::0;21245;21353:20:::1;:38::i;:62::-;21326:24;:89:::0;-1:-1:-1;;;21032:391:0:o;20171:412::-;6282:6;;-1:-1:-1;;;;;6282:6:0;578:10;6282:22;6274:67;;;;-1:-1:-1;;;6274:67:0;;;;;;;:::i;:::-;20302:17:::1;:35:::0;;;20348:17:::1;:35:::0;;;20394:19:::1;:39:::0;;;20466:65:::1;20416:17:::0;20466:40:::1;20322:15:::0;20368;20466:21:::1;:40::i;:65::-;20446:17;:85:::0;;;20572:2:::1;-1:-1:-1::0;20551:23:0::1;20542:33;;;::::0;::::1;19413:337:::0;-1:-1:-1;;;;;19506:19:0;;19498:68;;;;-1:-1:-1;;;19498:68:0;;6429:2:1;19498:68:0;;;6411:21:1;6468:2;6448:18;;;6441:30;6507:34;6487:18;;;6480:62;-1:-1:-1;;;6558:18:1;;;6551:34;6602:19;;19498:68:0;6227:400:1;19498:68:0;-1:-1:-1;;;;;19585:21:0;;19577:68;;;;-1:-1:-1;;;19577:68:0;;6834:2:1;19577:68:0;;;6816:21:1;6873:2;6853:18;;;6846:30;6912:34;6892:18;;;6885:62;-1:-1:-1;;;6963:18:1;;;6956:32;7005:19;;19577:68:0;6632:398:1;19577:68:0;-1:-1:-1;;;;;19658:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19710:32;;1596:25:1;;;19710:32:0;;1569:18:1;19710:32:0;;;;;;;19413:337;;;:::o;23674:1964::-;23761:4;-1:-1:-1;;;;;23788:20:0;;23780:70;;;;-1:-1:-1;;;23780:70:0;;7237:2:1;23780:70:0;;;7219:21:1;7276:2;7256:18;;;7249:30;7315:34;7295:18;;;7288:62;-1:-1:-1;;;7366:18:1;;;7359:35;7411:19;;23780:70:0;7035:401:1;23780:70:0;-1:-1:-1;;;;;23869:23:0;;23861:71;;;;-1:-1:-1;;;23861:71:0;;7643:2:1;23861:71:0;;;7625:21:1;7682:2;7662:18;;;7655:30;7721:34;7701:18;;;7694:62;-1:-1:-1;;;7772:18:1;;;7765:33;7815:19;;23861:71:0;7441:399:1;23861:71:0;6186:7;6213:6;-1:-1:-1;;;;;23946:17:0;;;6213:6;;23946:17;;;;:41;;-1:-1:-1;6186:7:0;6213:6;-1:-1:-1;;;;;23967:20:0;;;6213:6;;23967:20;;23946:41;23943:92;;;24011:11;;;;24003:20;;;;;;24050:16;;-1:-1:-1;;;24050:16:0;;;;24047:1584;;;24100:41;24115:6;24123:9;24134:6;24100:14;:41::i;:::-;24093:48;;;;24047:1584;-1:-1:-1;;;;;24197:26:0;;;;;;:18;:26;;;;;;;;24196:27;:61;;;;-1:-1:-1;;;;;;24228:29:0;;;;;;:18;:29;;;;;;;;24227:30;24196:61;24193:176;;;24296:12;;24286:6;:22;;24278:75;;;;-1:-1:-1;;;24278:75:0;;8047:2:1;24278:75:0;;;8029:21:1;8086:2;8066:18;;;8059:30;8125:34;8105:18;;;8098:62;-1:-1:-1;;;8176:18:1;;;8169:38;8224:19;;24278:75:0;7845:404:1;24278:75:0;24446:4;24397:28;18556:18;;;:9;:18;;;;;;24522:23;;24498:47;;;;;24588:25;;24612:1;24588:25;:::i;:::-;24564:20;:49;24560:120;;24655:23;;:25;;24679:1;24655:25;:::i;:::-;24632:48;;24560:120;24713:23;:44;;;;-1:-1:-1;24741:16:0;;-1:-1:-1;;;24741:16:0;;;;24740:17;24713:44;:72;;;;-1:-1:-1;;;;;;24762:23:0;;;;;;:15;:23;;;;;;;;24761:24;24713:72;:97;;;;-1:-1:-1;24789:21:0;;-1:-1:-1;;;24789:21:0;;;;24713:97;24709:308;;;24848:25;;-1:-1:-1;;;24848:25:0;;;;24845:97;;;24919:23;;24896:46;;24845:97;24961:36;24976:20;24961:14;:36::i;:::-;25053:53;;;;;;;;;;;-1:-1:-1;;;25053:53:0;;;;;;;;-1:-1:-1;;;;;25053:17:0;;-1:-1:-1;25053:17:0;;;:9;:17;;;;;;;;:53;;25075:6;;25053:21;:53::i;:::-;-1:-1:-1;;;;;25033:17:0;;;;;;:9;:17;;;;;;;;:73;;;;25146:21;:29;;;;;;;;;:65;;-1:-1:-1;;;;;;25179:32:0;;;;;;:21;:32;;;;;;;;25146:65;25145:156;;25267:34;25275:6;25283:9;25294:6;25267:7;:34::i;:::-;25145:156;;;25258:6;25145:156;25321:16;;25123:178;;-1:-1:-1;;;;25321:16:0;;;;:54;;;;-1:-1:-1;;;;;;25342:33:0;;;;;;:22;:33;;;;;;;;25341:34;25321:54;25318:136;;;25443:10;;25402:37;25427:11;25402:20;25412:9;-1:-1:-1;;;;;18556:18:0;18529:7;18556:18;;;:9;:18;;;;;;;18463:119;25402:37;:51;;25394:60;;;;;;-1:-1:-1;;;;;25494:20:0;;;;;;:9;:20;;;;;;:37;;25519:11;25494:24;:37::i;:::-;-1:-1:-1;;;;;25471:20:0;;;;;;;:9;:20;;;;;;;:60;;;;25553:40;;;;;;;;;;25581:11;1596:25:1;;1584:2;1569:18;;1450:177;25553:40:0;;;;;;;;25615:4;25608:11;;;;;;;1883:192;1969:7;2005:12;1997:6;;;;1989:29;;;;-1:-1:-1;;;1989:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2029:9:0;2041:5;2045:1;2041;:5;:::i;:::-;2029:17;1883:192;-1:-1:-1;;;;;1883:192:0:o;1739:136::-;1797:7;1824:43;1828:1;1831;1824:43;;;;;;;;;;;;;;;;;:3;:43::i;22826:126::-;22918:26;;-1:-1:-1;;;;;22918:18:0;;;:26;;;;;22937:6;;22918:26;;;;22937:6;22918:18;:26;;;;;;;;;;;;;;;;;;;1550:181;1608:7;;1640:5;1644:1;1640;:5;:::i;:::-;1628:17;;1669:1;1664;:6;;1656:46;;;;-1:-1:-1;;;1656:46:0;;8892:2:1;1656:46:0;;;8874:21:1;8931:2;8911:18;;;8904:30;8970:29;8950:18;;;8943:57;9017:18;;1656:46:0;8690:351:1;25646:330:0;25776:53;;;;;;;;;;;-1:-1:-1;;;25776:53:0;;;;;;;;-1:-1:-1;;;;;25776:17:0;;25739:4;25776:17;;;:9;:17;;;;;;;:53;;25798:6;;25776:21;:53::i;:::-;-1:-1:-1;;;;;25756:17:0;;;;;;;:9;:17;;;;;;:73;;;;25863:20;;;;;;;:32;;25888:6;25863:24;:32::i;:::-;-1:-1:-1;;;;;25840:20:0;;;;;;;:9;:20;;;;;;;:55;;;;25911:35;;;;;;;;;;25939:6;1596:25:1;;1584:2;1569:18;;1450:177;25911:35:0;;;;;;;;-1:-1:-1;25964:4:0;25646:330;;;;;:::o;26073:291::-;17023:16;:23;;-1:-1:-1;;;;17023:23:0;-1:-1:-1;;;17023:23:0;;;26147:25:::1;26164:7:::0;26147:16:::1;:25::i;:::-;26212:21;26270:17;26249:38:::0;::::1;26246:108;;;26323:10;::::0;26302:52:::1;::::0;26323:10:::1;::::0;::::1;-1:-1:-1::0;;;;;26323:10:0::1;26335:18:::0;26302:20:::1;:52::i;:::-;-1:-1:-1::0;;17069:16:0;:24;;-1:-1:-1;;;;17069:24:0;;;26073:291::o;27050:668::-;-1:-1:-1;;;;;27211:23:0;;27136:7;27211:23;;;:15;:23;;;;;;27136:7;;27211:23;;27208:269;;;27263:38;27297:3;27263:29;27274:17;;27263:6;:10;;:29;;;;:::i;:::-;:33;;:38::i;:::-;27251:50;;27208:269;;;-1:-1:-1;;;;;27331:26:0;;;;;;:15;:26;;;;;;;;27328:149;;;27382:8;;;;:16;;:8;:16;27374:25;;;;;;27426:39;27461:3;27426:30;27437:18;;27426:6;:10;;:30;;;;:::i;:39::-;27414:51;;27328:149;27500:13;;27497:173;;27575:4;27557:24;;;;:9;:24;;;;;;:39;;27586:9;27557:28;:39::i;:::-;27548:4;27530:24;;;;:9;:24;;;;;;;:66;;;;27616:42;;-1:-1:-1;;;;;27616:42:0;;;;;;;27648:9;1596:25:1;;1584:2;1569:18;;1450:177;27616:42:0;;;;;;;;27497:173;27689:21;:6;27700:9;27689:10;:21::i;26376:666::-;26526:16;;;26540:1;26526:16;;;;;;;;26502:21;;26526:16;;;;;;;;;;-1:-1:-1;26526:16:0;26502:40;;26571:4;26553;26558:1;26553:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;26553:23:0;;;-1:-1:-1;;;;;26553:23:0;;;;;26597:15;;;;;;;;;-1:-1:-1;;;;;26597:15:0;-1:-1:-1;;;;;26597:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26587:4;26592:1;26587:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26587:32:0;;;:7;;;;;;;;;:32;26664:15;;26632:62;;26649:4;;26664:15;;;;26682:11;26632:8;:62::i;:::-;26733:15;;:240;;-1:-1:-1;;;26733:240:0;;:15;;;;-1:-1:-1;;;;;26733:15:0;;:66;;:240;;26814:11;;26840:1;;26884:4;;26911;;26947:15;;26733:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26999:35;27016:11;27029:4;26999:35;;;;;;;:::i;:::-;;;;;;;;26431:611;26376:666;:::o;2083:250::-;2141:7;2165:1;2170;2165:6;2161:47;;-1:-1:-1;2195:1:0;2188:8;;2161:47;2220:9;2232:5;2236:1;2232;:5;:::i;:::-;2220:17;-1:-1:-1;2265:1:0;2256:5;2260:1;2220:17;2256:5;:::i;:::-;:10;2248:56;;;;-1:-1:-1;;;2248:56:0;;11158:2:1;2248:56:0;;;11140:21:1;11197:2;11177:18;;;11170:30;11236:34;11216:18;;;11209:62;-1:-1:-1;;;11287:18:1;;;11280:31;11328:19;;2248:56:0;10956:397:1;2341:132:0;2399:7;2426:39;2430:1;2433;2426:39;;;;;;;;;;;;;;;;;2567:7;2602:12;2595:5;2587:28;;;;-1:-1:-1;;;2587:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2626:9:0;2638:5;2642:1;2638;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1632:180::-;1691:6;1744:2;1732:9;1723:7;1719:23;1715:32;1712:52;;;1760:1;1757;1750:12;1712:52;-1:-1:-1;1783:23:1;;1632:180;-1:-1:-1;1632:180:1:o;1817:456::-;1894:6;1902;1910;1963:2;1951:9;1942:7;1938:23;1934:32;1931:52;;;1979:1;1976;1969:12;1931:52;2018:9;2005:23;2037:31;2062:5;2037:31;:::i;:::-;2087:5;-1:-1:-1;2144:2:1;2129:18;;2116:32;2157:33;2116:32;2157:33;:::i;:::-;1817:456;;2209:7;;-1:-1:-1;;;2263:2:1;2248:18;;;;2235:32;;1817:456::o;2278:160::-;2343:20;;2399:13;;2392:21;2382:32;;2372:60;;2428:1;2425;2418:12;2372:60;2278:160;;;:::o;2443:315::-;2508:6;2516;2569:2;2557:9;2548:7;2544:23;2540:32;2537:52;;;2585:1;2582;2575:12;2537:52;2624:9;2611:23;2643:31;2668:5;2643:31;:::i;:::-;2693:5;-1:-1:-1;2717:35:1;2748:2;2733:18;;2717:35;:::i;:::-;2707:45;;2443:315;;;;;:::o;3160:316::-;3237:6;3245;3253;3306:2;3294:9;3285:7;3281:23;3277:32;3274:52;;;3322:1;3319;3312:12;3274:52;-1:-1:-1;;3345:23:1;;;3415:2;3400:18;;3387:32;;-1:-1:-1;3466:2:1;3451:18;;;3438:32;;3160:316;-1:-1:-1;3160:316:1:o;3481:247::-;3540:6;3593:2;3581:9;3572:7;3568:23;3564:32;3561:52;;;3609:1;3606;3599:12;3561:52;3648:9;3635:23;3667:31;3692:5;3667:31;:::i;3733:180::-;3789:6;3842:2;3830:9;3821:7;3817:23;3813:32;3810:52;;;3858:1;3855;3848:12;3810:52;3881:26;3897:9;3881:26;:::i;3918:388::-;3986:6;3994;4047:2;4035:9;4026:7;4022:23;4018:32;4015:52;;;4063:1;4060;4053:12;4015:52;4102:9;4089:23;4121:31;4146:5;4121:31;:::i;:::-;4171:5;-1:-1:-1;4228:2:1;4213:18;;4200:32;4241:33;4200:32;4241:33;:::i;:::-;4293:7;4283:17;;;3918:388;;;;;:::o;4311:380::-;4390:1;4386:12;;;;4433;;;4454:61;;4508:4;4500:6;4496:17;4486:27;;4454:61;4561:2;4553:6;4550:14;4530:18;4527:38;4524:161;;4607:10;4602:3;4598:20;4595:1;4588:31;4642:4;4639:1;4632:15;4670:4;4667:1;4660:15;4524:161;;4311:380;;;:::o;4696:356::-;4898:2;4880:21;;;4917:18;;;4910:30;4976:34;4971:2;4956:18;;4949:62;5043:2;5028:18;;4696:356::o;5057:127::-;5118:10;5113:3;5109:20;5106:1;5099:31;5149:4;5146:1;5139:15;5173:4;5170:1;5163:15;5189:217;5229:1;5255;5245:132;;5299:10;5294:3;5290:20;5287:1;5280:31;5334:4;5331:1;5324:15;5362:4;5359:1;5352:15;5245:132;-1:-1:-1;5391:9:1;;5189:217::o;8254:168::-;8327:9;;;8358;;8375:15;;;8369:22;;8355:37;8345:71;;8396:18;;:::i;8427:128::-;8494:9;;;8515:11;;;8512:37;;;8529:18;;:::i;8560:125::-;8625:9;;;8646:10;;;8643:36;;;8659:18;;:::i;9178:127::-;9239:10;9234:3;9230:20;9227:1;9220:31;9270:4;9267:1;9260:15;9294:4;9291:1;9284:15;9310:251;9380:6;9433:2;9421:9;9412:7;9408:23;9404:32;9401:52;;;9449:1;9446;9439:12;9401:52;9481:9;9475:16;9500:31;9525:5;9500:31;:::i;9566:461::-;9619:3;9657:5;9651:12;9684:6;9679:3;9672:19;9710:4;9739:2;9734:3;9730:12;9723:19;;9776:2;9769:5;9765:14;9797:1;9807:195;9821:6;9818:1;9815:13;9807:195;;;9886:13;;-1:-1:-1;;;;;9882:39:1;9870:52;;9942:12;;;;9977:15;;;;9918:1;9836:9;9807:195;;;-1:-1:-1;10018:3:1;;9566:461;-1:-1:-1;;;;;9566:461:1:o;10032:582::-;10331:6;10320:9;10313:25;10374:6;10369:2;10358:9;10354:18;10347:34;10417:3;10412:2;10401:9;10397:18;10390:31;10294:4;10438:57;10490:3;10479:9;10475:19;10467:6;10438:57;:::i;:::-;-1:-1:-1;;;;;10531:32:1;;;;10526:2;10511:18;;10504:60;-1:-1:-1;10595:3:1;10580:19;10573:35;10430:65;10032:582;-1:-1:-1;;;10032:582:1:o;10619:332::-;10826:6;10815:9;10808:25;10869:2;10864;10853:9;10849:18;10842:30;10789:4;10889:56;10941:2;10930:9;10926:18;10918:6;10889:56;:::i;:::-;10881:64;10619:332;-1:-1:-1;;;;10619:332:1:o

Swarm Source

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