ETH Price: $2,445.29 (+1.78%)

Contract

0x3474C44EA9CDe92AAB3e015e7b9B61C331f2d01c
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve202486732024-07-06 16:30:2392 days ago1720283423IN
0x3474C44E...331f2d01c
0 ETH0.000109724.19299632
Approve202485542024-07-06 16:06:3592 days ago1720281995IN
0x3474C44E...331f2d01c
0 ETH0.000112814.65632398
Claim Dividend198243972024-05-08 9:17:47151 days ago1715159867IN
0x3474C44E...331f2d01c
0 ETH0.000157594.14130153
Approve191037282024-01-28 8:04:35252 days ago1706429075IN
0x3474C44E...331f2d01c
0 ETH0.0006842314.72967306
Approve189958802024-01-13 5:27:11267 days ago1705123631IN
0x3474C44E...331f2d01c
0 ETH0.0003052812.63112747
Approve189933862024-01-12 21:05:35267 days ago1705093535IN
0x3474C44E...331f2d01c
0 ETH0.0013848430.01332054
Approve189154212024-01-01 22:01:47278 days ago1704146507IN
0x3474C44E...331f2d01c
0 ETH0.000396516.36502281
Transfer189023612023-12-31 2:02:47280 days ago1703988167IN
0x3474C44E...331f2d01c
0 ETH0.0038124114.83500601
Approve187796292023-12-13 20:29:23297 days ago1702499363IN
0x3474C44E...331f2d01c
0 ETH0.0028883562.09788396
Claim Dividend187528262023-12-10 2:26:59301 days ago1702175219IN
0x3474C44E...331f2d01c
0 ETH0.0027695826.77455348
Approve185051552023-11-05 10:16:47336 days ago1699179407IN
0x3474C44E...331f2d01c
0 ETH0.0006436913.9505952
Approve184953632023-11-04 1:20:11337 days ago1699060811IN
0x3474C44E...331f2d01c
0 ETH0.0003205613.26364389
Claim Dividend184309572023-10-26 0:56:11346 days ago1698281771IN
0x3474C44E...331f2d01c
0 ETH0.0017279720.013408
Approve181917942023-09-22 13:51:47380 days ago1695390707IN
0x3474C44E...331f2d01c
0 ETH0.000530411.47732338
Approve181035332023-09-10 4:16:23392 days ago1694319383IN
0x3474C44E...331f2d01c
0 ETH0.000436919.46661551
Approve180837932023-09-07 9:55:47395 days ago1694080547IN
0x3474C44E...331f2d01c
0 ETH0.0007013315.07821181
Approve179498422023-08-19 15:54:47414 days ago1692460487IN
0x3474C44E...331f2d01c
0 ETH0.001065422.90563244
Approve179463682023-08-19 4:13:35414 days ago1692418415IN
0x3474C44E...331f2d01c
0 ETH0.000647913.94745946
Approve179146582023-08-14 17:43:59419 days ago1692035039IN
0x3474C44E...331f2d01c
0 ETH0.0017910438.80661484
Approve178915882023-08-11 12:17:11422 days ago1691756231IN
0x3474C44E...331f2d01c
0 ETH0.000797417.27737356
Approve178468992023-08-05 6:11:47428 days ago1691215907IN
0x3474C44E...331f2d01c
0 ETH0.0003689913.86514416
Approve178468952023-08-05 6:10:59428 days ago1691215859IN
0x3474C44E...331f2d01c
0 ETH0.0005877612.63657459
Approve177983142023-07-29 11:12:11435 days ago1690629131IN
0x3474C44E...331f2d01c
0 ETH0.0009433320.28102017
Approve177924532023-07-28 15:30:11436 days ago1690558211IN
0x3474C44E...331f2d01c
0 ETH0.0017342337.52702614
Claim Dividend177064752023-07-16 14:35:11448 days ago1689518111IN
0x3474C44E...331f2d01c
0 ETH0.0023970919.8861598
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
171898242023-05-04 20:57:47520 days ago1683233867
0x3474C44E...331f2d01c
 Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MSBOB

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 6 : MSBOB.sol
// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.17;

import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@rari-capital/solmate/src/auth/Owned.sol";

import "./interface/IDEXFactory.sol";
import "./interface/IDEXRouter.sol";
import "./interface/IWETH.sol";

contract DividendDistributor {
    address public _token;
    address public immutable dividendToken;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalClaimed;
    }

    address[] private shareholders;
    mapping(address => uint256) private shareholderIndexes;
    mapping(address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalClaimed;
    uint256 public dividendsPerShare;
    uint256 private accuracyFactor = 10 ** 36;

    modifier onlyToken() {
        require(msg.sender == _token);
        _;
    }

    constructor(address _dividendToken) {
        _token = msg.sender;
        dividendToken = _dividendToken;
    }

    function setShare(address shareholder, uint256 amount) external onlyToken {
        if (shares[shareholder].amount != 0) {
            distributeDividend(shareholder);
        }

        if (amount != 0 && shares[shareholder].amount == 0) {
            addShareholder(shareholder);
        } else if (amount == 0 && shares[shareholder].amount != 0) {
            removeShareholder(shareholder);
        }

        totalShares = totalShares - shares[shareholder].amount + amount;
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(amount);
    }

    function deposit(uint256 amount) external onlyToken {
        if (amount != 0) {
            totalDividends += amount;
            dividendsPerShare += (accuracyFactor * amount) / totalShares;
        }
    }

    function distributeDividend(address shareholder) internal {
        if (shares[shareholder].amount == 0) {
            return;
        }

        uint256 amount = getClaimableDividendOf(shareholder);
        if (amount != 0) {
            totalClaimed += amount;
            shares[shareholder].totalClaimed += amount;
            shares[shareholder].totalExcluded = getCumulativeDividends(
                shares[shareholder].amount
            );
            IERC20(dividendToken).transfer(shareholder, amount);
        }
    }

    function claimDividend(address shareholder) external onlyToken {
        distributeDividend(shareholder);
    }

    function getClaimableDividendOf(
        address shareholder
    ) public view returns (uint256) {
        if (shares[shareholder].amount == 0) {
            return 0;
        }

        uint256 shareholderTotalDividends = getCumulativeDividends(
            shares[shareholder].amount
        );
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if (shareholderTotalDividends <= shareholderTotalExcluded) {
            return 0;
        }

        return shareholderTotalDividends - shareholderTotalExcluded;
    }

    function getCumulativeDividends(
        uint256 share
    ) internal view returns (uint256) {
        return (share * dividendsPerShare) / accuracyFactor;
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[
            shareholders.length - 1
        ];
        shareholderIndexes[
            shareholders[shareholders.length - 1]
        ] = shareholderIndexes[shareholder];
        shareholders.pop();
    }

    function getDividendsClaimedOf(
        address shareholder
    ) external view returns (uint256) {
        require(shares[shareholder].amount != 0, "Not a shareholder!");
        return shares[shareholder].totalClaimed;
    }
}

