ETH Price: $3,358.73 (-2.23%)

Token

FX1 Sports (FX1)
 

Overview

Max Total Supply

250,000,000 FX1

Holders

1,578

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
MEV Bot: 0x000...722
Balance
0.000000000000004391 FX1

Value
$0.00
0x0000000009b1Fd739Aea4B4581034DE77bE8e722
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:
FX1SportsToken

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 2000 runs

Other Settings:
default evmVersion
File 1 of 8 : FX1SportsToken.sol
//SPDX-License-Identifier: None

pragma solidity ^0.8.19;

import "@openzeppelin/contracts/access/Ownable2Step.sol";
import "./interfaces/IUniswapV2Factory.sol";
import "./interfaces/IUniswapV2Router02.sol";
import "./interfaces/IFX1SportsToken.sol";

/// @title FX1 Sports Token
/// @title https://fx1.io/
/// @title https://t.me/fx1_sports_portal
/// @author https://PROOFplatform.io
/// @author https://5thWeb.io

contract FX1SportsToken is Ownable2Step, IFX1SportsToken {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public bots;
    mapping(address => bool) public excludedFromFees;
    mapping(address => bool) public excludedFromMaxTransfer;
    mapping(address => bool) public excludedFromMaxWallet;
    mapping(address => bool) public whitelists;

    uint256 private _totalSupply = 250_000_000 * 10 ** _decimals;
    uint256 public launchTime;
    uint256 public whitelistPeriod;
    uint256 public swapThreshold;
    uint256 public maxTransferAmount;
    uint256 public maxWalletAmount;
    uint256 private accLiquidityAmount;
    uint256 private accMarketingAmount;
    uint256 private accPROOFAmount;

    address public marketingTaxRecv;
    address public proofRevenue;
    address public proofRewards;
    address public proofAdmin;
    address public pair;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;

    bool private inSwapLiquidity;

    string private _name = "FX1 Sports";
    string private _symbol = "FX1";

    uint16 public immutable FIXED_POINT = 1000;
    uint8 private constant _decimals = 18;

    IUniswapV2Router02 public dexRouter;
    BuyFeeRate public buyfeeRate;
    SellFeeRate public sellfeeRate;

    modifier onlyPROOFAdmin() {
        require(
            proofAdmin == _msgSender(),
            "Ownable: caller is not the proofAdmin"
        );
        _;
    }

    constructor(Param memory _param) {
        require(
            _param.proofRevenue != address(0),
            "invalid PROOF Revenue address"
        );
        require(
            _param.proofRewards != address(0),
            "invalid PROOF Rewards address"
        );
        require(
            _param.proofAdmin != address(0),
            "invalid PROOF Rewards address"
        );
        require(
            _param.marketingTaxRecv != address(0),
            "invalid MarketingTaxRecv address"
        );
        require(
            _param.teamAllocator_1 != address(0),
            "invalid teamAllocator_1 address"
        );
        require(
            _param.teamAllocator_2 != address(0),
            "invalid teamAllocator_2 address"
        );
        require(_param.dexRouter != address(0), "invalid dexRouter adddress");
        require(_param.whitelistPeriod > 0, "invalid whitelistPeriod");
        require(_param.proofFeeDuration > 0, "invalid proofFeeDuration");
        require(
            _param.highPROOFFeeRate > 0 &&
                _param.highPROOFFeeRate > _param.normalPROOFFeeRate,
            "invalid highPROOFFeeRate"
        );
        require(_param.normalPROOFFeeRate > 0, "invalid normalPROOFFeeRate");
        require(
            _param.totalTeamAllocationRate > 0,
            "invalid totalTeamAllocationRate"
        );
        require(
            _param.totalTeamAllocationRate ==
                _param.teamAllocationRate_1 + _param.teamAllocationRate_2,
            "invalid teamAllocationRates"
        );

        address sender = msg.sender;
        proofRevenue = _param.proofRevenue;
        proofRewards = _param.proofRewards;
        proofAdmin = _param.proofAdmin;
        marketingTaxRecv = _param.marketingTaxRecv;
        dexRouter = IUniswapV2Router02(_param.dexRouter);
        whitelistPeriod = _param.whitelistPeriod;
        buyfeeRate.highPROOFFeeRate = _param.highPROOFFeeRate;
        buyfeeRate.normalPROOFFeeRate = _param.normalPROOFFeeRate;
        buyfeeRate.liquidityFeeRate = _param.liquidityFeeRate;
        buyfeeRate.marketingFeeRate = _param.marketingFeeRate;
        buyfeeRate.proofFeeDuration = _param.proofFeeDuration;
        buyfeeRate.highTotalFeeRate =
            _param.marketingFeeRate +
            _param.liquidityFeeRate +
            _param.highPROOFFeeRate;
        buyfeeRate.normalTotalFeeRate =
            _param.marketingFeeRate +
            _param.liquidityFeeRate +
            _param.normalPROOFFeeRate;

        sellfeeRate.highPROOFFeeRate = _param.highPROOFFeeRate;
        sellfeeRate.normalPROOFFeeRate = _param.normalPROOFFeeRate;
        sellfeeRate.liquidityFeeRate = _param.liquidityFeeRate;
        sellfeeRate.marketingFeeRate = _param.marketingFeeRate;
        sellfeeRate.proofFeeDuration = _param.proofFeeDuration;
        sellfeeRate.highTotalFeeRate =
            _param.marketingFeeRate +
            _param.liquidityFeeRate +
            _param.highPROOFFeeRate;
        sellfeeRate.normalTotalFeeRate =
            _param.marketingFeeRate +
            _param.liquidityFeeRate +
            _param.normalPROOFFeeRate;

        pair = IUniswapV2Factory(dexRouter.factory()).createPair(
            dexRouter.WETH(),
            address(this)
        );

        excludedFromFees[sender] = true;
        excludedFromMaxTransfer[sender] = true;
        excludedFromMaxTransfer[pair] = true;
        excludedFromMaxTransfer[address(this)] = true;
        excludedFromMaxWallet[sender] = true;
        excludedFromMaxWallet[pair] = true;
        excludedFromMaxWallet[address(this)] = true;
        excludedFromMaxWallet[proofRevenue] = true;
        excludedFromMaxWallet[proofRewards] = true;
        excludedFromMaxWallet[proofAdmin] = true;
        excludedFromMaxWallet[marketingTaxRecv] = true;
        whitelists[sender] = true;
        whitelists[pair] = true;
        whitelists[address(this)] = true;

        uint256 totalTeamAllocationAmount = (_totalSupply *
            _param.totalTeamAllocationRate) / FIXED_POINT;
        uint256 teamAllocationAmount_1 = (_totalSupply *
            _param.teamAllocationRate_1) / FIXED_POINT;
        uint256 teamAllocationAmount_2 = totalTeamAllocationAmount -
            teamAllocationAmount_1;
        uint256 amountForDeployer = _totalSupply - totalTeamAllocationAmount;
        _balances[_param.teamAllocator_1] += teamAllocationAmount_1;
        _balances[_param.teamAllocator_2] += teamAllocationAmount_2;
        _balances[msg.sender] += amountForDeployer;
        emit Transfer(address(0), msg.sender, amountForDeployer);
        emit Transfer(
            address(0),
            _param.teamAllocator_1,
            teamAllocationAmount_1
        );
        emit Transfer(
            address(0),
            _param.teamAllocator_2,
            teamAllocationAmount_2
        );
        swapThreshold = _totalSupply / 10000; // 0.01%
        maxTransferAmount = (_totalSupply * 5) / 1000; // 0.5%
        maxWalletAmount = (_totalSupply * 1) / 100; // 1%
    }

    // !---------------- functions for ERC20 token ----------------!
    function name() external view returns (string memory) {
        return _name;
    }

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

    function decimals() external pure returns (uint8) {
        return _decimals;
    }

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

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

    function transfer(
        address _recipient,
        uint256 _amount
    ) external override returns (bool) {
        _transfer(msg.sender, _recipient, _amount);
        return true;
    }

    function allowance(
        address _owner,
        address _spender
    ) external view override returns (uint256) {
        return _allowances[_owner][_spender];
    }

    function approve(
        address _spender,
        uint256 _amount
    ) external override returns (bool) {
        _approve(msg.sender, _spender, _amount);
        return true;
    }

    function transferFrom(
        address _sender,
        address _recipient,
        uint256 _amount
    ) external override returns (bool) {
        uint256 currentAllowance = _allowances[_sender][msg.sender];
        require(currentAllowance >= _amount, "Transfer > allowance");
        _approve(_sender, msg.sender, currentAllowance - _amount);
        _transfer(_sender, _recipient, _amount);
        return true;
    }

    // !---------------- functions for ERC20 token ----------------!

    /// @inheritdoc IFX1SportsToken
    function updatePROOFAdmin(
        address _newAdmin
    ) external override onlyPROOFAdmin {
        require(_newAdmin != address(0), "invalid proofAdmin address");
        proofAdmin = _newAdmin;
    }

    /// @inheritdoc IFX1SportsToken
    function setBots(address[] memory _bots) external override onlyPROOFAdmin {
        uint256 length = _bots.length;
        require(length > 0, "invalid array length");
        for (uint256 i = 0; i < _bots.length; i++) {
            bots[_bots[i]] = true;
        }
    }

    /// @inheritdoc IFX1SportsToken
    function cancelToken() external override onlyPROOFAdmin {
        excludedFromFees[address(dexRouter)] = true;
        excludedFromMaxTransfer[address(dexRouter)] = true;
        excludedFromMaxWallet[address(dexRouter)] = true;
        excludedFromMaxTransfer[owner()] = true;
        excludedFromMaxWallet[owner()] = true;
        _transferOwnership(proofAdmin);
    }

    /// @inheritdoc IFX1SportsToken
    function formatPROOFFee() external override onlyPROOFAdmin {
        require(buyfeeRate.normalPROOFFeeRate != 0, "already reduced");
        require(buyfeeRate.highPROOFFeeRate != 0, "already reduced");
        require(sellfeeRate.normalPROOFFeeRate != 0, "already reduced");
        require(sellfeeRate.highPROOFFeeRate != 0, "already reduced");
        buyfeeRate.highTotalFeeRate =
            buyfeeRate.highTotalFeeRate +
            0 -
            buyfeeRate.highPROOFFeeRate;
        buyfeeRate.highPROOFFeeRate = 0;
        buyfeeRate.normalTotalFeeRate =
            buyfeeRate.normalTotalFeeRate +
            0 -
            buyfeeRate.normalPROOFFeeRate;
        buyfeeRate.normalPROOFFeeRate = 0;

        sellfeeRate.highTotalFeeRate =
            sellfeeRate.highTotalFeeRate +
            0 -
            sellfeeRate.highPROOFFeeRate;
        sellfeeRate.highPROOFFeeRate = 0;
        sellfeeRate.normalTotalFeeRate =
            sellfeeRate.normalTotalFeeRate +
            0 -
            sellfeeRate.normalPROOFFeeRate;
        sellfeeRate.normalPROOFFeeRate = 0;
    }

    /// @inheritdoc IFX1SportsToken
    function delBot(address _notbot) external override {
        address sender = _msgSender();
        require(
            sender == proofAdmin || sender == owner(),
            "Ownable: caller doesn't have permission"
        );
        bots[_notbot] = false;
    }

    /// @inheritdoc IFX1SportsToken
    function setLaunchBegin() external override onlyOwner {
        require(launchTime == 0, "already launched");
        launchTime = block.timestamp;
    }

    /// @inheritdoc IFX1SportsToken
    function addWhitelists(
        address[] memory _accounts,
        bool _add
    ) external override onlyOwner {
        uint256 length = _accounts.length;
        require(length > 0, "invalid accounts length");

        for (uint256 i = 0; i < length; i++) {
            whitelists[_accounts[i]] = _add;
        }
    }

    /// @inheritdoc IFX1SportsToken
    function excludeWalletsFromMaxTransfer(
        address[] memory _accounts,
        bool _add
    ) external override onlyOwner {
        uint256 length = _accounts.length;
        require(length > 0, "invalid length array");
        for (uint256 i = 0; i < length; i++) {
            excludedFromMaxTransfer[_accounts[i]] = _add;
        }
    }

    /// @inheritdoc IFX1SportsToken
    function excludeWalletsFromMaxWallets(
        address[] memory _accounts,
        bool _add
    ) external override onlyOwner {
        uint256 length = _accounts.length;
        require(length > 0, "invalid length array");
        for (uint256 i = 0; i < length; i++) {
            excludedFromMaxWallet[_accounts[i]] = _add;
        }
    }

    /// @inheritdoc IFX1SportsToken
    function excludeWalletsFromFees(
        address[] memory _accounts,
        bool _add
    ) external override onlyOwner {
        uint256 length = _accounts.length;
        require(length > 0, "invalid length array");
        for (uint256 i = 0; i < length; i++) {
            excludedFromFees[_accounts[i]] = _add;
        }
    }

    /// @inheritdoc IFX1SportsToken
    function setMaxTransferAmount(
        uint256 newLimit
    ) external override onlyOwner {
        require(newLimit >= (_totalSupply * 5) / 1000, "Min 0.5% limit");
        maxTransferAmount = newLimit;
    }

    /// @inheritdoc IFX1SportsToken
    function setMaxWalletAmount(uint256 newLimit) external override onlyOwner {
        require(newLimit >= (_totalSupply * 10) / 1000, "Min 1% limit");
        maxWalletAmount = newLimit;
    }

    /// @inheritdoc IFX1SportsToken
    function setMarketingTaxWallet(
        address _marketingTaxWallet
    ) external override onlyOwner {
        require(
            _marketingTaxWallet != address(0),
            "invalid marketingTaxWallet address"
        );
        marketingTaxRecv = _marketingTaxWallet;
    }

    /// @inheritdoc IFX1SportsToken
    function reducePROOFFeeRate() external override onlyOwner {
        require(
            block.timestamp > launchTime + buyfeeRate.proofFeeDuration,
            "You must wait 72 hrs"
        );
        buyfeeRate.highTotalFeeRate =
            buyfeeRate.highTotalFeeRate +
            10 -
            buyfeeRate.highPROOFFeeRate;
        buyfeeRate.highPROOFFeeRate = 10;
        buyfeeRate.normalTotalFeeRate =
            buyfeeRate.normalTotalFeeRate +
            10 -
            buyfeeRate.normalPROOFFeeRate;
        buyfeeRate.normalPROOFFeeRate = 10;
        sellfeeRate.highTotalFeeRate =
            sellfeeRate.highTotalFeeRate +
            10 -
            sellfeeRate.highPROOFFeeRate;
        sellfeeRate.highPROOFFeeRate = 10;
        sellfeeRate.normalTotalFeeRate =
            sellfeeRate.normalTotalFeeRate +
            10 -
            sellfeeRate.normalPROOFFeeRate;
        sellfeeRate.normalPROOFFeeRate = 10;
    }

    /// @inheritdoc IFX1SportsToken
    function setMarketingFeeRate(
        uint16 _marketingBuyFeeRate,
        uint16 _marketingSellFeeRate
    ) external override onlyOwner {
        uint16 maxRateSet = 100;
        require(
            _marketingBuyFeeRate <= maxRateSet &&
                _marketingSellFeeRate <= maxRateSet,
            "Max Rate exceeded, please lower value"
        );
            buyfeeRate.highTotalFeeRate =
                buyfeeRate.highTotalFeeRate +
                _marketingBuyFeeRate -
                buyfeeRate.marketingFeeRate;
            buyfeeRate.normalTotalFeeRate =
                buyfeeRate.normalTotalFeeRate +
                _marketingBuyFeeRate -
                buyfeeRate.marketingFeeRate;
        buyfeeRate.marketingFeeRate = _marketingBuyFeeRate;
            sellfeeRate.highTotalFeeRate =
                sellfeeRate.highTotalFeeRate +
                _marketingSellFeeRate -
                sellfeeRate.marketingFeeRate;
            sellfeeRate.normalTotalFeeRate =
                sellfeeRate.normalTotalFeeRate +
                _marketingSellFeeRate -
                sellfeeRate.marketingFeeRate;
        sellfeeRate.marketingFeeRate = _marketingSellFeeRate;
    }

    /// @inheritdoc IFX1SportsToken
    function setLiquidityFeeRate(
        uint16 _liquidityBuyFeeRate,
        uint16 _liquiditySellFeeRate
    ) external override onlyOwner {
        uint16 maxRateSet = 100;
        require(
            _liquidityBuyFeeRate <= maxRateSet &&
                _liquiditySellFeeRate <= maxRateSet,
            "Max Rate exceeded, please lower value"
        );
            buyfeeRate.highTotalFeeRate =
                buyfeeRate.highTotalFeeRate +
                _liquidityBuyFeeRate -
                buyfeeRate.liquidityFeeRate;
            buyfeeRate.normalTotalFeeRate =
                buyfeeRate.normalTotalFeeRate +
                _liquidityBuyFeeRate -
                buyfeeRate.liquidityFeeRate;
        buyfeeRate.liquidityFeeRate = _liquidityBuyFeeRate;
            sellfeeRate.highTotalFeeRate =
                sellfeeRate.highTotalFeeRate +
                _liquiditySellFeeRate -
                sellfeeRate.liquidityFeeRate;
            sellfeeRate.normalTotalFeeRate =
                sellfeeRate.normalTotalFeeRate +
                _liquiditySellFeeRate -
                sellfeeRate.liquidityFeeRate;
        sellfeeRate.liquidityFeeRate = _liquiditySellFeeRate;
    }

    /// @inheritdoc IFX1SportsToken
    function setSwapThreshold(
        uint256 _swapThreshold
    ) external override onlyOwner {
        require(_swapThreshold > 0, "invalid swapThreshold");
        swapThreshold = _swapThreshold;
    }

    receive() external payable {}

    function _transfer(
        address _sender,
        address _recipient,
        uint256 _amount
    ) internal {
        require(_sender != address(0), "transfer from zero address");
        require(!bots[_sender] || !bots[_recipient], "no bots allowed");
        require(_recipient != address(0), "transfer to zero address");
        require(_amount > 0, "zero amount");
        require(_balances[_sender] >= _amount, "not enough amount to transfer");
        require(_sender == owner() || launchTime != 0, "not launched yet");
        if (block.timestamp < launchTime + whitelistPeriod) {
            require(whitelists[_recipient], "only whitelist");
        }
        require(
            excludedFromMaxTransfer[_sender] ||
                _amount <= maxTransferAmount + (10 * 10 ** _decimals),
            "exceeds to maxTransferAmount"
        );
        require(
            excludedFromMaxWallet[_recipient] ||
                _balances[_recipient] + _amount <=
                maxWalletAmount + (10 * 10 ** _decimals),
            "exceeds to maxWalletAmount"
        );

        if (
            inSwapLiquidity ||
            excludedFromFees[_recipient] ||
            excludedFromFees[_sender]
        ) {
            _basicTransfer(_sender, _recipient, _amount);
            emit Transfer(_sender, _recipient, _amount);
            return;
        }

        if (_sender == pair) {
            // buy
            _taxonBuyTransfer(_sender, _recipient, _amount);
        } else {
            _swapBack();
            if (_recipient == pair) {
                // sell
                _taxonSellTransfer(_sender, _recipient, _amount);
            } else {
                _basicTransfer(_sender, _recipient, _amount);
            }
        }

        emit Transfer(_sender, _recipient, _amount);
    }

    function _approve(
        address _owner,
        address _spender,
        uint256 _amount
    ) private {
        require(_owner != address(0), "Approve from zero");
        require(_spender != address(0), "Approve to zero");
        _allowances[_owner][_spender] = _amount;
        emit Approval(_owner, _spender, _amount);
    }

    function _swapBack() internal {
        uint256 accTotalAmount = accPROOFAmount +
            accLiquidityAmount +
            accMarketingAmount;
        if (accTotalAmount <= swapThreshold) {
            return;
        }
        inSwapLiquidity = true;
        uint256 swapAmountForLiquidity = accLiquidityAmount / 2;
        uint256 swapAmount = accTotalAmount - swapAmountForLiquidity;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();
        _approve(address(this), address(dexRouter), swapAmount);
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 swappedETHAmount = address(this).balance;
        require(swappedETHAmount > 0, "too small token for swapBack");
        uint256 ethForLiquidity = (swappedETHAmount * swapAmountForLiquidity) /
            swapAmount;

        if (ethForLiquidity > 0) {
            uint256 amountForLiquidity = accLiquidityAmount -
                swapAmountForLiquidity;
            _approve(address(this), address(dexRouter), amountForLiquidity);
            dexRouter.addLiquidityETH{value: ethForLiquidity}(
                address(this),
                amountForLiquidity,
                0,
                0,
                0x000000000000000000000000000000000000dEaD,
                block.timestamp
            );
            swappedETHAmount -= ethForLiquidity;
        }

        uint256 ethForPROOF = (swappedETHAmount * accPROOFAmount) / swapAmount;
        uint256 ethForPROOFRevenue = ethForPROOF / 2;
        uint256 ethForPROOFRewards = ethForPROOF - ethForPROOFRevenue;
        uint256 ethForMarketing = swappedETHAmount - ethForPROOF;
        _transferETH(proofRevenue, ethForPROOFRevenue);
        _transferETH(proofRewards, ethForPROOFRewards);
        _transferETH(marketingTaxRecv, ethForMarketing);

        accLiquidityAmount = 0;
        accMarketingAmount = 0;
        accPROOFAmount = 0;
        inSwapLiquidity = false;
    }

    function _taxonSellTransfer(
        address _sender,
        address _recipient,
        uint256 _amount
    ) internal {
        (
            uint16 totalFeeRate,
            uint16 proofFeeRate,
            ,
            uint16 liquidityFeeRate
        ) = _getSellFeeRate();

        uint256 feeAmount = (_amount * totalFeeRate) / FIXED_POINT;
        uint256 proofFeeAmount = (_amount * proofFeeRate) / FIXED_POINT;
        uint256 liquidityFeeAmount = (_amount * liquidityFeeRate) / FIXED_POINT;
        uint256 marketingFeeAmount = feeAmount -
            proofFeeAmount -
            liquidityFeeAmount;
        uint256 recvAmount = _amount - feeAmount;

        _balances[_sender] -= _amount;
        _balances[_recipient] += recvAmount;
        _balances[address(this)] += feeAmount;
        accPROOFAmount += proofFeeAmount;
        accLiquidityAmount += liquidityFeeAmount;
        accMarketingAmount += marketingFeeAmount;
    }

    function _taxonBuyTransfer(
        address _sender,
        address _recipient,
        uint256 _amount
    ) internal {
        (
            uint16 totalFeeRate,
            uint16 proofFeeRate,
            ,
            uint16 liquidityFeeRate
        ) = _getBuyFeeRate();

        uint256 feeAmount = (_amount * totalFeeRate) / FIXED_POINT;
        uint256 proofFeeAmount = (_amount * proofFeeRate) / FIXED_POINT;
        uint256 liquidityFeeAmount = (_amount * liquidityFeeRate) / FIXED_POINT;
        uint256 marketingFeeAmount = feeAmount -
            proofFeeAmount -
            liquidityFeeAmount;
        uint256 recvAmount = _amount - feeAmount;

        _balances[_sender] -= _amount;
        _balances[_recipient] += recvAmount;
        _balances[address(this)] += feeAmount;
        accPROOFAmount += proofFeeAmount;
        accLiquidityAmount += liquidityFeeAmount;
        accMarketingAmount += marketingFeeAmount;
    }

    function _basicTransfer(
        address _sender,
        address _recipient,
        uint256 _amount
    ) internal {
        _balances[_sender] -= _amount;
        _balances[_recipient] += _amount;
    }

    function _getSellFeeRate()
        internal
        view
        returns (
            uint16 _totalFeeRate,
            uint16 _proofFeeRate,
            uint16 _marketingFeeRate,
            uint16 _liquidityFeeRate
        )
    {
        if (block.timestamp < launchTime + sellfeeRate.proofFeeDuration) {
            return (
                sellfeeRate.highTotalFeeRate,
                sellfeeRate.highPROOFFeeRate,
                sellfeeRate.marketingFeeRate,
                sellfeeRate.liquidityFeeRate
            );
        } else {
            return (
                sellfeeRate.normalTotalFeeRate,
                sellfeeRate.normalPROOFFeeRate,
                sellfeeRate.marketingFeeRate,
                sellfeeRate.liquidityFeeRate
            );
        }
    }

    function _getBuyFeeRate()
        internal
        view
        returns (
            uint16 _totalFeeRate,
            uint16 _proofFeeRate,
            uint16 _marketingFeeRate,
            uint16 _liquidityFeeRate
        )
    {
        if (block.timestamp < launchTime + buyfeeRate.proofFeeDuration) {
            return (
                buyfeeRate.highTotalFeeRate,
                buyfeeRate.highPROOFFeeRate,
                buyfeeRate.marketingFeeRate,
                buyfeeRate.liquidityFeeRate
            );
        } else {
            return (
                buyfeeRate.normalTotalFeeRate,
                buyfeeRate.normalPROOFFeeRate,
                buyfeeRate.marketingFeeRate,
                buyfeeRate.liquidityFeeRate
            );
        }
    }

    function _transferETH(address _recipient, uint256 _amount) internal {
        if (_amount == 0) return;
        (bool sent, ) = _recipient.call{value: _amount}("");
        require(sent, "sending ETH failed");
    }
}

