ETH Price: $2,662.56 (+1.03%)
Gas: 1 Gwei

Token

Twitter Coin (TWTR)
 

Overview

Max Total Supply

1,000,000,000 TWTR

Holders

82

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,628,611.058283679 TWTR

Value
$0.00
0xe4acc186599942b1ae5468c74d2d9835062e777d
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:
TwitterCoin

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-05
*/

/**
https://t.me/TWTR_Entry
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.4;


abstract contract Context {

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

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

interface IERC20 {

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

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

library Address {

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

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

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

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

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

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

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

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

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

contract Ownable is Context {
    address private _owner;
    address private _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 TwitterCoin is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    using Address for address;
    
    string private _name ="Twitter Coin";
    string private _symbol = "TWTR";
    uint8 private _decimals = 9;

    address payable private taxWallet1 = payable(0x9f88f986A41042443C361340A96c9bAc74798fA2);
    address payable private taxWallet2 = payable(0x9f88f986A41042443C361340A96c9bAc74798fA2);
    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 = 10;
    uint256 public _buyDevelopmentFees = 0;
    uint256 public _sellLiquidityFees = 0;
    uint256 public _sellMarketingFees = 99;
    uint256 public _sellDevelopmentFees = 0;

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

    uint256 public _totalTaxIfBuying = 10;
    uint256 public _totalTaxIfSelling = 99;
    uint256 public _totalDistributionShares = 10;

    uint256 private _totalSupply = 1_000_000_000 * 10**9;
    uint256 public _maxTxAmount = _totalSupply;
    uint256 public _walletMax = _totalSupply*2/100;
    uint256 private minimumTokensBeforeSwap = _totalSupply*5/1000; 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function manualSend() 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(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 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]) {
            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":"RenounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":"address","name":"account","type":"address"}],"name":"addMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"adjustMaxTxAmount","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":[{"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":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","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":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentTax","type":"uint256"}],"name":"setBuyFee","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":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentTax","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setcheckExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setcheckTxLimitExcept","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setcheckWalletLimitExcept","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"settaxWallet1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"settaxWallet2","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"},{"stateMutability":"payable","type":"receive"}]

60e0604052600c60a08190526b2a3bb4ba3a32b91021b7b4b760a11b60c09081526200002f916002919062000560565b50604080518082019091526004808252632a2baa2960e11b60209092019182526200005d9160039162000560565b5060048054749f88f986a41042443c361340a96c9bac74798fa2096001600160a81b0319909116179055600580546001600160a01b031916739f88f986a41042443c361340a96c9bac74798fa21781556ddead0000000000000000000000006080526000600c819055600a600d819055600e829055600f82905560636010819055601183905560128390556013939093556014919091556015819055601691909155601755670de0b6b3a7640000601881905560198190556064906200012590600262000657565b62000131919062000636565b601a556103e8601854600562000148919062000657565b62000154919062000636565b601b55601d805462ffffff60a81b19166201000160a81b1790553480156200017b57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200021057600080fd5b505afa15801562000225573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024b919062000606565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200029457600080fd5b505afa158015620002a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cf919062000606565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200031857600080fd5b505af11580156200032d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000353919062000606565b601d80546001600160a01b039283166001600160a01b031991821617909155601c8054928416929091168217905560185430600090815260076020908152604080832094835293905291822055600190600890620003b96000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526008909252812080549092166001908117909255600990620004126000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601d549091168152600990925280822080548416600190811790915530835290822080549093168117909255600a90620004826000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600a8452828120805486166001908117909155601d549092168152600b90935290822080549093161790915560185490600690620004ee3390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6018546040516200055191815260200190565b60405180910390a350620006c0565b8280546200056e9062000683565b90600052602060002090601f016020900481019282620005925760008555620005dd565b82601f10620005ad57805160ff1916838001178555620005dd565b82800160010185558215620005dd579182015b82811115620005dd578251825591602001919060010190620005c0565b50620005eb929150620005ef565b5090565b5b80821115620005eb5760008155600101620005f0565b60006020828403121562000618578081fd5b81516001600160a01b03811681146200062f578182fd5b9392505050565b6000826200065257634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156200067e57634e487b7160e01b81526011600452602481fd5b500290565b600181811c908216806200069857607f821691505b60208210811415620006ba57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160601c6121f3620006e6600039600081816104c60152610cc501526121f36000f3fe6080604052600436106103545760003560e01c806370a08231116101c6578063c2d4640e116100f7578063e207a92b11610095578063f2fde38b1161006f578063f2fde38b146109c9578063f4293890146109e9578063f872858a146109fe578063fabf706314610a1f57600080fd5b8063e207a92b14610973578063f0cd1dac14610993578063f1d5f517146109a957600080fd5b8063c816841b116100d1578063c816841b146108d6578063d76e26a3146108f6578063da00097d1461090c578063dd62ed3e1461092d57600080fd5b8063c2d4640e14610866578063c49b9a8014610886578063c78a789b146108a657600080fd5b80639e3fa32311610164578063a5d69d1f1161013e578063a5d69d1f146107f0578063a9059cbb14610810578063b6c3af3414610830578063bbaa7d441461084657600080fd5b80639e3fa323146107a4578063a08e671f146107ba578063a457c2d7146107d057600080fd5b806382eefb43116101a057806382eefb431461073b5780638da5cb5b146107515780638f03aad51461076f57806395d89b411461078f57600080fd5b806370a08231146106d95780637d1db4a51461070f578063807c2d9c1461072557600080fd5b80632f0a5fd4116102a0578063565cec381161023e578063661b6e3611610218578063661b6e3614610678578063667b511c1461068e5780636e4ee811146106ae578063705f9d74146106c357600080fd5b8063565cec381461062c57806357e6adcb14610642578063646d47001461066257600080fd5b80633b97084a1161027a5780633b97084a1461058b5780634a74bb02146105ab578063526012e8146105cc57806355324fa9146105fc57600080fd5b80632f0a5fd414610533578063313ce56714610549578063395093511461056b57600080fd5b806323b872dd1161030d57806327c8f835116102e757806327c8f835146104b45780632b112e49146104e85780632cdae5cb146104fd5780632df671091461051d57600080fd5b806323b872dd1461045457806325519cf2146104745780632563ae831461049457600080fd5b806306fdde0314610360578063095ea7b31461038b5780630fe1203c146103bb5780631694505e146103dd57806318160ddd146104155780631d865c301461043457600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610a4f565b6040516103829190611fb4565b60405180910390f35b34801561039757600080fd5b506103ab6103a6366004611ee9565b610ae1565b6040519015158152602001610382565b3480156103c757600080fd5b506103db6103d6366004611e05565b610af8565b005b3480156103e957600080fd5b50601c546103fd906001600160a01b031681565b6040516001600160a01b039091168152602001610382565b34801561042157600080fd5b506018545b604051908152602001610382565b34801561044057600080fd5b506103db61044f366004611f46565b610b53565b34801561046057600080fd5b506103ab61046f366004611e75565b610bb7565b34801561048057600080fd5b506103db61048f366004611f46565b610c22565b3480156104a057600080fd5b506103db6104af366004611f14565b610c7b565b3480156104c057600080fd5b506103fd7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104f457600080fd5b50610426610cc3565b34801561050957600080fd5b506103db610518366004611eb5565b610d0d565b34801561052957600080fd5b50610426600d5481565b34801561053f57600080fd5b50610426600f5481565b34801561055557600080fd5b5060045460405160ff9091168152602001610382565b34801561057757600080fd5b506103ab610586366004611ee9565b610d62565b34801561059757600080fd5b506103db6105a6366004611f2e565b610d98565b3480156105b757600080fd5b50601d546103ab90600160a81b900460ff1681565b3480156105d857600080fd5b506103ab6105e7366004611e05565b60096020526000908152604090205460ff1681565b34801561060857600080fd5b506103ab610617366004611e05565b600b6020526000908152604090205460ff1681565b34801561063857600080fd5b5061042660135481565b34801561064e57600080fd5b506103db61065d366004611eb5565b610dc7565b34801561066e57600080fd5b5061042660115481565b34801561068457600080fd5b5061042660105481565b34801561069a57600080fd5b506103db6106a9366004611eb5565b610e1c565b3480156106ba57600080fd5b506103db610e71565b3480156106cf57600080fd5b50610426600e5481565b3480156106e557600080fd5b506104266106f4366004611e05565b6001600160a01b031660009081526006602052604090205490565b34801561071b57600080fd5b5061042660195481565b34801561073157600080fd5b50610426601a5481565b34801561074757600080fd5b5061042660165481565b34801561075d57600080fd5b506000546001600160a01b03166103fd565b34801561077b57600080fd5b506103db61078a366004611f2e565b610ee5565b34801561079b57600080fd5b50610375610f83565b3480156107b057600080fd5b5061042660125481565b3480156107c657600080fd5b5061042660175481565b3480156107dc57600080fd5b506103ab6107eb366004611ee9565b610f92565b3480156107fc57600080fd5b506103db61080b366004611f14565b610fe1565b34801561081c57600080fd5b506103ab61082b366004611ee9565b611029565b34801561083c57600080fd5b50610426600c5481565b34801561085257600080fd5b506103db610861366004611e05565b611036565b34801561087257600080fd5b506103db610881366004611f46565b611082565b34801561089257600080fd5b506103db6108a1366004611f14565b6110d1565b3480156108b257600080fd5b506103ab6108c1366004611e05565b600a6020526000908152604090205460ff1681565b3480156108e257600080fd5b50601d546103fd906001600160a01b031681565b34801561090257600080fd5b5061042660145481565b34801561091857600080fd5b50601d546103ab90600160b01b900460ff1681565b34801561093957600080fd5b50610426610948366004611e3d565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561097f57600080fd5b506103db61098e366004611e05565b611153565b34801561099f57600080fd5b5061042660155481565b3480156109b557600080fd5b506103db6109c4366004611f2e565b6111a1565b3480156109d557600080fd5b506103db6109e4366004611e05565b6111d0565b3480156109f557600080fd5b506103db6112ba565b348015610a0a57600080fd5b50601d546103ab90600160b81b900460ff1681565b348015610a2b57600080fd5b506103ab610a3a366004611e05565b60086020526000908152604090205460ff1681565b606060028054610a5e90612107565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8a90612107565b8015610ad75780601f10610aac57610100808354040283529160200191610ad7565b820191906000526020600020905b815481529060010190602001808311610aba57829003601f168201915b5050505050905090565b6000610aee3384846112d7565b5060015b92915050565b6000546001600160a01b03163314610b2b5760405162461bcd60e51b8152600401610b2290612007565b60405180910390fd5b600480546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314610b7d5760405162461bcd60e51b8152600401610b2290612007565b600f83905560108290556011819055610ba081610b9a85856113fb565b906113fb565b601681905560141015610bb257600080fd5b505050565b6000610bc484848461145a565b50610c178433610c1285604051806060016040528060288152602001612171602891396001600160a01b038a166000908152600760209081526040808320338452909152902054919061184c565b6112d7565b5060015b9392505050565b6000546001600160a01b03163314610c4c5760405162461bcd60e51b8152600401610b2290612007565b600c839055600d829055600e819055610c6981610b9a85856113fb565b6015819055600a1015610bb257600080fd5b6000546001600160a01b03163314610ca55760405162461bcd60e51b8152600401610b2290612007565b601d8054911515600160b81b0260ff60b81b19909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600090815260066020526040812054601854610d0891611886565b905090565b6000546001600160a01b03163314610d375760405162461bcd60e51b8152600401610b2290612007565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610aee918590610c1290866113fb565b6000546001600160a01b03163314610dc25760405162461bcd60e51b8152600401610b2290612007565b601b55565b6000546001600160a01b03163314610df15760405162461bcd60e51b8152600401610b2290612007565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e465760405162461bcd60e51b8152600401610b2290612007565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e9b5760405162461bcd60e51b8152600401610b2290612007565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610f0f5760405162461bcd60e51b8152600401610b2290612007565b6064601854610f1e91906120b1565b811015610f7e5760405162461bcd60e51b815260206004820152602860248201527f4d61782077616c6c65742073686f756c64206265206d6f7265206f7220657175604482015267616c20746f20312560c01b6064820152608401610b22565b601955565b606060038054610a5e90612107565b6000610aee3384610c1285604051806060016040528060258152602001612199602591393360009081526007602090815260408083206001600160a01b038d168452909152902054919061184c565b6000546001600160a01b0316331461100b5760405162461bcd60e51b8152600401610b2290612007565b601d8054911515600160b01b0260ff60b01b19909216919091179055565b6000610c1733848461145a565b6000546001600160a01b031633146110605760405162461bcd60e51b8152600401610b2290612007565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110ac5760405162461bcd60e51b8152600401610b2290612007565b6012839055601382905560148190556110c981610b9a85856113fb565b601755505050565b6000546001600160a01b031633146110fb5760405162461bcd60e51b8152600401610b2290612007565b601d8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061114890831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461117d5760405162461bcd60e51b8152600401610b2290612007565b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6000546001600160a01b031633146111cb5760405162461bcd60e51b8152600401610b2290612007565b601a55565b6000546001600160a01b031633146111fa5760405162461bcd60e51b8152600401610b2290612007565b6001600160a01b03811661125f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b22565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6004546112d59061010090046001600160a01b0316476118c8565b565b6001600160a01b0383166113395760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b22565b6001600160a01b03821661139a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b22565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000806114088385612099565b905083811015610c1b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b22565b60006001600160a01b0384166114c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b22565b6001600160a01b0383166115225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b22565b601d54600160a01b900460ff16156115465761153f8484846118fe565b9050610c1b565b6001600160a01b0384166000908152600a602052604090205460ff1615801561158857506001600160a01b0383166000908152600a602052604090205460ff16155b156115f0576019548211156115f05760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b22565b30600090815260066020526040902054601b5480821015906116139060026120d1565b821061162a57601b546116279060026120d1565b91505b8080156116415750601d54600160a01b900460ff16155b801561166657506001600160a01b0386166000908152600b602052604090205460ff16155b801561167b5750601d54600160a81b900460ff165b156116a157601d54600160b01b900460ff161561169857601b5491505b6116a1826119e4565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600690915291909120546116f391869061184c565b6001600160a01b038716600090815260066020908152604080832093909355600890529081205460ff168061174057506001600160a01b03861660009081526008602052604090205460ff165b6117545761174f878787611a3c565b611756565b845b601d54909150600160b81b900460ff16801561178b57506001600160a01b03861660009081526009602052604090205460ff16155b156117c157601a546117b682610b9a896001600160a01b031660009081526006602052604090205490565b11156117c157600080fd5b6001600160a01b0386166000908152600660205260409020546117e490826113fb565b6001600160a01b0380881660008181526006602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118389085815260200190565b60405180910390a360019350505050610c1b565b600081848411156118705760405162461bcd60e51b8152600401610b229190611fb4565b50600061187d84866120f0565b95945050505050565b6000610c1b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061184c565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610bb2573d6000803e3d6000fd5b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260069091529182205461194f91849061184c565b6001600160a01b03808616600090815260066020526040808220939093559085168152205461197e90836113fb565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119d29086815260200190565b60405180910390a35060019392505050565b601d805460ff60a01b1916600160a01b179055611a0081611b48565b4766b1a2bc2ec50000811115611a2b57600454611a2b9061010090046001600160a01b0316826118c8565b5050601d805460ff60a01b19169055565b6001600160a01b0383166000908152600b6020526040812054819060ff1615611a8657611a7f6064611a7960155486611d0690919063ffffffff16565b90611d85565b9050611ac4565b6001600160a01b0384166000908152600b602052604090205460ff1615611ac457611ac16064611a7960165486611d0690919063ffffffff16565b90505b8015611b3e5730600090815260066020526040902054611ae490826113fb565b30600081815260066020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b359085815260200190565b60405180910390a35b61187d8382611886565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b8b57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601c54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611bdf57600080fd5b505afa158015611bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c179190611e21565b81600181518110611c3857634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601c54611c5e91309116846112d7565b601c5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611c9790859060009086903090429060040161205d565b600060405180830381600087803b158015611cb157600080fd5b505af1158015611cc5573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611cfa92919061203c565b60405180910390a15050565b600082611d1557506000610af2565b6000611d2183856120d1565b905082611d2e85836120b1565b14610c1b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b22565b6000610c1b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183611de35760405162461bcd60e51b8152600401610b229190611fb4565b50600061187d84866120b1565b80358015158114611e0057600080fd5b919050565b600060208284031215611e16578081fd5b8135610c1b81612158565b600060208284031215611e32578081fd5b8151610c1b81612158565b60008060408385031215611e4f578081fd5b8235611e5a81612158565b91506020830135611e6a81612158565b809150509250929050565b600080600060608486031215611e89578081fd5b8335611e9481612158565b92506020840135611ea481612158565b929592945050506040919091013590565b60008060408385031215611ec7578182fd5b8235611ed281612158565b9150611ee060208401611df0565b90509250929050565b60008060408385031215611efb578182fd5b8235611f0681612158565b946020939093013593505050565b600060208284031215611f25578081fd5b610c1b82611df0565b600060208284031215611f3f578081fd5b5035919050565b600080600060608486031215611f5a578283fd5b505081359360208301359350604090920135919050565b6000815180845260208085019450808401835b83811015611fa95781516001600160a01b031687529582019590820190600101611f84565b509495945050505050565b6000602080835283518082850152825b81811015611fe057858101830151858201604001528201611fc4565b81811115611ff15783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006120556040830184611f71565b949350505050565b85815284602082015260a06040820152600061207c60a0830186611f71565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156120ac576120ac612142565b500190565b6000826120cc57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156120eb576120eb612142565b500290565b60008282101561210257612102612142565b500390565b600181811c9082168061211b57607f821691505b6020821081141561213c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461216d57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b1a8458f1be8556b071da95ef7859e08b88d00fa8634504a9fbb0771f260a01f64736f6c63430008040033

Deployed Bytecode

0x6080604052600436106103545760003560e01c806370a08231116101c6578063c2d4640e116100f7578063e207a92b11610095578063f2fde38b1161006f578063f2fde38b146109c9578063f4293890146109e9578063f872858a146109fe578063fabf706314610a1f57600080fd5b8063e207a92b14610973578063f0cd1dac14610993578063f1d5f517146109a957600080fd5b8063c816841b116100d1578063c816841b146108d6578063d76e26a3146108f6578063da00097d1461090c578063dd62ed3e1461092d57600080fd5b8063c2d4640e14610866578063c49b9a8014610886578063c78a789b146108a657600080fd5b80639e3fa32311610164578063a5d69d1f1161013e578063a5d69d1f146107f0578063a9059cbb14610810578063b6c3af3414610830578063bbaa7d441461084657600080fd5b80639e3fa323146107a4578063a08e671f146107ba578063a457c2d7146107d057600080fd5b806382eefb43116101a057806382eefb431461073b5780638da5cb5b146107515780638f03aad51461076f57806395d89b411461078f57600080fd5b806370a08231146106d95780637d1db4a51461070f578063807c2d9c1461072557600080fd5b80632f0a5fd4116102a0578063565cec381161023e578063661b6e3611610218578063661b6e3614610678578063667b511c1461068e5780636e4ee811146106ae578063705f9d74146106c357600080fd5b8063565cec381461062c57806357e6adcb14610642578063646d47001461066257600080fd5b80633b97084a1161027a5780633b97084a1461058b5780634a74bb02146105ab578063526012e8146105cc57806355324fa9146105fc57600080fd5b80632f0a5fd414610533578063313ce56714610549578063395093511461056b57600080fd5b806323b872dd1161030d57806327c8f835116102e757806327c8f835146104b45780632b112e49146104e85780632cdae5cb146104fd5780632df671091461051d57600080fd5b806323b872dd1461045457806325519cf2146104745780632563ae831461049457600080fd5b806306fdde0314610360578063095ea7b31461038b5780630fe1203c146103bb5780631694505e146103dd57806318160ddd146104155780631d865c301461043457600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610a4f565b6040516103829190611fb4565b60405180910390f35b34801561039757600080fd5b506103ab6103a6366004611ee9565b610ae1565b6040519015158152602001610382565b3480156103c757600080fd5b506103db6103d6366004611e05565b610af8565b005b3480156103e957600080fd5b50601c546103fd906001600160a01b031681565b6040516001600160a01b039091168152602001610382565b34801561042157600080fd5b506018545b604051908152602001610382565b34801561044057600080fd5b506103db61044f366004611f46565b610b53565b34801561046057600080fd5b506103ab61046f366004611e75565b610bb7565b34801561048057600080fd5b506103db61048f366004611f46565b610c22565b3480156104a057600080fd5b506103db6104af366004611f14565b610c7b565b3480156104c057600080fd5b506103fd7f000000000000000000000000000000000000000000000000000000000000dead81565b3480156104f457600080fd5b50610426610cc3565b34801561050957600080fd5b506103db610518366004611eb5565b610d0d565b34801561052957600080fd5b50610426600d5481565b34801561053f57600080fd5b50610426600f5481565b34801561055557600080fd5b5060045460405160ff9091168152602001610382565b34801561057757600080fd5b506103ab610586366004611ee9565b610d62565b34801561059757600080fd5b506103db6105a6366004611f2e565b610d98565b3480156105b757600080fd5b50601d546103ab90600160a81b900460ff1681565b3480156105d857600080fd5b506103ab6105e7366004611e05565b60096020526000908152604090205460ff1681565b34801561060857600080fd5b506103ab610617366004611e05565b600b6020526000908152604090205460ff1681565b34801561063857600080fd5b5061042660135481565b34801561064e57600080fd5b506103db61065d366004611eb5565b610dc7565b34801561066e57600080fd5b5061042660115481565b34801561068457600080fd5b5061042660105481565b34801561069a57600080fd5b506103db6106a9366004611eb5565b610e1c565b3480156106ba57600080fd5b506103db610e71565b3480156106cf57600080fd5b50610426600e5481565b3480156106e557600080fd5b506104266106f4366004611e05565b6001600160a01b031660009081526006602052604090205490565b34801561071b57600080fd5b5061042660195481565b34801561073157600080fd5b50610426601a5481565b34801561074757600080fd5b5061042660165481565b34801561075d57600080fd5b506000546001600160a01b03166103fd565b34801561077b57600080fd5b506103db61078a366004611f2e565b610ee5565b34801561079b57600080fd5b50610375610f83565b3480156107b057600080fd5b5061042660125481565b3480156107c657600080fd5b5061042660175481565b3480156107dc57600080fd5b506103ab6107eb366004611ee9565b610f92565b3480156107fc57600080fd5b506103db61080b366004611f14565b610fe1565b34801561081c57600080fd5b506103ab61082b366004611ee9565b611029565b34801561083c57600080fd5b50610426600c5481565b34801561085257600080fd5b506103db610861366004611e05565b611036565b34801561087257600080fd5b506103db610881366004611f46565b611082565b34801561089257600080fd5b506103db6108a1366004611f14565b6110d1565b3480156108b257600080fd5b506103ab6108c1366004611e05565b600a6020526000908152604090205460ff1681565b3480156108e257600080fd5b50601d546103fd906001600160a01b031681565b34801561090257600080fd5b5061042660145481565b34801561091857600080fd5b50601d546103ab90600160b01b900460ff1681565b34801561093957600080fd5b50610426610948366004611e3d565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561097f57600080fd5b506103db61098e366004611e05565b611153565b34801561099f57600080fd5b5061042660155481565b3480156109b557600080fd5b506103db6109c4366004611f2e565b6111a1565b3480156109d557600080fd5b506103db6109e4366004611e05565b6111d0565b3480156109f557600080fd5b506103db6112ba565b348015610a0a57600080fd5b50601d546103ab90600160b81b900460ff1681565b348015610a2b57600080fd5b506103ab610a3a366004611e05565b60086020526000908152604090205460ff1681565b606060028054610a5e90612107565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8a90612107565b8015610ad75780601f10610aac57610100808354040283529160200191610ad7565b820191906000526020600020905b815481529060010190602001808311610aba57829003601f168201915b5050505050905090565b6000610aee3384846112d7565b5060015b92915050565b6000546001600160a01b03163314610b2b5760405162461bcd60e51b8152600401610b2290612007565b60405180910390fd5b600480546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314610b7d5760405162461bcd60e51b8152600401610b2290612007565b600f83905560108290556011819055610ba081610b9a85856113fb565b906113fb565b601681905560141015610bb257600080fd5b505050565b6000610bc484848461145a565b50610c178433610c1285604051806060016040528060288152602001612171602891396001600160a01b038a166000908152600760209081526040808320338452909152902054919061184c565b6112d7565b5060015b9392505050565b6000546001600160a01b03163314610c4c5760405162461bcd60e51b8152600401610b2290612007565b600c839055600d829055600e819055610c6981610b9a85856113fb565b6015819055600a1015610bb257600080fd5b6000546001600160a01b03163314610ca55760405162461bcd60e51b8152600401610b2290612007565b601d8054911515600160b81b0260ff60b81b19909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b0316600090815260066020526040812054601854610d0891611886565b905090565b6000546001600160a01b03163314610d375760405162461bcd60e51b8152600401610b2290612007565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610aee918590610c1290866113fb565b6000546001600160a01b03163314610dc25760405162461bcd60e51b8152600401610b2290612007565b601b55565b6000546001600160a01b03163314610df15760405162461bcd60e51b8152600401610b2290612007565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e465760405162461bcd60e51b8152600401610b2290612007565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e9b5760405162461bcd60e51b8152600401610b2290612007565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610f0f5760405162461bcd60e51b8152600401610b2290612007565b6064601854610f1e91906120b1565b811015610f7e5760405162461bcd60e51b815260206004820152602860248201527f4d61782077616c6c65742073686f756c64206265206d6f7265206f7220657175604482015267616c20746f20312560c01b6064820152608401610b22565b601955565b606060038054610a5e90612107565b6000610aee3384610c1285604051806060016040528060258152602001612199602591393360009081526007602090815260408083206001600160a01b038d168452909152902054919061184c565b6000546001600160a01b0316331461100b5760405162461bcd60e51b8152600401610b2290612007565b601d8054911515600160b01b0260ff60b01b19909216919091179055565b6000610c1733848461145a565b6000546001600160a01b031633146110605760405162461bcd60e51b8152600401610b2290612007565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110ac5760405162461bcd60e51b8152600401610b2290612007565b6012839055601382905560148190556110c981610b9a85856113fb565b601755505050565b6000546001600160a01b031633146110fb5760405162461bcd60e51b8152600401610b2290612007565b601d8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061114890831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461117d5760405162461bcd60e51b8152600401610b2290612007565b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6000546001600160a01b031633146111cb5760405162461bcd60e51b8152600401610b2290612007565b601a55565b6000546001600160a01b031633146111fa5760405162461bcd60e51b8152600401610b2290612007565b6001600160a01b03811661125f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b22565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6004546112d59061010090046001600160a01b0316476118c8565b565b6001600160a01b0383166113395760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b22565b6001600160a01b03821661139a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b22565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000806114088385612099565b905083811015610c1b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b22565b60006001600160a01b0384166114c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b22565b6001600160a01b0383166115225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b22565b601d54600160a01b900460ff16156115465761153f8484846118fe565b9050610c1b565b6001600160a01b0384166000908152600a602052604090205460ff1615801561158857506001600160a01b0383166000908152600a602052604090205460ff16155b156115f0576019548211156115f05760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b22565b30600090815260066020526040902054601b5480821015906116139060026120d1565b821061162a57601b546116279060026120d1565b91505b8080156116415750601d54600160a01b900460ff16155b801561166657506001600160a01b0386166000908152600b602052604090205460ff16155b801561167b5750601d54600160a81b900460ff165b156116a157601d54600160b01b900460ff161561169857601b5491505b6116a1826119e4565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600690915291909120546116f391869061184c565b6001600160a01b038716600090815260066020908152604080832093909355600890529081205460ff168061174057506001600160a01b03861660009081526008602052604090205460ff165b6117545761174f878787611a3c565b611756565b845b601d54909150600160b81b900460ff16801561178b57506001600160a01b03861660009081526009602052604090205460ff16155b156117c157601a546117b682610b9a896001600160a01b031660009081526006602052604090205490565b11156117c157600080fd5b6001600160a01b0386166000908152600660205260409020546117e490826113fb565b6001600160a01b0380881660008181526006602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118389085815260200190565b60405180910390a360019350505050610c1b565b600081848411156118705760405162461bcd60e51b8152600401610b229190611fb4565b50600061187d84866120f0565b95945050505050565b6000610c1b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061184c565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610bb2573d6000803e3d6000fd5b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260069091529182205461194f91849061184c565b6001600160a01b03808616600090815260066020526040808220939093559085168152205461197e90836113fb565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119d29086815260200190565b60405180910390a35060019392505050565b601d805460ff60a01b1916600160a01b179055611a0081611b48565b4766b1a2bc2ec50000811115611a2b57600454611a2b9061010090046001600160a01b0316826118c8565b5050601d805460ff60a01b19169055565b6001600160a01b0383166000908152600b6020526040812054819060ff1615611a8657611a7f6064611a7960155486611d0690919063ffffffff16565b90611d85565b9050611ac4565b6001600160a01b0384166000908152600b602052604090205460ff1615611ac457611ac16064611a7960165486611d0690919063ffffffff16565b90505b8015611b3e5730600090815260066020526040902054611ae490826113fb565b30600081815260066020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b359085815260200190565b60405180910390a35b61187d8382611886565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b8b57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601c54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611bdf57600080fd5b505afa158015611bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c179190611e21565b81600181518110611c3857634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601c54611c5e91309116846112d7565b601c5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611c9790859060009086903090429060040161205d565b600060405180830381600087803b158015611cb157600080fd5b505af1158015611cc5573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611cfa92919061203c565b60405180910390a15050565b600082611d1557506000610af2565b6000611d2183856120d1565b905082611d2e85836120b1565b14610c1b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b22565b6000610c1b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183611de35760405162461bcd60e51b8152600401610b229190611fb4565b50600061187d84866120b1565b80358015158114611e0057600080fd5b919050565b600060208284031215611e16578081fd5b8135610c1b81612158565b600060208284031215611e32578081fd5b8151610c1b81612158565b60008060408385031215611e4f578081fd5b8235611e5a81612158565b91506020830135611e6a81612158565b809150509250929050565b600080600060608486031215611e89578081fd5b8335611e9481612158565b92506020840135611ea481612158565b929592945050506040919091013590565b60008060408385031215611ec7578182fd5b8235611ed281612158565b9150611ee060208401611df0565b90509250929050565b60008060408385031215611efb578182fd5b8235611f0681612158565b946020939093013593505050565b600060208284031215611f25578081fd5b610c1b82611df0565b600060208284031215611f3f578081fd5b5035919050565b600080600060608486031215611f5a578283fd5b505081359360208301359350604090920135919050565b6000815180845260208085019450808401835b83811015611fa95781516001600160a01b031687529582019590820190600101611f84565b509495945050505050565b6000602080835283518082850152825b81811015611fe057858101830151858201604001528201611fc4565b81811115611ff15783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006120556040830184611f71565b949350505050565b85815284602082015260a06040820152600061207c60a0830186611f71565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156120ac576120ac612142565b500190565b6000826120cc57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156120eb576120eb612142565b500290565b60008282101561210257612102612142565b500390565b600181811c9082168061211b57607f821691505b6020821081141561213c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461216d57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b1a8458f1be8556b071da95ef7859e08b88d00fa8634504a9fbb0771f260a01f64736f6c63430008040033

Deployed Bytecode Sourcemap

14268:12827:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17667:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18833:161;;;;;;;;;;-1:-1:-1;18833:161:0;;;;;:::i;:::-;;:::i;:::-;;;3803:14:1;;3796:22;3778:41;;3766:2;3751:18;18833:161:0;3733:92:1;21738:115:0;;;;;;;;;;-1:-1:-1;21738:115:0;;;;;:::i;:::-;;:::i;:::-;;15940:41;;;;;;;;;;-1:-1:-1;15940:41:0;;;;-1:-1:-1;;;;;15940:41:0;;;;;;-1:-1:-1;;;;;3594:32:1;;;3576:51;;3564:2;3549:18;15940:41:0;3531:102:1;17944:100:0;;;;;;;;;;-1:-1:-1;18024:12:0;;17944:100;;;8781:25:1;;;8769:2;8754:18;17944:100:0;8736:76:1;20175:418:0;;;;;;;;;;-1:-1:-1;20175:418:0;;;;;:::i;:::-;;:::i;22952:313::-;;;;;;;;;;-1:-1:-1;22952:313:0;;;;;:::i;:::-;;:::i;19758:409::-;;;;;;;;;;-1:-1:-1;19758:409:0;;;;;:::i;:::-;;:::i;21226:113::-;;;;;;;;;;-1:-1:-1;21226:113:0;;;;;:::i;:::-;;:::i;14708:81::-;;;;;;;;;;;;;;;22300:128;;;;;;;;;;;;;:::i;19607:143::-;;;;;;;;;;-1:-1:-1;19607:143:0;;;;;:::i;:::-;;:::i;15210:37::-;;;;;;;;;;;;;;;;15299;;;;;;;;;;;;;;;;17853:83;;;;;;;;;;-1:-1:-1;17919:9:0;;17853:83;;17919:9;;;;9883:36:1;;9871:2;9856:18;17853:83:0;9838:87:1;18330:218:0;;;;;;;;;;-1:-1:-1;18330:218:0;;;;;:::i;:::-;;:::i;21606:124::-;;;;;;;;;;-1:-1:-1;21606:124:0;;;;;:::i;:::-;;:::i;16055:40::-;;;;;;;;;;-1:-1:-1;16055:40:0;;;;-1:-1:-1;;;16055:40:0;;;;;;14990:55;;;;;;;;;;-1:-1:-1;14990:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15110:48;;;;;;;;;;-1:-1:-1;15110:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15478:35;;;;;;;;;;;;;;;;21347:141;;;;;;;;;;-1:-1:-1;21347:141:0;;;;;:::i;:::-;;:::i;15388:39::-;;;;;;;;;;;;;;;;15343:38;;;;;;;;;;;;;;;;19462:133;;;;;;;;;;-1:-1:-1;19462:133:0;;;;;:::i;:::-;;:::i;6029:148::-;;;;;;;;;;;;;:::i;15254:38::-;;;;;;;;;;;;;;;;18052:119;;;;;;;;;;-1:-1:-1;18052:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;18145:18:0;18118:7;18145:18;;;:9;:18;;;;;;;18052:119;15767:42;;;;;;;;;;;;;;;;15816:46;;;;;;;;;;;;;;;;15610:38;;;;;;;;;;;;;;;;5804:79;;;;;;;;;;-1:-1:-1;5842:7:0;5869:6;-1:-1:-1;;;;;5869:6:0;5804:79;;21009:209;;;;;;;;;;-1:-1:-1;21009:209:0;;;;;:::i;:::-;;:::i;17758:87::-;;;;;;;;;;;;;:::i;15436:35::-;;;;;;;;;;;;;;;;15655:44;;;;;;;;;;;;;;;;18556:269;;;;;;;;;;-1:-1:-1;18556:269:0;;;;;:::i;:::-;;:::i;22163:125::-;;;;;;;;;;-1:-1:-1;22163:125:0;;;;;:::i;:::-;;:::i;22777:167::-;;;;;;;;;;-1:-1:-1;22777:167:0;;;;;:::i;:::-;;:::i;15167:36::-;;;;;;;;;;;;;;;;21861:115;;;;;;;;;;-1:-1:-1;21861:115:0;;;;;:::i;:::-;;:::i;20605:392::-;;;;;;;;;;-1:-1:-1;20605:392:0;;;;;:::i;:::-;;:::i;21984:171::-;;;;;;;;;;-1:-1:-1;21984:171:0;;;;;:::i;:::-;;:::i;15052:51::-;;;;;;;;;;-1:-1:-1;15052:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15988:26;;;;;;;;;;-1:-1:-1;15988:26:0;;;;-1:-1:-1;;;;;15988:26:0;;;15520:37;;;;;;;;;;;;;;;;16102:45;;;;;;;;;;-1:-1:-1;16102:45:0;;;;-1:-1:-1;;;16102:45:0;;;;;;18179:143;;;;;;;;;;-1:-1:-1;18179:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;18287:18:0;;;18260:7;18287:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18179:143;19347:107;;;;;;;;;;-1:-1:-1;19347:107:0;;;;;:::i;:::-;;:::i;15566:37::-;;;;;;;;;;;;;;;;21496:102;;;;;;;;;;-1:-1:-1;21496:102:0;;;;;:::i;:::-;;:::i;6185:244::-;;;;;;;;;;-1:-1:-1;6185:244:0;;;;;:::i;:::-;;:::i;22570:105::-;;;;;;;;;;;;;:::i;16154:35::-;;;;;;;;;;-1:-1:-1;16154:35:0;;;;-1:-1:-1;;;16154:35:0;;;;;;14929:54;;;;;;;;;;-1:-1:-1;14929:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17667:83;17704:13;17737:5;17730:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17667:83;:::o;18833:161::-;18908:4;18925:39;234:10;18948:7;18957:6;18925:8;:39::i;:::-;-1:-1:-1;18982:4:0;18833:161;;;;;:::o;21738:115::-;5938:6;;-1:-1:-1;;;;;5938:6:0;234:10;5938:22;5930:67;;;;-1:-1:-1;;;5930:67:0;;;;;;;:::i;:::-;;;;;;;;;21813:10:::1;:32:::0;;-1:-1:-1;;;;;21813:32:0;;::::1;;;-1:-1:-1::0;;;;;;21813:32:0;;::::1;::::0;;;::::1;::::0;;21738:115::o;20175:418::-;5938:6;;-1:-1:-1;;;;;5938:6:0;234:10;5938:22;5930:67;;;;-1:-1:-1;;;5930:67:0;;;;;;;:::i;:::-;20304:18:::1;:36:::0;;;20351:18:::1;:36:::0;;;20398:20:::1;:40:::0;;;20472:68:::1;20421:17:::0;20472:42:::1;20325:15:::0;20372;20472:22:::1;:42::i;:::-;:46:::0;::::1;:68::i;:::-;20451:18;:89:::0;;;20582:2:::1;-1:-1:-1::0;20560:24:0::1;20551:34;;;::::0;::::1;;20175:418:::0;;;:::o;22952:313::-;23050:4;23067:36;23077:6;23085:9;23096:6;23067:9;:36::i;:::-;-1:-1:-1;23114:121:0;23123:6;234:10;23145:89;23183:6;23145:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23145:19:0;;;;;;:11;:19;;;;;;;;234:10;23145:33;;;;;;;;;;:37;:89::i;:::-;23114:8;:121::i;:::-;-1:-1:-1;23253:4:0;22952:313;;;;;;:::o;19758:409::-;5938:6;;-1:-1:-1;;;;;5938:6:0;234:10;5938:22;5930:67;;;;-1:-1:-1;;;5930:67:0;;;;;;;:::i;:::-;19886:17:::1;:35:::0;;;19932:17:::1;:35:::0;;;19978:19:::1;:39:::0;;;20050:65:::1;20000:17:::0;20050:40:::1;19906:15:::0;19952;20050:21:::1;:40::i;:65::-;20030:17;:85:::0;;;20156:2:::1;-1:-1:-1::0;20135:23:0::1;20126:33;;;::::0;::::1;21226:113:::0;5938:6;;-1:-1:-1;;;;;5938:6:0;234:10;5938:22;5930:67;;;;-1:-1:-1;;;5930:67:0;;;;;;;:::i;:::-;21304:16:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;21304:27:0::1;-1:-1:-1::0;;;;21304:27:0;;::::1;::::0;;;::::1;::::0;;21226:113::o;22300:128::-;22407:11;-1:-1:-1;;;;;18145:18:0;22353:7;18145:18;;;:9;:18;;;;;;22380:12;;:40;;:16;:40::i;:::-;22373:47;;22300:128;:::o;19607:143::-;5938:6;;-1:-1:-1;;;;;5938:6:0;234:10;5938:22;5930:67;;;;-1:-1:-1;;;5930:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19701:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:41;;-1:-1:-1;;19701:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19607:143::o;18330:218::-;234:10;18418:4;18467:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18467:34:0;;;;;;;;;;18418:4;;18435:83;;18458:7;;18467:50;;18506:10;18467:38;:50::i;21606:124::-;5938:6;;-1:-1:-1;;;;;5938:6:0;234:10;5938:22;5930:67;;;;-1:-1:-1;;;5930:67:0;;;;;;;:::i;:::-;21688:23:::1;:34:::0;21606:124::o;21347:141::-;5938:6;;-1:-1:-1;;;;;5938:6:0;234:10;5938:22;5930:67;;;;-1:-1:-1;;;5930:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21441:30:0;;;::::1;;::::0;;;:22:::1;:30;::::0;;;;:39;;-1:-1:-1;;21441:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21347:141::o;19462:133::-;5938:6;;-1:-1:-1;;;;;5938:6:0;234:10;5938:22;5930:67;;;;-1:-1:-1;;;5930:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19552:26:0;;;::::1;;::::0;;;:18:::1;:26;::::0;;;;:35;;-1:-1:-1;;19552:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19462:133::o;6029:148::-;5938:6;;-1:-1:-1;;;;;5938:6:0;234:10;5938:22;5930:67;;;;-1:-1:-1;;;5930:67:0;;;;;;;:::i;:::-;6136:1:::1;6120:6:::0;;6099:40:::1;::::0;-1:-1:-1;;;;;6120:6:0;;::::1;::::0;6099:40:::1;::::0;6136:1;;6099:40:::1;6167:1;6150:19:::0;;-1:-1:-1;;;;;;6150:19:0::1;::::0;;6029:148::o;21009:209::-;5938:6;;-1:-1:-1;;;;;5938:6:0;234:10;5938:22;5930:67;;;;-1:-1:-1;;;5930:67:0;;;;;;;:::i;:::-;21125:3:::1;21112:12;;:16;;;;:::i;:::-;21097:11;:31;;21089:84;;;::::0;-1:-1:-1;;;21089:84:0;;5279:2:1;21089:84:0::1;::::0;::::1;5261:21:1::0;5318:2;5298:18;;;5291:30;5357:34;5337:18;;;5330:62;-1:-1:-1;;;5408:18:1;;;5401:38;5456:19;;21089:84:0::1;5251:230:1::0;21089:84:0::1;21184:12;:26:::0;21009:209::o;17758:87::-;17797:13;17830:7;17823:14;;;;;:::i;18556:269::-;18649:4;18666:129;234:10;18689:7;18698:96;18737:15;18698:96;;;;;;;;;;;;;;;;;234:10;18698:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18698:34:0;;;;;;;;;;;;:38;:96::i;22163:125::-;5938:6;;-1:-1:-1;;;;;5938:6:0;234:10;5938:22;5930:67;;;;-1:-1:-1;;;5930:67:0;;;;;;;:::i;:::-;22244:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;22244:36:0::1;-1:-1:-1::0;;;;22244:36:0;;::::1;::::0;;;::::1;::::0;;22163:125::o;22777:167::-;22855:4;22872:42;234:10;22896:9;22907:6;22872:9;:42::i;21861:115::-;5938:6;;-1:-1:-1;;;;;5938:6:0;234:10;5938:22;5930:67;;;;-1:-1:-1;;;5930:67:0;;;;;;;:::i;:::-;21936:10:::1;:32:::0;;-1:-1:-1;;;;;;21936:32:0::1;-1:-1:-1::0;;;;;21936:32:0;;;::::1;::::0;;;::::1;::::0;;21861:115::o;20605:392::-;5938:6;;-1:-1:-1;;;;;5938:6:0;234:10;5938:22;5930:67;;;;-1:-1:-1;;;5930:67:0;;;;;;;:::i;:::-;20753:16:::1;:36:::0;;;20800:16:::1;:36:::0;;;20847:18:::1;:40:::0;;;20927:62:::1;20868:19:::0;20927:38:::1;20772:17:::0;20819;20927:20:::1;:38::i;:62::-;20900:24;:89:::0;-1:-1:-1;;;20605:392:0:o;21984:171::-;5938:6;;-1:-1:-1;;;;;5938:6:0;234:10;5938:22;5930:67;;;;-1:-1:-1;;;5930:67:0;;;;;;;:::i;:::-;22061:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;22061:32:0::1;-1:-1:-1::0;;;;22061:32:0;;::::1;;::::0;;22109:38:::1;::::0;::::1;::::0;::::1;::::0;22085:8;3803:14:1;3796:22;3778:41;;3766:2;3751:18;;3733:92;22109:38:0::1;;;;;;;;21984:171:::0;:::o;19347:107::-;5938:6;;-1:-1:-1;;;;;5938:6:0;234:10;5938:22;5930:67;;;;-1:-1:-1;;;5930:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19415:24:0::1;;::::0;;;:15:::1;:24;::::0;;;;:31;;-1:-1:-1;;19415:31:0::1;19442:4;19415:31;::::0;;19347:107::o;21496:102::-;5938:6;;-1:-1:-1;;;;;5938:6:0;234:10;5938:22;5930:67;;;;-1:-1:-1;;;5930:67:0;;;;;;;:::i;:::-;21568:10:::1;:22:::0;21496:102::o;6185:244::-;5938:6;;-1:-1:-1;;;;;5938:6:0;234:10;5938:22;5930:67;;;;-1:-1:-1;;;5930:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6274:22:0;::::1;6266:73;;;::::0;-1:-1:-1;;;6266:73:0;;5688:2:1;6266:73:0::1;::::0;::::1;5670:21:1::0;5727:2;5707:18;;;5700:30;5766:34;5746:18;;;5739:62;-1:-1:-1;;;5817:18:1;;;5810:36;5863:19;;6266:73:0::1;5660:228:1::0;6266:73:0::1;6376:6;::::0;;6355:38:::1;::::0;-1:-1:-1;;;;;6355:38:0;;::::1;::::0;6376:6;::::1;::::0;6355:38:::1;::::0;::::1;6404:6;:17:::0;;-1:-1:-1;;;;;;6404:17:0::1;-1:-1:-1::0;;;;;6404:17:0;;;::::1;::::0;;;::::1;::::0;;6185:244::o;22570:105::-;22633:10;;22612:55;;22633:10;;;-1:-1:-1;;;;;22633:10:0;22645:21;22612:20;:55::i;:::-;22570:105::o;19002:337::-;-1:-1:-1;;;;;19095:19:0;;19087:68;;;;-1:-1:-1;;;19087:68:0;;8432:2:1;19087:68:0;;;8414:21:1;8471:2;8451:18;;;8444:30;8510:34;8490:18;;;8483:62;-1:-1:-1;;;8561:18:1;;;8554:34;8605:19;;19087:68:0;8404:226:1;19087:68:0;-1:-1:-1;;;;;19174:21:0;;19166:68;;;;-1:-1:-1;;;19166:68:0;;6095:2:1;19166:68:0;;;6077:21:1;6134:2;6114:18;;;6107:30;6173:34;6153:18;;;6146:62;-1:-1:-1;;;6224:18:1;;;6217:32;6266:19;;19166:68:0;6067:224:1;19166:68:0;-1:-1:-1;;;;;19247:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19299:32;;8781:25:1;;;19299:32:0;;8754:18:1;19299:32:0;;;;;;;19002:337;;;:::o;1206:181::-;1264:7;;1296:5;1300:1;1296;:5;:::i;:::-;1284:17;;1325:1;1320;:6;;1312:46;;;;-1:-1:-1;;;1312:46:0;;6498:2:1;1312:46:0;;;6480:21:1;6537:2;6517:18;;;6510:30;6576:29;6556:18;;;6549:57;6623:18;;1312:46:0;6470:177:1;23273:1862:0;23360:4;-1:-1:-1;;;;;23387:20:0;;23379:70;;;;-1:-1:-1;;;23379:70:0;;8026:2:1;23379:70:0;;;8008:21:1;8065:2;8045:18;;;8038:30;8104:34;8084:18;;;8077:62;-1:-1:-1;;;8155:18:1;;;8148:35;8200:19;;23379:70:0;7998:227:1;23379:70:0;-1:-1:-1;;;;;23468:23:0;;23460:71;;;;-1:-1:-1;;;23460:71:0;;4875:2:1;23460:71:0;;;4857:21:1;4914:2;4894:18;;;4887:30;4953:34;4933:18;;;4926:62;-1:-1:-1;;;5004:18:1;;;4997:33;5047:19;;23460:71:0;4847:225:1;23460:71:0;23547:16;;-1:-1:-1;;;23547:16:0;;;;23544:1584;;;23597:41;23612:6;23620:9;23631:6;23597:14;:41::i;:::-;23590:48;;;;23544:1584;-1:-1:-1;;;;;23694:26:0;;;;;;:18;:26;;;;;;;;23693:27;:61;;;;-1:-1:-1;;;;;;23725:29:0;;;;;;:18;:29;;;;;;;;23724:30;23693:61;23690:176;;;23793:12;;23783:6;:22;;23775:75;;;;-1:-1:-1;;;23775:75:0;;6854:2:1;23775:75:0;;;6836:21:1;6893:2;6873:18;;;6866:30;6932:34;6912:18;;;6905:62;-1:-1:-1;;;6983:18:1;;;6976:38;7031:19;;23775:75:0;6826:230:1;23775:75:0;23943:4;23894:28;18145:18;;;:9;:18;;;;;;24019:23;;23995:47;;;;;24085:25;;24109:1;24085:25;:::i;:::-;24061:20;:49;24057:120;;24152:23;;:25;;24176:1;24152:25;:::i;:::-;24129:48;;24057:120;24210:23;:44;;;;-1:-1:-1;24238:16:0;;-1:-1:-1;;;24238:16:0;;;;24237:17;24210:44;:72;;;;-1:-1:-1;;;;;;24259:23:0;;;;;;:15;:23;;;;;;;;24258:24;24210:72;:97;;;;-1:-1:-1;24286:21:0;;-1:-1:-1;;;24286:21:0;;;;24210:97;24206:308;;;24345:25;;-1:-1:-1;;;24345:25:0;;;;24342:97;;;24416:23;;24393:46;;24342:97;24458:36;24473:20;24458:14;:36::i;:::-;24550:53;;;;;;;;;;;-1:-1:-1;;;24550:53:0;;;;;;;;-1:-1:-1;;;;;24550:17:0;;-1:-1:-1;24550:17:0;;;:9;:17;;;;;;;;:53;;24572:6;;24550:21;:53::i;:::-;-1:-1:-1;;;;;24530:17:0;;;;;;:9;:17;;;;;;;;:73;;;;24643:21;:29;;;;;;;;;:65;;-1:-1:-1;;;;;;24676:32:0;;;;;;:21;:32;;;;;;;;24643:65;24642:156;;24764:34;24772:6;24780:9;24791:6;24764:7;:34::i;:::-;24642:156;;;24755:6;24642:156;24818:16;;24620:178;;-1:-1:-1;;;;24818:16:0;;;;:54;;;;-1:-1:-1;;;;;;24839:33:0;;;;;;:22;:33;;;;;;;;24838:34;24818:54;24815:136;;;24940:10;;24899:37;24924:11;24899:20;24909:9;-1:-1:-1;;;;;18145:18:0;18118:7;18145:18;;;:9;:18;;;;;;;18052:119;24899:37;:51;;24891:60;;;;;;-1:-1:-1;;;;;24991:20:0;;;;;;:9;:20;;;;;;:37;;25016:11;24991:24;:37::i;:::-;-1:-1:-1;;;;;24968:20:0;;;;;;;:9;:20;;;;;;;:60;;;;25050:40;;;;;;;;;;25078:11;8781:25:1;;8769:2;8754:18;;8736:76;25050:40:0;;;;;;;;25112:4;25105:11;;;;;;;1539:192;1625:7;1661:12;1653:6;;;;1645:29;;;;-1:-1:-1;;;1645:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1685:9:0;1697:5;1701:1;1697;:5;:::i;:::-;1685:17;1539:192;-1:-1:-1;;;;;1539:192:0:o;1395:136::-;1453:7;1480:43;1484:1;1487;1480:43;;;;;;;;;;;;;;;;;:3;:43::i;22436:126::-;22528:26;;-1:-1:-1;;;;;22528:18:0;;;:26;;;;;22547:6;;22528:26;;;;22547:6;22528:18;:26;;;;;;;;;;;;;;;;;;;25143:330;25273:53;;;;;;;;;;;-1:-1:-1;;;25273:53:0;;;;;;;;-1:-1:-1;;;;;25273:17:0;;25236:4;25273:17;;;:9;:17;;;;;;;:53;;25295:6;;25273:21;:53::i;:::-;-1:-1:-1;;;;;25253:17:0;;;;;;;:9;:17;;;;;;:73;;;;25360:20;;;;;;;:32;;25385:6;25360:24;:32::i;:::-;-1:-1:-1;;;;;25337:20:0;;;;;;;:9;:20;;;;;;;:55;;;;25408:35;;;;;;;;;;25436:6;8781:25:1;;8769:2;8754:18;;8736:76;25408:35:0;;;;;;;;-1:-1:-1;25461:4:0;25143:330;;;;;:::o;25481:291::-;16612:16;:23;;-1:-1:-1;;;;16612:23:0;-1:-1:-1;;;16612:23:0;;;25555:25:::1;25572:7:::0;25555:16:::1;:25::i;:::-;25620:21;25678:17;25657:38:::0;::::1;25654:108;;;25731:10;::::0;25710:52:::1;::::0;25731:10:::1;::::0;::::1;-1:-1:-1::0;;;;;25731:10:0::1;25743:18:::0;25710:20:::1;:52::i;:::-;-1:-1:-1::0;;16658:16:0;:24;;-1:-1:-1;;;;16658:24:0;;;25481:291::o;26458:628::-;-1:-1:-1;;;;;26619:23:0;;26544:7;26619:23;;;:15;:23;;;;;;26544:7;;26619:23;;26616:229;;;26671:38;26705:3;26671:29;26682:17;;26671:6;:10;;:29;;;;:::i;:::-;:33;;:38::i;:::-;26659:50;;26616:229;;;-1:-1:-1;;;;;26739:26:0;;;;;;:15;:26;;;;;;;;26736:109;;;26794:39;26829:3;26794:30;26805:18;;26794:6;:10;;:30;;;;:::i;:39::-;26782:51;;26736:109;26868:13;;26865:173;;26943:4;26925:24;;;;:9;:24;;;;;;:39;;26954:9;26925:28;:39::i;:::-;26916:4;26898:24;;;;:9;:24;;;;;;;:66;;;;26984:42;;-1:-1:-1;;;;;26984:42:0;;;;;;;27016:9;8781:25:1;;8769:2;8754:18;;8736:76;26984:42:0;;;;;;;;26865:173;27057:21;:6;27068:9;27057:10;:21::i;25784:666::-;25934:16;;;25948:1;25934:16;;;;;;;;25910:21;;25934:16;;;;;;;;;;-1:-1:-1;25934:16:0;25910:40;;25979:4;25961;25966:1;25961:7;;;;;;-1:-1:-1;;;25961:7:0;;;;;;;;;-1:-1:-1;;;;;25961:23:0;;;:7;;;;;;;;;;:23;;;;26005:15;;:22;;;-1:-1:-1;;;26005:22:0;;;;:15;;;;;:20;;:22;;;;;25961:7;;26005:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25995:4;26000:1;25995:7;;;;;;-1:-1:-1;;;25995:7:0;;;;;;;;;-1:-1:-1;;;;;25995:32:0;;;:7;;;;;;;;;:32;26072:15;;26040:62;;26057:4;;26072:15;26090:11;26040:8;:62::i;:::-;26141:15;;:240;;-1:-1:-1;;;26141:240:0;;-1:-1:-1;;;;;26141:15:0;;;;:66;;:240;;26222:11;;26141:15;;26292:4;;26319;;26355:15;;26141:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26407:35;26424:11;26437:4;26407:35;;;;;;;:::i;:::-;;;;;;;;25784:666;;:::o;1739:250::-;1797:7;1821:6;1817:47;;-1:-1:-1;1851:1:0;1844:8;;1817:47;1876:9;1888:5;1892:1;1888;:5;:::i;:::-;1876:17;-1:-1:-1;1921:1:0;1912:5;1916:1;1876:17;1912:5;:::i;:::-;:10;1904:56;;;;-1:-1:-1;;;1904:56:0;;7263:2:1;1904:56:0;;;7245:21:1;7302:2;7282:18;;;7275:30;7341:34;7321:18;;;7314:62;-1:-1:-1;;;7392:18:1;;;7385:31;7433:19;;1904:56:0;7235:223:1;1997:132:0;2055:7;2082:39;2086:1;2089;2082:39;;;;;;;;;;;;;;;;;2223:7;2258:12;2251:5;2243:28;;;;-1:-1:-1;;;2243:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2282:9:0;2294:5;2298:1;2294;:5;:::i;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:257::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;312:6;304;297:22;259:2;356:9;343:23;375:31;400:5;375:31;:::i;441:261::-;511:6;564:2;552:9;543:7;539:23;535:32;532:2;;;585:6;577;570:22;532:2;622:9;616:16;641:31;666:5;641:31;:::i;707:398::-;775:6;783;836:2;824:9;815:7;811:23;807:32;804:2;;;857:6;849;842:22;804:2;901:9;888:23;920:31;945:5;920:31;:::i;:::-;970:5;-1:-1:-1;1027:2:1;1012:18;;999:32;1040:33;999:32;1040:33;:::i;:::-;1092:7;1082:17;;;794:311;;;;;:::o;1110:466::-;1187:6;1195;1203;1256:2;1244:9;1235:7;1231:23;1227:32;1224:2;;;1277:6;1269;1262:22;1224:2;1321:9;1308:23;1340:31;1365:5;1340:31;:::i;:::-;1390:5;-1:-1:-1;1447:2:1;1432:18;;1419:32;1460:33;1419:32;1460:33;:::i;:::-;1214:362;;1512:7;;-1:-1:-1;;;1566:2:1;1551:18;;;;1538:32;;1214:362::o;1581:325::-;1646:6;1654;1707:2;1695:9;1686:7;1682:23;1678:32;1675:2;;;1728:6;1720;1713:22;1675:2;1772:9;1759:23;1791:31;1816:5;1791:31;:::i;:::-;1841:5;-1:-1:-1;1865:35:1;1896:2;1881:18;;1865:35;:::i;:::-;1855:45;;1665:241;;;;;:::o;1911:325::-;1979:6;1987;2040:2;2028:9;2019:7;2015:23;2011:32;2008:2;;;2061:6;2053;2046:22;2008:2;2105:9;2092:23;2124:31;2149:5;2124:31;:::i;:::-;2174:5;2226:2;2211:18;;;;2198:32;;-1:-1:-1;;;1998:238:1:o;2241:190::-;2297:6;2350:2;2338:9;2329:7;2325:23;2321:32;2318:2;;;2371:6;2363;2356:22;2318:2;2399:26;2415:9;2399:26;:::i;2436:190::-;2495:6;2548:2;2536:9;2527:7;2523:23;2519:32;2516:2;;;2569:6;2561;2554:22;2516:2;-1:-1:-1;2597:23:1;;2506:120;-1:-1:-1;2506:120:1:o;2631:326::-;2708:6;2716;2724;2777:2;2765:9;2756:7;2752:23;2748:32;2745:2;;;2798:6;2790;2783:22;2745:2;-1:-1:-1;;2826:23:1;;;2896:2;2881:18;;2868:32;;-1:-1:-1;2947:2:1;2932:18;;;2919:32;;2735:222;-1:-1:-1;2735:222:1:o;2962:463::-;3015:3;3053:5;3047:12;3080:6;3075:3;3068:19;3106:4;3135:2;3130:3;3126:12;3119:19;;3172:2;3165:5;3161:14;3193:3;3205:195;3219:6;3216:1;3213:13;3205:195;;;3284:13;;-1:-1:-1;;;;;3280:39:1;3268:52;;3340:12;;;;3375:15;;;;3316:1;3234:9;3205:195;;;-1:-1:-1;3416:3:1;;3023:402;-1:-1:-1;;;;;3023:402:1:o;4065:603::-;4177:4;4206:2;4235;4224:9;4217:21;4267:6;4261:13;4310:6;4305:2;4294:9;4290:18;4283:34;4335:4;4348:140;4362:6;4359:1;4356:13;4348:140;;;4457:14;;;4453:23;;4447:30;4423:17;;;4442:2;4419:26;4412:66;4377:10;;4348:140;;;4506:6;4503:1;4500:13;4497:2;;;4576:4;4571:2;4562:6;4551:9;4547:22;4543:31;4536:45;4497:2;-1:-1:-1;4652:2:1;4631:15;-1:-1:-1;;4627:29:1;4612:45;;;;4659:2;4608:54;;4186:482;-1:-1:-1;;;4186:482:1:o;7463:356::-;7665:2;7647:21;;;7684:18;;;7677:30;7743:34;7738:2;7723:18;;7716:62;7810:2;7795:18;;7637:182::o;8817:332::-;9024:6;9013:9;9006:25;9067:2;9062;9051:9;9047:18;9040:30;8987:4;9087:56;9139:2;9128:9;9124:18;9116:6;9087:56;:::i;:::-;9079:64;8996:153;-1:-1:-1;;;;8996:153:1:o;9154:582::-;9453:6;9442:9;9435:25;9496:6;9491:2;9480:9;9476:18;9469:34;9539:3;9534:2;9523:9;9519:18;9512:31;9416:4;9560:57;9612:3;9601:9;9597:19;9589:6;9560:57;:::i;:::-;-1:-1:-1;;;;;9653:32:1;;;;9648:2;9633:18;;9626:60;-1:-1:-1;9717:3:1;9702:19;9695:35;9552:65;9425:311;-1:-1:-1;;;9425:311:1:o;9930:128::-;9970:3;10001:1;9997:6;9994:1;9991:13;9988:2;;;10007:18;;:::i;:::-;-1:-1:-1;10043:9:1;;9978:80::o;10063:217::-;10103:1;10129;10119:2;;-1:-1:-1;;;10154:31:1;;10208:4;10205:1;10198:15;10236:4;10161:1;10226:15;10119:2;-1:-1:-1;10265:9:1;;10109:171::o;10285:168::-;10325:7;10391:1;10387;10383:6;10379:14;10376:1;10373:21;10368:1;10361:9;10354:17;10350:45;10347:2;;;10398:18;;:::i;:::-;-1:-1:-1;10438:9:1;;10337:116::o;10458:125::-;10498:4;10526:1;10523;10520:8;10517:2;;;10531:18;;:::i;:::-;-1:-1:-1;10568:9:1;;10507:76::o;10588:380::-;10667:1;10663:12;;;;10710;;;10731:2;;10785:4;10777:6;10773:17;10763:27;;10731:2;10838;10830:6;10827:14;10807:18;10804:38;10801:2;;;10884:10;10879:3;10875:20;10872:1;10865:31;10919:4;10916:1;10909:15;10947:4;10944:1;10937:15;10801:2;;10643:325;;;:::o;10973:127::-;11034:10;11029:3;11025:20;11022:1;11015:31;11065:4;11062:1;11055:15;11089:4;11086:1;11079:15;11105:131;-1:-1:-1;;;;;11180:31:1;;11170:42;;11160:2;;11226:1;11223;11216:12;11160:2;11150:86;:::o

Swarm Source

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