contract MSBOB is IERC20, Owned {
    IDEXRouter private constant router =
        IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Uniswap Router
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address private constant ZERO = address(0);
    address private immutable WETH;
    address public immutable dividendToken; 

    string private constant _name = "MSBOB";
    string private constant _symbol = "MSBOB";
    uint8 private constant _decimals = 9;

    uint256 private _totalSupply = 1_000_000_000 * (10 ** _decimals);
    uint256 public numTokensSell = 5_000 * 10 ** _decimals;
    uint256 public totalFee = 9;
    uint256 public swapRewardPercent = 100;
    address public marketingWallet;

    bool public buyLimit = true;
    uint256 public maxBuy = 10_000_000 * 10 ** _decimals;

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

    mapping(address => bool) public isFeeExempt;
    mapping(address => bool) public isDividendExempt;
    mapping(address => bool) public isBot;

    DividendDistributor public distributor;
    address public pair;

    bool public tradingOpen;
    bool public blacklistEnabled;
    bool private inSwap;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor(
        address _owner,
        address _marketingWallet,
        address _dividendToken
    ) Owned(_owner) {
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));

        _allowances[address(this)][address(router)] = type(uint256).max;

        dividendToken = _dividendToken;
        distributor = new DividendDistributor(_dividendToken);
        marketingWallet = _marketingWallet;

        isFeeExempt[_owner] = true;
        isFeeExempt[_marketingWallet] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;

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

    receive() external payable {}

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

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

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

    function name() external pure returns (string memory) {
        return _name;
    }

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

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

    function approve(
        address spender,
        uint256 amount
    ) external override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function transfer(
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            uint256 currentAllowance = _allowances[sender][msg.sender];
            require(currentAllowance >= amount, "Insufficient allowance");
            _allowances[sender][msg.sender] = currentAllowance - amount;
        }
        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        require(
            tradingOpen || sender == owner || recipient == owner,
            "Trading not yet enabled"
        ); //transfers disabled before openTrading

        if (blacklistEnabled) {
            require(!isBot[sender] && !isBot[recipient], "Bot");
        }

        if (buyLimit) {
            if (sender != owner && recipient != owner)
                require(amount <= maxBuy, "Too much sir");
        }

        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        uint256 contractTokenBal = balanceOf(address(this));
        bool overMinTokenBal = contractTokenBal >= numTokensSell;

        if (
            overMinTokenBal &&
            recipient == pair &&
            balanceOf(address(this)) != 0
        ) {
            swapBack();
        }

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "Insufficient Balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }

        uint256 amountReceived = shouldTakeFee(sender, recipient)
            ? takeFee(sender, amount)
            : amount;

        _balances[recipient] += amountReceived;

        if (sender != pair && !isDividendExempt[sender]) {
            try distributor.setShare(sender, _balances[sender]) {} catch {}
        }
        if (recipient != pair && !isDividendExempt[recipient]) {
            try
                distributor.setShare(recipient, _balances[recipient])
            {} catch {}
        }

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "Insufficient Balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
            _balances[recipient] += amount;
        }
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function shouldTakeFee(
        address sender,
        address recipient
    ) internal view returns (bool) {
        return (!(isFeeExempt[sender] || isFeeExempt[recipient]) &&
            (sender == pair || recipient == pair));
    }

    function takeFee(
        address sender,
        uint256 amount
    ) internal returns (uint256) {
        uint256 feeAmount = (amount * totalFee) / 100;
        _balances[address(this)] += feeAmount;

        emit Transfer(sender, address(this), feeAmount);
        return amount - feeAmount;
    }

    function swapBack() internal swapping {
        uint256 tokenBal = balanceOf(address(this));
        uint256 tokenForDividends = (tokenBal * swapRewardPercent) / 100;

        if (tokenForDividends != 0) {
            uint256 balBefore = IERC20(dividendToken).balanceOf(address(distributor));
            swapTokensForDividend(tokenForDividends, address(distributor));
            uint256 balAfter = IERC20(dividendToken).balanceOf(address(distributor));
            distributor.deposit(balAfter - balBefore);
        }

        if (tokenBal - tokenForDividends != 0) {
            swapTokensForETH(tokenBal - tokenForDividends, marketingWallet);
        }
    }

    function swapTokensForDividend(uint256 tokenAmount, address to) private {
        address[] memory path = new address[](3);
        path[0] = address(this);
        path[1] = WETH;
        path[2] = dividendToken;

        // make the swap
        router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            to,
            block.timestamp
        );
    }

    function swapTokensForETH(uint256 tokenAmount, address to) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            to,
            block.timestamp
        );
    }

    function _setIsDividendExempt(address holder, bool exempt) internal {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if (exempt) {
            distributor.setShare(holder, 0);
        } else {
            distributor.setShare(holder, _balances[holder]);
        }
    }

    function claimDividend() external {
        distributor.claimDividend(msg.sender);
    }

    function getClaimableDividendOf(
        address shareholder
    ) public view returns (uint256) {
        return distributor.getClaimableDividendOf(shareholder);
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - balanceOf(DEAD) - balanceOf(ZERO);
    }

    function getTotalDividends() external view returns (uint256) {
        return distributor.totalDividends();
    }

    function getTotalClaimed() external view returns (uint256) {
        return distributor.totalClaimed();
    }

    function getDividendsClaimedOf(
        address shareholder
    ) external view returns (uint256) {
        return distributor.getDividendsClaimedOf(shareholder);
    }

    function checkBot(address account) external view returns (bool) {
        return isBot[account];
    }

    function openTrading() external onlyOwner {
        tradingOpen = true;
    }

    function setBot(address _address, bool toggle) external onlyOwner {
        isBot[_address] = toggle;
        _setIsDividendExempt(_address, toggle);
    }

    function setIsDividendExempt(
        address holder,
        bool exempt
    ) external onlyOwner {
        _setIsDividendExempt(holder, exempt);
    }

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

    function setFee(uint256 _fee) external onlyOwner {
        require(_fee <= 14, "Fee cannot exceed 14%");
        totalFee = _fee;
    }

    function manualSend() external onlyOwner {
        payable(marketingWallet).transfer(address(this).balance);
    }

    function claimDividendOf(address holder) external onlyOwner {
        distributor.claimDividend(holder);
    }

    function manualBurn(uint256 amount) external onlyOwner returns (bool) {
        return _basicTransfer(address(this), DEAD, amount);
    }

    function setMarketingWallet(address _marketingWallet) external onlyOwner {
        marketingWallet = _marketingWallet;
    }

    function removeBuyLimit() external onlyOwner {
        buyLimit = false;
    }

    function updateBuyLimit(uint256 newLimit) external onlyOwner {
        maxBuy = newLimit;
    }

    function setBlacklistEnabled() external onlyOwner {
        require(blacklistEnabled == false, "can only be called once");
        blacklistEnabled = true;
    }

    function setSwapRewardPercent(uint256 percent) external onlyOwner {
        require(percent <= 100, "Can not exceed 100%");
        swapRewardPercent = percent;
    }

    function setSwapThresholdAmount(uint256 amount) external onlyOwner {
        numTokensSell = amount;
    }
}

