BNB Price: $618.58 (+3.55%)
 

Overview

Max Total Supply

2,100,000,000BTS

Holders

16,275

Market

Price

$0.00 @ 0.000000 BNB

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
0x: Allowance Holder
Balance
0.01 BTS

Value
$0.00
0x0000000000001ff3684f28c67538d4d072c22734
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
BTS

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at BscScan.com on 2024-11-17
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.14;

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) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        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;
    }
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        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
    );
}

interface IERC20Metadata is IERC20 {
 
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

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 Mint(address indexed sender, uint amount0, uint amount1);
    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 mint(address to) external returns (uint liquidity);

    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 Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

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

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

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

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        // require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(
            amount,
            "ERC20: transfer amount exceeds balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        _balances[account] = _balances[account].sub(
            amount,
            "ERC20: burn amount exceeds balance"
        );
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

contract TokenDistributor{
    constructor(address token) {
        IERC20(token).approve(msg.sender, ~uint256(0));
    }
}

contract BTS is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public uniswapV2Router;
    
    address public uniswapV2Pair;

    bool private swapping;

    uint256 public startSwapTime = 100000000000000000000;

    address public receiveAddress = address(0x6ca0D1fF425eb16721A4ca5340E2394a7D84E8dE);

    address public pumpWallet = address(0xB777b550868279ca1d998Eb5654fCB14ce0dE8E4);

    address public USDT = address(0x55d398326f99059fF775485246999027B3197955);

    address public _followSellDistributor;

    TokenDistributor public _tokenDistributor;
    
    // exlcude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public automatedMarketMakerPairs;

    uint256 public sellBurnFee = 50;

    bool public canBuy = false;

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    constructor() ERC20("BTS", "BTS") {
       
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x10ED43C718714eb63d5aA57B78B54704E256024E
        );

        require(USDT < address(this), "weht must be token0");
        // Create a uniswap pair for this new token
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), USDT);

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;

        _approve(address(this), address(uniswapV2Router), ~uint256(0));

        IERC20(USDT).approve(address(uniswapV2Router), ~uint256(0));

        _setAutomatedMarketMakerPair(_uniswapV2Pair, true);

         _tokenDistributor = new TokenDistributor(USDT);
        _followSellDistributor = address(0xdead);

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(receiveAddress, true);
        excludeFromFees(address(this), true);
        excludeFromFees(pumpWallet, true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(0), true);

        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(receiveAddress, 2100000000 * (10 ** 18));
    }

    receive() external payable {}

    function setFollowSellDisClaims() external {
        if (msg.sender == receiveAddress){
            IERC20(USDT).transferFrom(_followSellDistributor, msg.sender, IERC20(USDT).balanceOf(_followSellDistributor));
        }
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    function excludeMultipleAccountsFromFees(
        address[] calldata accounts,
        bool excluded
    ) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFees[accounts[i]] = excluded;
        }

        emit ExcludeMultipleAccountsFromFees(accounts, excluded);
    }

    function setAutomatedMarketMakerPair(
        address pair,
        bool value
    ) public onlyOwner {
        require(
            pair != uniswapV2Pair,
            "BABYUSDT: The PanUSDTSwap pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        require(
            automatedMarketMakerPairs[pair] != value,
            "BABYUSDT: Automated market maker pair is already set to that value"
        );
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function startTrade() external onlyOwner {
        startSwapTime = block.timestamp;
    }

    function setPumpWallet(address newAddr) public onlyOwner{
        pumpWallet = newAddr;
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(balanceOf(from) >= amount, "error");
        
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            super._transfer(from, to, amount);
            return;
        }

        bool isAddLiquidity;
        bool isDelLiquidity;
        (isAddLiquidity, isDelLiquidity) = _isLiquidity(from,to);

        if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {

            if (
                !swapping &&
                !isAddLiquidity &&
                !automatedMarketMakerPairs[from] &&
                automatedMarketMakerPairs[to]
            ) {
                swapping = true;
                followSell(amount);
                swapping = false;
            }
        
            if(!automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to]){          
                super._transfer(from, to, amount);
                return;
            }

            require(block.timestamp >= startSwapTime, "not start");

            uint256 fees;
            if (automatedMarketMakerPairs[from]) {
                require(canBuy, "not canBuy");
                super._transfer(from, to, amount);
                return;
            } else if (automatedMarketMakerPairs[to] && !isAddLiquidity) {
                uint256 _burn = amount.mul(sellBurnFee).div(1000);
                super._transfer(from, address(0xdead), _burn);
                fees = _burn;
            }
            
            amount = amount.sub(fees);
        }

        super._transfer(from, to, amount);

    }

    uint256 public followSellPercentage = 95;
    function setFollowSellPercentage(uint256 newValue) public onlyOwner{
        // require(newValue <= 100, "too high");
        followSellPercentage = newValue;
    }

    function getValue(uint256 tokenAmt) public view returns(uint256){
        if (balanceOf(uniswapV2Pair) == 0) {
            return 0;
        }
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = address(USDT);
        return uniswapV2Router.getAmountsOut(tokenAmt, path)[path.length - 1];
    }

    event sell_value_too_high(uint256 value, uint256 maxValue);
    event not_enough_token(uint256 bal, uint256 follSellAmt);
    event failed_distribute_fund();

    uint256 public maxFollowSellValue = 9999999999999999 * 1e18;
    function setMaxFollowSellValue(uint256 newValue) public onlyOwner{
        maxFollowSellValue = newValue;
    }

    function followSell(uint256 amount) private {
        uint256 followSellAmount = amount * followSellPercentage / 100;

        uint256 dis_token_bal = balanceOf(address(_followSellDistributor));
        if (dis_token_bal < followSellAmount){
            emit not_enough_token(dis_token_bal, followSellAmount);
            return;
        }

        uint256 tokenValue = getValue(followSellAmount);
        if (tokenValue > maxFollowSellValue){
            emit sell_value_too_high(tokenValue, maxFollowSellValue);
            return;
        }
        
        super._transfer(address(_followSellDistributor), address(this), followSellAmount);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = address(USDT);
        _approve(address(this), address(uniswapV2Router), followSellAmount);
        // make the swap
        uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            followSellAmount,
            0,
            path,
            address(_tokenDistributor),
            block.timestamp
        );

        IERC20 _c = IERC20(USDT);
        uint256 currencyBal = _c.balanceOf(
            address(_tokenDistributor)
        );

        if (currencyBal != 0) {
            _c.transferFrom(
                address(_tokenDistributor),
                address(pumpWallet),
                currencyBal
            );
        }
    }

    function _isLiquidity(address from,address to)internal view returns(bool isAdd,bool isDel){
        address token0 = IUniswapV2Pair(address(uniswapV2Pair)).token0();
        (uint r0,,) = IUniswapV2Pair(address(uniswapV2Pair)).getReserves();
        uint bal0 = IERC20(token0).balanceOf(address(uniswapV2Pair));
        if( automatedMarketMakerPairs[to] ){
            if( token0 != address(this) && bal0 > r0 ){
                isAdd = bal0 - r0 > 0;
            }
        }
        if( automatedMarketMakerPairs[from] ){
            if( token0 != address(this) && bal0 < r0 ){
                isDel = r0 - bal0 > 0; 
            }
        }
    }

    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function claimStuckToken(address _token, uint256 _amount) public {
        require(_isExcludedFromFees[msg.sender], "not dev");
        IERC20(_token).transfer(msg.sender, _amount);
    }

    function claimStuckETH() public {
        require(_isExcludedFromFees[msg.sender], "not dev");
        payable(msg.sender).transfer(address(this).balance);
    }
    
    function setSellFees(
        uint256 _sellBurnFee
    ) public onlyOwner {
        sellBurnFee = _sellBurnFee;
    }

    function setCanBuy(
        bool enable
    ) public onlyOwner {
        canBuy = enable;
    }
}

Contract Security Audit

Contract ABI