File 2 of 8 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 3 of 8 : Ownable2Step.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (access/Ownable2Step.sol)

pragma solidity ^0.8.0;

import "./Ownable.sol";

/**
 * @dev Contract module which provides access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership} and {acceptOwnership}.
 *
 * This module is used through inheritance. It will make available all functions
 * from parent (Ownable).
 */
abstract contract Ownable2Step is Ownable {
    address private _pendingOwner;

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

    /**
     * @dev Returns the address of the pending owner.
     */
    function pendingOwner() public view virtual returns (address) {
        return _pendingOwner;
    }

    /**
     * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual override onlyOwner {
        _pendingOwner = newOwner;
        emit OwnershipTransferStarted(owner(), newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual override {
        delete _pendingOwner;
        super._transferOwnership(newOwner);
    }

    /**
     * @dev The new owner accepts the ownership transfer.
     */
    function acceptOwnership() external {
        address sender = _msgSender();
        require(pendingOwner() == sender, "Ownable2Step: caller is not the new owner");
        _transferOwnership(sender);
    }
}

File 4 of 8 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.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 5 of 8 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 6 of 8 : IFX1SportsToken.sol
//SPDX-License-Identifier: None

pragma solidity ^0.8.19;

import "@openzeppelin/contracts/token/ERC20/IERC20.sol";