File 2 of 6 : 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 3 of 6 : Owned.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Simple single owner authorization mixin.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/auth/Owned.sol)
abstract contract Owned {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event OwnerUpdated(address indexed user, address indexed newOwner);

    /*//////////////////////////////////////////////////////////////
                            OWNERSHIP STORAGE
    //////////////////////////////////////////////////////////////*/

    address public owner;

    modifier onlyOwner() virtual {
        require(msg.sender == owner, "UNAUTHORIZED");

        _;
    }

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

    constructor(address _owner) {
        owner = _owner;

        emit OwnerUpdated(address(0), _owner);
    }

    /*//////////////////////////////////////////////////////////////
                             OWNERSHIP LOGIC
    //////////////////////////////////////////////////////////////*/

    function setOwner(address newOwner) public virtual onlyOwner {
        owner = newOwner;

        emit OwnerUpdated(msg.sender, newOwner);
    }
}

File 4 of 6 : IDEXFactory.sol
// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.17;

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

    function getPair(
        address tokenA,
        address tokenB
    ) external view returns (address pair);
}

File 5 of 6 : IDEXRouter.sol
// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.17;

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

    function WETH() external pure returns (address);

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

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

File 6 of 6 : IWETH.sol
// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.17;

interface IWETH {
    function deposit() external payable;