API
[{"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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","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":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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"},{"anonymous":false,"inputs":[],"name":"failed_distribute_fund","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"bal","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"follSellAmt","type":"uint256"}],"name":"not_enough_token","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxValue","type":"uint256"}],"name":"sell_value_too_high","type":"event"},{"inputs":[],"name":"USDT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_followSellDistributor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tokenDistributor","outputs":[{"internalType":"contract TokenDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"canBuy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"claimStuckToken","outputs":[],"stateMutability":"nonpayable","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":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"followSellPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmt","type":"uint256"}],"name":"getValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxFollowSellValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pumpWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"receiveAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setCanBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setFollowSellDisClaims","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setFollowSellPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxFollowSellValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddr","type":"address"}],"name":"setPumpWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellBurnFee","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startSwapTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrade","outputs":[],"stateMutability":"nonpayable","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405268056bc75e2d63100000600855600980546001600160a01b0319908116736ca0d1ff425eb16721a4ca5340e2394a7d84e8de17909155600a8054821673b777b550868279ca1d998eb5654fcb14ce0de8e4179055600b80549091167355d398326f99059ff775485246999027b319795517905560326010556011805460ff19169055605f6012556e01ed09bead87c029acd7b0589c0000601355348015620000ab57600080fd5b5060408051808201825260038082526242545360e81b60208084018290528451808601909552828552840152909190620000e6838262000996565b506004620000f5828262000996565b50505060006200010a6200049960201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b547310ed43c718714eb63d5aa57b78b54704e256024e90306001600160a01b0390911610620001d05760405162461bcd60e51b815260206004820152601360248201527f77656874206d75737420626520746f6b656e300000000000000000000000000060448201526064015b60405180910390fd5b6000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000211573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000237919062000a62565b600b546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af115801562000289573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002af919062000a62565b600680546001600160a01b038086166001600160a01b031992831681179093556007805491851691909216179055909150620002f09030906000196200049d565b600b5460065460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562000347573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036d919062000a8d565b506200037b816001620005c5565b600b546040516001600160a01b03909116906200039890620008e4565b6001600160a01b039091168152602001604051809103906000f080158015620003c5573d6000803e3d6000fd5b50600d80546001600160a01b03929092166001600160a01b0319928316179055600c805490911661dead17905562000411620004096005546001600160a01b031690565b6001620006bc565b6009546200042a906001600160a01b03166001620006bc565b62000437306001620006bc565b600a5462000450906001600160a01b03166001620006bc565b6200045f61dead6001620006bc565b6200046d60006001620006bc565b60095462000491906001600160a01b03166b06c9144c1c690d4cb400000062000777565b505062000ad3565b3390565b6001600160a01b038316620005015760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401620001c7565b6001600160a01b038216620005645760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620001c7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382166000908152600f602052604090205481151560ff909116151503620006685760405162461bcd60e51b815260206004820152604260248201527f42414259555344543a204175746f6d61746564206d61726b6574206d616b657260448201527f207061697220697320616c72656164792073657420746f20746861742076616c606482015261756560f01b608482015260a401620001c7565b6001600160a01b0382166000818152600f6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620007185760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620001c7565b6001600160a01b0382166000818152600e6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620007cf5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620001c7565b620007eb816002546200087860201b620011c11790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200081e918390620011c162000878821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b60008062000887838562000ab1565b905083811015620008db5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620001c7565b90505b92915050565b610147806200307083390190565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200091d57607f821691505b6020821081036200093e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200087357600081815260208120601f850160051c810160208610156200096d5750805b601f850160051c820191505b818110156200098e5782815560010162000979565b505050505050565b81516001600160401b03811115620009b257620009b2620008f2565b620009ca81620009c3845462000908565b8462000944565b602080601f83116001811462000a025760008415620009e95750858301515b600019600386901b1c1916600185901b1785556200098e565b600085815260208120601f198616915b8281101562000a335788860151825594840194600190910190840162000a12565b508582101562000a525787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000a7557600080fd5b81516001600160a01b0381168114620008db57600080fd5b60006020828403121562000aa057600080fd5b81518015158114620008db57600080fd5b80820180821115620008de57634e487b7160e01b600052601160045260246000fd5b61258d8062000ae36000396000f3fe60806040526004361061024a5760003560e01c80638718b24f11610139578063c0246668116100b6578063dd62ed3e1161007a578063dd62ed3e146106d3578063f2fde38b14610719578063f91f5a6514610739578063f97f220814610759578063ff65226c1461076e578063fffe42e91461078857600080fd5b8063c024666814610633578063c492f04614610653578063c54e44eb14610673578063d7e2ae7714610693578063dbce20cc146106b357600080fd5b8063a457c2d7116100fd578063a457c2d714610598578063a9059cbb146105b8578063adae9009146105d8578063adb873bd146105ed578063b62496f51461060357600080fd5b80638718b24f146105055780638da5cb5b1461052557806395927c251461054357806395d89b41146105635780639a7a23d61461057857600080fd5b806323b872dd116101c757806349bd5a5e1161018b57806349bd5a5e1461044c5780634fbee1931461046c5780636c580801146104a557806370a08231146104ba578063715018a6146104f057600080fd5b806323b872dd146103b05780632c06862b146103d0578063313ce567146103f0578063395093511461040c57806342d5035f1461042c57600080fd5b806313ddbe351161020e57806313ddbe35146103175780631694505e1461032d57806318160ddd146103655780631c01a7301461037a5780631ee5f4f81461039057600080fd5b806306fdde0314610256578063070a6e7614610281578063095ea7b3146102a55780630edf9c35146102d55780630ff4c916146102f757600080fd5b3661025157005b600080fd5b34801561026257600080fd5b5061026b6107a8565b6040516102789190611eec565b60405180910390f35b34801561028d57600080fd5b5061029760085481565b604051908152602001610278565b3480156102b157600080fd5b506102c56102c0366004611f4f565b61083a565b6040519015158152602001610278565b3480156102e157600080fd5b506102f56102f0366004611f4f565b610851565b005b34801561030357600080fd5b50610297610312366004611f7b565b610915565b34801561032357600080fd5b5061029760135481565b34801561033957600080fd5b5060065461034d906001600160a01b031681565b6040516001600160a01b039091168152602001610278565b34801561037157600080fd5b50600254610297565b34801561038657600080fd5b5061029760125481565b34801561039c57600080fd5b50600c5461034d906001600160a01b031681565b3480156103bc57600080fd5b506102c56103cb366004611f94565b610a57565b3480156103dc57600080fd5b506102f56103eb366004611fe3565b610ac0565b3480156103fc57600080fd5b5060405160128152602001610278565b34801561041857600080fd5b506102c5610427366004611f4f565b610afd565b34801561043857600080fd5b506102f5610447366004612000565b610b33565b34801561045857600080fd5b5060075461034d906001600160a01b031681565b34801561047857600080fd5b506102c5610487366004612000565b6001600160a01b03166000908152600e602052604090205460ff1690565b3480156104b157600080fd5b506102f5610b7f565b3480156104c657600080fd5b506102976104d5366004612000565b6001600160a01b031660009081526020819052604090205490565b3480156104fc57600080fd5b506102f5610baf565b34801561051157600080fd5b50600d5461034d906001600160a01b031681565b34801561053157600080fd5b506005546001600160a01b031661034d565b34801561054f57600080fd5b506102f561055e366004611f7b565b610c23565b34801561056f57600080fd5b5061026b610c52565b34801561058457600080fd5b506102f561059336600461201d565b610c61565b3480156105a457600080fd5b506102c56105b3366004611f4f565b610d35565b3480156105c457600080fd5b506102c56105d3366004611f4f565b610d84565b3480156105e457600080fd5b506102f5610d91565b3480156105f957600080fd5b5061029760105481565b34801561060f57600080fd5b506102c561061e366004612000565b600f6020526000908152604090205460ff1681565b34801561063f57600080fd5b506102f561064e36600461201d565b610e9e565b34801561065f57600080fd5b506102f561066e366004612056565b610f27565b34801561067f57600080fd5b50600b5461034d906001600160a01b031681565b34801561069f57600080fd5b506102f56106ae366004611f7b565b611003565b3480156106bf57600080fd5b50600a5461034d906001600160a01b031681565b3480156106df57600080fd5b506102976106ee3660046120dc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561072557600080fd5b506102f5610734366004612000565b611032565b34801561074557600080fd5b506102f5610754366004611f7b565b61111d565b34801561076557600080fd5b506102f561114c565b34801561077a57600080fd5b506011546102c59060ff1681565b34801561079457600080fd5b5060095461034d906001600160a01b031681565b6060600380546107b79061210a565b80601f01602080910402602001604051908101604052809291908181526020018280546107e39061210a565b80156108305780601f1061080557610100808354040283529160200191610830565b820191906000526020600020905b81548152906001019060200180831161081357829003601f168201915b5050505050905090565b6000610847338484611227565b5060015b92915050565b336000908152600e602052604090205460ff1661089f5760405162461bcd60e51b81526020600482015260076024820152663737ba103232bb60c91b60448201526064015b60405180910390fd5b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109109190612144565b505050565b6007546001600160a01b031660009081526020819052604081205460000361093f57506000919050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061097457610974612177565b6001600160a01b039283166020918202929092010152600b548251911690829060019081106109a5576109a5612177565b6001600160a01b03928316602091820292909201015260065460405163d06ca61f60e01b815291169063d06ca61f906109e490869085906004016121d1565b600060405180830381865afa158015610a01573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a2991908101906121f2565b60018251610a3791906122c6565b81518110610a4757610a47612177565b6020026020010151915050919050565b6000610a6484848461134c565b610ab68433610ab18560405180606001604052806028815260200161250b602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611697565b611227565b5060019392505050565b6005546001600160a01b03163314610aea5760405162461bcd60e51b8152600401610896906122d9565b6011805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610847918590610ab190866111c1565b6005546001600160a01b03163314610b5d5760405162461bcd60e51b8152600401610896906122d9565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ba95760405162461bcd60e51b8152600401610896906122d9565b42600855565b6005546001600160a01b03163314610bd95760405162461bcd60e51b8152600401610896906122d9565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610c4d5760405162461bcd60e51b8152600401610896906122d9565b601055565b6060600480546107b79061210a565b6005546001600160a01b03163314610c8b5760405162461bcd60e51b8152600401610896906122d9565b6007546001600160a01b0390811690831603610d275760405162461bcd60e51b815260206004820152604f60248201527f42414259555344543a205468652050616e55534454537761702070616972206360448201527f616e6e6f742062652072656d6f7665642066726f6d206175746f6d617465644d60648201526e61726b65744d616b6572506169727360881b608482015260a401610896565b610d3182826116d1565b5050565b60006108473384610ab185604051806060016040528060258152602001612533602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611697565b600061084733848461134c565b6009546001600160a01b03163303610e9c57600b54600c546040516370a0823160e01b81526001600160a01b039182166004820181905291909216916323b872dd9190339084906370a0823190602401602060405180830381865afa158015610dfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e22919061230e565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015610e76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9a9190612144565b505b565b6005546001600160a01b03163314610ec85760405162461bcd60e51b8152600401610896906122d9565b6001600160a01b0382166000818152600e6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610f515760405162461bcd60e51b8152600401610896906122d9565b60005b82811015610fc25781600e6000868685818110610f7357610f73612177565b9050602002016020810190610f889190612000565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610fba81612327565b915050610f54565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b35838383604051610ff693929190612340565b60405180910390a1505050565b6005546001600160a01b0316331461102d5760405162461bcd60e51b8152600401610896906122d9565b601255565b6005546001600160a01b0316331461105c5760405162461bcd60e51b8152600401610896906122d9565b6001600160a01b0381166110c15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610896565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111475760405162461bcd60e51b8152600401610896906122d9565b601355565b336000908152600e602052604090205460ff166111955760405162461bcd60e51b81526020600482015260076024820152663737ba103232bb60c91b6044820152606401610896565b60405133904780156108fc02916000818181858888f19350505050158015610e9a573d6000803e3d6000fd5b6000806111ce8385612399565b9050838110156112205760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610896565b9392505050565b6001600160a01b0383166112895760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610896565b6001600160a01b0382166112ea5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610896565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166113725760405162461bcd60e51b8152600401610896906123ac565b80611392846001600160a01b031660009081526020819052604090205490565b10156113c85760405162461bcd60e51b815260206004820152600560248201526432b93937b960d91b6044820152606401610896565b806000036113dc57610910838360006117c6565b6001600160a01b0383166000908152600e602052604090205460ff168061141b57506001600160a01b0382166000908152600e602052604090205460ff165b1561142b576109108383836117c6565b60008061143885856118a9565b6001600160a01b0387166000908152600e6020526040902054919350915060ff1615801561147f57506001600160a01b0384166000908152600e602052604090205460ff16155b1561168c57600754600160a01b900460ff1615801561149c575081155b80156114c157506001600160a01b0385166000908152600f602052604090205460ff16155b80156114e557506001600160a01b0384166000908152600f602052604090205460ff165b15611514576007805460ff60a01b1916600160a01b17905561150683611aca565b6007805460ff60a01b191690555b6001600160a01b0385166000908152600f602052604090205460ff1615801561155657506001600160a01b0384166000908152600f602052604090205460ff16155b1561156d576115668585856117c6565b5050505050565b6008544210156115ab5760405162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b6044820152606401610896565b6001600160a01b0385166000908152600f602052604081205460ff161561161e5760115460ff1661160b5760405162461bcd60e51b815260206004820152600a6024820152696e6f742063616e42757960b01b6044820152606401610896565b6116168686866117c6565b505050505050565b6001600160a01b0385166000908152600f602052604090205460ff168015611644575082155b1561167e57600061166c6103e861166660105488611db890919063ffffffff16565b90611e3a565b905061167b8761dead836117c6565b90505b6116888482611e7c565b9350505b6115668585856117c6565b600081848411156116bb5760405162461bcd60e51b81526004016108969190611eec565b5060006116c884866122c6565b95945050505050565b6001600160a01b0382166000908152600f602052604090205481151560ff9091161515036117725760405162461bcd60e51b815260206004820152604260248201527f42414259555344543a204175746f6d61746564206d61726b6574206d616b657260448201527f207061697220697320616c72656164792073657420746f20746861742076616c606482015261756560f01b608482015260a401610896565b6001600160a01b0382166000818152600f6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166117ec5760405162461bcd60e51b8152600401610896906123ac565b611829816040518060600160405280602681526020016124e5602691396001600160a01b0386166000908152602081905260409020549190611697565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461185890826111c1565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161133f565b6000806000600760009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611901573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192591906123f1565b90506000600760009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561197c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a0919061242a565b50506007546040516370a0823160e01b81526001600160a01b0391821660048201526001600160701b03929092169250600091908416906370a0823190602401602060405180830381865afa1580156119fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a21919061230e565b6001600160a01b0387166000908152600f602052604090205490915060ff1615611a72576001600160a01b0383163014801590611a5d57508181115b15611a72576000611a6e83836122c6565b1194505b6001600160a01b0387166000908152600f602052604090205460ff1615611ac0576001600160a01b0383163014801590611aab57508181105b15611ac0576000611abc82846122c6565b1193505b5050509250929050565b6000606460125483611adc919061246f565b611ae69190612486565b600c546001600160a01b031660009081526020819052604090205490915081811015611b425760408051828152602081018490527f7bd515dd9fb07b9cc2387efc0f60cb2171b462fbff4ab022fc2367b769d7faf89101610ff6565b6000611b4d83610915565b9050601354811115611b9c576013546040805183815260208101929092527f29d77775809520ce83eb2c7eeb8d1886814efd5982b301129453942282e7c096910160405180910390a150505050565b600c54611bb3906001600160a01b031630856117c6565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611be857611be8612177565b6001600160a01b039283166020918202929092010152600b54825191169082906001908110611c1957611c19612177565b6001600160a01b039283166020918202929092010152600654611c3f9130911686611227565b600654600d54604051635c11d79560e01b81526001600160a01b0392831692635c11d79592611c7c928992600092889291169042906004016124a8565b600060405180830381600087803b158015611c9657600080fd5b505af1158015611caa573d6000803e3d6000fd5b5050600b54600d546040516370a0823160e01b81526001600160a01b039182166004820152911692506000915082906370a0823190602401602060405180830381865afa158015611cff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d23919061230e565b90508015611daf57600d54600a546040516323b872dd60e01b81526001600160a01b039283166004820152908216602482015260448101839052908316906323b872dd906064016020604051808303816000875af1158015611d89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dad9190612144565b505b50505050505050565b600082600003611dca5750600061084b565b6000611dd6838561246f565b905082611de38583612486565b146112205760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610896565b600061122083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ebe565b600061122083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611697565b60008183611edf5760405162461bcd60e51b81526004016108969190611eec565b5060006116c88486612486565b600060208083528351808285015260005b81811015611f1957858101830151858201604001528201611efd565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610e9a57600080fd5b60008060408385031215611f6257600080fd5b8235611f6d81611f3a565b946020939093013593505050565b600060208284031215611f8d57600080fd5b5035919050565b600080600060608486031215611fa957600080fd5b8335611fb481611f3a565b92506020840135611fc481611f3a565b929592945050506040919091013590565b8015158114610e9a57600080fd5b600060208284031215611ff557600080fd5b813561122081611fd5565b60006020828403121561201257600080fd5b813561122081611f3a565b6000806040838503121561203057600080fd5b823561203b81611f3a565b9150602083013561204b81611fd5565b809150509250929050565b60008060006040848603121561206b57600080fd5b833567ffffffffffffffff8082111561208357600080fd5b818601915086601f83011261209757600080fd5b8135818111156120a657600080fd5b8760208260051b85010111156120bb57600080fd5b602092830195509350508401356120d181611fd5565b809150509250925092565b600080604083850312156120ef57600080fd5b82356120fa81611f3a565b9150602083013561204b81611f3a565b600181811c9082168061211e57607f821691505b60208210810361213e57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561215657600080fd5b815161122081611fd5565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156121c65781516001600160a01b0316875295820195908201906001016121a1565b509495945050505050565b8281526040602082015260006121ea604083018461218d565b949350505050565b6000602080838503121561220557600080fd5b825167ffffffffffffffff8082111561221d57600080fd5b818501915085601f83011261223157600080fd5b81518181111561224357612243612161565b8060051b604051601f19603f8301168101818110858211171561226857612268612161565b60405291825284820192508381018501918883111561228657600080fd5b938501935b828510156122a45784518452938501939285019261228b565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561084b5761084b6122b0565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561232057600080fd5b5051919050565b600060018201612339576123396122b0565b5060010190565b6040808252810183905260008460608301825b8681101561238357823561236681611f3a565b6001600160a01b0316825260209283019290910190600101612353565b5080925050508215156020830152949350505050565b8082018082111561084b5761084b6122b0565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60006020828403121561240357600080fd5b815161122081611f3a565b80516001600160701b038116811461242557600080fd5b919050565b60008060006060848603121561243f57600080fd5b6124488461240e565b92506124566020850161240e565b9150604084015163ffffffff811681146120d157600080fd5b808202811582820484141761084b5761084b6122b0565b6000826124a357634e487b7160e01b600052601260045260246000fd5b500490565b85815284602082015260a0604082015260006124c760a083018661218d565b6001600160a01b039490941660608301525060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220047a1d07d547970e5004224f410cbc1080b674c4e49ed13350a4dede352e770664736f6c63430008120033608060405234801561001057600080fd5b5060405161014738038061014783398101604081905261002f916100a8565b60405163095ea7b360e01b815233600482015260001960248201526001600160a01b0382169063095ea7b3906044016020604051808303816000875af115801561007d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a191906100d8565b50506100fa565b6000602082840312156100ba57600080fd5b81516001600160a01b03811681146100d157600080fd5b9392505050565b6000602082840312156100ea57600080fd5b815180151581146100d157600080fd5b603f806101086000396000f3fe6080604052600080fdfea26469706673582212208fb42d21cb7e7b3da3934318e3a48b84c1533d06b825b39c585c0ecccace76a164736f6c63430008120033