/// @title FX1 Sports Token
/// @title https://fx1.io/
/// @title https://t.me/fx1_sports_portal
/// @author https://PROOFplatform.io
/// @author https://5thWeb.io

interface IFX1SportsToken is IERC20 {
    struct Param {
        address proofRevenue;
        address proofRewards;
        address proofAdmin;
        address marketingTaxRecv;
        address dexRouter;
        address teamAllocator_1;
        address teamAllocator_2;
        uint256 whitelistPeriod;
        uint256 proofFeeDuration;
        uint16 highPROOFFeeRate;
        uint16 normalPROOFFeeRate;
        uint16 marketingFeeRate;
        uint16 liquidityFeeRate;
        uint16 totalTeamAllocationRate;
        uint16 teamAllocationRate_1;
        uint16 teamAllocationRate_2;
    }

    struct BuyFeeRate {
        uint256 proofFeeDuration;
        uint16 highTotalFeeRate;
        uint16 normalTotalFeeRate;
        uint16 highPROOFFeeRate;
        uint16 normalPROOFFeeRate;
        uint16 marketingFeeRate;
        uint16 liquidityFeeRate;
    }

    struct SellFeeRate {
        uint256 proofFeeDuration;
        uint16 highTotalFeeRate;
        uint16 normalTotalFeeRate;
        uint16 highPROOFFeeRate;
        uint16 normalPROOFFeeRate;
        uint16 marketingFeeRate;
        uint16 liquidityFeeRate;
    }

    /// @notice Cancels Token from Fees and transfers ownership to PROOF.
    /// @dev Only PROOF Admin can call this function.
    function cancelToken() external;

    /// @notice Remove PROOFFeeRate.
    /// @dev Only PROOF Admin can call this function.
    function formatPROOFFee() external;

    /// @notice Locks trading until called. Cannont be called twice.
    /// @dev Only owner can call this function.
    function setLaunchBegin()external;

    /// @notice Set proofAdmin wallet address.
    /// @dev Only PROOF Admin can call this function.
    /// @param newAdmin The address of proofAdmin wallet.
    function updatePROOFAdmin(address newAdmin) external;

    /// @notice Add bots.
    /// @dev Only PROOF Admin can call this function.
    /// @param bots_ The address of bot.
    function setBots(address[] memory bots_) external;

    /// @notice Remove bots.
    /// @dev Only PROOF Admin and Owner can call this function.
    /// @param notbot The address to be removed from bots.
    function delBot(address notbot) external;

    /// @notice Add/Remove whitelists.
    /// @dev Only owner can call this function.
    /// @param _accounts The address of whitelists.
    /// @param _add True/False = Add/Remove
    function addWhitelists(address[] memory _accounts, bool _add) external;

    /// @notice Add/Remove wallets to excludedMaxTransfer.
    /// @dev Only owner can call this function.
    /// @param _accounts The address of accounts.
    /// @param _add True/False = Add/Remove
    function excludeWalletsFromMaxTransfer(
        address[] memory _accounts,
        bool _add
    ) external;

    /// @notice Add/Remove wallets to excludedMaxWallet.
    /// @dev Only owner can call this function.
    /// @param _accounts The address of accounts.
    /// @param _add True/False = Add/Remove
    function excludeWalletsFromMaxWallets(
        address[] memory _accounts,
        bool _add
    ) external;

    /// @notice Add/Remove wallets to excludedFromFees.
    /// @dev Only owner can call this function.
    /// @param _accounts The address of accounts.
    /// @param _add True/False = Add/Remove
    function excludeWalletsFromFees(
        address[] memory _accounts,
        bool _add
    ) external;

    /// @notice Set maxTransferAmount.
    /// @dev Only owner can call this function.
    /// @param _maxTransferAmount New maxTransferAmount.
    function setMaxTransferAmount(uint256 _maxTransferAmount) external;

    /// @notice Set maxWalletAmount.
    /// @dev Only owner can call this function.
    /// @param _maxWalletAmount New maxWalletAmount.
    function setMaxWalletAmount(uint256 _maxWalletAmount) external;

    /// @notice Set marketingTaxRecipient wallet address.
    /// @dev Only owner can call this function.
    /// @param _marketingTaxWallet The address of marketingTaxRecipient wallet.
    function setMarketingTaxWallet(address _marketingTaxWallet) external;

    /// @notice Reduce PROOFFeeRate.
    /// @dev Only owner can call this function.
    function reducePROOFFeeRate() external;

    /// @notice Set MarketingFeeRate.
    /// @dev Only owner can call this function.
    /// @dev Max Rate of 100(10%) 10 = 1%
    /// @param _marketingBuyFeeRate New MarketingBuyFeeRate.
    /// @param _marketingSellFeeRate New MarketingSellFeeRate.
    function setMarketingFeeRate(
        uint16 _marketingBuyFeeRate, 
        uint16 _marketingSellFeeRate
    ) external;

    /// @notice Set LiquidityFeeRate.
    /// @dev Only owner can call this function.
    /// @dev Max Rate of 100(10%) 10 = 1%
    /// @param _liquidityBuyFeeRate New liquiditySellFeeRate.
    /// @param _liquiditySellFeeRate New liquidityBuyFeeRate.
    function setLiquidityFeeRate(
        uint16 _liquidityBuyFeeRate,
        uint16 _liquiditySellFeeRate
    ) external;

    /// @notice Set swapThreshold.
    /// @dev Only owner can call this function.
    /// @param _swapThreshold New swapThreshold amount.
    function setSwapThreshold(uint256 _swapThreshold) external;
}