    function withdraw(uint256) external;
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_dividendToken","type":"address"}],"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":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerUpdated","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":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"checkBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"claimDividendOf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getClaimableDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getDividendsClaimedOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualBurn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"numTokensSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","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":"removeBuyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"toggle","type":"bool"}],"name":"setBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setSwapRewardPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapThresholdAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapRewardPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"uint256","name":"newLimit","type":"uint256"}],"name":"updateBuyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052620000126009600a62000527565b6200002290633b9aca006200053f565b600155620000336009600a62000527565b62000041906113886200053f565b6002556009600381905560646004556005805460ff60a01b1916600160a01b1790556200007090600a62000527565b6200007f90629896806200053f565b6006553480156200008f57600080fd5b5060405162002ffe38038062002ffe833981016040819052620000b29162000576565b600080546001600160a01b0319166001600160a01b03851690811782556040518592907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200014e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001749190620005c0565b6001600160a01b03166080526040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9163c45a01559160048083019260209291908290030181865afa158015620001d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f79190620005c0565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000249573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026f9190620005c0565b600d80546001600160a01b0319166001600160a01b03928316179055306000908152600860209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d845290915290819020600019905590821660a052518190620002d49062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000301573d6000803e3d6000fd5b50600c80546001600160a01b039283166001600160a01b031991821617909155600580548584169216821790558482166000818152600960209081526040808320805460ff1990811660019081179092559584528184208054871682179055600d549096168352600a8252808320805486168717905530835280832080548616871790557f20677881080440a9b3c87e826370bb5d9c2f74efd4dede686d52d77a6a09f8bb8054909516861790945593548282526007909452828120849055915190927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620003f391815260200190565b60405180910390a3505050620005de565b6109ae806200265083390190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004695781600019048211156200044d576200044d62000412565b808516156200045b57918102915b93841c93908002906200042d565b509250929050565b600082620004825750600162000521565b81620004915750600062000521565b8160018114620004aa5760028114620004b557620004d5565b600191505062000521565b60ff841115620004c957620004c962000412565b50506001821b62000521565b5060208310610133831016604e8410600b8410161715620004fa575081810a62000521565b62000506838362000428565b80600019048211156200051d576200051d62000412565b0290505b92915050565b60006200053860ff84168362000471565b9392505050565b808202811582820484141762000521576200052162000412565b80516001600160a01b03811681146200057157600080fd5b919050565b6000806000606084860312156200058c57600080fd5b620005978462000559565b9250620005a76020850162000559565b9150620005b76040850162000559565b90509250925092565b600060208284031215620005d357600080fd5b620005388262000559565b60805160a051612030620006206000396000818161032e01528181611831015281816118db0152611baf015260008181611b5b0152611cc701526120306000f3fe6080604052600436106102815760003560e01c806369fe0e2d1161014f578063b1a4e0dc116100c1578063f0fc6bca1161007a578063f0fc6bca146107ea578063f283c4ba146107ff578063f429389014610815578063f685d7d81461082a578063f708a64f1461084a578063ffb54a991461086a57600080fd5b8063b1a4e0dc146106ff578063b294f11114610738578063bfe109281461074e578063bffb691d1461076e578063c9567bf91461078f578063dd62ed3e146107a457600080fd5b8063764ca51211610113578063764ca5121461066a5780638da5cb5b1461067f5780638ecc37fb1461069f57806395d89b411461028d578063a8aa1b31146106bf578063a9059cbb146106df57600080fd5b806369fe0e2d146105c957806370a08231146105e957806370db69d61461061f578063736a83a11461063557806375f0a8741461064a57600080fd5b8063342aa8b5116101f35780634d31d2c7116101ac5780634d31d2c714610513578063589210d9146105335780635cc33f74146105545780635d098b3814610574578063658d4b7f1461059457806367ee5f09146105b457600080fd5b8063342aa8b51461042e5780633bbac5791461044e5780633e07ce5b1461047e5780633f4218e0146104935780634355855a146104c35780634d1b2f9e146104f357600080fd5b80631df4ccfc116102455780631df4ccfc1461038757806323b635851461039d57806323b872dd146103bd57806329e04b4a146103dd5780632b112e49146103fd578063313ce5671461041257600080fd5b806306fdde031461028d578063095ea7b3146102ca57806313af4035146102fa5780631582358e1461031c57806318160ddd1461036857600080fd5b3661028857005b600080fd5b34801561029957600080fd5b50604080518082018252600581526426a9a127a160d91b602082015290516102c19190611d51565b60405180910390f35b3480156102d657600080fd5b506102ea6102e5366004611db6565b61088b565b60405190151581526020016102c1565b34801561030657600080fd5b5061031a610315366004611de0565b6108f8565b005b34801561032857600080fd5b506103507f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102c1565b34801561037457600080fd5b506001545b6040519081526020016102c1565b34801561039357600080fd5b5061037960035481565b3480156103a957600080fd5b506102ea6103b8366004611dfb565b610976565b3480156103c957600080fd5b506102ea6103d8366004611e14565b6109b6565b3480156103e957600080fd5b5061031a6103f8366004611dfb565b610a94565b34801561040957600080fd5b50610379610ac3565b34801561041e57600080fd5b50604051600981526020016102c1565b34801561043a57600080fd5b5061031a610449366004611e50565b610b33565b34801561045a57600080fd5b506102ea610469366004611de0565b600b6020526000908152604090205460ff1681565b34801561048a57600080fd5b5061031a610b8f565b34801561049f57600080fd5b506102ea6104ae366004611de0565b60096020526000908152604090205460ff1681565b3480156104cf57600080fd5b506102ea6104de366004611de0565b600a6020526000908152604090205460ff1681565b3480156104ff57600080fd5b5061031a61050e366004611dfb565b610bc8565b34801561051f57600080fd5b5061031a61052e366004611de0565b610bf7565b34801561053f57600080fd5b506005546102ea90600160a01b900460ff1681565b34801561056057600080fd5b5061037961056f366004611de0565b610c83565b34801561058057600080fd5b5061031a61058f366004611de0565b610cf3565b3480156105a057600080fd5b5061031a6105af366004611e50565b610d3f565b3480156105c057600080fd5b50610379610d94565b3480156105d557600080fd5b5061031a6105e4366004611dfb565b610e02565b3480156105f557600080fd5b50610379610604366004611de0565b6001600160a01b031660009081526007602052604090205490565b34801561062b57600080fd5b5061037960065481565b34801561064157600080fd5b50610379610e7a565b34801561065657600080fd5b50600554610350906001600160a01b031681565b34801561067657600080fd5b5061031a610ec4565b34801561068b57600080fd5b50600054610350906001600160a01b031681565b3480156106ab57600080fd5b506103796106ba366004611de0565b610f5d565b3480156106cb57600080fd5b50600d54610350906001600160a01b031681565b3480156106eb57600080fd5b506102ea6106fa366004611db6565b610f90565b34801561070b57600080fd5b506102ea61071a366004611de0565b6001600160a01b03166000908152600b602052604090205460ff1690565b34801561074457600080fd5b5061037960025481565b34801561075a57600080fd5b50600c54610350906001600160a01b031681565b34801561077a57600080fd5b50600d546102ea90600160a81b900460ff1681565b34801561079b57600080fd5b5061031a610f9d565b3480156107b057600080fd5b506103796107bf366004611e8c565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156107f657600080fd5b5061031a610fdc565b34801561080b57600080fd5b5061037960045481565b34801561082157600080fd5b5061031a61103b565b34801561083657600080fd5b5061031a610845366004611dfb565b6110a1565b34801561085657600080fd5b5061031a610865366004611e50565b611117565b34801561087657600080fd5b50600d546102ea90600160a01b900460ff1681565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108e69086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b0316331461092b5760405162461bcd60e51b815260040161092290611ebf565b60405180910390fd5b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b600080546001600160a01b031633146109a15760405162461bcd60e51b815260040161092290611ebf565b6109ae3061dead8461114b565b90505b919050565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610a7f576001600160a01b038416600090815260086020908152604080832033845290915290205482811015610a4f5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420616c6c6f77616e636560501b6044820152606401610922565b610a598382611efb565b6001600160a01b0386166000908152600860209081526040808320338452909152902055505b610a8a84848461121e565b90505b9392505050565b6000546001600160a01b03163314610abe5760405162461bcd60e51b815260040161092290611ebf565b600255565b60076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df5461dead60009081527fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d54600154919291610b249190611efb565b610b2e9190611efb565b905090565b6000546001600160a01b03163314610b5d5760405162461bcd60e51b815260040161092290611ebf565b6001600160a01b0382166000908152600b60205260409020805460ff1916821515179055610b8b82826116b2565b5050565b6000546001600160a01b03163314610bb95760405162461bcd60e51b815260040161092290611ebf565b6005805460ff60a01b19169055565b6000546001600160a01b03163314610bf25760405162461bcd60e51b815260040161092290611ebf565b600655565b6000546001600160a01b03163314610c215760405162461bcd60e51b815260040161092290611ebf565b600c54604051630afbf02f60e11b81526001600160a01b038381166004830152909116906315f7e05e90602401600060405180830381600087803b158015610c6857600080fd5b505af1158015610c7c573d6000803e3d6000fd5b5050505050565b600c54604051631730cfdd60e21b81526001600160a01b0383811660048301526000921690635cc33f74906024015b602060405180830381865afa158015610ccf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ae9190611f0e565b6000546001600160a01b03163314610d1d5760405162461bcd60e51b815260040161092290611ebf565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d695760405162461bcd60e51b815260040161092290611ebf565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b600c546040805163997664d760e01b815290516000926001600160a01b03169163997664d79160048083019260209291908290030181865afa158015610dde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2e9190611f0e565b6000546001600160a01b03163314610e2c5760405162461bcd60e51b815260040161092290611ebf565b600e811115610e755760405162461bcd60e51b81526020600482015260156024820152744665652063616e6e6f74206578636565642031342560581b6044820152606401610922565b600355565b600c546040805163d54ad2a160e01b815290516000926001600160a01b03169163d54ad2a19160048083019260209291908290030181865afa158015610dde573d6000803e3d6000fd5b6000546001600160a01b03163314610eee5760405162461bcd60e51b815260040161092290611ebf565b600d54600160a81b900460ff1615610f485760405162461bcd60e51b815260206004820152601760248201527f63616e206f6e6c792062652063616c6c6564206f6e63650000000000000000006044820152606401610922565b600d805460ff60a81b1916600160a81b179055565b600c54604051638ecc37fb60e01b81526001600160a01b0383811660048301526000921690638ecc37fb90602401610cb2565b6000610a8d33848461121e565b6000546001600160a01b03163314610fc75760405162461bcd60e51b815260040161092290611ebf565b600d805460ff60a01b1916600160a01b179055565b600c54604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b15801561102157600080fd5b505af1158015611035573d6000803e3d6000fd5b50505050565b6000546001600160a01b031633146110655760405162461bcd60e51b815260040161092290611ebf565b6005546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561109e573d6000803e3d6000fd5b50565b6000546001600160a01b031633146110cb5760405162461bcd60e51b815260040161092290611ebf565b60648111156111125760405162461bcd60e51b815260206004820152601360248201527243616e206e6f7420657863656564203130302560681b6044820152606401610922565b600455565b6000546001600160a01b031633146111415760405162461bcd60e51b815260040161092290611ebf565b610b8b82826116b2565b6001600160a01b038316600090815260076020526040812054828110156111ab5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610922565b6001600160a01b0380861660008181526007602052604080822087860390559287168082529083902080548701905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061120b9087815260200190565b60405180910390a3506001949350505050565b600d54600090600160a01b900460ff168061124657506000546001600160a01b038581169116145b8061125e57506000546001600160a01b038481169116145b6112aa5760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401610922565b600d54600160a81b900460ff1615611330576001600160a01b0384166000908152600b602052604090205460ff161580156112fe57506001600160a01b0383166000908152600b602052604090205460ff16155b6113305760405162461bcd60e51b8152602060048201526003602482015262109bdd60ea1b6044820152606401610922565b600554600160a01b900460ff16156113b4576000546001600160a01b0385811691161480159061136e57506000546001600160a01b03848116911614155b156113b4576006548211156113b45760405162461bcd60e51b815260206004820152600c60248201526b2a37b79036bab1b41039b4b960a11b6044820152606401610922565b600d54600160b01b900460ff16156113d8576113d184848461114b565b9050610a8d565b30600090815260076020526040902054600254811080159081906114095750600d546001600160a01b038681169116145b801561142357503060009081526007602052604090205415155b15611430576114306117c3565b6001600160a01b038616600090815260076020526040902054848110156114905760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610922565b6001600160a01b038716600090815260076020526040812086830390556114b788886119f5565b6114c157856114cb565b6114cb8887611a6a565b6001600160a01b0388166000908152600760205260408120805492935083929091906114f8908490611f27565b9091555050600d546001600160a01b0389811691161480159061153457506001600160a01b0388166000908152600a602052604090205460ff16155b156115aa57600c546001600160a01b0389811660008181526007602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561159757600080fd5b505af19250505080156115a8575060015b505b600d546001600160a01b038881169116148015906115e157506001600160a01b0387166000908152600a602052604090205460ff16155b1561165757600c546001600160a01b0388811660008181526007602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561164457600080fd5b505af1925050508015611655575060015b505b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161169c91815260200190565b60405180910390a3506001979650505050505050565b6001600160a01b03821630148015906116d95750600d546001600160a01b03838116911614155b6116e257600080fd5b6001600160a01b0382166000908152600a60205260409020805460ff1916821580159190911790915561177a57600c54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044015b600060405180830381600087803b15801561175e57600080fd5b505af1158015611772573d6000803e3d6000fd5b505050505050565b600c546001600160a01b0383811660008181526007602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401611744565b600d805460ff60b01b1916600160b01b17905530600090815260076020526040812054905060006064600454836117fa9190611f3a565b6118049190611f51565b905080156119b757600c546040516370a0823160e01b81526001600160a01b0391821660048201526000917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611878573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189c9190611f0e565b600c549091506118b69083906001600160a01b0316611b02565b600c546040516370a0823160e01b81526001600160a01b0391821660048201526000917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611922573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119469190611f0e565b600c549091506001600160a01b031663b6b55f256119648484611efb565b6040518263ffffffff1660e01b815260040161198291815260200190565b600060405180830381600087803b15801561199c57600080fd5b505af11580156119b0573d6000803e3d6000fd5b5050505050505b6119c18183611efb565b156119e4576119e46119d38284611efb565b6005546001600160a01b0316611c70565b5050600d805460ff60b01b19169055565b6001600160a01b03821660009081526009602052604081205460ff1680611a3457506001600160a01b03821660009081526009602052604090205460ff165b158015610a8d5750600d546001600160a01b0384811691161480610a8d575050600d546001600160a01b03908116911614919050565b600080606460035484611a7d9190611f3a565b611a879190611f51565b30600090815260076020526040812080549293508392909190611aab908490611f27565b909155505060405181815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3611afa8184611efb565b949350505050565b60408051600380825260808201909252600091602082016060803683370190505090503081600081518110611b3957611b39611f73565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611b8d57611b8d611f73565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600281518110611be157611be1611f73565b6001600160a01b0390921660209283029190910190910152604051635c11d79560e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d90635c11d79590611c39908690600090869088904290600401611f89565b600060405180830381600087803b158015611c5357600080fd5b505af1158015611c67573d6000803e3d6000fd5b50505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611ca557611ca5611f73565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611cf957611cf9611f73565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611c39908690600090869088904290600401611f89565b600060208083528351808285015260005b81811015611d7e57858101830151858201604001528201611d62565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146109b157600080fd5b60008060408385031215611dc957600080fd5b611dd283611d9f565b946020939093013593505050565b600060208284031215611df257600080fd5b610a8d82611d9f565b600060208284031215611e0d57600080fd5b5035919050565b600080600060608486031215611e2957600080fd5b611e3284611d9f565b9250611e4060208501611d9f565b9150604084013590509250925092565b60008060408385031215611e6357600080fd5b611e6c83611d9f565b915060208301358015158114611e8157600080fd5b809150509250929050565b60008060408385031215611e9f57600080fd5b611ea883611d9f565b9150611eb660208401611d9f565b90509250929050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156108f2576108f2611ee5565b600060208284031215611f2057600080fd5b5051919050565b808201808211156108f2576108f2611ee5565b80820281158282048414176108f2576108f2611ee5565b600082611f6e57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611fd95784516001600160a01b031683529383019391830191600101611fb4565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212203dc76064260cdddf7a018b8916a7aab836aa04b3371083960716684069794fd964736f6c6343000811003360a06040526ec097ce7bc90715b34b9f100000000060085534801561002357600080fd5b506040516109ae3803806109ae83398101604081905261004291610065565b600080546001600160a01b031916331790556001600160a01b0316608052610095565b60006020828403121561007757600080fd5b81516001600160a01b038116811461008e57600080fd5b9392505050565b6080516108f86100b66000396000818160d301526105d501526108f86000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063997664d711610071578063997664d714610162578063b6b55f251461016b578063ce7c2ac21461017e578063d54ad2a1146101c8578063e2d2e219146101d1578063ecd0c0c3146101da57600080fd5b806314b6ca96146100b95780631582358e146100ce57806315f7e05e146101125780633a98ef39146101255780635cc33f741461013c5780638ecc37fb1461014f575b600080fd5b6100cc6100c736600461079a565b6101ed565b005b6100f57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100cc6101203660046107c4565b610363565b61012e60045481565b604051908152602001610109565b61012e61014a3660046107c4565b610386565b61012e61015d3660046107c4565b610405565b61012e60055481565b6100cc6101793660046107e6565b610490565b6101ad61018c3660046107c4565b60036020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610109565b61012e60065481565b61012e60075481565b6000546100f5906001600160a01b031681565b6000546001600160a01b0316331461020457600080fd5b6001600160a01b0382166000908152600360205260409020541561022b5761022b826104f8565b801580159061025057506001600160a01b038216600090815260036020526040902054155b156102b557600180546001600160a01b03841660008181526002602052604081208390558284018455929092527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b03191690911790556102e8565b801580156102da57506001600160a01b03821660009081526003602052604090205415155b156102e8576102e882610648565b6001600160a01b038216600090815260036020526040902054600454829161030f91610815565b6103199190610828565b6004556001600160a01b03821660009081526003602052604090208190556103408161075b565b6001600160a01b0390921660009081526003602052604090206001019190915550565b6000546001600160a01b0316331461037a57600080fd5b610383816104f8565b50565b6001600160a01b03811660009081526003602052604081205481036103e65760405162461bcd60e51b81526020600482015260126024820152714e6f742061207368617265686f6c6465722160701b604482015260640160405180910390fd5b506001600160a01b031660009081526003602052604090206002015490565b6001600160a01b038116600090815260036020526040812054810361042c57506000919050565b6001600160a01b03821660009081526003602052604081205461044e9061075b565b6001600160a01b03841660009081526003602052604090206001015490915080821161047e575060009392505050565b6104888183610815565b949350505050565b6000546001600160a01b031633146104a757600080fd5b80156103835780600560008282546104bf9190610828565b90915550506004546008546104d590839061083b565b6104df9190610852565b600760008282546104f09190610828565b909155505050565b6001600160a01b038116600090815260036020526040812054900361051a5750565b600061052582610405565b9050801561064457806006600082825461053f9190610828565b90915550506001600160a01b0382166000908152600360205260408120600201805483929061056f908490610828565b90915550506001600160a01b0382166000908152600360205260409020546105969061075b565b6001600160a01b038381166000818152600360205260409081902060010193909355915163a9059cbb60e01b81526004810192909252602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af115801561061e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106429190610874565b505b5050565b60018054610657908290610815565b8154811061066757610667610896565b60009182526020808320909101546001600160a01b03848116845260029092526040909220546001805492909316929181106106a5576106a5610896565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600291829052604081205460018054919392916106f0908290610815565b8154811061070057610700610896565b60009182526020808320909101546001600160a01b031683528201929092526040019020556001805480610736576107366108ac565b600082815260209020810160001990810180546001600160a01b031916905501905550565b60006008546007548361076e919061083b565b6107789190610852565b92915050565b80356001600160a01b038116811461079557600080fd5b919050565b600080604083850312156107ad57600080fd5b6107b68361077e565b946020939093013593505050565b6000602082840312156107d657600080fd5b6107df8261077e565b9392505050565b6000602082840312156107f857600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610778576107786107ff565b80820180821115610778576107786107ff565b8082028115828204841417610778576107786107ff565b60008261086f57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561088657600080fd5b815180151581146107df57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fdfea264697066735822122039dfffef9503ab768344756cd24c8cc64b8632f9080fd86f2aaf1c838dfd662d64736f6c63430008110033000000000000000000000000ecec7e65a81b8dfc102d3a1326c3ec3f0a51198e000000000000000000000000c154f917e478e839ef59583a896a5a96595e61fd0000000000000000000000007d8146cf21e8d7cbe46054e01588207b51198729