Deployed Bytecode

0x60806040526004361061024a5760003560e01c80638718b24f11610139578063c0246668116100b6578063dd62ed3e1161007a578063dd62ed3e146106d3578063f2fde38b14610719578063f91f5a6514610739578063f97f220814610759578063ff65226c1461076e578063fffe42e91461078857600080fd5b8063c024666814610633578063c492f04614610653578063c54e44eb14610673578063d7e2ae7714610693578063dbce20cc146106b357600080fd5b8063a457c2d7116100fd578063a457c2d714610598578063a9059cbb146105b8578063adae9009146105d8578063adb873bd146105ed578063b62496f51461060357600080fd5b80638718b24f146105055780638da5cb5b1461052557806395927c251461054357806395d89b41146105635780639a7a23d61461057857600080fd5b806323b872dd116101c757806349bd5a5e1161018b57806349bd5a5e1461044c5780634fbee1931461046c5780636c580801146104a557806370a08231146104ba578063715018a6146104f057600080fd5b806323b872dd146103b05780632c06862b146103d0578063313ce567146103f0578063395093511461040c57806342d5035f1461042c57600080fd5b806313ddbe351161020e57806313ddbe35146103175780631694505e1461032d57806318160ddd146103655780631c01a7301461037a5780631ee5f4f81461039057600080fd5b806306fdde0314610256578063070a6e7614610281578063095ea7b3146102a55780630edf9c35146102d55780630ff4c916146102f757600080fd5b3661025157005b600080fd5b34801561026257600080fd5b5061026b6107a8565b6040516102789190611eec565b60405180910390f35b34801561028d57600080fd5b5061029760085481565b604051908152602001610278565b3480156102b157600080fd5b506102c56102c0366004611f4f565b61083a565b6040519015158152602001610278565b3480156102e157600080fd5b506102f56102f0366004611f4f565b610851565b005b34801561030357600080fd5b50610297610312366004611f7b565b610915565b34801561032357600080fd5b5061029760135481565b34801561033957600080fd5b5060065461034d906001600160a01b031681565b6040516001600160a01b039091168152602001610278565b34801561037157600080fd5b50600254610297565b34801561038657600080fd5b5061029760125481565b34801561039c57600080fd5b50600c5461034d906001600160a01b031681565b3480156103bc57600080fd5b506102c56103cb366004611f94565b610a57565b3480156103dc57600080fd5b506102f56103eb366004611fe3565b610ac0565b3480156103fc57600080fd5b5060405160128152602001610278565b34801561041857600080fd5b506102c5610427366004611f4f565b610afd565b34801561043857600080fd5b506102f5610447366004612000565b610b33565b34801561045857600080fd5b5060075461034d906001600160a01b031681565b34801561047857600080fd5b506102c5610487366004612000565b6001600160a01b03166000908152600e602052604090205460ff1690565b3480156104b157600080fd5b506102f5610b7f565b3480156104c657600080fd5b506102976104d5366004612000565b6001600160a01b031660009081526020819052604090205490565b3480156104fc57600080fd5b506102f5610baf565b34801561051157600080fd5b50600d5461034d906001600160a01b031681565b34801561053157600080fd5b506005546001600160a01b031661034d565b34801561054f57600080fd5b506102f561055e366004611f7b565b610c23565b34801561056f57600080fd5b5061026b610c52565b34801561058457600080fd5b506102f561059336600461201d565b610c61565b3480156105a457600080fd5b506102c56105b3366004611f4f565b610d35565b3480156105c457600080fd5b506102c56105d3366004611f4f565b610d84565b3480156105e457600080fd5b506102f5610d91565b3480156105f957600080fd5b5061029760105481565b34801561060f57600080fd5b506102c561061e366004612000565b600f6020526000908152604090205460ff1681565b34801561063f57600080fd5b506102f561064e36600461201d565b610e9e565b34801561065f57600080fd5b506102f561066e366004612056565b610f27565b34801561067f57600080fd5b50600b5461034d906001600160a01b031681565b34801561069f57600080fd5b506102f56106ae366004611f7b565b611003565b3480156106bf57600080fd5b50600a5461034d906001600160a01b031681565b3480156106df57600080fd5b506102976106ee3660046120dc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561072557600080fd5b506102f5610734366004612000565b611032565b34801561074557600080fd5b506102f5610754366004611f7b565b61111d565b34801561076557600080fd5b506102f561114c565b34801561077a57600080fd5b506011546102c59060ff1681565b34801561079457600080fd5b5060095461034d906001600160a01b031681565b6060600380546107b79061210a565b80601f01602080910402602001604051908101604052809291908181526020018280546107e39061210a565b80156108305780601f1061080557610100808354040283529160200191610830565b820191906000526020600020905b81548152906001019060200180831161081357829003601f168201915b5050505050905090565b6000610847338484611227565b5060015b92915050565b336000908152600e602052604090205460ff1661089f5760405162461bcd60e51b81526020600482015260076024820152663737ba103232bb60c91b60448201526064015b60405180910390fd5b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109109190612144565b505050565b6007546001600160a01b031660009081526020819052604081205460000361093f57506000919050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061097457610974612177565b6001600160a01b039283166020918202929092010152600b548251911690829060019081106109a5576109a5612177565b6001600160a01b03928316602091820292909201015260065460405163d06ca61f60e01b815291169063d06ca61f906109e490869085906004016121d1565b600060405180830381865afa158015610a01573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a2991908101906121f2565b60018251610a3791906122c6565b81518110610a4757610a47612177565b6020026020010151915050919050565b6000610a6484848461134c565b610ab68433610ab18560405180606001604052806028815260200161250b602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611697565b611227565b5060019392505050565b6005546001600160a01b03163314610aea5760405162461bcd60e51b8152600401610896906122d9565b6011805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610847918590610ab190866111c1565b6005546001600160a01b03163314610b5d5760405162461bcd60e51b8152600401610896906122d9565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ba95760405162461bcd60e51b8152600401610896906122d9565b42600855565b6005546001600160a01b03163314610bd95760405162461bcd60e51b8152600401610896906122d9565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610c4d5760405162461bcd60e51b8152600401610896906122d9565b601055565b6060600480546107b79061210a565b6005546001600160a01b03163314610c8b5760405162461bcd60e51b8152600401610896906122d9565b6007546001600160a01b0390811690831603610d275760405162461bcd60e51b815260206004820152604f60248201527f42414259555344543a205468652050616e55534454537761702070616972206360448201527f616e6e6f742062652072656d6f7665642066726f6d206175746f6d617465644d60648201526e61726b65744d616b6572506169727360881b608482015260a401610896565b610d3182826116d1565b5050565b60006108473384610ab185604051806060016040528060258152602001612533602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611697565b600061084733848461134c565b6009546001600160a01b03163303610e9c57600b54600c546040516370a0823160e01b81526001600160a01b039182166004820181905291909216916323b872dd9190339084906370a0823190602401602060405180830381865afa158015610dfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e22919061230e565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015610e76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9a9190612144565b505b565b6005546001600160a01b03163314610ec85760405162461bcd60e51b8152600401610896906122d9565b6001600160a01b0382166000818152600e6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610f515760405162461bcd60e51b8152600401610896906122d9565b60005b82811015610fc25781600e6000868685818110610f7357610f73612177565b9050602002016020810190610f889190612000565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610fba81612327565b915050610f54565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b35838383604051610ff693929190612340565b60405180910390a1505050565b6005546001600160a01b0316331461102d5760405162461bcd60e51b8152600401610896906122d9565b601255565b6005546001600160a01b0316331461105c5760405162461bcd60e51b8152600401610896906122d9565b6001600160a01b0381166110c15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610896565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111475760405162461bcd60e51b8152600401610896906122d9565b601355565b336000908152600e602052604090205460ff166111955760405162461bcd60e51b81526020600482015260076024820152663737ba103232bb60c91b6044820152606401610896565b60405133904780156108fc02916000818181858888f19350505050158015610e9a573d6000803e3d6000fd5b6000806111ce8385612399565b9050838110156112205760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610896565b9392505050565b6001600160a01b0383166112895760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610896565b6001600160a01b0382166112ea5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610896565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166113725760405162461bcd60e51b8152600401610896906123ac565b80611392846001600160a01b031660009081526020819052604090205490565b10156113c85760405162461bcd60e51b815260206004820152600560248201526432b93937b960d91b6044820152606401610896565b806000036113dc57610910838360006117c6565b6001600160a01b0383166000908152600e602052604090205460ff168061141b57506001600160a01b0382166000908152600e602052604090205460ff165b1561142b576109108383836117c6565b60008061143885856118a9565b6001600160a01b0387166000908152600e6020526040902054919350915060ff1615801561147f57506001600160a01b0384166000908152600e602052604090205460ff16155b1561168c57600754600160a01b900460ff1615801561149c575081155b80156114c157506001600160a01b0385166000908152600f602052604090205460ff16155b80156114e557506001600160a01b0384166000908152600f602052604090205460ff165b15611514576007805460ff60a01b1916600160a01b17905561150683611aca565b6007805460ff60a01b191690555b6001600160a01b0385166000908152600f602052604090205460ff1615801561155657506001600160a01b0384166000908152600f602052604090205460ff16155b1561156d576115668585856117c6565b5050505050565b6008544210156115ab5760405162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b6044820152606401610896565b6001600160a01b0385166000908152600f602052604081205460ff161561161e5760115460ff1661160b5760405162461bcd60e51b815260206004820152600a6024820152696e6f742063616e42757960b01b6044820152606401610896565b6116168686866117c6565b505050505050565b6001600160a01b0385166000908152600f602052604090205460ff168015611644575082155b1561167e57600061166c6103e861166660105488611db890919063ffffffff16565b90611e3a565b905061167b8761dead836117c6565b90505b6116888482611e7c565b9350505b6115668585856117c6565b600081848411156116bb5760405162461bcd60e51b81526004016108969190611eec565b5060006116c884866122c6565b95945050505050565b6001600160a01b0382166000908152600f602052604090205481151560ff9091161515036117725760405162461bcd60e51b815260206004820152604260248201527f42414259555344543a204175746f6d61746564206d61726b6574206d616b657260448201527f207061697220697320616c72656164792073657420746f20746861742076616c606482015261756560f01b608482015260a401610896565b6001600160a01b0382166000818152600f6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166117ec5760405162461bcd60e51b8152600401610896906123ac565b611829816040518060600160405280602681526020016124e5602691396001600160a01b0386166000908152602081905260409020549190611697565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461185890826111c1565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161133f565b6000806000600760009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611901573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192591906123f1565b90506000600760009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561197c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a0919061242a565b50506007546040516370a0823160e01b81526001600160a01b0391821660048201526001600160701b03929092169250600091908416906370a0823190602401602060405180830381865afa1580156119fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a21919061230e565b6001600160a01b0387166000908152600f602052604090205490915060ff1615611a72576001600160a01b0383163014801590611a5d57508181115b15611a72576000611a6e83836122c6565b1194505b6001600160a01b0387166000908152600f602052604090205460ff1615611ac0576001600160a01b0383163014801590611aab57508181105b15611ac0576000611abc82846122c6565b1193505b5050509250929050565b6000606460125483611adc919061246f565b611ae69190612486565b600c546001600160a01b031660009081526020819052604090205490915081811015611b425760408051828152602081018490527f7bd515dd9fb07b9cc2387efc0f60cb2171b462fbff4ab022fc2367b769d7faf89101610ff6565b6000611b4d83610915565b9050601354811115611b9c576013546040805183815260208101929092527f29d77775809520ce83eb2c7eeb8d1886814efd5982b301129453942282e7c096910160405180910390a150505050565b600c54611bb3906001600160a01b031630856117c6565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611be857611be8612177565b6001600160a01b039283166020918202929092010152600b54825191169082906001908110611c1957611c19612177565b6001600160a01b039283166020918202929092010152600654611c3f9130911686611227565b600654600d54604051635c11d79560e01b81526001600160a01b0392831692635c11d79592611c7c928992600092889291169042906004016124a8565b600060405180830381600087803b158015611c9657600080fd5b505af1158015611caa573d6000803e3d6000fd5b5050600b54600d546040516370a0823160e01b81526001600160a01b039182166004820152911692506000915082906370a0823190602401602060405180830381865afa158015611cff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d23919061230e565b90508015611daf57600d54600a546040516323b872dd60e01b81526001600160a01b039283166004820152908216602482015260448101839052908316906323b872dd906064016020604051808303816000875af1158015611d89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dad9190612144565b505b50505050505050565b600082600003611dca5750600061084b565b6000611dd6838561246f565b905082611de38583612486565b146112205760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610896565b600061122083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ebe565b600061122083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611697565b60008183611edf5760405162461bcd60e51b81526004016108969190611eec565b5060006116c88486612486565b600060208083528351808285015260005b81811015611f1957858101830151858201604001528201611efd565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610e9a57600080fd5b60008060408385031215611f6257600080fd5b8235611f6d81611f3a565b946020939093013593505050565b600060208284031215611f8d57600080fd5b5035919050565b600080600060608486031215611fa957600080fd5b8335611fb481611f3a565b92506020840135611fc481611f3a565b929592945050506040919091013590565b8015158114610e9a57600080fd5b600060208284031215611ff557600080fd5b813561122081611fd5565b60006020828403121561201257600080fd5b813561122081611f3a565b6000806040838503121561203057600080fd5b823561203b81611f3a565b9150602083013561204b81611fd5565b809150509250929050565b60008060006040848603121561206b57600080fd5b833567ffffffffffffffff8082111561208357600080fd5b818601915086601f83011261209757600080fd5b8135818111156120a657600080fd5b8760208260051b85010111156120bb57600080fd5b602092830195509350508401356120d181611fd5565b809150509250925092565b600080604083850312156120ef57600080fd5b82356120fa81611f3a565b9150602083013561204b81611f3a565b600181811c9082168061211e57607f821691505b60208210810361213e57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561215657600080fd5b815161122081611fd5565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156121c65781516001600160a01b0316875295820195908201906001016121a1565b509495945050505050565b8281526040602082015260006121ea604083018461218d565b949350505050565b6000602080838503121561220557600080fd5b825167ffffffffffffffff8082111561221d57600080fd5b818501915085601f83011261223157600080fd5b81518181111561224357612243612161565b8060051b604051601f19603f8301168101818110858211171561226857612268612161565b60405291825284820192508381018501918883111561228657600080fd5b938501935b828510156122a45784518452938501939285019261228b565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561084b5761084b6122b0565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561232057600080fd5b5051919050565b600060018201612339576123396122b0565b5060010190565b6040808252810183905260008460608301825b8681101561238357823561236681611f3a565b6001600160a01b0316825260209283019290910190600101612353565b5080925050508215156020830152949350505050565b8082018082111561084b5761084b6122b0565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60006020828403121561240357600080fd5b815161122081611f3a565b80516001600160701b038116811461242557600080fd5b919050565b60008060006060848603121561243f57600080fd5b6124488461240e565b92506124566020850161240e565b9150604084015163ffffffff811681146120d157600080fd5b808202811582820484141761084b5761084b6122b0565b6000826124a357634e487b7160e01b600052601260045260246000fd5b500490565b85815284602082015260a0604082015260006124c760a083018661218d565b6001600160a01b039490941660608301525060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220047a1d07d547970e5004224f410cbc1080b674c4e49ed13350a4dede352e770664736f6c63430008120033