File 7 of 8 : IUniswapV2Factory.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

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 8 of 8 : IUniswapV2Router02.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    )
        external
        payable
        returns (uint amountToken, uint amountETH, uint liquidity);

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountToken, uint amountETH);

    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapExactETHForTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);

    function swapTokensForExactETH(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapExactTokensForETH(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapETHForExactTokens(
        uint amountOut,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);

    function quote(
        uint amountA,
        uint reserveA,
        uint reserveB
    ) external pure returns (uint amountB);

    function getAmountOut(
        uint amountIn,
        uint reserveIn,
        uint reserveOut
    ) external pure returns (uint amountOut);

    function getAmountIn(
        uint amountOut,
        uint reserveIn,
        uint reserveOut
    ) external pure returns (uint amountIn);

    function getAmountsOut(
        uint amountIn,
        address[] calldata path
    ) external view returns (uint[] memory amounts);

    function getAmountsIn(
        uint amountOut,
        address[] calldata path
    ) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);

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

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

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[{"components":[{"internalType":"address","name":"proofRevenue","type":"address"},{"internalType":"address","name":"proofRewards","type":"address"},{"internalType":"address","name":"proofAdmin","type":"address"},{"internalType":"address","name":"marketingTaxRecv","type":"address"},{"internalType":"address","name":"dexRouter","type":"address"},{"internalType":"address","name":"teamAllocator_1","type":"address"},{"internalType":"address","name":"teamAllocator_2","type":"address"},{"internalType":"uint256","name":"whitelistPeriod","type":"uint256"},{"internalType":"uint256","name":"proofFeeDuration","type":"uint256"},{"internalType":"uint16","name":"highPROOFFeeRate","type":"uint16"},{"internalType":"uint16","name":"normalPROOFFeeRate","type":"uint16"},{"internalType":"uint16","name":"marketingFeeRate","type":"uint16"},{"internalType":"uint16","name":"liquidityFeeRate","type":"uint16"},{"internalType":"uint16","name":"totalTeamAllocationRate","type":"uint16"},{"internalType":"uint16","name":"teamAllocationRate_1","type":"uint16"},{"internalType":"uint16","name":"teamAllocationRate_2","type":"uint16"}],"internalType":"struct IFX1SportsToken.Param","name":"_param","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","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":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"FIXED_POINT","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"},{"internalType":"bool","name":"_add","type":"bool"}],"name":"addWhitelists","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyfeeRate","outputs":[{"internalType":"uint256","name":"proofFeeDuration","type":"uint256"},{"internalType":"uint16","name":"highTotalFeeRate","type":"uint16"},{"internalType":"uint16","name":"normalTotalFeeRate","type":"uint16"},{"internalType":"uint16","name":"highPROOFFeeRate","type":"uint16"},{"internalType":"uint16","name":"normalPROOFFeeRate","type":"uint16"},{"internalType":"uint16","name":"marketingFeeRate","type":"uint16"},{"internalType":"uint16","name":"liquidityFeeRate","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cancelToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"},{"internalType":"bool","name":"_add","type":"bool"}],"name":"excludeWalletsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"},{"internalType":"bool","name":"_add","type":"bool"}],"name":"excludeWalletsFromMaxTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"},{"internalType":"bool","name":"_add","type":"bool"}],"name":"excludeWalletsFromMaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromMaxTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"formatPROOFFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingTaxRecv","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proofAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proofRevenue","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proofRewards","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reducePROOFFeeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellfeeRate","outputs":[{"internalType":"uint256","name":"proofFeeDuration","type":"uint256"},{"internalType":"uint16","name":"highTotalFeeRate","type":"uint16"},{"internalType":"uint16","name":"normalTotalFeeRate","type":"uint16"},{"internalType":"uint16","name":"highPROOFFeeRate","type":"uint16"},{"internalType":"uint16","name":"normalPROOFFeeRate","type":"uint16"},{"internalType":"uint16","name":"marketingFeeRate","type":"uint16"},{"internalType":"uint16","name":"liquidityFeeRate","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_bots","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setLaunchBegin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_liquidityBuyFeeRate","type":"uint16"},{"internalType":"uint16","name":"_liquiditySellFeeRate","type":"uint16"}],"name":"setLiquidityFeeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_marketingBuyFeeRate","type":"uint16"},{"internalType":"uint16","name":"_marketingSellFeeRate","type":"uint16"}],"name":"setMarketingFeeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingTaxWallet","type":"address"}],"name":"setMarketingTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxTransferAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapThreshold","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAdmin","type":"address"}],"name":"updatePROOFAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whitelistPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052620000126012600a62000e57565b6200002290630ee6b28062000e6f565b60095560408051808201909152600a8152694658312053706f72747360b01b602082015260179062000055908262000f2e565b5060408051808201909152600381526246583160e81b60208201526018906200007f908262000f2e565b506103e86080523480156200009357600080fd5b506040516200468638038062004686833981016040819052620000b69162001056565b620000c13362000cd4565b80516001600160a01b03166200011e5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642050524f4f4620526576656e7565206164647265737300000060448201526064015b60405180910390fd5b60208101516001600160a01b03166200017a5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642050524f4f4620526577617264732061646472657373000000604482015260640162000115565b60408101516001600160a01b0316620001d65760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642050524f4f4620526577617264732061646472657373000000604482015260640162000115565b60608101516001600160a01b0316620002325760405162461bcd60e51b815260206004820181905260248201527f696e76616c6964204d61726b6574696e67546178526563762061646472657373604482015260640162000115565b60a08101516001600160a01b03166200028e5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c6964207465616d416c6c6f6361746f725f31206164647265737300604482015260640162000115565b60c08101516001600160a01b0316620002ea5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c6964207465616d416c6c6f6361746f725f32206164647265737300604482015260640162000115565b60808101516001600160a01b0316620003465760405162461bcd60e51b815260206004820152601a60248201527f696e76616c696420646578526f75746572206164646472657373000000000000604482015260640162000115565b60008160e00151116200039c5760405162461bcd60e51b815260206004820152601760248201527f696e76616c69642077686974656c697374506572696f64000000000000000000604482015260640162000115565b600081610100015111620003f35760405162461bcd60e51b815260206004820152601860248201527f696e76616c69642070726f6f664665654475726174696f6e0000000000000000604482015260640162000115565b600081610120015161ffff161180156200041e575080610140015161ffff1681610120015161ffff16115b6200046c5760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964206869676850524f4f46466565526174650000000000000000604482015260640162000115565b600081610140015161ffff1611620004c75760405162461bcd60e51b815260206004820152601a60248201527f696e76616c6964206e6f726d616c50524f4f4646656552617465000000000000604482015260640162000115565b6000816101a0015161ffff1611620005225760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420746f74616c5465616d416c6c6f636174696f6e5261746500604482015260640162000115565b806101e00151816101c001516200053a91906200119c565b61ffff16816101a0015161ffff1614620005975760405162461bcd60e51b815260206004820152601b60248201527f696e76616c6964207465616d416c6c6f636174696f6e52617465730000000000604482015260640162000115565b8051601380546001600160a01b03199081166001600160a01b0393841617909155602083015160148054831691841691909117905560408301516015805483169184169190911790556060830151601280548316918416919091179055608083015160198054909216921691909117905560e0810151600b55610120810151601b805461014084015161018085015161016086015163ffffffff60201b1990931664010000000061ffff8088169190910261ffff60301b1916919091176601000000000000938216939093029290921763ffffffff60401b19166a01000000000000000000008383160261ffff60401b191617680100000000000000009284169290920291909117909255610100840151601a55339291620006b9916200119c565b620006c591906200119c565b601b805461ffff191661ffff92909216919091179055610140820151610180830151610160840151620006f991906200119c565b6200070591906200119c565b601b805463ffff000019166201000061ffff93841602179055610120830151601d805461014086015161018087015161016088015163ffffffff60201b199093166401000000008688160261ffff60301b1916176601000000000000928716929092029190911763ffffffff60401b19166a01000000000000000000008287160261ffff60401b191617680100000000000000009583169590950294909417909155610100850151601c559091620007bd916200119c565b620007c991906200119c565b601d805461ffff191661ffff92909216919091179055610140820151610180830151610160840151620007fd91906200119c565b6200080991906200119c565b601d805461ffff92909216620100000263ffff0000199092169190911790556019546040805163c45a015560e01b815290516001600160a01b039092169163c45a0155916004808201926020929091908290030181865afa15801562000873573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008999190620011c1565b6001600160a01b031663c9c65396601960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009219190620011c1565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200096e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009949190620011c1565b601680546001600160a01b0319166001600160a01b039283161781558282166000818152600560209081526040808320805460ff19908116600190811790925560068452828520805482168317905586548816855282852080548216831790553080865283862080548316841790558686526007855283862080548316841790558754891686528386208054831684179055808652838620805483168417905560135489168652838620805483168417905560145489168652838620805483168417905560155489168652838620805483168417905560125489168652838620805483168417905595855260089093528184208054841682179055945490951682528482208054821685179055918152928320805490911690911790556080516101a084015160095461ffff9283169262000ad192169062000e6f565b62000add9190620011df565b9050600060805161ffff16846101c0015161ffff1660095462000b01919062000e6f565b62000b0d9190620011df565b9050600062000b1d828462001202565b905060008360095462000b31919062001202565b60a08701516001600160a01b031660009081526002602052604081208054929350859290919062000b6490849062001218565b909155505060c08601516001600160a01b03166000908152600260205260408120805484929062000b9790849062001218565b9091555050336000908152600260205260408120805483929062000bbd90849062001218565b90915550506040518181523390600090600080516020620046668339815191529060200160405180910390a38560a001516001600160a01b031660006001600160a01b0316600080516020620046668339815191528560405162000c2391815260200190565b60405180910390a38560c001516001600160a01b031660006001600160a01b0316600080516020620046668339815191528460405162000c6591815260200190565b60405180910390a361271060095462000c7f9190620011df565b600c556009546103e89062000c9690600562000e6f565b62000ca29190620011df565b600d5560095460649062000cb890600162000e6f565b62000cc49190620011df565b600e55506200122e945050505050565b600180546001600160a01b031916905562000cef8162000cf2565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000d9957816000190482111562000d7d5762000d7d62000d42565b8085161562000d8b57918102915b93841c939080029062000d5d565b509250929050565b60008262000db25750600162000e51565b8162000dc15750600062000e51565b816001811462000dda576002811462000de55762000e05565b600191505062000e51565b60ff84111562000df95762000df962000d42565b50506001821b62000e51565b5060208310610133831016604e8410600b841016171562000e2a575081810a62000e51565b62000e36838362000d58565b806000190482111562000e4d5762000e4d62000d42565b0290505b92915050565b600062000e6860ff84168362000da1565b9392505050565b808202811582820484141762000e515762000e5162000d42565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168062000eb457607f821691505b60208210810362000ed557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000f2957600081815260208120601f850160051c8101602086101562000f045750805b601f850160051c820191505b8181101562000f255782815560010162000f10565b5050505b505050565b81516001600160401b0381111562000f4a5762000f4a62000e89565b62000f628162000f5b845462000e9f565b8462000edb565b602080601f83116001811462000f9a576000841562000f815750858301515b600019600386901b1c1916600185901b17855562000f25565b600085815260208120601f198616915b8281101562000fcb5788860151825594840194600190910190840162000faa565b508582101562000fea5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60405161020081016001600160401b038111828210171562001020576200102062000e89565b60405290565b80516001600160a01b03811681146200103e57600080fd5b919050565b805161ffff811681146200103e57600080fd5b600061020082840312156200106a57600080fd5b6200107462000ffa565b6200107f8362001026565b81526200108f6020840162001026565b6020820152620010a26040840162001026565b6040820152620010b56060840162001026565b6060820152620010c86080840162001026565b6080820152620010db60a0840162001026565b60a0820152620010ee60c0840162001026565b60c082015260e083015160e08201526101008084015181830152506101206200111981850162001043565b908201526101406200112d84820162001043565b908201526101606200114184820162001043565b908201526101806200115584820162001043565b908201526101a06200116984820162001043565b908201526101c06200117d84820162001043565b908201526101e06200119184820162001043565b908201529392505050565b61ffff818116838216019080821115620011ba57620011ba62000d42565b5092915050565b600060208284031215620011d457600080fd5b62000e688262001026565b600082620011fd57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111562000e515762000e5162000d42565b8082018082111562000e515762000e5162000d42565b6080516134076200125f60003960008181610720015281816125e90152818161262c015261266f01526134076000f3fe60806040526004361061032d5760003560e01c806379ba5097116101a5578063a9e75723116100ec578063d82e49c811610095578063dd62ed3e1161006f578063dd62ed3e146109e9578063e30c397814610a2f578063f2fde38b14610a4d578063f771286214610a6d57600080fd5b8063d82e49c81461094a578063dbe66ca01461095f578063dd22a9de1461098f57600080fd5b8063b48e665e116100c6578063b48e665e146108e4578063b515566a146108fa578063bfd792841461091a57600080fd5b8063a9e7572314610898578063aa4bde28146108ae578063abda625e146108c457600080fd5b806395d89b411161014e578063a4fd3e9911610128578063a4fd3e9914610838578063a8aa1b3114610858578063a9059cbb1461087857600080fd5b806395d89b41146107e3578063999e3b7c146107f85780639d0014b11461081857600080fd5b806385a132911161017f57806385a13291146107855780638bf55409146107a55780638da5cb5b146107c557600080fd5b806379ba5097146106f95780637a458d7a1461070e5780637d99f9a41461075557600080fd5b806327849d0211610274578063546a88111161021d578063715018a6116101f7578063715018a61461068e5780637653f01e146106a3578063790ca413146106c357806379a97e13146106d957600080fd5b8063546a88111461062357806359a51c341461063857806370a082311461065857600080fd5b80633b57bb5e1161024e5780633b57bb5e146105ce5780633ef92312146105ee578063478ea72e1461060357600080fd5b806327849d021461057d57806327a14fc214610592578063313ce567146105b257600080fd5b806317e58d72116102d657806323b872dd116102b057806323b872dd1461051d578063256c2cd11461053d578063273123b71461055d57600080fd5b806317e58d72146104a857806318160ddd146104d85780631e7be210146104ed57600080fd5b80630758d924116103075780630758d9241461041e578063095ea7b314610456578063165657331461048657600080fd5b8063026e9ff2146103395780630445b667146103d857806306fdde03146103fc57600080fd5b3661033457005b600080fd5b34801561034557600080fd5b50601a54601b54610393919061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000008204811691600160501b90041687565b6040805197885261ffff968716602089015294861694870194909452918416606086015283166080850152821660a08401521660c082015260e0015b60405180910390f35b3480156103e457600080fd5b506103ee600c5481565b6040519081526020016103cf565b34801561040857600080fd5b50610411610a8d565b6040516103cf9190612e2a565b34801561042a57600080fd5b5060195461043e906001600160a01b031681565b6040516001600160a01b0390911681526020016103cf565b34801561046257600080fd5b50610476610471366004612e9d565b610b1f565b60405190151581526020016103cf565b34801561049257600080fd5b506104a66104a1366004612f81565b610b36565b005b3480156104b457600080fd5b506104766104c3366004612fd8565b60066020526000908152604090205460ff1681565b3480156104e457600080fd5b506009546103ee565b3480156104f957600080fd5b50610476610508366004612fd8565b60086020526000908152604090205460ff1681565b34801561052957600080fd5b50610476610538366004612ffc565b610bfe565b34801561054957600080fd5b506104a6610558366004612f81565b610c9c565b34801561056957600080fd5b506104a6610578366004612fd8565b610d59565b34801561058957600080fd5b506104a6610e15565b34801561059e57600080fd5b506104a66105ad36600461303d565b61111f565b3480156105be57600080fd5b50604051601281526020016103cf565b3480156105da57600080fd5b506104a66105e9366004612f81565b611197565b3480156105fa57600080fd5b506104a6611254565b34801561060f57600080fd5b5060135461043e906001600160a01b031681565b34801561062f57600080fd5b506104a6611404565b34801561064457600080fd5b5060155461043e906001600160a01b031681565b34801561066457600080fd5b506103ee610673366004612fd8565b6001600160a01b031660009081526002602052604090205490565b34801561069a57600080fd5b506104a6611500565b3480156106af57600080fd5b5060125461043e906001600160a01b031681565b3480156106cf57600080fd5b506103ee600a5481565b3480156106e557600080fd5b506104a66106f4366004612fd8565b611512565b34801561070557600080fd5b506104a66115ff565b34801561071a57600080fd5b506107427f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff90911681526020016103cf565b34801561076157600080fd5b50610476610770366004612fd8565b60076020526000908152604090205460ff1681565b34801561079157600080fd5b506104a66107a0366004613068565b61168d565b3480156107b157600080fd5b506104a66107c036600461303d565b611873565b3480156107d157600080fd5b506000546001600160a01b031661043e565b3480156107ef57600080fd5b506104116118eb565b34801561080457600080fd5b5060145461043e906001600160a01b031681565b34801561082457600080fd5b506104a661083336600461303d565b6118fa565b34801561084457600080fd5b506104a6610853366004612fd8565b611957565b34801561086457600080fd5b5060165461043e906001600160a01b031681565b34801561088457600080fd5b50610476610893366004612e9d565b611a0a565b3480156108a457600080fd5b506103ee600d5481565b3480156108ba57600080fd5b506103ee600e5481565b3480156108d057600080fd5b506104a66108df366004613068565b611a17565b3480156108f057600080fd5b506103ee600b5481565b34801561090657600080fd5b506104a661091536600461309b565b611bec565b34801561092657600080fd5b50610476610935366004612fd8565b60046020526000908152604090205460ff1681565b34801561095657600080fd5b506104a6611d10565b34801561096b57600080fd5b5061047661097a366004612fd8565b60056020526000908152604090205460ff1681565b34801561099b57600080fd5b50601c54601d54610393919061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000008204811691600160501b90041687565b3480156109f557600080fd5b506103ee610a043660046130d8565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a3b57600080fd5b506001546001600160a01b031661043e565b348015610a5957600080fd5b506104a6610a68366004612fd8565b611d6e565b348015610a7957600080fd5b506104a6610a88366004612f81565b611dec565b606060178054610a9c90613106565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac890613106565b8015610b155780601f10610aea57610100808354040283529160200191610b15565b820191906000526020600020905b815481529060010190602001808311610af857829003601f168201915b5050505050905090565b6000610b2c338484611ea9565b5060015b92915050565b610b3e611fb7565b815180610b925760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206c656e67746820617272617900000000000000000000000060448201526064015b60405180910390fd5b60005b81811015610bf8578260066000868481518110610bb457610bb4613140565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610bf08161316c565b915050610b95565b50505050565b6001600160a01b038316600090815260036020908152604080832033845290915281205482811015610c725760405162461bcd60e51b815260206004820152601460248201527f5472616e73666572203e20616c6c6f77616e63650000000000000000000000006044820152606401610b89565b610c868533610c818685613186565b611ea9565b610c91858585612011565b506001949350505050565b610ca4611fb7565b815180610cf35760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206c656e6774682061727261790000000000000000000000006044820152606401610b89565b60005b81811015610bf8578260056000868481518110610d1557610d15613140565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610d518161316c565b915050610cf6565b60155433906001600160a01b0316811480610d8157506000546001600160a01b038281169116145b610df35760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a2063616c6c657220646f65736e277420686176652070657260448201527f6d697373696f6e000000000000000000000000000000000000000000000000006064820152608401610b89565b506001600160a01b03166000908152600460205260409020805460ff19169055565b6015546001600160a01b03163314610e7d5760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c653a2063616c6c6572206973206e6f74207468652070726f6f6660448201526420b236b4b760d91b6064820152608401610b89565b601b546601000000000000900461ffff16600003610edd5760405162461bcd60e51b815260206004820152600f60248201527f616c7265616479207265647563656400000000000000000000000000000000006044820152606401610b89565b601b54640100000000900461ffff16600003610f3b5760405162461bcd60e51b815260206004820152600f60248201527f616c7265616479207265647563656400000000000000000000000000000000006044820152606401610b89565b601d546601000000000000900461ffff16600003610f9b5760405162461bcd60e51b815260206004820152600f60248201527f616c7265616479207265647563656400000000000000000000000000000000006044820152606401610b89565b601d54640100000000900461ffff16600003610ff95760405162461bcd60e51b815260206004820152600f60248201527f616c7265616479207265647563656400000000000000000000000000000000006044820152606401610b89565b601b5461ffff640100000000820481169161101691166000613199565b61102091906131bb565b601b805465ffff0000ffff191661ffff92831617908190556601000000000000810482169161105791620100009004166000613199565b61106191906131bb565b601b805467ffff0000ffff000019166201000061ffff9384160267ffff0000000000001916179055601d5464010000000081048216916110a391166000613199565b6110ad91906131bb565b601d805465ffff0000ffff191661ffff9283161790819055660100000000000081048216916110e491620100009004166000613199565b6110ee91906131bb565b601d805467ffff0000ffff000019166201000061ffff939093169290920267ffff0000000000001916919091179055565b611127611fb7565b6103e8600954600a61113991906131d6565b61114391906131ed565b8110156111925760405162461bcd60e51b815260206004820152600c60248201527f4d696e203125206c696d697400000000000000000000000000000000000000006044820152606401610b89565b600e55565b61119f611fb7565b8151806111ee5760405162461bcd60e51b815260206004820152601760248201527f696e76616c6964206163636f756e7473206c656e6774680000000000000000006044820152606401610b89565b60005b81811015610bf857826008600086848151811061121057611210613140565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061124c8161316c565b9150506111f1565b61125c611fb7565b601a54600a5461126c919061320f565b42116112ba5760405162461bcd60e51b815260206004820152601460248201527f596f75206d7573742077616974203732206872730000000000000000000000006044820152606401610b89565b601b5461ffff64010000000082048116916112d79116600a613199565b6112e191906131bb565b601b8054640a0000000065ffff0000ffff1990911661ffff938416171790819055660100000000000081048216916113219162010000900416600a613199565b61132b91906131bb565b601b805467ffff0000ffff000019166201000061ffff9384160267ffff000000000000191617660a000000000000179055601d5464010000000081048216916113769116600a613199565b61138091906131bb565b601d8054640a0000000065ffff0000ffff1990911661ffff938416171790819055660100000000000081048216916113c09162010000900416600a613199565b6113ca91906131bb565b601d805467ffff0000ffff000019166201000061ffff939093169290920267ffff000000000000191691909117660a000000000000179055565b6015546001600160a01b0316331461146c5760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c653a2063616c6c6572206973206e6f74207468652070726f6f6660448201526420b236b4b760d91b6064820152608401610b89565b601980546001600160a01b0390811660009081526005602090815260408083208054600160ff19918216811790925586548616855260068085528386208054831684179055965486168552600780855283862080548316841790558554871686529684528285208054821683179055845486168552959092529091208054909316179091556015546114fe911661254c565b565b611508611fb7565b6114fe600061254c565b6015546001600160a01b0316331461157a5760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c653a2063616c6c6572206973206e6f74207468652070726f6f6660448201526420b236b4b760d91b6064820152608401610b89565b6001600160a01b0381166115d05760405162461bcd60e51b815260206004820152601a60248201527f696e76616c69642070726f6f6641646d696e20616464726573730000000000006044820152606401610b89565b6015805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60015433906001600160a01b031681146116815760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152608401610b89565b61168a8161254c565b50565b611695611fb7565b606461ffff831681108015906116b357508061ffff168261ffff1611155b6117255760405162461bcd60e51b815260206004820152602560248201527f4d617820526174652065786365656465642c20706c65617365206c6f7765722060448201527f76616c75650000000000000000000000000000000000000000000000000000006064820152608401610b89565b601b5461ffff68010000000000000000820481169161174691869116613199565b61175091906131bb565b601b805461ffff191661ffff92831617908190556801000000000000000081048216916117869186916201000090910416613199565b61179091906131bb565b601b805469ffff00000000ffff000019166201000061ffff9384160269ffff000000000000000019161768010000000000000000868416810291909117909155601d549081048216916117e591859116613199565b6117ef91906131bb565b601d805461ffff191661ffff92831617908190556801000000000000000081048216916118259185916201000090910416613199565b61182f91906131bb565b601d805469ffff00000000ffff000019166201000061ffff9384160269ffff0000000000000000191617680100000000000000009490921693909302179091555050565b61187b611fb7565b6103e8600954600561188d91906131d6565b61189791906131ed565b8110156118e65760405162461bcd60e51b815260206004820152600e60248201527f4d696e20302e3525206c696d69740000000000000000000000000000000000006044820152606401610b89565b600d55565b606060188054610a9c90613106565b611902611fb7565b600081116119525760405162461bcd60e51b815260206004820152601560248201527f696e76616c696420737761705468726573686f6c6400000000000000000000006044820152606401610b89565b600c55565b61195f611fb7565b6001600160a01b0381166119db5760405162461bcd60e51b815260206004820152602260248201527f696e76616c6964206d61726b6574696e6754617857616c6c657420616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610b89565b6012805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000610b2c338484612011565b611a1f611fb7565b606461ffff83168110801590611a3d57508061ffff168261ffff1611155b611aaf5760405162461bcd60e51b815260206004820152602560248201527f4d617820526174652065786365656465642c20706c65617365206c6f7765722060448201527f76616c75650000000000000000000000000000000000000000000000000000006064820152608401610b89565b601b5461ffff600160501b8204811691611acb91869116613199565b611ad591906131bb565b601b805461ffff191661ffff9283161790819055600160501b8104821691611b069186916201000090910416613199565b611b1091906131bb565b601b80546bffff000000000000ffff000019166201000061ffff938416026bffff00000000000000000000191617600160501b868416810291909117909155601d54908104821691611b6491859116613199565b611b6e91906131bb565b601d805461ffff191661ffff9283161790819055600160501b8104821691611b9f9185916201000090910416613199565b611ba991906131bb565b601d80546bffff000000000000ffff000019166201000061ffff938416026bffff00000000000000000000191617600160501b9490921693909302179091555050565b6015546001600160a01b03163314611c545760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c653a2063616c6c6572206973206e6f74207468652070726f6f6660448201526420b236b4b760d91b6064820152608401610b89565b805180611ca35760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206172726179206c656e6774680000000000000000000000006044820152606401610b89565b60005b8251811015611d0b57600160046000858481518110611cc757611cc7613140565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611d038161316c565b915050611ca6565b505050565b611d18611fb7565b600a5415611d685760405162461bcd60e51b815260206004820152601060248201527f616c7265616479206c61756e63686564000000000000000000000000000000006044820152606401610b89565b42600a55565b611d76611fb7565b600180546001600160a01b03831673ffffffffffffffffffffffffffffffffffffffff199091168117909155611db46000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b611df4611fb7565b815180611e435760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206c656e6774682061727261790000000000000000000000006044820152606401610b89565b60005b81811015610bf8578260076000868481518110611e6557611e65613140565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611ea18161316c565b915050611e46565b6001600160a01b038316611eff5760405162461bcd60e51b815260206004820152601160248201527f417070726f76652066726f6d207a65726f0000000000000000000000000000006044820152606401610b89565b6001600160a01b038216611f555760405162461bcd60e51b815260206004820152600f60248201527f417070726f766520746f207a65726f00000000000000000000000000000000006044820152606401610b89565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000546001600160a01b031633146114fe5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b89565b6001600160a01b0383166120675760405162461bcd60e51b815260206004820152601a60248201527f7472616e736665722066726f6d207a65726f20616464726573730000000000006044820152606401610b89565b6001600160a01b03831660009081526004602052604090205460ff1615806120a857506001600160a01b03821660009081526004602052604090205460ff16155b6120f45760405162461bcd60e51b815260206004820152600f60248201527f6e6f20626f747320616c6c6f77656400000000000000000000000000000000006044820152606401610b89565b6001600160a01b03821661214a5760405162461bcd60e51b815260206004820152601860248201527f7472616e7366657220746f207a65726f206164647265737300000000000000006044820152606401610b89565b6000811161219a5760405162461bcd60e51b815260206004820152600b60248201527f7a65726f20616d6f756e740000000000000000000000000000000000000000006044820152606401610b89565b6001600160a01b0383166000908152600260205260409020548111156122025760405162461bcd60e51b815260206004820152601d60248201527f6e6f7420656e6f75676820616d6f756e7420746f207472616e736665720000006044820152606401610b89565b6000546001600160a01b038481169116148061221f5750600a5415155b61226b5760405162461bcd60e51b815260206004820152601060248201527f6e6f74206c61756e6368656420796574000000000000000000000000000000006044820152606401610b89565b600b54600a5461227b919061320f565b4210156122ea576001600160a01b03821660009081526008602052604090205460ff166122ea5760405162461bcd60e51b815260206004820152600e60248201527f6f6e6c792077686974656c6973740000000000000000000000000000000000006044820152606401610b89565b6001600160a01b03831660009081526006602052604090205460ff168061233457506123186012600a613306565b61232390600a6131d6565b600d54612330919061320f565b8111155b6123805760405162461bcd60e51b815260206004820152601c60248201527f6578636565647320746f206d61785472616e73666572416d6f756e74000000006044820152606401610b89565b6001600160a01b03821660009081526007602052604090205460ff16806123ed57506123ae6012600a613306565b6123b990600a6131d6565b600e546123c6919061320f565b6001600160a01b0383166000908152600260205260409020546123ea90839061320f565b11155b6124395760405162461bcd60e51b815260206004820152601a60248201527f6578636565647320746f206d617857616c6c6574416d6f756e740000000000006044820152606401610b89565b60165474010000000000000000000000000000000000000000900460ff168061247a57506001600160a01b03821660009081526005602052604090205460ff165b8061249d57506001600160a01b03831660009081526005602052604090205460ff165b156124f2576124ad838383612572565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611faa91815260200190565b6016546001600160a01b0390811690841603612518576125138383836125d1565b6124ad565b6125206127ae565b6016546001600160a01b039081169083160361254157612513838383612bed565b6124ad838383612572565b6001805473ffffffffffffffffffffffffffffffffffffffff1916905561168a81612bfa565b6001600160a01b0383166000908152600260205260408120805483929061259a908490613186565b90915550506001600160a01b038216600090815260026020526040812080548392906125c790849061320f565b9091555050505050565b60008060006125de612c57565b9350509250925060007f000000000000000000000000000000000000000000000000000000000000000061ffff168461ffff168661261c91906131d6565b61262691906131ed565b905060007f000000000000000000000000000000000000000000000000000000000000000061ffff168461ffff168761265f91906131d6565b61266991906131ed565b905060007f000000000000000000000000000000000000000000000000000000000000000061ffff168461ffff16886126a291906131d6565b6126ac91906131ed565b90506000816126bb8486613186565b6126c59190613186565b905060006126d3858a613186565b6001600160a01b038c16600090815260026020526040812080549293508b92909190612700908490613186565b90915550506001600160a01b038a166000908152600260205260408120805483929061272d90849061320f565b9091555050306000908152600260205260408120805487929061275190849061320f565b92505081905550836011600082825461276a919061320f565b9250508190555082600f6000828254612783919061320f565b92505081905550816010600082825461279c919061320f565b90915550505050505050505050505050565b6000601054600f546011546127c3919061320f565b6127cd919061320f565b9050600c5481116127db5750565b601680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055600f5460009061282c906002906131ed565b9050600061283a8284613186565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061287457612874613140565b6001600160a01b03928316602091820292909201810191909152601954604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa1580156128e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290a9190613315565b8160018151811061291d5761291d613140565b6001600160a01b0392831660209182029290920101526019546129439130911684611ea9565b6019546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac94790612995908590600090869030904290600401613332565b600060405180830381600087803b1580156129af57600080fd5b505af11580156129c3573d6000803e3d6000fd5b50479250505080612a165760405162461bcd60e51b815260206004820152601c60248201527f746f6f20736d616c6c20746f6b656e20666f7220737761704261636b000000006044820152606401610b89565b600083612a2386846131d6565b612a2d91906131ed565b90508015612b1f57600085600f54612a459190613186565b601954909150612a609030906001600160a01b031683611ea9565b6019546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990849060c40160606040518083038185885af1158015612ae7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b0c91906133a3565b5050508183612b1b9190613186565b9250505b60008460115484612b3091906131d6565b612b3a91906131ed565b90506000612b496002836131ed565b90506000612b578284613186565b90506000612b658487613186565b601354909150612b7e906001600160a01b031684612cea565b601454612b94906001600160a01b031683612cea565b601254612baa906001600160a01b031682612cea565b50506000600f81905560108190556011555050601680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055505050505050565b60008060006125de612d99565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080600080601a60000154600a54612c70919061320f565b421015612cac575050601b5461ffff8082169350640100000000820481169250680100000000000000008204811691600160501b900416612ce4565b5050601b5461ffff620100008204811693506601000000000000820481169250680100000000000000008204811691600160501b9004165b90919293565b80600003612cf6575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612d43576040519150601f19603f3d011682016040523d82523d6000602084013e612d48565b606091505b5050905080611d0b5760405162461bcd60e51b815260206004820152601260248201527f73656e64696e6720455448206661696c656400000000000000000000000000006044820152606401610b89565b600080600080601c60000154600a54612db2919061320f565b421015612dee575050601d5461ffff8082169350640100000000820481169250680100000000000000008204811691600160501b900416612ce4565b5050601d5461ffff620100008204811693506601000000000000820481169250680100000000000000008204811691600160501b900416612ce4565b600060208083528351808285015260005b81811015612e5757858101830151858201604001528201612e3b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461168a57600080fd5b8035612e9881612e78565b919050565b60008060408385031215612eb057600080fd5b8235612ebb81612e78565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112612ef057600080fd5b8135602067ffffffffffffffff80831115612f0d57612f0d612ec9565b8260051b604051601f19603f83011681018181108482111715612f3257612f32612ec9565b604052938452858101830193838101925087851115612f5057600080fd5b83870191505b84821015612f7657612f6782612e8d565b83529183019190830190612f56565b979650505050505050565b60008060408385031215612f9457600080fd5b823567ffffffffffffffff811115612fab57600080fd5b612fb785828601612edf565b92505060208301358015158114612fcd57600080fd5b809150509250929050565b600060208284031215612fea57600080fd5b8135612ff581612e78565b9392505050565b60008060006060848603121561301157600080fd5b833561301c81612e78565b9250602084013561302c81612e78565b929592945050506040919091013590565b60006020828403121561304f57600080fd5b5035919050565b803561ffff81168114612e9857600080fd5b6000806040838503121561307b57600080fd5b61308483613056565b915061309260208401613056565b90509250929050565b6000602082840312156130ad57600080fd5b813567ffffffffffffffff8111156130c457600080fd5b6130d084828501612edf565b949350505050565b600080604083850312156130eb57600080fd5b82356130f681612e78565b91506020830135612fcd81612e78565b600181811c9082168061311a57607f821691505b60208210810361313a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361317f5761317f613156565b5060010190565b81810381811115610b3057610b30613156565b61ffff8181168382160190808211156131b4576131b4613156565b5092915050565b61ffff8281168282160390808211156131b4576131b4613156565b8082028115828204841417610b3057610b30613156565b60008261320a57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610b3057610b30613156565b600181815b8085111561325d57816000190482111561324357613243613156565b8085161561325057918102915b93841c9390800290613227565b509250929050565b60008261327457506001610b30565b8161328157506000610b30565b816001811461329757600281146132a1576132bd565b6001915050610b30565b60ff8411156132b2576132b2613156565b50506001821b610b30565b5060208310610133831016604e8410600b84101617156132e0575081810a610b30565b6132ea8383613222565b80600019048211156132fe576132fe613156565b029392505050565b6000612ff560ff841683613265565b60006020828403121561332757600080fd5b8151612ff581612e78565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156133825784516001600160a01b03168352938301939183019160010161335d565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156133b857600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220871b4873d65d4690ff54c756cb383054e571c1544d5ad25fc22d7ce4bc72990364736f6c63430008130033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000000000000000000000e9b4d32f829951a3ce145d2caa84cf66af56ca5e0000000000000000000000001bf4cb781b97724a8a22ef064dce6bbc1c26cdda000000000000000000000000acfb878960bcda38782d854efb2e687b57e31f09000000000000000000000000afc94420451fca019dc97100d14abcb8704d6e650000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000d015a304d44041d25d10486e64330e7888fb6647000000000000000000000000a39dc746652a0731da7ff1f4ad6385caf8a95e29000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000003f4800000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009600000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000032