Deployed Bytecode

0x6080604052600436106102815760003560e01c806369fe0e2d1161014f578063b1a4e0dc116100c1578063f0fc6bca1161007a578063f0fc6bca146107ea578063f283c4ba146107ff578063f429389014610815578063f685d7d81461082a578063f708a64f1461084a578063ffb54a991461086a57600080fd5b8063b1a4e0dc146106ff578063b294f11114610738578063bfe109281461074e578063bffb691d1461076e578063c9567bf91461078f578063dd62ed3e146107a457600080fd5b8063764ca51211610113578063764ca5121461066a5780638da5cb5b1461067f5780638ecc37fb1461069f57806395d89b411461028d578063a8aa1b31146106bf578063a9059cbb146106df57600080fd5b806369fe0e2d146105c957806370a08231146105e957806370db69d61461061f578063736a83a11461063557806375f0a8741461064a57600080fd5b8063342aa8b5116101f35780634d31d2c7116101ac5780634d31d2c714610513578063589210d9146105335780635cc33f74146105545780635d098b3814610574578063658d4b7f1461059457806367ee5f09146105b457600080fd5b8063342aa8b51461042e5780633bbac5791461044e5780633e07ce5b1461047e5780633f4218e0146104935780634355855a146104c35780634d1b2f9e146104f357600080fd5b80631df4ccfc116102455780631df4ccfc1461038757806323b635851461039d57806323b872dd146103bd57806329e04b4a146103dd5780632b112e49146103fd578063313ce5671461041257600080fd5b806306fdde031461028d578063095ea7b3146102ca57806313af4035146102fa5780631582358e1461031c57806318160ddd1461036857600080fd5b3661028857005b600080fd5b34801561029957600080fd5b50604080518082018252600581526426a9a127a160d91b602082015290516102c19190611d51565b60405180910390f35b3480156102d657600080fd5b506102ea6102e5366004611db6565b61088b565b60405190151581526020016102c1565b34801561030657600080fd5b5061031a610315366004611de0565b6108f8565b005b34801561032857600080fd5b506103507f0000000000000000000000007d8146cf21e8d7cbe46054e01588207b5119872981565b6040516001600160a01b0390911681526020016102c1565b34801561037457600080fd5b506001545b6040519081526020016102c1565b34801561039357600080fd5b5061037960035481565b3480156103a957600080fd5b506102ea6103b8366004611dfb565b610976565b3480156103c957600080fd5b506102ea6103d8366004611e14565b6109b6565b3480156103e957600080fd5b5061031a6103f8366004611dfb565b610a94565b34801561040957600080fd5b50610379610ac3565b34801561041e57600080fd5b50604051600981526020016102c1565b34801561043a57600080fd5b5061031a610449366004611e50565b610b33565b34801561045a57600080fd5b506102ea610469366004611de0565b600b6020526000908152604090205460ff1681565b34801561048a57600080fd5b5061031a610b8f565b34801561049f57600080fd5b506102ea6104ae366004611de0565b60096020526000908152604090205460ff1681565b3480156104cf57600080fd5b506102ea6104de366004611de0565b600a6020526000908152604090205460ff1681565b3480156104ff57600080fd5b5061031a61050e366004611dfb565b610bc8565b34801561051f57600080fd5b5061031a61052e366004611de0565b610bf7565b34801561053f57600080fd5b506005546102ea90600160a01b900460ff1681565b34801561056057600080fd5b5061037961056f366004611de0565b610c83565b34801561058057600080fd5b5061031a61058f366004611de0565b610cf3565b3480156105a057600080fd5b5061031a6105af366004611e50565b610d3f565b3480156105c057600080fd5b50610379610d94565b3480156105d557600080fd5b5061031a6105e4366004611dfb565b610e02565b3480156105f557600080fd5b50610379610604366004611de0565b6001600160a01b031660009081526007602052604090205490565b34801561062b57600080fd5b5061037960065481565b34801561064157600080fd5b50610379610e7a565b34801561065657600080fd5b50600554610350906001600160a01b031681565b34801561067657600080fd5b5061031a610ec4565b34801561068b57600080fd5b50600054610350906001600160a01b031681565b3480156106ab57600080fd5b506103796106ba366004611de0565b610f5d565b3480156106cb57600080fd5b50600d54610350906001600160a01b031681565b3480156106eb57600080fd5b506102ea6106fa366004611db6565b610f90565b34801561070b57600080fd5b506102ea61071a366004611de0565b6001600160a01b03166000908152600b602052604090205460ff1690565b34801561074457600080fd5b5061037960025481565b34801561075a57600080fd5b50600c54610350906001600160a01b031681565b34801561077a57600080fd5b50600d546102ea90600160a81b900460ff1681565b34801561079b57600080fd5b5061031a610f9d565b3480156107b057600080fd5b506103796107bf366004611e8c565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156107f657600080fd5b5061031a610fdc565b34801561080b57600080fd5b5061037960045481565b34801561082157600080fd5b5061031a61103b565b34801561083657600080fd5b5061031a610845366004611dfb565b6110a1565b34801561085657600080fd5b5061031a610865366004611e50565b611117565b34801561087657600080fd5b50600d546102ea90600160a01b900460ff1681565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108e69086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b0316331461092b5760405162461bcd60e51b815260040161092290611ebf565b60405180910390fd5b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b600080546001600160a01b031633146109a15760405162461bcd60e51b815260040161092290611ebf565b6109ae3061dead8461114b565b90505b919050565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610a7f576001600160a01b038416600090815260086020908152604080832033845290915290205482811015610a4f5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420616c6c6f77616e636560501b6044820152606401610922565b610a598382611efb565b6001600160a01b0386166000908152600860209081526040808320338452909152902055505b610a8a84848461121e565b90505b9392505050565b6000546001600160a01b03163314610abe5760405162461bcd60e51b815260040161092290611ebf565b600255565b60076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df5461dead60009081527fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d54600154919291610b249190611efb565b610b2e9190611efb565b905090565b6000546001600160a01b03163314610b5d5760405162461bcd60e51b815260040161092290611ebf565b6001600160a01b0382166000908152600b60205260409020805460ff1916821515179055610b8b82826116b2565b5050565b6000546001600160a01b03163314610bb95760405162461bcd60e51b815260040161092290611ebf565b6005805460ff60a01b19169055565b6000546001600160a01b03163314610bf25760405162461bcd60e51b815260040161092290611ebf565b600655565b6000546001600160a01b03163314610c215760405162461bcd60e51b815260040161092290611ebf565b600c54604051630afbf02f60e11b81526001600160a01b038381166004830152909116906315f7e05e90602401600060405180830381600087803b158015610c6857600080fd5b505af1158015610c7c573d6000803e3d6000fd5b5050505050565b600c54604051631730cfdd60e21b81526001600160a01b0383811660048301526000921690635cc33f74906024015b602060405180830381865afa158015610ccf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ae9190611f0e565b6000546001600160a01b03163314610d1d5760405162461bcd60e51b815260040161092290611ebf565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d695760405162461bcd60e51b815260040161092290611ebf565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b600c546040805163997664d760e01b815290516000926001600160a01b03169163997664d79160048083019260209291908290030181865afa158015610dde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2e9190611f0e565b6000546001600160a01b03163314610e2c5760405162461bcd60e51b815260040161092290611ebf565b600e811115610e755760405162461bcd60e51b81526020600482015260156024820152744665652063616e6e6f74206578636565642031342560581b6044820152606401610922565b600355565b600c546040805163d54ad2a160e01b815290516000926001600160a01b03169163d54ad2a19160048083019260209291908290030181865afa158015610dde573d6000803e3d6000fd5b6000546001600160a01b03163314610eee5760405162461bcd60e51b815260040161092290611ebf565b600d54600160a81b900460ff1615610f485760405162461bcd60e51b815260206004820152601760248201527f63616e206f6e6c792062652063616c6c6564206f6e63650000000000000000006044820152606401610922565b600d805460ff60a81b1916600160a81b179055565b600c54604051638ecc37fb60e01b81526001600160a01b0383811660048301526000921690638ecc37fb90602401610cb2565b6000610a8d33848461121e565b6000546001600160a01b03163314610fc75760405162461bcd60e51b815260040161092290611ebf565b600d805460ff60a01b1916600160a01b179055565b600c54604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b15801561102157600080fd5b505af1158015611035573d6000803e3d6000fd5b50505050565b6000546001600160a01b031633146110655760405162461bcd60e51b815260040161092290611ebf565b6005546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561109e573d6000803e3d6000fd5b50565b6000546001600160a01b031633146110cb5760405162461bcd60e51b815260040161092290611ebf565b60648111156111125760405162461bcd60e51b815260206004820152601360248201527243616e206e6f7420657863656564203130302560681b6044820152606401610922565b600455565b6000546001600160a01b031633146111415760405162461bcd60e51b815260040161092290611ebf565b610b8b82826116b2565b6001600160a01b038316600090815260076020526040812054828110156111ab5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610922565b6001600160a01b0380861660008181526007602052604080822087860390559287168082529083902080548701905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061120b9087815260200190565b60405180910390a3506001949350505050565b600d54600090600160a01b900460ff168061124657506000546001600160a01b038581169116145b8061125e57506000546001600160a01b038481169116145b6112aa5760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401610922565b600d54600160a81b900460ff1615611330576001600160a01b0384166000908152600b602052604090205460ff161580156112fe57506001600160a01b0383166000908152600b602052604090205460ff16155b6113305760405162461bcd60e51b8152602060048201526003602482015262109bdd60ea1b6044820152606401610922565b600554600160a01b900460ff16156113b4576000546001600160a01b0385811691161480159061136e57506000546001600160a01b03848116911614155b156113b4576006548211156113b45760405162461bcd60e51b815260206004820152600c60248201526b2a37b79036bab1b41039b4b960a11b6044820152606401610922565b600d54600160b01b900460ff16156113d8576113d184848461114b565b9050610a8d565b30600090815260076020526040902054600254811080159081906114095750600d546001600160a01b038681169116145b801561142357503060009081526007602052604090205415155b15611430576114306117c3565b6001600160a01b038616600090815260076020526040902054848110156114905760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610922565b6001600160a01b038716600090815260076020526040812086830390556114b788886119f5565b6114c157856114cb565b6114cb8887611a6a565b6001600160a01b0388166000908152600760205260408120805492935083929091906114f8908490611f27565b9091555050600d546001600160a01b0389811691161480159061153457506001600160a01b0388166000908152600a602052604090205460ff16155b156115aa57600c546001600160a01b0389811660008181526007602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561159757600080fd5b505af19250505080156115a8575060015b505b600d546001600160a01b038881169116148015906115e157506001600160a01b0387166000908152600a602052604090205460ff16155b1561165757600c546001600160a01b0388811660008181526007602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561164457600080fd5b505af1925050508015611655575060015b505b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161169c91815260200190565b60405180910390a3506001979650505050505050565b6001600160a01b03821630148015906116d95750600d546001600160a01b03838116911614155b6116e257600080fd5b6001600160a01b0382166000908152600a60205260409020805460ff1916821580159190911790915561177a57600c54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044015b600060405180830381600087803b15801561175e57600080fd5b505af1158015611772573d6000803e3d6000fd5b505050505050565b600c546001600160a01b0383811660008181526007602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401611744565b600d805460ff60b01b1916600160b01b17905530600090815260076020526040812054905060006064600454836117fa9190611f3a565b6118049190611f51565b905080156119b757600c546040516370a0823160e01b81526001600160a01b0391821660048201526000917f0000000000000000000000007d8146cf21e8d7cbe46054e01588207b5119872916906370a0823190602401602060405180830381865afa158015611878573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189c9190611f0e565b600c549091506118b69083906001600160a01b0316611b02565b600c546040516370a0823160e01b81526001600160a01b0391821660048201526000917f0000000000000000000000007d8146cf21e8d7cbe46054e01588207b5119872916906370a0823190602401602060405180830381865afa158015611922573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119469190611f0e565b600c549091506001600160a01b031663b6b55f256119648484611efb565b6040518263ffffffff1660e01b815260040161198291815260200190565b600060405180830381600087803b15801561199c57600080fd5b505af11580156119b0573d6000803e3d6000fd5b5050505050505b6119c18183611efb565b156119e4576119e46119d38284611efb565b6005546001600160a01b0316611c70565b5050600d805460ff60b01b19169055565b6001600160a01b03821660009081526009602052604081205460ff1680611a3457506001600160a01b03821660009081526009602052604090205460ff165b158015610a8d5750600d546001600160a01b0384811691161480610a8d575050600d546001600160a01b03908116911614919050565b600080606460035484611a7d9190611f3a565b611a879190611f51565b30600090815260076020526040812080549293508392909190611aab908490611f27565b909155505060405181815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3611afa8184611efb565b949350505050565b60408051600380825260808201909252600091602082016060803683370190505090503081600081518110611b3957611b39611f73565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611b8d57611b8d611f73565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007d8146cf21e8d7cbe46054e01588207b5119872981600281518110611be157611be1611f73565b6001600160a01b0390921660209283029190910190910152604051635c11d79560e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d90635c11d79590611c39908690600090869088904290600401611f89565b600060405180830381600087803b158015611c5357600080fd5b505af1158015611c67573d6000803e3d6000fd5b50505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611ca557611ca5611f73565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611cf957611cf9611f73565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611c39908690600090869088904290600401611f89565b600060208083528351808285015260005b81811015611d7e57858101830151858201604001528201611d62565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146109b157600080fd5b60008060408385031215611dc957600080fd5b611dd283611d9f565b946020939093013593505050565b600060208284031215611df257600080fd5b610a8d82611d9f565b600060208284031215611e0d57600080fd5b5035919050565b600080600060608486031215611e2957600080fd5b611e3284611d9f565b9250611e4060208501611d9f565b9150604084013590509250925092565b60008060408385031215611e6357600080fd5b611e6c83611d9f565b915060208301358015158114611e8157600080fd5b809150509250929050565b60008060408385031215611e9f57600080fd5b611ea883611d9f565b9150611eb660208401611d9f565b90509250929050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156108f2576108f2611ee5565b600060208284031215611f2057600080fd5b5051919050565b808201808211156108f2576108f2611ee5565b80820281158282048414176108f2576108f2611ee5565b600082611f6e57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611fd95784516001600160a01b031683529383019391830191600101611fb4565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212203dc76064260cdddf7a018b8916a7aab836aa04b3371083960716684069794fd964736f6c63430008110033

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

000000000000000000000000ecec7e65a81b8dfc102d3a1326c3ec3f0a51198e000000000000000000000000c154f917e478e839ef59583a896a5a96595e61fd0000000000000000000000007d8146cf21e8d7cbe46054e01588207b51198729

-----Decoded View---------------
Arg [0] : _owner (address): 0xeCEc7e65a81b8DfC102d3a1326c3eC3F0A51198E
Arg [1] : _marketingWallet (address): 0xc154F917e478E839EF59583a896A5a96595E61fd
Arg [2] : _dividendToken (address): 0x7D8146cf21e8D7cbe46054e01588207b51198729

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000ecec7e65a81b8dfc102d3a1326c3ec3f0a51198e
Arg [1] : 000000000000000000000000c154f917e478e839ef59583a896a5a96595e61fd
Arg [2] : 0000000000000000000000007d8146cf21e8d7cbe46054e01588207b51198729


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.