Deployed Bytecode Sourcemap

18763:10268:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14296:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18957:52;;;;;;;;;;;;;;;;;;;713:25:1;;;701:2;686:18;18957:52:0;567:177:1;15276:194:0;;;;;;;;;;-1:-1:-1;15276:194:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;15276:194:0;1205:187:1;28426:190:0;;;;;;;;;;-1:-1:-1;28426:190:0;;;;;:::i;:::-;;:::i;:::-;;25377:351;;;;;;;;;;-1:-1:-1;25377:351:0;;;;;:::i;:::-;;:::i;25903:59::-;;;;;;;;;;;;;;;;18836:41;;;;;;;;;;-1:-1:-1;18836:41:0;;;;-1:-1:-1;;;;;18836:41:0;;;;;;-1:-1:-1;;;;;1772:32:1;;;1754:51;;1742:2;1727:18;18836:41:0;1582:229:1;14617:108:0;;;;;;;;;;-1:-1:-1;14705:12:0;;14617:108;;25155:40;;;;;;;;;;;;;;;;19280:37;;;;;;;;;;-1:-1:-1;19280:37:0;;;;-1:-1:-1;;;;;19280:37:0;;;15478:454;;;;;;;;;;-1:-1:-1;15478:454:0;;;;;:::i;:::-;;:::i;28929:99::-;;;;;;;;;;-1:-1:-1;28929:99:0;;;;;:::i;:::-;;:::i;14516:93::-;;;;;;;;;;-1:-1:-1;14516:93:0;;14599:2;2996:36:1;;2984:2;2969:18;14516:93:0;2854:184:1;15940:293:0;;;;;;;;;;-1:-1:-1;15940:293:0;;;;;:::i;:::-;;:::i;23027:95::-;;;;;;;;;;-1:-1:-1;23027:95:0;;;;;:::i;:::-;;:::i;18890:28::-;;;;;;;;;;-1:-1:-1;18890:28:0;;;;-1:-1:-1;;;;;18890:28:0;;;23130:126;;;;;;;;;;-1:-1:-1;23130:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;23220:28:0;23196:4;23220:28;;;:19;:28;;;;;;;;;23130:126;22928:91;;;;;;;;;;;;;:::i;14733:143::-;;;;;;;;;;-1:-1:-1;14733:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;14850:18:0;14823:7;14850:18;;;;;;;;;;;;14733:143;13264:148;;;;;;;;;;;;;:::i;19326:41::-;;;;;;;;;;-1:-1:-1;19326:41:0;;;;-1:-1:-1;;;;;19326:41:0;;;12622:79;;;;;;;;;;-1:-1:-1;12687:6:0;;-1:-1:-1;;;;;12687:6:0;12622:79;;28800:121;;;;;;;;;;-1:-1:-1;28800:121:0;;;;;:::i;:::-;;:::i;14404:104::-;;;;;;;;;;;;;:::i;22231:328::-;;;;;;;;;;-1:-1:-1;22231:328:0;;;;;:::i;:::-;;:::i;16241:393::-;;;;;;;;;;-1:-1:-1;16241:393:0;;;;;:::i;:::-;;:::i;14884:200::-;;;;;;;;;;-1:-1:-1;14884:200:0;;;;;:::i;:::-;;:::i;21463:230::-;;;;;;;;;;;;;:::i;19709:31::-;;;;;;;;;;;;;;;;19643:57;;;;;;;;;;-1:-1:-1;19643:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21701:184;;;;;;;;;;-1:-1:-1;21701:184:0;;;;;:::i;:::-;;:::i;21893:330::-;;;;;;;;;;-1:-1:-1;21893:330:0;;;;;:::i;:::-;;:::i;19198:73::-;;;;;;;;;;-1:-1:-1;19198:73:0;;;;-1:-1:-1;;;;;19198:73:0;;;25202:167;;;;;;;;;;-1:-1:-1;25202:167:0;;;;;:::i;:::-;;:::i;19110:79::-;;;;;;;;;;-1:-1:-1;19110:79:0;;;;-1:-1:-1;;;;;19110:79:0;;;15092:176;;;;;;;;;;-1:-1:-1;15092:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;15233:18:0;;;15206:7;15233:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;15092:176;13567:281;;;;;;;;;;-1:-1:-1;13567:281:0;;;;;:::i;:::-;;:::i;25969:113::-;;;;;;;;;;-1:-1:-1;25969:113:0;;;;;:::i;:::-;;:::i;28624:164::-;;;;;;;;;;;;;:::i;19749:26::-;;;;;;;;;;-1:-1:-1;19749:26:0;;;;;;;;19018:83;;;;;;;;;;-1:-1:-1;19018:83:0;;;;-1:-1:-1;;;;;19018:83:0;;;14296:100;14350:13;14383:5;14376:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14296:100;:::o;15276:194::-;15384:4;15401:39;2054:10;15424:7;15433:6;15401:8;:39::i;:::-;-1:-1:-1;15458:4:0;15276:194;;;;;:::o;28426:190::-;28530:10;28510:31;;;;:19;:31;;;;;;;;28502:51;;;;-1:-1:-1;;;28502:51:0;;5650:2:1;28502:51:0;;;5632:21:1;5689:1;5669:18;;;5662:29;-1:-1:-1;;;5707:18:1;;;5700:37;5754:18;;28502:51:0;;;;;;;;;28564:44;;-1:-1:-1;;;28564:44:0;;28588:10;28564:44;;;5957:51:1;6024:18;;;6017:34;;;-1:-1:-1;;;;;28564:23:0;;;;;5930:18:1;;28564:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28426:190;;:::o;25377:351::-;25466:13;;-1:-1:-1;;;;;25466:13:0;25433:7;14850:18;;;;;;;;;;;25484:1;25456:29;25452:70;;-1:-1:-1;25509:1:0;;25377:351;-1:-1:-1;25377:351:0:o;25452:70::-;25556:16;;;25570:1;25556:16;;;;;;;;25532:21;;25556:16;;;;;;;;;;-1:-1:-1;25556:16:0;25532:40;;25601:4;25583;25588:1;25583:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25583:23:0;;;:7;;;;;;;;;:23;25635:4;;25617:7;;25635:4;;;25617;;25635;;25617:7;;;;;;:::i;:::-;-1:-1:-1;;;;;25617:23:0;;;:7;;;;;;;;;:23;25658:15;;:45;;-1:-1:-1;;;25658:45:0;;:15;;;:29;;:45;;25688:8;;25698:4;;25658:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25658:45:0;;;;;;;;;;;;:::i;:::-;25718:1;25704:4;:11;:15;;;;:::i;:::-;25658:62;;;;;;;;:::i;:::-;;;;;;;25651:69;;;25377:351;;;:::o;15478:454::-;15618:4;15635:36;15645:6;15653:9;15664:6;15635:9;:36::i;:::-;15682:220;15705:6;2054:10;15753:138;15809:6;15753:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15753:19:0;;;;;;:11;:19;;;;;;;;2054:10;15753:33;;;;;;;;;;:37;:138::i;:::-;15682:8;:220::i;:::-;-1:-1:-1;15920:4:0;15478:454;;;;;:::o;28929:99::-;12834:6;;-1:-1:-1;;;;;12834:6:0;2054:10;12834:22;12826:67;;;;-1:-1:-1;;;12826:67:0;;;;;;;:::i;:::-;29005:6:::1;:15:::0;;-1:-1:-1;;29005:15:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28929:99::o;15940:293::-;2054:10;16053:4;16142:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16142:34:0;;;;;;;;;;16053:4;;16070:133;;16120:7;;16142:50;;16181:10;16142:38;:50::i;23027:95::-;12834:6;;-1:-1:-1;;;;;12834:6:0;2054:10;12834:22;12826:67;;;;-1:-1:-1;;;12826:67:0;;;;;;;:::i;:::-;23094:10:::1;:20:::0;;-1:-1:-1;;;;;;23094:20:0::1;-1:-1:-1::0;;;;;23094:20:0;;;::::1;::::0;;;::::1;::::0;;23027:95::o;22928:91::-;12834:6;;-1:-1:-1;;;;;12834:6:0;2054:10;12834:22;12826:67;;;;-1:-1:-1;;;12826:67:0;;;;;;;:::i;:::-;22996:15:::1;22980:13;:31:::0;22928:91::o;13264:148::-;12834:6;;-1:-1:-1;;;;;12834:6:0;2054:10;12834:22;12826:67;;;;-1:-1:-1;;;12826:67:0;;;;;;;:::i;:::-;13355:6:::1;::::0;13334:40:::1;::::0;13371:1:::1;::::0;-1:-1:-1;;;;;13355:6:0::1;::::0;13334:40:::1;::::0;13371:1;;13334:40:::1;13385:6;:19:::0;;-1:-1:-1;;;;;;13385:19:0::1;::::0;;13264:148::o;28800:121::-;12834:6;;-1:-1:-1;;;;;12834:6:0;2054:10;12834:22;12826:67;;;;-1:-1:-1;;;12826:67:0;;;;;;;:::i;:::-;28887:11:::1;:26:::0;28800:121::o;14404:104::-;14460:13;14493:7;14486:14;;;;;:::i;22231:328::-;12834:6;;-1:-1:-1;;;;;12834:6:0;2054:10;12834:22;12826:67;;;;-1:-1:-1;;;12826:67:0;;;;;;;:::i;:::-;22377:13:::1;::::0;-1:-1:-1;;;;;22377:13:0;;::::1;22369:21:::0;;::::1;::::0;22347:150:::1;;;::::0;-1:-1:-1;;;22347:150:0;;9317:2:1;22347:150:0::1;::::0;::::1;9299:21:1::0;9356:2;9336:18;;;9329:30;9395:34;9375:18;;;9368:62;9466:34;9446:18;;;9439:62;-1:-1:-1;;;9517:19:1;;;9510:46;9573:19;;22347:150:0::1;9115:483:1::0;22347:150:0::1;22510:41;22539:4;22545:5;22510:28;:41::i;:::-;22231:328:::0;;:::o;16241:393::-;16359:4;16376:228;2054:10;16426:7;16448:145;16505:15;16448:145;;;;;;;;;;;;;;;;;2054:10;16448:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16448:34:0;;;;;;;;;;;;:38;:145::i;14884:200::-;14995:4;15012:42;2054:10;15036:9;15047:6;15012:9;:42::i;21463:230::-;21535:14;;-1:-1:-1;;;;;21535:14:0;21521:10;:28;21517:169;;21572:4;;21591:22;;21627:46;;-1:-1:-1;;;21627:46:0;;-1:-1:-1;;;;;21591:22:0;;;21627:46;;;1754:51:1;;;21572:4:0;;;;;21565:25;;21591:22;21615:10;;21572:4;;21627:22;;1727:18:1;;21627:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21565:109;;-1:-1:-1;;;;;;21565:109:0;;;;;;;-1:-1:-1;;;;;10050:15:1;;;21565:109:0;;;10032:34:1;10102:15;;;;10082:18;;;10075:43;10134:18;;;10127:34;9967:18;;21565:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21517:169;21463:230::o;21701:184::-;12834:6;;-1:-1:-1;;;;;12834:6:0;2054:10;12834:22;12826:67;;;;-1:-1:-1;;;12826:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21786:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;21786:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;21843:34;;1345:41:1;;;21843:34:0::1;::::0;1318:18:1;21843:34:0::1;;;;;;;21701:184:::0;;:::o;21893:330::-;12834:6;;-1:-1:-1;;;;;12834:6:0;2054:10;12834:22;12826:67;;;;-1:-1:-1;;;12826:67:0;;;;;;;:::i;:::-;22036:9:::1;22031:116;22051:19:::0;;::::1;22031:116;;;22127:8;22092:19;:32;22112:8;;22121:1;22112:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22092:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;22092:32:0;:43;;-1:-1:-1;;22092:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22072:3;::::1;::::0;::::1;:::i;:::-;;;;22031:116;;;;22164:51;22196:8;;22206;22164:51;;;;;;;;:::i;:::-;;;;;;;;21893:330:::0;;;:::o;25202:167::-;12834:6;;-1:-1:-1;;;;;12834:6:0;2054:10;12834:22;12826:67;;;;-1:-1:-1;;;12826:67:0;;;;;;;:::i;:::-;25330:20:::1;:31:::0;25202:167::o;13567:281::-;12834:6;;-1:-1:-1;;;;;12834:6:0;2054:10;12834:22;12826:67;;;;-1:-1:-1;;;12826:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13670:22:0;::::1;13648:110;;;::::0;-1:-1:-1;;;13648:110:0;;11313:2:1;13648:110:0::1;::::0;::::1;11295:21:1::0;11352:2;11332:18;;;11325:30;11391:34;11371:18;;;11364:62;-1:-1:-1;;;11442:18:1;;;11435:36;11488:19;;13648:110:0::1;11111:402:1::0;13648:110:0::1;13795:6;::::0;13774:38:::1;::::0;-1:-1:-1;;;;;13774:38:0;;::::1;::::0;13795:6:::1;::::0;13774:38:::1;::::0;13795:6:::1;::::0;13774:38:::1;13823:6;:17:::0;;-1:-1:-1;;;;;;13823:17:0::1;-1:-1:-1::0;;;;;13823:17:0;;;::::1;::::0;;;::::1;::::0;;13567:281::o;25969:113::-;12834:6;;-1:-1:-1;;;;;12834:6:0;2054:10;12834:22;12826:67;;;;-1:-1:-1;;;12826:67:0;;;;;;;:::i;:::-;26045:18:::1;:29:::0;25969:113::o;28624:164::-;28695:10;28675:31;;;;:19;:31;;;;;;;;28667:51;;;;-1:-1:-1;;;28667:51:0;;5650:2:1;28667:51:0;;;5632:21:1;5689:1;5669:18;;;5662:29;-1:-1:-1;;;5707:18:1;;;5700:37;5754:18;;28667:51:0;5448:330:1;28667:51:0;28729;;28737:10;;28758:21;28729:51;;;;;;;;;28758:21;28737:10;28729:51;;;;;;;;;;;;;;;;;;;90:181;148:7;;180:5;184:1;180;:5;:::i;:::-;168:17;;209:1;204;:6;;196:46;;;;-1:-1:-1;;;196:46:0;;11850:2:1;196:46:0;;;11832:21:1;11889:2;11869:18;;;11862:30;11928:29;11908:18;;;11901:57;11975:18;;196:46:0;11648:351:1;196:46:0;262:1;90:181;-1:-1:-1;;;90:181:0:o;18112:380::-;-1:-1:-1;;;;;18248:19:0;;18240:68;;;;-1:-1:-1;;;18240:68:0;;12206:2:1;18240:68:0;;;12188:21:1;12245:2;12225:18;;;12218:30;12284:34;12264:18;;;12257:62;-1:-1:-1;;;12335:18:1;;;12328:34;12379:19;;18240:68:0;12004:400:1;18240:68:0;-1:-1:-1;;;;;18327:21:0;;18319:68;;;;-1:-1:-1;;;18319:68:0;;12611:2:1;18319:68:0;;;12593:21:1;12650:2;12630:18;;;12623:30;12689:34;12669:18;;;12662:62;-1:-1:-1;;;12740:18:1;;;12733:32;12782:19;;18319:68:0;12409:398:1;18319:68:0;-1:-1:-1;;;;;18400:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;18452:32;;713:25:1;;;18452:32:0;;686:18:1;18452:32:0;;;;;;;;18112:380;;;:::o;23264:1883::-;-1:-1:-1;;;;;23396:18:0;;23388:68;;;;-1:-1:-1;;;23388:68:0;;;;;;;:::i;:::-;23494:6;23475:15;23485:4;-1:-1:-1;;;;;14850:18:0;14823:7;14850:18;;;;;;;;;;;;14733:143;23475:15;:25;;23467:43;;;;-1:-1:-1;;;23467:43:0;;13420:2:1;23467:43:0;;;13402:21:1;13459:1;13439:18;;;13432:29;-1:-1:-1;;;13477:18:1;;;13470:35;13522:18;;23467:43:0;13218:328:1;23467:43:0;23535:6;23545:1;23535:11;23531:93;;23563:28;23579:4;23585:2;23589:1;23563:15;:28::i;23531:93::-;-1:-1:-1;;;;;23639:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;23668:23:0;;;;;;:19;:23;;;;;;;;23639:52;23636:137;;;23707:33;23723:4;23729:2;23733:6;23707:15;:33::i;23636:137::-;23785:19;23815;23880:21;23893:4;23898:2;23880:12;:21::i;:::-;-1:-1:-1;;;;;23919:25:0;;;;;;:19;:25;;;;;;23845:56;;-1:-1:-1;23845:56:0;-1:-1:-1;23919:25:0;;23918:26;:54;;;;-1:-1:-1;;;;;;23949:23:0;;;;;;:19;:23;;;;;;;;23948:24;23918:54;23914:1178;;;24014:8;;-1:-1:-1;;;24014:8:0;;;;24013:9;:45;;;;;24044:14;24043:15;24013:45;:98;;;;-1:-1:-1;;;;;;24080:31:0;;;;;;:25;:31;;;;;;;;24079:32;24013:98;:148;;;;-1:-1:-1;;;;;;24132:29:0;;;;;;:25;:29;;;;;;;;24013:148;23991:308;;;24196:8;:15;;-1:-1:-1;;;;24196:15:0;-1:-1:-1;;;24196:15:0;;;24230:18;24241:6;24230:10;:18::i;:::-;24267:8;:16;;-1:-1:-1;;;;24267:16:0;;;23991:308;-1:-1:-1;;;;;24327:31:0;;;;;;:25;:31;;;;;;;;24326:32;:66;;;;-1:-1:-1;;;;;;24363:29:0;;;;;;:25;:29;;;;;;;;24362:30;24326:66;24323:173;;;24422:33;24438:4;24444:2;24448:6;24422:15;:33::i;:::-;24474:7;;23264:1883;;;:::o;24323:173::-;24539:13;;24520:15;:32;;24512:54;;;;-1:-1:-1;;;24512:54:0;;13753:2:1;24512:54:0;;;13735:21:1;13792:1;13772:18;;;13765:29;-1:-1:-1;;;13810:18:1;;;13803:39;13859:18;;24512:54:0;13551:332:1;24512:54:0;-1:-1:-1;;;;;24614:31:0;;24583:12;24614:31;;;:25;:31;;;;;;;;24610:417;;;24674:6;;;;24666:29;;;;-1:-1:-1;;;24666:29:0;;14090:2:1;24666:29:0;;;14072:21:1;14129:2;14109:18;;;14102:30;-1:-1:-1;;;14148:18:1;;;14141:40;14198:18;;24666:29:0;13888:334:1;24666:29:0;24714:33;24730:4;24736:2;24740:6;24714:15;:33::i;:::-;24766:7;;;23264:1883;;;:::o;24610:417::-;-1:-1:-1;;;;;24798:29:0;;;;;;:25;:29;;;;;;;;:48;;;;;24832:14;24831:15;24798:48;24794:233;;;24867:13;24883:33;24911:4;24883:23;24894:11;;24883:6;:10;;:23;;;;:::i;:::-;:27;;:33::i;:::-;24867:49;;24935:45;24951:4;24965:6;24974:5;24935:15;:45::i;:::-;25006:5;-1:-1:-1;24794:233:0;25064:16;:6;25075:4;25064:10;:16::i;:::-;25055:25;;23974:1118;23914:1178;25104:33;25120:4;25126:2;25130:6;25104:15;:33::i;423:226::-;543:7;579:12;571:6;;;;563:29;;;;-1:-1:-1;;;563:29:0;;;;;;;;:::i;:::-;-1:-1:-1;603:9:0;615:5;619:1;615;:5;:::i;:::-;603:17;423:226;-1:-1:-1;;;;;423:226:0:o;22567:353::-;-1:-1:-1;;;;;22672:31:0;;;;;;:25;:31;;;;;;:40;;;:31;;;;:40;;;22650:156;;;;-1:-1:-1;;;22650:156:0;;14429:2:1;22650:156:0;;;14411:21:1;14468:2;14448:18;;;14441:30;14507:34;14487:18;;;14480:62;14578:34;14558:18;;;14551:62;-1:-1:-1;;;14629:19:1;;;14622:33;14672:19;;22650:156:0;14227:470:1;22650:156:0;-1:-1:-1;;;;;22817:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;22817:39:0;;;;;;;;;;22872:40;;22817:39;;:31;22872:40;;;22567:353;;:::o;16642:613::-;-1:-1:-1;;;;;16782:20:0;;16774:70;;;;-1:-1:-1;;;16774:70:0;;;;;;;:::i;:::-;17022:108;17058:6;17022:108;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17022:17:0;;:9;:17;;;;;;;;;;;;:108;:21;:108::i;:::-;-1:-1:-1;;;;;17002:17:0;;;:9;:17;;;;;;;;;;;:128;;;;17164:20;;;;;;;:32;;17189:6;17164:24;:32::i;:::-;-1:-1:-1;;;;;17141:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;17212:35;713:25:1;;;17141:20:0;;17212:35;;;;;;686:18:1;17212:35:0;567:177:1;27552:662:0;27620:10;27631;27653:14;27693:13;;;;;;;;;-1:-1:-1;;;;;27693:13:0;-1:-1:-1;;;;;27670:45:0;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27653:64;;27729:7;27765:13;;;;;;;;;-1:-1:-1;;;;;27765:13:0;-1:-1:-1;;;;;27742:50:0;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;27850:13:0;;27817:48;;-1:-1:-1;;;27817:48:0;;-1:-1:-1;;;;;27850:13:0;;;27817:48;;;1754:51:1;-1:-1:-1;;;;;27728:66:0;;;;;-1:-1:-1;27805:9:0;;27817:24;;;;;;1727:18:1;;27817:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27880:29:0;;;;;;:25;:29;;;;;;27805:60;;-1:-1:-1;27880:29:0;;27876:159;;;-1:-1:-1;;;;;27930:23:0;;27948:4;27930:23;;;;:36;;;27964:2;27957:4;:9;27930:36;27926:98;;;28007:1;27995:9;28002:2;27995:4;:9;:::i;:::-;:13;27987:21;;27926:98;-1:-1:-1;;;;;28049:31:0;;;;;;:25;:31;;;;;;;;28045:162;;;-1:-1:-1;;;;;28101:23:0;;28119:4;28101:23;;;;:36;;;28135:2;28128:4;:9;28101:36;28097:99;;;28178:1;28166:9;28171:4;28166:2;:9;:::i;:::-;:13;28158:21;;28097:99;27642:572;;;27552:662;;;;;:::o;26090:1454::-;26145:24;26204:3;26181:20;;26172:6;:29;;;;:::i;:::-;:35;;;;:::i;:::-;26262:22;;-1:-1:-1;;;;;26262:22:0;26220:21;14850:18;;;;;;;;;;;26145:62;;-1:-1:-1;26301:32:0;;;26297:139;;;26354:49;;;16175:25:1;;;16231:2;16216:18;;16209:34;;;26354:49:0;;16148:18:1;26354:49:0;16001:248:1;26297:139:0;26448:18;26469:26;26478:16;26469:8;:26::i;:::-;26448:47;;26523:18;;26510:10;:31;26506:140;;;26594:18;;26562:51;;;16175:25:1;;;16231:2;16216:18;;16209:34;;;;26562:51:0;;16148:18:1;26562:51:0;;;;;;;26628:7;;;26090:1454;:::o;26506:140::-;26690:22;;26666:81;;-1:-1:-1;;;;;26690:22:0;26723:4;26730:16;26666:15;:81::i;:::-;26782:16;;;26796:1;26782:16;;;;;;;;26758:21;;26782:16;;;;;;;;;;-1:-1:-1;26782:16:0;26758:40;;26827:4;26809;26814:1;26809:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26809:23:0;;;:7;;;;;;;;;:23;26861:4;;26843:7;;26861:4;;;26843;;26861;;26843:7;;;;;;:::i;:::-;-1:-1:-1;;;;;26843:23:0;;;:7;;;;;;;;;:23;26909:15;;26877:67;;26894:4;;26909:15;26927:16;26877:8;:67::i;:::-;26981:15;;27139:17;;26981:217;;-1:-1:-1;;;26981:217:0;;-1:-1:-1;;;;;26981:15:0;;;;:69;;:217;;27065:16;;26981:15;;27112:4;;27139:17;;;27172:15;;26981:217;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;27230:4:0;;27303:17;;27268:64;;-1:-1:-1;;;27268:64:0;;-1:-1:-1;;;;;27303:17:0;;;27268:64;;;1754:51:1;27230:4:0;;;-1:-1:-1;27211:9:0;;-1:-1:-1;27230:4:0;;27268:12;;1727:18:1;;27268:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27246:86;-1:-1:-1;27349:16:0;;27345:192;;27424:17;;27469:10;;27382:143;;-1:-1:-1;;;27382:143:0;;-1:-1:-1;;;;;27424:17:0;;;27382:143;;;10032:34:1;27469:10:0;;;10082:18:1;;;10075:43;10134:18;;;10127:34;;;27382:15:0;;;;;;9967:18:1;;27382:143:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27345:192;26134:1410;;;;;;26090:1454;:::o;657:471::-;715:7;960:1;965;960:6;956:47;;-1:-1:-1;990:1:0;983:8;;956:47;1015:9;1027:5;1031:1;1027;:5;:::i;:::-;1015:17;-1:-1:-1;1060:1:0;1051:5;1055:1;1015:17;1051:5;:::i;:::-;:10;1043:56;;;;-1:-1:-1;;;1043:56:0;;17043:2:1;1043:56:0;;;17025:21:1;17082:2;17062:18;;;17055:30;17121:34;17101:18;;;17094:62;-1:-1:-1;;;17172:18:1;;;17165:31;17213:19;;1043:56:0;16841:397:1;1136:132:0;1194:7;1221:39;1225:1;1228;1221:39;;;;;;;;;;;;;;;;;:3;:39::i;279:136::-;337:7;364:43;368:1;371;364:43;;;;;;;;;;;;;;;;;:3;:43::i;1276:312::-;1396:7;1431:12;1424:5;1416:28;;;;-1:-1:-1;;;1416:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1455:9:0;1467:5;1471:1;1467;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:180::-;1456:6;1509:2;1497:9;1488:7;1484:23;1480:32;1477:52;;;1525:1;1522;1515:12;1477:52;-1:-1:-1;1548:23:1;;1397:180;-1:-1:-1;1397:180:1:o;2024:456::-;2101:6;2109;2117;2170:2;2158:9;2149:7;2145:23;2141:32;2138:52;;;2186:1;2183;2176:12;2138:52;2225:9;2212:23;2244:31;2269:5;2244:31;:::i;:::-;2294:5;-1:-1:-1;2351:2:1;2336:18;;2323:32;2364:33;2323:32;2364:33;:::i;:::-;2024:456;;2416:7;;-1:-1:-1;;;2470:2:1;2455:18;;;;2442:32;;2024:456::o;2485:118::-;2571:5;2564:13;2557:21;2550:5;2547:32;2537:60;;2593:1;2590;2583:12;2608:241;2664:6;2717:2;2705:9;2696:7;2692:23;2688:32;2685:52;;;2733:1;2730;2723:12;2685:52;2772:9;2759:23;2791:28;2813:5;2791:28;:::i;3043:247::-;3102:6;3155:2;3143:9;3134:7;3130:23;3126:32;3123:52;;;3171:1;3168;3161:12;3123:52;3210:9;3197:23;3229:31;3254:5;3229:31;:::i;3528:382::-;3593:6;3601;3654:2;3642:9;3633:7;3629:23;3625:32;3622:52;;;3670:1;3667;3660:12;3622:52;3709:9;3696:23;3728:31;3753:5;3728:31;:::i;:::-;3778:5;-1:-1:-1;3835:2:1;3820:18;;3807:32;3848:30;3807:32;3848:30;:::i;:::-;3897:7;3887:17;;;3528:382;;;;;:::o;3915:750::-;4007:6;4015;4023;4076:2;4064:9;4055:7;4051:23;4047:32;4044:52;;;4092:1;4089;4082:12;4044:52;4132:9;4119:23;4161:18;4202:2;4194:6;4191:14;4188:34;;;4218:1;4215;4208:12;4188:34;4256:6;4245:9;4241:22;4231:32;;4301:7;4294:4;4290:2;4286:13;4282:27;4272:55;;4323:1;4320;4313:12;4272:55;4363:2;4350:16;4389:2;4381:6;4378:14;4375:34;;;4405:1;4402;4395:12;4375:34;4460:7;4453:4;4443:6;4440:1;4436:14;4432:2;4428:23;4424:34;4421:47;4418:67;;;4481:1;4478;4471:12;4418:67;4512:4;4504:13;;;;-1:-1:-1;4536:6:1;-1:-1:-1;;4577:20:1;;4564:34;4607:28;4564:34;4607:28;:::i;:::-;4654:5;4644:15;;;3915:750;;;;;:::o;4670:388::-;4738:6;4746;4799:2;4787:9;4778:7;4774:23;4770:32;4767:52;;;4815:1;4812;4805:12;4767:52;4854:9;4841:23;4873:31;4898:5;4873:31;:::i;:::-;4923:5;-1:-1:-1;4980:2:1;4965:18;;4952:32;4993:33;4952:32;4993:33;:::i;5063:380::-;5142:1;5138:12;;;;5185;;;5206:61;;5260:4;5252:6;5248:17;5238:27;;5206:61;5313:2;5305:6;5302:14;5282:18;5279:38;5276:161;;5359:10;5354:3;5350:20;5347:1;5340:31;5394:4;5391:1;5384:15;5422:4;5419:1;5412:15;5276:161;;5063:380;;;:::o;6062:245::-;6129:6;6182:2;6170:9;6161:7;6157:23;6153:32;6150:52;;;6198:1;6195;6188:12;6150:52;6230:9;6224:16;6249:28;6271:5;6249:28;:::i;6312:127::-;6373:10;6368:3;6364:20;6361:1;6354:31;6404:4;6401:1;6394:15;6428:4;6425:1;6418:15;6444:127;6505:10;6500:3;6496:20;6493:1;6486:31;6536:4;6533:1;6526:15;6560:4;6557:1;6550:15;6576:461;6629:3;6667:5;6661:12;6694:6;6689:3;6682:19;6720:4;6749:2;6744:3;6740:12;6733:19;;6786:2;6779:5;6775:14;6807:1;6817:195;6831:6;6828:1;6825:13;6817:195;;;6896:13;;-1:-1:-1;;;;;6892:39:1;6880:52;;6952:12;;;;6987:15;;;;6928:1;6846:9;6817:195;;;-1:-1:-1;7028:3:1;;6576:461;-1:-1:-1;;;;;6576:461:1:o;7042:332::-;7249:6;7238:9;7231:25;7292:2;7287;7276:9;7272:18;7265:30;7212:4;7312:56;7364:2;7353:9;7349:18;7341:6;7312:56;:::i;:::-;7304:64;7042:332;-1:-1:-1;;;;7042:332:1:o;7379:1105::-;7474:6;7505:2;7548;7536:9;7527:7;7523:23;7519:32;7516:52;;;7564:1;7561;7554:12;7516:52;7597:9;7591:16;7626:18;7667:2;7659:6;7656:14;7653:34;;;7683:1;7680;7673:12;7653:34;7721:6;7710:9;7706:22;7696:32;;7766:7;7759:4;7755:2;7751:13;7747:27;7737:55;;7788:1;7785;7778:12;7737:55;7817:2;7811:9;7839:2;7835;7832:10;7829:36;;;7845:18;;:::i;:::-;7891:2;7888:1;7884:10;7923:2;7917:9;7986:2;7982:7;7977:2;7973;7969:11;7965:25;7957:6;7953:38;8041:6;8029:10;8026:22;8021:2;8009:10;8006:18;8003:46;8000:72;;;8052:18;;:::i;:::-;8088:2;8081:22;8138:18;;;8172:15;;;;-1:-1:-1;8214:11:1;;;8210:20;;;8242:19;;;8239:39;;;8274:1;8271;8264:12;8239:39;8298:11;;;;8318:135;8334:6;8329:3;8326:15;8318:135;;;8400:10;;8388:23;;8351:12;;;;8431;;;;8318:135;;;8472:6;7379:1105;-1:-1:-1;;;;;;;;7379:1105:1:o;8489:127::-;8550:10;8545:3;8541:20;8538:1;8531:31;8581:4;8578:1;8571:15;8605:4;8602:1;8595:15;8621:128;8688:9;;;8709:11;;;8706:37;;;8723:18;;:::i;8754:356::-;8956:2;8938:21;;;8975:18;;;8968:30;9034:34;9029:2;9014:18;;9007:62;9101:2;9086:18;;8754:356::o;9603:184::-;9673:6;9726:2;9714:9;9705:7;9701:23;9697:32;9694:52;;;9742:1;9739;9732:12;9694:52;-1:-1:-1;9765:16:1;;9603:184;-1:-1:-1;9603:184:1:o;10172:135::-;10211:3;10232:17;;;10229:43;;10252:18;;:::i;:::-;-1:-1:-1;10299:1:1;10288:13;;10172:135::o;10312:794::-;10534:2;10546:21;;;10519:18;;10602:22;;;10486:4;10681:6;10655:2;10640:18;;10486:4;10715:304;10729:6;10726:1;10723:13;10715:304;;;10804:6;10791:20;10824:31;10849:5;10824:31;:::i;:::-;-1:-1:-1;;;;;10880:31:1;10868:44;;10935:4;10994:15;;;;10959:12;;;;10908:1;10744:9;10715:304;;;10719:3;11036;11028:11;;;;11091:6;11084:14;11077:22;11070:4;11059:9;11055:20;11048:52;10312:794;;;;;;:::o;11518:125::-;11583:9;;;11604:10;;;11601:36;;;11617:18;;:::i;12812:401::-;13014:2;12996:21;;;13053:2;13033:18;;;13026:30;13092:34;13087:2;13072:18;;13065:62;-1:-1:-1;;;13158:2:1;13143:18;;13136:35;13203:3;13188:19;;12812:401::o;14702:251::-;14772:6;14825:2;14813:9;14804:7;14800:23;14796:32;14793:52;;;14841:1;14838;14831:12;14793:52;14873:9;14867:16;14892:31;14917:5;14892:31;:::i;14958:188::-;15037:13;;-1:-1:-1;;;;;15079:42:1;;15069:53;;15059:81;;15136:1;15133;15126:12;15059:81;14958:188;;;:::o;15151:450::-;15238:6;15246;15254;15307:2;15295:9;15286:7;15282:23;15278:32;15275:52;;;15323:1;15320;15313:12;15275:52;15346:40;15376:9;15346:40;:::i;:::-;15336:50;;15405:49;15450:2;15439:9;15435:18;15405:49;:::i;:::-;15395:59;;15497:2;15486:9;15482:18;15476:25;15541:10;15534:5;15530:22;15523:5;15520:33;15510:61;;15567:1;15564;15557:12;15606:168;15679:9;;;15710;;15727:15;;;15721:22;;15707:37;15697:71;;15748:18;;:::i;15779:217::-;15819:1;15845;15835:132;;15889:10;15884:3;15880:20;15877:1;15870:31;15924:4;15921:1;15914:15;15952:4;15949:1;15942:15;15835:132;-1:-1:-1;15981:9:1;;15779:217::o;16254:582::-;16553:6;16542:9;16535:25;16596:6;16591:2;16580:9;16576:18;16569:34;16639:3;16634:2;16623:9;16619:18;16612:31;16516:4;16660:57;16712:3;16701:9;16697:19;16689:6;16660:57;:::i;:::-;-1:-1:-1;;;;;16753:32:1;;;;16748:2;16733:18;;16726:60;-1:-1:-1;16817:3:1;16802:19;16795:35;16652:65;16254:582;-1:-1:-1;;;16254:582:1:o

Swarm Source

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