Deployed Bytecode

0x60806040526004361061032d5760003560e01c806379ba5097116101a5578063a9e75723116100ec578063d82e49c811610095578063dd62ed3e1161006f578063dd62ed3e146109e9578063e30c397814610a2f578063f2fde38b14610a4d578063f771286214610a6d57600080fd5b8063d82e49c81461094a578063dbe66ca01461095f578063dd22a9de1461098f57600080fd5b8063b48e665e116100c6578063b48e665e146108e4578063b515566a146108fa578063bfd792841461091a57600080fd5b8063a9e7572314610898578063aa4bde28146108ae578063abda625e146108c457600080fd5b806395d89b411161014e578063a4fd3e9911610128578063a4fd3e9914610838578063a8aa1b3114610858578063a9059cbb1461087857600080fd5b806395d89b41146107e3578063999e3b7c146107f85780639d0014b11461081857600080fd5b806385a132911161017f57806385a13291146107855780638bf55409146107a55780638da5cb5b146107c557600080fd5b806379ba5097146106f95780637a458d7a1461070e5780637d99f9a41461075557600080fd5b806327849d0211610274578063546a88111161021d578063715018a6116101f7578063715018a61461068e5780637653f01e146106a3578063790ca413146106c357806379a97e13146106d957600080fd5b8063546a88111461062357806359a51c341461063857806370a082311461065857600080fd5b80633b57bb5e1161024e5780633b57bb5e146105ce5780633ef92312146105ee578063478ea72e1461060357600080fd5b806327849d021461057d57806327a14fc214610592578063313ce567146105b257600080fd5b806317e58d72116102d657806323b872dd116102b057806323b872dd1461051d578063256c2cd11461053d578063273123b71461055d57600080fd5b806317e58d72146104a857806318160ddd146104d85780631e7be210146104ed57600080fd5b80630758d924116103075780630758d9241461041e578063095ea7b314610456578063165657331461048657600080fd5b8063026e9ff2146103395780630445b667146103d857806306fdde03146103fc57600080fd5b3661033457005b600080fd5b34801561034557600080fd5b50601a54601b54610393919061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000008204811691600160501b90041687565b6040805197885261ffff968716602089015294861694870194909452918416606086015283166080850152821660a08401521660c082015260e0015b60405180910390f35b3480156103e457600080fd5b506103ee600c5481565b6040519081526020016103cf565b34801561040857600080fd5b50610411610a8d565b6040516103cf9190612e2a565b34801561042a57600080fd5b5060195461043e906001600160a01b031681565b6040516001600160a01b0390911681526020016103cf565b34801561046257600080fd5b50610476610471366004612e9d565b610b1f565b60405190151581526020016103cf565b34801561049257600080fd5b506104a66104a1366004612f81565b610b36565b005b3480156104b457600080fd5b506104766104c3366004612fd8565b60066020526000908152604090205460ff1681565b3480156104e457600080fd5b506009546103ee565b3480156104f957600080fd5b50610476610508366004612fd8565b60086020526000908152604090205460ff1681565b34801561052957600080fd5b50610476610538366004612ffc565b610bfe565b34801561054957600080fd5b506104a6610558366004612f81565b610c9c565b34801561056957600080fd5b506104a6610578366004612fd8565b610d59565b34801561058957600080fd5b506104a6610e15565b34801561059e57600080fd5b506104a66105ad36600461303d565b61111f565b3480156105be57600080fd5b50604051601281526020016103cf565b3480156105da57600080fd5b506104a66105e9366004612f81565b611197565b3480156105fa57600080fd5b506104a6611254565b34801561060f57600080fd5b5060135461043e906001600160a01b031681565b34801561062f57600080fd5b506104a6611404565b34801561064457600080fd5b5060155461043e906001600160a01b031681565b34801561066457600080fd5b506103ee610673366004612fd8565b6001600160a01b031660009081526002602052604090205490565b34801561069a57600080fd5b506104a6611500565b3480156106af57600080fd5b5060125461043e906001600160a01b031681565b3480156106cf57600080fd5b506103ee600a5481565b3480156106e557600080fd5b506104a66106f4366004612fd8565b611512565b34801561070557600080fd5b506104a66115ff565b34801561071a57600080fd5b506107427f00000000000000000000000000000000000000000000000000000000000003e881565b60405161ffff90911681526020016103cf565b34801561076157600080fd5b50610476610770366004612fd8565b60076020526000908152604090205460ff1681565b34801561079157600080fd5b506104a66107a0366004613068565b61168d565b3480156107b157600080fd5b506104a66107c036600461303d565b611873565b3480156107d157600080fd5b506000546001600160a01b031661043e565b3480156107ef57600080fd5b506104116118eb565b34801561080457600080fd5b5060145461043e906001600160a01b031681565b34801561082457600080fd5b506104a661083336600461303d565b6118fa565b34801561084457600080fd5b506104a6610853366004612fd8565b611957565b34801561086457600080fd5b5060165461043e906001600160a01b031681565b34801561088457600080fd5b50610476610893366004612e9d565b611a0a565b3480156108a457600080fd5b506103ee600d5481565b3480156108ba57600080fd5b506103ee600e5481565b3480156108d057600080fd5b506104a66108df366004613068565b611a17565b3480156108f057600080fd5b506103ee600b5481565b34801561090657600080fd5b506104a661091536600461309b565b611bec565b34801561092657600080fd5b50610476610935366004612fd8565b60046020526000908152604090205460ff1681565b34801561095657600080fd5b506104a6611d10565b34801561096b57600080fd5b5061047661097a366004612fd8565b60056020526000908152604090205460ff1681565b34801561099b57600080fd5b50601c54601d54610393919061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000008204811691600160501b90041687565b3480156109f557600080fd5b506103ee610a043660046130d8565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a3b57600080fd5b506001546001600160a01b031661043e565b348015610a5957600080fd5b506104a6610a68366004612fd8565b611d6e565b348015610a7957600080fd5b506104a6610a88366004612f81565b611dec565b606060178054610a9c90613106565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac890613106565b8015610b155780601f10610aea57610100808354040283529160200191610b15565b820191906000526020600020905b815481529060010190602001808311610af857829003601f168201915b5050505050905090565b6000610b2c338484611ea9565b5060015b92915050565b610b3e611fb7565b815180610b925760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206c656e67746820617272617900000000000000000000000060448201526064015b60405180910390fd5b60005b81811015610bf8578260066000868481518110610bb457610bb4613140565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610bf08161316c565b915050610b95565b50505050565b6001600160a01b038316600090815260036020908152604080832033845290915281205482811015610c725760405162461bcd60e51b815260206004820152601460248201527f5472616e73666572203e20616c6c6f77616e63650000000000000000000000006044820152606401610b89565b610c868533610c818685613186565b611ea9565b610c91858585612011565b506001949350505050565b610ca4611fb7565b815180610cf35760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206c656e6774682061727261790000000000000000000000006044820152606401610b89565b60005b81811015610bf8578260056000868481518110610d1557610d15613140565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610d518161316c565b915050610cf6565b60155433906001600160a01b0316811480610d8157506000546001600160a01b038281169116145b610df35760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a2063616c6c657220646f65736e277420686176652070657260448201527f6d697373696f6e000000000000000000000000000000000000000000000000006064820152608401610b89565b506001600160a01b03166000908152600460205260409020805460ff19169055565b6015546001600160a01b03163314610e7d5760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c653a2063616c6c6572206973206e6f74207468652070726f6f6660448201526420b236b4b760d91b6064820152608401610b89565b601b546601000000000000900461ffff16600003610edd5760405162461bcd60e51b815260206004820152600f60248201527f616c7265616479207265647563656400000000000000000000000000000000006044820152606401610b89565b601b54640100000000900461ffff16600003610f3b5760405162461bcd60e51b815260206004820152600f60248201527f616c7265616479207265647563656400000000000000000000000000000000006044820152606401610b89565b601d546601000000000000900461ffff16600003610f9b5760405162461bcd60e51b815260206004820152600f60248201527f616c7265616479207265647563656400000000000000000000000000000000006044820152606401610b89565b601d54640100000000900461ffff16600003610ff95760405162461bcd60e51b815260206004820152600f60248201527f616c7265616479207265647563656400000000000000000000000000000000006044820152606401610b89565b601b5461ffff640100000000820481169161101691166000613199565b61102091906131bb565b601b805465ffff0000ffff191661ffff92831617908190556601000000000000810482169161105791620100009004166000613199565b61106191906131bb565b601b805467ffff0000ffff000019166201000061ffff9384160267ffff0000000000001916179055601d5464010000000081048216916110a391166000613199565b6110ad91906131bb565b601d805465ffff0000ffff191661ffff9283161790819055660100000000000081048216916110e491620100009004166000613199565b6110ee91906131bb565b601d805467ffff0000ffff000019166201000061ffff939093169290920267ffff0000000000001916919091179055565b611127611fb7565b6103e8600954600a61113991906131d6565b61114391906131ed565b8110156111925760405162461bcd60e51b815260206004820152600c60248201527f4d696e203125206c696d697400000000000000000000000000000000000000006044820152606401610b89565b600e55565b61119f611fb7565b8151806111ee5760405162461bcd60e51b815260206004820152601760248201527f696e76616c6964206163636f756e7473206c656e6774680000000000000000006044820152606401610b89565b60005b81811015610bf857826008600086848151811061121057611210613140565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061124c8161316c565b9150506111f1565b61125c611fb7565b601a54600a5461126c919061320f565b42116112ba5760405162461bcd60e51b815260206004820152601460248201527f596f75206d7573742077616974203732206872730000000000000000000000006044820152606401610b89565b601b5461ffff64010000000082048116916112d79116600a613199565b6112e191906131bb565b601b8054640a0000000065ffff0000ffff1990911661ffff938416171790819055660100000000000081048216916113219162010000900416600a613199565b61132b91906131bb565b601b805467ffff0000ffff000019166201000061ffff9384160267ffff000000000000191617660a000000000000179055601d5464010000000081048216916113769116600a613199565b61138091906131bb565b601d8054640a0000000065ffff0000ffff1990911661ffff938416171790819055660100000000000081048216916113c09162010000900416600a613199565b6113ca91906131bb565b601d805467ffff0000ffff000019166201000061ffff939093169290920267ffff000000000000191691909117660a000000000000179055565b6015546001600160a01b0316331461146c5760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c653a2063616c6c6572206973206e6f74207468652070726f6f6660448201526420b236b4b760d91b6064820152608401610b89565b601980546001600160a01b0390811660009081526005602090815260408083208054600160ff19918216811790925586548616855260068085528386208054831684179055965486168552600780855283862080548316841790558554871686529684528285208054821683179055845486168552959092529091208054909316179091556015546114fe911661254c565b565b611508611fb7565b6114fe600061254c565b6015546001600160a01b0316331461157a5760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c653a2063616c6c6572206973206e6f74207468652070726f6f6660448201526420b236b4b760d91b6064820152608401610b89565b6001600160a01b0381166115d05760405162461bcd60e51b815260206004820152601a60248201527f696e76616c69642070726f6f6641646d696e20616464726573730000000000006044820152606401610b89565b6015805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60015433906001600160a01b031681146116815760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152608401610b89565b61168a8161254c565b50565b611695611fb7565b606461ffff831681108015906116b357508061ffff168261ffff1611155b6117255760405162461bcd60e51b815260206004820152602560248201527f4d617820526174652065786365656465642c20706c65617365206c6f7765722060448201527f76616c75650000000000000000000000000000000000000000000000000000006064820152608401610b89565b601b5461ffff68010000000000000000820481169161174691869116613199565b61175091906131bb565b601b805461ffff191661ffff92831617908190556801000000000000000081048216916117869186916201000090910416613199565b61179091906131bb565b601b805469ffff00000000ffff000019166201000061ffff9384160269ffff000000000000000019161768010000000000000000868416810291909117909155601d549081048216916117e591859116613199565b6117ef91906131bb565b601d805461ffff191661ffff92831617908190556801000000000000000081048216916118259185916201000090910416613199565b61182f91906131bb565b601d805469ffff00000000ffff000019166201000061ffff9384160269ffff0000000000000000191617680100000000000000009490921693909302179091555050565b61187b611fb7565b6103e8600954600561188d91906131d6565b61189791906131ed565b8110156118e65760405162461bcd60e51b815260206004820152600e60248201527f4d696e20302e3525206c696d69740000000000000000000000000000000000006044820152606401610b89565b600d55565b606060188054610a9c90613106565b611902611fb7565b600081116119525760405162461bcd60e51b815260206004820152601560248201527f696e76616c696420737761705468726573686f6c6400000000000000000000006044820152606401610b89565b600c55565b61195f611fb7565b6001600160a01b0381166119db5760405162461bcd60e51b815260206004820152602260248201527f696e76616c6964206d61726b6574696e6754617857616c6c657420616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610b89565b6012805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000610b2c338484612011565b611a1f611fb7565b606461ffff83168110801590611a3d57508061ffff168261ffff1611155b611aaf5760405162461bcd60e51b815260206004820152602560248201527f4d617820526174652065786365656465642c20706c65617365206c6f7765722060448201527f76616c75650000000000000000000000000000000000000000000000000000006064820152608401610b89565b601b5461ffff600160501b8204811691611acb91869116613199565b611ad591906131bb565b601b805461ffff191661ffff9283161790819055600160501b8104821691611b069186916201000090910416613199565b611b1091906131bb565b601b80546bffff000000000000ffff000019166201000061ffff938416026bffff00000000000000000000191617600160501b868416810291909117909155601d54908104821691611b6491859116613199565b611b6e91906131bb565b601d805461ffff191661ffff9283161790819055600160501b8104821691611b9f9185916201000090910416613199565b611ba991906131bb565b601d80546bffff000000000000ffff000019166201000061ffff938416026bffff00000000000000000000191617600160501b9490921693909302179091555050565b6015546001600160a01b03163314611c545760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c653a2063616c6c6572206973206e6f74207468652070726f6f6660448201526420b236b4b760d91b6064820152608401610b89565b805180611ca35760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206172726179206c656e6774680000000000000000000000006044820152606401610b89565b60005b8251811015611d0b57600160046000858481518110611cc757611cc7613140565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611d038161316c565b915050611ca6565b505050565b611d18611fb7565b600a5415611d685760405162461bcd60e51b815260206004820152601060248201527f616c7265616479206c61756e63686564000000000000000000000000000000006044820152606401610b89565b42600a55565b611d76611fb7565b600180546001600160a01b03831673ffffffffffffffffffffffffffffffffffffffff199091168117909155611db46000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b611df4611fb7565b815180611e435760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206c656e6774682061727261790000000000000000000000006044820152606401610b89565b60005b81811015610bf8578260076000868481518110611e6557611e65613140565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611ea18161316c565b915050611e46565b6001600160a01b038316611eff5760405162461bcd60e51b815260206004820152601160248201527f417070726f76652066726f6d207a65726f0000000000000000000000000000006044820152606401610b89565b6001600160a01b038216611f555760405162461bcd60e51b815260206004820152600f60248201527f417070726f766520746f207a65726f00000000000000000000000000000000006044820152606401610b89565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000546001600160a01b031633146114fe5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b89565b6001600160a01b0383166120675760405162461bcd60e51b815260206004820152601a60248201527f7472616e736665722066726f6d207a65726f20616464726573730000000000006044820152606401610b89565b6001600160a01b03831660009081526004602052604090205460ff1615806120a857506001600160a01b03821660009081526004602052604090205460ff16155b6120f45760405162461bcd60e51b815260206004820152600f60248201527f6e6f20626f747320616c6c6f77656400000000000000000000000000000000006044820152606401610b89565b6001600160a01b03821661214a5760405162461bcd60e51b815260206004820152601860248201527f7472616e7366657220746f207a65726f206164647265737300000000000000006044820152606401610b89565b6000811161219a5760405162461bcd60e51b815260206004820152600b60248201527f7a65726f20616d6f756e740000000000000000000000000000000000000000006044820152606401610b89565b6001600160a01b0383166000908152600260205260409020548111156122025760405162461bcd60e51b815260206004820152601d60248201527f6e6f7420656e6f75676820616d6f756e7420746f207472616e736665720000006044820152606401610b89565b6000546001600160a01b038481169116148061221f5750600a5415155b61226b5760405162461bcd60e51b815260206004820152601060248201527f6e6f74206c61756e6368656420796574000000000000000000000000000000006044820152606401610b89565b600b54600a5461227b919061320f565b4210156122ea576001600160a01b03821660009081526008602052604090205460ff166122ea5760405162461bcd60e51b815260206004820152600e60248201527f6f6e6c792077686974656c6973740000000000000000000000000000000000006044820152606401610b89565b6001600160a01b03831660009081526006602052604090205460ff168061233457506123186012600a613306565b61232390600a6131d6565b600d54612330919061320f565b8111155b6123805760405162461bcd60e51b815260206004820152601c60248201527f6578636565647320746f206d61785472616e73666572416d6f756e74000000006044820152606401610b89565b6001600160a01b03821660009081526007602052604090205460ff16806123ed57506123ae6012600a613306565b6123b990600a6131d6565b600e546123c6919061320f565b6001600160a01b0383166000908152600260205260409020546123ea90839061320f565b11155b6124395760405162461bcd60e51b815260206004820152601a60248201527f6578636565647320746f206d617857616c6c6574416d6f756e740000000000006044820152606401610b89565b60165474010000000000000000000000000000000000000000900460ff168061247a57506001600160a01b03821660009081526005602052604090205460ff165b8061249d57506001600160a01b03831660009081526005602052604090205460ff165b156124f2576124ad838383612572565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611faa91815260200190565b6016546001600160a01b0390811690841603612518576125138383836125d1565b6124ad565b6125206127ae565b6016546001600160a01b039081169083160361254157612513838383612bed565b6124ad838383612572565b6001805473ffffffffffffffffffffffffffffffffffffffff1916905561168a81612bfa565b6001600160a01b0383166000908152600260205260408120805483929061259a908490613186565b90915550506001600160a01b038216600090815260026020526040812080548392906125c790849061320f565b9091555050505050565b60008060006125de612c57565b9350509250925060007f00000000000000000000000000000000000000000000000000000000000003e861ffff168461ffff168661261c91906131d6565b61262691906131ed565b905060007f00000000000000000000000000000000000000000000000000000000000003e861ffff168461ffff168761265f91906131d6565b61266991906131ed565b905060007f00000000000000000000000000000000000000000000000000000000000003e861ffff168461ffff16886126a291906131d6565b6126ac91906131ed565b90506000816126bb8486613186565b6126c59190613186565b905060006126d3858a613186565b6001600160a01b038c16600090815260026020526040812080549293508b92909190612700908490613186565b90915550506001600160a01b038a166000908152600260205260408120805483929061272d90849061320f565b9091555050306000908152600260205260408120805487929061275190849061320f565b92505081905550836011600082825461276a919061320f565b9250508190555082600f6000828254612783919061320f565b92505081905550816010600082825461279c919061320f565b90915550505050505050505050505050565b6000601054600f546011546127c3919061320f565b6127cd919061320f565b9050600c5481116127db5750565b601680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055600f5460009061282c906002906131ed565b9050600061283a8284613186565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061287457612874613140565b6001600160a01b03928316602091820292909201810191909152601954604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa1580156128e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290a9190613315565b8160018151811061291d5761291d613140565b6001600160a01b0392831660209182029290920101526019546129439130911684611ea9565b6019546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac94790612995908590600090869030904290600401613332565b600060405180830381600087803b1580156129af57600080fd5b505af11580156129c3573d6000803e3d6000fd5b50479250505080612a165760405162461bcd60e51b815260206004820152601c60248201527f746f6f20736d616c6c20746f6b656e20666f7220737761704261636b000000006044820152606401610b89565b600083612a2386846131d6565b612a2d91906131ed565b90508015612b1f57600085600f54612a459190613186565b601954909150612a609030906001600160a01b031683611ea9565b6019546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990849060c40160606040518083038185885af1158015612ae7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b0c91906133a3565b5050508183612b1b9190613186565b9250505b60008460115484612b3091906131d6565b612b3a91906131ed565b90506000612b496002836131ed565b90506000612b578284613186565b90506000612b658487613186565b601354909150612b7e906001600160a01b031684612cea565b601454612b94906001600160a01b031683612cea565b601254612baa906001600160a01b031682612cea565b50506000600f81905560108190556011555050601680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055505050505050565b60008060006125de612d99565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080600080601a60000154600a54612c70919061320f565b421015612cac575050601b5461ffff8082169350640100000000820481169250680100000000000000008204811691600160501b900416612ce4565b5050601b5461ffff620100008204811693506601000000000000820481169250680100000000000000008204811691600160501b9004165b90919293565b80600003612cf6575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612d43576040519150601f19603f3d011682016040523d82523d6000602084013e612d48565b606091505b5050905080611d0b5760405162461bcd60e51b815260206004820152601260248201527f73656e64696e6720455448206661696c656400000000000000000000000000006044820152606401610b89565b600080600080601c60000154600a54612db2919061320f565b421015612dee575050601d5461ffff8082169350640100000000820481169250680100000000000000008204811691600160501b900416612ce4565b5050601d5461ffff620100008204811693506601000000000000820481169250680100000000000000008204811691600160501b900416612ce4565b600060208083528351808285015260005b81811015612e5757858101830151858201604001528201612e3b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461168a57600080fd5b8035612e9881612e78565b919050565b60008060408385031215612eb057600080fd5b8235612ebb81612e78565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112612ef057600080fd5b8135602067ffffffffffffffff80831115612f0d57612f0d612ec9565b8260051b604051601f19603f83011681018181108482111715612f3257612f32612ec9565b604052938452858101830193838101925087851115612f5057600080fd5b83870191505b84821015612f7657612f6782612e8d565b83529183019190830190612f56565b979650505050505050565b60008060408385031215612f9457600080fd5b823567ffffffffffffffff811115612fab57600080fd5b612fb785828601612edf565b92505060208301358015158114612fcd57600080fd5b809150509250929050565b600060208284031215612fea57600080fd5b8135612ff581612e78565b9392505050565b60008060006060848603121561301157600080fd5b833561301c81612e78565b9250602084013561302c81612e78565b929592945050506040919091013590565b60006020828403121561304f57600080fd5b5035919050565b803561ffff81168114612e9857600080fd5b6000806040838503121561307b57600080fd5b61308483613056565b915061309260208401613056565b90509250929050565b6000602082840312156130ad57600080fd5b813567ffffffffffffffff8111156130c457600080fd5b6130d084828501612edf565b949350505050565b600080604083850312156130eb57600080fd5b82356130f681612e78565b91506020830135612fcd81612e78565b600181811c9082168061311a57607f821691505b60208210810361313a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361317f5761317f613156565b5060010190565b81810381811115610b3057610b30613156565b61ffff8181168382160190808211156131b4576131b4613156565b5092915050565b61ffff8281168282160390808211156131b4576131b4613156565b8082028115828204841417610b3057610b30613156565b60008261320a57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610b3057610b30613156565b600181815b8085111561325d57816000190482111561324357613243613156565b8085161561325057918102915b93841c9390800290613227565b509250929050565b60008261327457506001610b30565b8161328157506000610b30565b816001811461329757600281146132a1576132bd565b6001915050610b30565b60ff8411156132b2576132b2613156565b50506001821b610b30565b5060208310610133831016604e8410600b84101617156132e0575081810a610b30565b6132ea8383613222565b80600019048211156132fe576132fe613156565b029392505050565b6000612ff560ff841683613265565b60006020828403121561332757600080fd5b8151612ff581612e78565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156133825784516001600160a01b03168352938301939183019160010161335d565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156133b857600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220871b4873d65d4690ff54c756cb383054e571c1544d5ad25fc22d7ce4bc72990364736f6c63430008130033

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

000000000000000000000000e9b4d32f829951a3ce145d2caa84cf66af56ca5e0000000000000000000000001bf4cb781b97724a8a22ef064dce6bbc1c26cdda000000000000000000000000acfb878960bcda38782d854efb2e687b57e31f09000000000000000000000000afc94420451fca019dc97100d14abcb8704d6e650000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000d015a304d44041d25d10486e64330e7888fb6647000000000000000000000000a39dc746652a0731da7ff1f4ad6385caf8a95e29000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000003f4800000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009600000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000032

-----Decoded View---------------
Arg [0] : _param (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]

-----Encoded View---------------
16 Constructor Arguments found :
Arg [0] : 000000000000000000000000e9b4d32f829951a3ce145d2caa84cf66af56ca5e
Arg [1] : 0000000000000000000000001bf4cb781b97724a8a22ef064dce6bbc1c26cdda
Arg [2] : 000000000000000000000000acfb878960bcda38782d854efb2e687b57e31f09
Arg [3] : 000000000000000000000000afc94420451fca019dc97100d14abcb8704d6e65
Arg [4] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [5] : 000000000000000000000000d015a304d44041d25d10486e64330e7888fb6647
Arg [6] : 000000000000000000000000a39dc746652a0731da7ff1f4ad6385caf8a95e29
Arg [7] : 000000000000000000000000000000000000000000000000000000000000012c
Arg [8] : 000000000000000000000000000000000000000000000000000000000003f480
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [10] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [11] : 000000000000000000000000000000000000000000000000000000000000003c
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000096
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000032


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.