ETH Price: $2,104.51 (+3.82%)

Contract

0xD092fF0CeCf28dfC8d1FBFB2566fD144e81C858b
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve224016442025-05-03 7:04:59313 days ago1746255899IN
0xD092fF0C...4e81C858b
0 ETH0.000038760.83411253
Transfer224016402025-05-03 7:04:11313 days ago1746255851IN
0xD092fF0C...4e81C858b
0 ETH0.000068570.37003732
Approve205380042024-08-16 1:49:23574 days ago1723772963IN
0xD092fF0C...4e81C858b
0 ETH0.000092251.99830259
Approve157934552022-10-21 2:20:231239 days ago1666318823IN
0xD092fF0C...4e81C858b
0 ETH0.0010297222.13072709
Approve157740562022-10-18 9:19:471241 days ago1666084787IN
0xD092fF0C...4e81C858b
0 ETH0.0003320812.65324493
Approve157740542022-10-18 9:19:231241 days ago1666084763IN
0xD092fF0C...4e81C858b
0 ETH0.0003540314.60250767
Approve157740372022-10-18 9:15:591241 days ago1666084559IN
0xD092fF0C...4e81C858b
0 ETH0.000651414
Approve157662762022-10-17 7:15:351242 days ago1665990935IN
0xD092fF0C...4e81C858b
0 ETH0.0005064410.88444699
Approve157612732022-10-16 14:28:111243 days ago1665930491IN
0xD092fF0C...4e81C858b
0 ETH0.0006048713
Approve157608352022-10-16 13:00:111243 days ago1665925211IN
0xD092fF0C...4e81C858b
0 ETH0.0005471311.75891701
Approve157594472022-10-16 8:21:111243 days ago1665908471IN
0xD092fF0C...4e81C858b
0 ETH0.000551311.84854191
Approve157592062022-10-16 7:32:471243 days ago1665905567IN
0xD092fF0C...4e81C858b
0 ETH0.0006018112.93419226
Approve157591922022-10-16 7:29:591243 days ago1665905399IN
0xD092fF0C...4e81C858b
0 ETH0.0006048713
Approve157591842022-10-16 7:28:231243 days ago1665905303IN
0xD092fF0C...4e81C858b
0 ETH0.0006270613.47683309
Approve157591392022-10-16 7:19:231243 days ago1665904763IN
0xD092fF0C...4e81C858b
0 ETH0.0009780421.02012344
Approve157591132022-10-16 7:13:591243 days ago1665904439IN
0xD092fF0C...4e81C858b
0 ETH0.000938620.1723729
Approve157590952022-10-16 7:10:231243 days ago1665904223IN
0xD092fF0C...4e81C858b
0 ETH0.0005831912.53397736
Approve157590882022-10-16 7:08:591243 days ago1665904139IN
0xD092fF0C...4e81C858b
0 ETH0.0005025310.80047119
Approve157590822022-10-16 7:07:471243 days ago1665904067IN
0xD092fF0C...4e81C858b
0 ETH0.000615913.23694788
Approve157590562022-10-16 7:02:351243 days ago1665903755IN
0xD092fF0C...4e81C858b
0 ETH0.0006048713
Approve157590432022-10-16 6:59:591243 days ago1665903599IN
0xD092fF0C...4e81C858b
0 ETH0.0005025310.80042722
Approve157590372022-10-16 6:58:471243 days ago1665903527IN
0xD092fF0C...4e81C858b
0 ETH0.0005907212.69588922
Approve157590322022-10-16 6:57:471243 days ago1665903467IN
0xD092fF0C...4e81C858b
0 ETH0.0005960112.80962556
Approve157590272022-10-16 6:56:471243 days ago1665903407IN
0xD092fF0C...4e81C858b
0 ETH0.0009454420.31940317
Approve157590092022-10-16 6:53:111243 days ago1665903191IN
0xD092fF0C...4e81C858b
0 ETH0.0005921212.72596373
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer224016492025-05-03 7:05:59313 days ago1746255959
0xD092fF0C...4e81C858b
0.00112324 ETH
Transfer224016492025-05-03 7:05:59313 days ago1746255959
0xD092fF0C...4e81C858b
0.00112324 ETH
Transfer224016402025-05-03 7:04:11313 days ago1746255851
0xD092fF0C...4e81C858b
0.00140729 ETH
Transfer224016402025-05-03 7:04:11313 days ago1746255851
0xD092fF0C...4e81C858b
0.00140729 ETH
Transfer157934572022-10-21 2:20:471239 days ago1666318847
0xD092fF0C...4e81C858b
0.00165842 ETH
Transfer157934572022-10-21 2:20:471239 days ago1666318847
0xD092fF0C...4e81C858b
0.00165842 ETH
Transfer157740422022-10-18 9:16:591241 days ago1666084619
0xD092fF0C...4e81C858b
0.00171601 ETH
Transfer157740422022-10-18 9:16:591241 days ago1666084619
0xD092fF0C...4e81C858b
0.00171601 ETH
Transfer157662812022-10-17 7:16:351242 days ago1665990995
0xD092fF0C...4e81C858b
0.00176503 ETH
Transfer157662812022-10-17 7:16:351242 days ago1665990995
0xD092fF0C...4e81C858b
0.00176503 ETH
Transfer157657302022-10-17 5:25:231242 days ago1665984323
0xD092fF0C...4e81C858b
0.00180108 ETH
Transfer157657302022-10-17 5:25:231242 days ago1665984323
0xD092fF0C...4e81C858b
0.00180108 ETH
Transfer157646362022-10-17 1:45:111243 days ago1665971111
0xD092fF0C...4e81C858b
0.0018598 ETH
Transfer157646362022-10-17 1:45:111243 days ago1665971111
0xD092fF0C...4e81C858b
0.0018598 ETH
Transfer157612772022-10-16 14:28:591243 days ago1665930539
0xD092fF0C...4e81C858b
0.00188564 ETH
Transfer157612772022-10-16 14:28:591243 days ago1665930539
0xD092fF0C...4e81C858b
0.00188564 ETH
Transfer157608362022-10-16 13:00:231243 days ago1665925223
0xD092fF0C...4e81C858b
0.00196572 ETH
Transfer157608362022-10-16 13:00:231243 days ago1665925223
0xD092fF0C...4e81C858b
0.00196572 ETH
Transfer157602182022-10-16 10:55:591243 days ago1665917759
0xD092fF0C...4e81C858b
0.00203738 ETH
Transfer157602182022-10-16 10:55:591243 days ago1665917759
0xD092fF0C...4e81C858b
0.00203738 ETH
Transfer157598822022-10-16 9:48:471243 days ago1665913727
0xD092fF0C...4e81C858b
0.0021056 ETH
Transfer157598822022-10-16 9:48:471243 days ago1665913727
0xD092fF0C...4e81C858b
0.0021056 ETH
Transfer157595842022-10-16 8:48:351243 days ago1665910115
0xD092fF0C...4e81C858b
0.00218972 ETH
Transfer157595842022-10-16 8:48:351243 days ago1665910115
0xD092fF0C...4e81C858b
0.00218972 ETH
Transfer157594502022-10-16 8:21:471243 days ago1665908507
0xD092fF0C...4e81C858b
0.00227104 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GameofMemeTennis

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
Yes with 5000 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2022-10-16
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.5;
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);
}

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {
        owner = _owner;
    }
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }
    function renounceOwnership() public onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(address(0));
    }  
    event OwnershipTransferred(address owner);
}

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

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract GameofMemeTennis is ERC20, Ownable {
    using SafeMath for uint256;
    address routerAdress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address DEAD = 0x000000000000000000000000000000000000dEaD;

    string constant _name = "Meme Tennis";
    string constant _symbol = "MemeTennis";
    uint8 constant _decimals = 9;

    uint256 public _totalSupply = 10_000_000_000 * (10 ** _decimals);
    uint256 public _maxWalletAmount = (_totalSupply * 2) / 100;
    uint256 public _maxTxAmount = _totalSupply.mul(2).div(100); //2%

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

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;

    uint256 liquidityFee = 0; 
    uint256 marketingFee = 5;
    uint256 totalFee = liquidityFee + marketingFee;
    uint256 feeDenominator = 100;

    address public marketingFeeReceiver = 0xC57AE53094D99e817e7F432334f19E6B0eF6ACF3;

    IDEXRouter public router;
    address public pair;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000 * 1; // 0.1%
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Ownable(msg.sender) {
        router = IDEXRouter(routerAdress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        address _owner = owner;
        isFeeExempt[0xC57AE53094D99e817e7F432334f19E6B0eF6ACF3] = true;
        isTxLimitExempt[_owner] = true;
        isTxLimitExempt[0xC57AE53094D99e817e7F432334f19E6B0eF6ACF3] = true;
        isTxLimitExempt[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 override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    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) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    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){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
        
        if (recipient != pair && recipient != DEAD) {
            require(isTxLimitExempt[recipient] || _balances[recipient] + amount <= _maxWalletAmount, "Transfer amount exceeds the bag size.");
        }
        
        if(shouldSwapBack()){ swapBack(); } 

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(totalFee).div(feeDenominator);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 contractTokenBalance = swapThreshold;
        uint256 amountToLiquify = contractTokenBalance.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amountETH = address(this).balance.sub(balanceBefore);
        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);


        (bool MarketingSuccess, /* bytes memory data */) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        require(MarketingSuccess, "receiver rejected ETH transfer");

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                0xC57AE53094D99e817e7F432334f19E6B0eF6ACF3,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function buyTokens(uint256 amount, address to) internal swapping {
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(this);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0,
            path,
            to,
            block.timestamp
        );
    }

    function clearStuckBalance() external {
        payable(marketingFeeReceiver).transfer(address(this).balance);
    }

    function setWalletLimit(uint256 amountPercent) external onlyOwner {
        _maxWalletAmount = (_totalSupply * amountPercent ) / 1000;
    }

    function setFee(uint256 _liquidityFee, uint256 _marketingFee) external onlyOwner {
         liquidityFee = _liquidityFee; 
         marketingFee = _marketingFee;
         totalFee = liquidityFee + marketingFee;
    }    
    
    event AutoLiquify(uint256 amountETH, uint256 amountBOG);
}

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":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":"spender","type":"address"}],"name":"approveMax","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":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercent","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d179091556002805490911661dead179055620000486009600a62000633565b62000059906402540be400620006f2565b600355606460035460026200006f9190620006f2565b6200007b9190620005c7565b600455620000b56064620000a160026003546200040f60201b620008701790919060201c565b620004a360201b6200090b1790919060201c565b6005556000600a556005600b55600b54600a54620000d49190620005ac565b600c556064600d55600e80546001600160a01b03191673c57ae53094d99e817e7f432334f19e6b0ef6acf31790556010805460ff60a01b1916600160a01b17905560035462000127906103e890620005c7565b62000134906001620006f2565b6011553480156200014457600080fd5b5060008054336001600160a01b031991821617909155600154600f80546001600160a01b039092169190921681179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b158015620001ac57600080fd5b505afa158015620001c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e7919062000529565b6001600160a01b031663c9c65396600f60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200024457600080fd5b505afa15801562000259573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027f919062000529565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b158015620002c757600080fd5b505af1158015620002dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000302919062000529565b601080546001600160a01b0319166001600160a01b03928316179055306000908152600760209081526040808320600f54851684528252808320600019905582547f47b2b06e38cffc513e97d37792f8af534e59eaf04463a46efb6b739ac01247ce805460ff1990811660019081179092559186168086526009855283862080548416831790557f667dae67e2cf5dd62f68254e9f2ec9885e8ff0d0ab6fd5b1c700b3ccc7033ca28054841683179055600254909616855282852080549092161790556003548484526006835281842081905590519081528392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3506200072a565b60008262000420575060006200049d565b60006200042e8385620006f2565b9050826200043d8583620005c7565b146200049a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200049a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620004ed60201b60201c565b60008183620005115760405162461bcd60e51b815260040162000491919062000554565b506000620005208486620005c7565b95945050505050565b6000602082840312156200053c57600080fd5b81516001600160a01b03811681146200049a57600080fd5b600060208083528351808285015260005b81811015620005835785810183015185820160400152820162000565565b8181111562000596576000604083870101525b50601f01601f1916929092016040019392505050565b60008219821115620005c257620005c262000714565b500190565b600082620005e557634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156200062b5781600019048211156200060f576200060f62000714565b808516156200061d57918102915b93841c9390800290620005ef565b509250929050565b60006200049a60ff8416836000826200064f575060016200049d565b816200065e575060006200049d565b81600181146200067757600281146200068257620006a2565b60019150506200049d565b60ff84111562000696576200069662000714565b50506001821b6200049d565b5060208310610133831016604e8410600b8410161715620006c7575081810a6200049d565b620006d38383620005ea565b8060001904821115620006ea57620006ea62000714565b029392505050565b60008160001904831182151516156200070f576200070f62000714565b500290565b634e487b7160e01b600052601160045260246000fd5b61164f806200073a6000396000f3fe60806040526004361061018f5760003560e01c80636ddd1713116100d6578063a8aa1b311161007f578063e96fada211610059578063e96fada2146104d7578063f1d5f517146104f7578063f887ea401461051757600080fd5b8063a8aa1b3114610451578063a9059cbb14610471578063dd62ed3e1461049157600080fd5b80637d1db4a5116100b05780637d1db4a5146103c3578063893d20e8146103d957806395d89b411461040b57600080fd5b80636ddd17131461034657806370a0823114610378578063715018a6146103ae57600080fd5b8063313ce5671161013857806352f7c9881161011257806352f7c988146102f0578063571ac8b0146103105780636c0a24eb1461033057600080fd5b8063313ce567146102a7578063364333f4146102c35780633eaaf86b146102da57600080fd5b806318160ddd1161016957806318160ddd1461024357806323b872dd146102585780632f54bf6e1461027857600080fd5b80630445b6671461019b57806306fdde03146101c4578063095ea7b31461021357600080fd5b3661019657005b600080fd5b3480156101a757600080fd5b506101b160115481565b6040519081526020015b60405180910390f35b3480156101d057600080fd5b5060408051808201909152600b81527f4d656d652054656e6e697300000000000000000000000000000000000000000060208201525b6040516101bb9190611439565b34801561021f57600080fd5b5061023361022e3660046113a4565b610537565b60405190151581526020016101bb565b34801561024f57600080fd5b506003546101b1565b34801561026457600080fd5b50610233610273366004611363565b6105a4565b34801561028457600080fd5b506102336102933660046112f0565b6000546001600160a01b0391821691161490565b3480156102b357600080fd5b50604051600981526020016101bb565b3480156102cf57600080fd5b506102d861066d565b005b3480156102e657600080fd5b506101b160035481565b3480156102fc57600080fd5b506102d861030b3660046113e9565b6106a9565b34801561031c57600080fd5b5061023361032b3660046112f0565b610723565b34801561033c57600080fd5b506101b160045481565b34801561035257600080fd5b506010546102339074010000000000000000000000000000000000000000900460ff1681565b34801561038457600080fd5b506101b16103933660046112f0565b6001600160a01b031660009081526006602052604090205490565b3480156103ba57600080fd5b506102d8610731565b3480156103cf57600080fd5b506101b160055481565b3480156103e557600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101bb565b34801561041757600080fd5b5060408051808201909152600a81527f4d656d6554656e6e6973000000000000000000000000000000000000000000006020820152610206565b34801561045d57600080fd5b506010546103f3906001600160a01b031681565b34801561047d57600080fd5b5061023361048c3660046113a4565b6107e8565b34801561049d57600080fd5b506101b16104ac36600461132a565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156104e357600080fd5b50600e546103f3906001600160a01b031681565b34801561050357600080fd5b506102d86105123660046113d0565b6107f5565b34801561052357600080fd5b50600f546103f3906001600160a01b031681565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105929086815260200190565b60405180910390a35060015b92915050565b6001600160a01b03831660009081526007602090815260408083203384529091528120546000191461065857604080518082018252601681527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006020808301919091526001600160a01b038716600090815260078252838120338252909152919091205461063391849061094d565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b610663848484610987565b90505b9392505050565b600e546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156106a6573d6000803e3d6000fd5b50565b6000546001600160a01b031633146107085760405162461bcd60e51b815260206004820152600660248201527f214f574e4552000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600a829055600b81905561071c818361151d565b600c555050565b600061059e82600019610537565b6000546001600160a01b0316331461078b5760405162461bcd60e51b815260206004820152600660248201527f214f574e4552000000000000000000000000000000000000000000000000000060448201526064016106ff565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000610666338484610987565b6000546001600160a01b0316331461084f5760405162461bcd60e51b815260206004820152600660248201527f214f574e4552000000000000000000000000000000000000000000000000000060448201526064016106ff565b6103e8816003546108609190611570565b61086a9190611535565b60045550565b60008261087f5750600061059e565b600061088b8385611570565b9050826108988583611535565b146106665760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f770000000000000000000000000000000000000000000000000000000000000060648201526084016106ff565b600061066683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610bd2565b600081848411156109715760405162461bcd60e51b81526004016106ff9190611439565b50600061097e848661158f565b95945050505050565b60125460009060ff16156109a7576109a0848484610c00565b9050610666565b6010546001600160a01b038481169116148015906109d357506002546001600160a01b03848116911614155b15610a96576001600160a01b03831660009081526009602052604090205460ff1680610a2457506004546001600160a01b038416600090815260066020526040902054610a2190849061151d565b11155b610a965760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201527f73697a652e00000000000000000000000000000000000000000000000000000060648201526084016106ff565b610a9e610cef565b15610aab57610aab610d58565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b038716600090815260069091529190912054610b0691849061094d565b6001600160a01b038516600090815260066020908152604080832093909355600890529081205460ff1615610b3b5782610b45565b610b4585846111a9565b6001600160a01b038516600090815260066020526040902054909150610b6b908261124f565b6001600160a01b0380861660008181526006602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610bbf9085815260200190565b60405180910390a3506001949350505050565b60008183610bf35760405162461bcd60e51b81526004016106ff9190611439565b50600061097e8486611535565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b0386166000908152600690915291822054610c5a91849061094d565b6001600160a01b038086166000908152600660205260408082209390935590851681522054610c89908361124f565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610cdd9086815260200190565b60405180910390a35060019392505050565b6010546000906001600160a01b03163314801590610d10575060125460ff16155b8015610d36575060105474010000000000000000000000000000000000000000900460ff165b8015610d5357506011543060009081526006602052604090205410155b905090565b601280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055601154600c54600a54600091610da991600291610da39182908790610870565b9061090b565b90506000610db783836112ae565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110610df157610df16115d5565b6001600160a01b03928316602091820292909201810191909152600f54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b158015610e5e57600080fd5b505afa158015610e72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e96919061130d565b81600181518110610ea957610ea96115d5565b6001600160a01b039283166020918202929092010152600f546040517f791ac9470000000000000000000000000000000000000000000000000000000081524792919091169063791ac94790610f0c9086906000908790309042906004016114ac565b600060405180830381600087803b158015610f2657600080fd5b505af1158015610f3a573d6000803e3d6000fd5b505050506000610f5382476112ae90919063ffffffff16565b90506000610f79610f706002600a5461090b90919063ffffffff16565b600c54906112ae565b90506000610f9b6002610da384610da3600a548861087090919063ffffffff16565b90506000610fb883610da3600b548761087090919063ffffffff16565b600e546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d806000811461100f576040519150601f19603f3d011682016040523d82523d6000602084013e611014565b606091505b50509050806110655760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e73666572000060448201526064016106ff565b881561117557600f546040517ff305d719000000000000000000000000000000000000000000000000000000008152306004820152602481018b9052600060448201819052606482015273c57ae53094d99e817e7f432334f19e6b0ef6acf360848201524260a48201526001600160a01b039091169063f305d71990859060c4016060604051808303818588803b1580156110ff57600080fd5b505af1158015611113573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611138919061140b565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555050505050505050565b6000806111c7600d54610da3600c548661087090919063ffffffff16565b306000908152600660205260409020549091506111e4908261124f565b30600081815260066020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112359085815260200190565b60405180910390a361124783826112ae565b949350505050565b60008061125c838561151d565b9050838110156106665760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106ff565b600061066683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061094d565b60006020828403121561130257600080fd5b813561066681611604565b60006020828403121561131f57600080fd5b815161066681611604565b6000806040838503121561133d57600080fd5b823561134881611604565b9150602083013561135881611604565b809150509250929050565b60008060006060848603121561137857600080fd5b833561138381611604565b9250602084013561139381611604565b929592945050506040919091013590565b600080604083850312156113b757600080fd5b82356113c281611604565b946020939093013593505050565b6000602082840312156113e257600080fd5b5035919050565b600080604083850312156113fc57600080fd5b50508035926020909101359150565b60008060006060848603121561142057600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156114665785810183015185820160400152820161144a565b81811115611478576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156114fc5784516001600160a01b0316835293830193918301916001016114d7565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611530576115306115a6565b500190565b60008261156b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600081600019048311821515161561158a5761158a6115a6565b500290565b6000828210156115a1576115a16115a6565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6001600160a01b03811681146106a657600080fdfea264697066735822122019aaec8cd473e107e485e127053864959b6f91a726fb5c265df4108fa10312ea64736f6c63430008060033

Deployed Bytecode

0x60806040526004361061018f5760003560e01c80636ddd1713116100d6578063a8aa1b311161007f578063e96fada211610059578063e96fada2146104d7578063f1d5f517146104f7578063f887ea401461051757600080fd5b8063a8aa1b3114610451578063a9059cbb14610471578063dd62ed3e1461049157600080fd5b80637d1db4a5116100b05780637d1db4a5146103c3578063893d20e8146103d957806395d89b411461040b57600080fd5b80636ddd17131461034657806370a0823114610378578063715018a6146103ae57600080fd5b8063313ce5671161013857806352f7c9881161011257806352f7c988146102f0578063571ac8b0146103105780636c0a24eb1461033057600080fd5b8063313ce567146102a7578063364333f4146102c35780633eaaf86b146102da57600080fd5b806318160ddd1161016957806318160ddd1461024357806323b872dd146102585780632f54bf6e1461027857600080fd5b80630445b6671461019b57806306fdde03146101c4578063095ea7b31461021357600080fd5b3661019657005b600080fd5b3480156101a757600080fd5b506101b160115481565b6040519081526020015b60405180910390f35b3480156101d057600080fd5b5060408051808201909152600b81527f4d656d652054656e6e697300000000000000000000000000000000000000000060208201525b6040516101bb9190611439565b34801561021f57600080fd5b5061023361022e3660046113a4565b610537565b60405190151581526020016101bb565b34801561024f57600080fd5b506003546101b1565b34801561026457600080fd5b50610233610273366004611363565b6105a4565b34801561028457600080fd5b506102336102933660046112f0565b6000546001600160a01b0391821691161490565b3480156102b357600080fd5b50604051600981526020016101bb565b3480156102cf57600080fd5b506102d861066d565b005b3480156102e657600080fd5b506101b160035481565b3480156102fc57600080fd5b506102d861030b3660046113e9565b6106a9565b34801561031c57600080fd5b5061023361032b3660046112f0565b610723565b34801561033c57600080fd5b506101b160045481565b34801561035257600080fd5b506010546102339074010000000000000000000000000000000000000000900460ff1681565b34801561038457600080fd5b506101b16103933660046112f0565b6001600160a01b031660009081526006602052604090205490565b3480156103ba57600080fd5b506102d8610731565b3480156103cf57600080fd5b506101b160055481565b3480156103e557600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101bb565b34801561041757600080fd5b5060408051808201909152600a81527f4d656d6554656e6e6973000000000000000000000000000000000000000000006020820152610206565b34801561045d57600080fd5b506010546103f3906001600160a01b031681565b34801561047d57600080fd5b5061023361048c3660046113a4565b6107e8565b34801561049d57600080fd5b506101b16104ac36600461132a565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156104e357600080fd5b50600e546103f3906001600160a01b031681565b34801561050357600080fd5b506102d86105123660046113d0565b6107f5565b34801561052357600080fd5b50600f546103f3906001600160a01b031681565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105929086815260200190565b60405180910390a35060015b92915050565b6001600160a01b03831660009081526007602090815260408083203384529091528120546000191461065857604080518082018252601681527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006020808301919091526001600160a01b038716600090815260078252838120338252909152919091205461063391849061094d565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b610663848484610987565b90505b9392505050565b600e546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156106a6573d6000803e3d6000fd5b50565b6000546001600160a01b031633146107085760405162461bcd60e51b815260206004820152600660248201527f214f574e4552000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600a829055600b81905561071c818361151d565b600c555050565b600061059e82600019610537565b6000546001600160a01b0316331461078b5760405162461bcd60e51b815260206004820152600660248201527f214f574e4552000000000000000000000000000000000000000000000000000060448201526064016106ff565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000610666338484610987565b6000546001600160a01b0316331461084f5760405162461bcd60e51b815260206004820152600660248201527f214f574e4552000000000000000000000000000000000000000000000000000060448201526064016106ff565b6103e8816003546108609190611570565b61086a9190611535565b60045550565b60008261087f5750600061059e565b600061088b8385611570565b9050826108988583611535565b146106665760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f770000000000000000000000000000000000000000000000000000000000000060648201526084016106ff565b600061066683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610bd2565b600081848411156109715760405162461bcd60e51b81526004016106ff9190611439565b50600061097e848661158f565b95945050505050565b60125460009060ff16156109a7576109a0848484610c00565b9050610666565b6010546001600160a01b038481169116148015906109d357506002546001600160a01b03848116911614155b15610a96576001600160a01b03831660009081526009602052604090205460ff1680610a2457506004546001600160a01b038416600090815260066020526040902054610a2190849061151d565b11155b610a965760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201527f73697a652e00000000000000000000000000000000000000000000000000000060648201526084016106ff565b610a9e610cef565b15610aab57610aab610d58565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b038716600090815260069091529190912054610b0691849061094d565b6001600160a01b038516600090815260066020908152604080832093909355600890529081205460ff1615610b3b5782610b45565b610b4585846111a9565b6001600160a01b038516600090815260066020526040902054909150610b6b908261124f565b6001600160a01b0380861660008181526006602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610bbf9085815260200190565b60405180910390a3506001949350505050565b60008183610bf35760405162461bcd60e51b81526004016106ff9190611439565b50600061097e8486611535565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b0386166000908152600690915291822054610c5a91849061094d565b6001600160a01b038086166000908152600660205260408082209390935590851681522054610c89908361124f565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610cdd9086815260200190565b60405180910390a35060019392505050565b6010546000906001600160a01b03163314801590610d10575060125460ff16155b8015610d36575060105474010000000000000000000000000000000000000000900460ff165b8015610d5357506011543060009081526006602052604090205410155b905090565b601280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055601154600c54600a54600091610da991600291610da39182908790610870565b9061090b565b90506000610db783836112ae565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110610df157610df16115d5565b6001600160a01b03928316602091820292909201810191909152600f54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b158015610e5e57600080fd5b505afa158015610e72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e96919061130d565b81600181518110610ea957610ea96115d5565b6001600160a01b039283166020918202929092010152600f546040517f791ac9470000000000000000000000000000000000000000000000000000000081524792919091169063791ac94790610f0c9086906000908790309042906004016114ac565b600060405180830381600087803b158015610f2657600080fd5b505af1158015610f3a573d6000803e3d6000fd5b505050506000610f5382476112ae90919063ffffffff16565b90506000610f79610f706002600a5461090b90919063ffffffff16565b600c54906112ae565b90506000610f9b6002610da384610da3600a548861087090919063ffffffff16565b90506000610fb883610da3600b548761087090919063ffffffff16565b600e546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d806000811461100f576040519150601f19603f3d011682016040523d82523d6000602084013e611014565b606091505b50509050806110655760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e73666572000060448201526064016106ff565b881561117557600f546040517ff305d719000000000000000000000000000000000000000000000000000000008152306004820152602481018b9052600060448201819052606482015273c57ae53094d99e817e7f432334f19e6b0ef6acf360848201524260a48201526001600160a01b039091169063f305d71990859060c4016060604051808303818588803b1580156110ff57600080fd5b505af1158015611113573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611138919061140b565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555050505050505050565b6000806111c7600d54610da3600c548661087090919063ffffffff16565b306000908152600660205260409020549091506111e4908261124f565b30600081815260066020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112359085815260200190565b60405180910390a361124783826112ae565b949350505050565b60008061125c838561151d565b9050838110156106665760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106ff565b600061066683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061094d565b60006020828403121561130257600080fd5b813561066681611604565b60006020828403121561131f57600080fd5b815161066681611604565b6000806040838503121561133d57600080fd5b823561134881611604565b9150602083013561135881611604565b809150509250929050565b60008060006060848603121561137857600080fd5b833561138381611604565b9250602084013561139381611604565b929592945050506040919091013590565b600080604083850312156113b757600080fd5b82356113c281611604565b946020939093013593505050565b6000602082840312156113e257600080fd5b5035919050565b600080604083850312156113fc57600080fd5b50508035926020909101359150565b60008060006060848603121561142057600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156114665785810183015185820160400152820161144a565b81811115611478576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156114fc5784516001600160a01b0316835293830193918301916001016114d7565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611530576115306115a6565b500190565b60008261156b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600081600019048311821515161561158a5761158a6115a6565b500290565b6000828210156115a1576115a16115a6565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6001600160a01b03811681146106a657600080fdfea264697066735822122019aaec8cd473e107e485e127053864959b6f91a726fb5c265df4108fa10312ea64736f6c63430008060033

Deployed Bytecode Sourcemap

4082:7841:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5185:54;;;;;;;;;;;;;;;;;;;6626:25:1;;;6614:2;6599:18;5185:54:0;;;;;;;;6270:80;;;;;;;;;;-1:-1:-1;6342:5:0;;;;;;;;;;;;;;;;;6270:80;;;;;;;:::i;6692:216::-;;;;;;;;;;-1:-1:-1;6692:216:0;;;;;:::i;:::-;;:::i;:::-;;;3686:14:1;;3679:22;3661:41;;3649:2;3634:18;6692:216:0;3616:92:1;6000:88:0;;;;;;;;;;-1:-1:-1;6073:12:0;;6000:88;;7210:370;;;;;;;;;;-1:-1:-1;7210:370:0;;;;;:::i;:::-;;:::i;2320:103::-;;;;;;;;;;-1:-1:-1;2320:103:0;;;;;:::i;:::-;2375:4;2410:5;-1:-1:-1;;;;;2399:16:0;;;2410:5;;2399:16;;2320:103;6094:80;;;;;;;;;;-1:-1:-1;6094:80:0;;4420:1;8088:36:1;;8076:2;8061:18;6094:80:0;8043:87:1;11352:118:0;;;;;;;;;;;;;:::i;:::-;;4430:64;;;;;;;;;;;;;;;;11628:220;;;;;;;;;;-1:-1:-1;11628:220:0;;;;;:::i;:::-;;:::i;6916:122::-;;;;;;;;;;-1:-1:-1;6916:122:0;;;;;:::i;:::-;;:::i;4501:58::-;;;;;;;;;;;;;;;;5148:30;;;;;;;;;;-1:-1:-1;5148:30:0;;;;;;;;;;;6440:105;;;;;;;;;;-1:-1:-1;6440:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;6524:18:0;6506:7;6524:18;;;:9;:18;;;;;;;6440:105;2429:131;;;;;;;;;;;;;:::i;4566:58::-;;;;;;;;;;;;;;;;6356:78;;;;;;;;;;-1:-1:-1;6408:7:0;6426:5;-1:-1:-1;;;;;6426:5:0;6356:78;;;-1:-1:-1;;;;;2819:55:1;;;2801:74;;2789:2;2774:18;6356:78:0;2756:125:1;6180:84:0;;;;;;;;;;-1:-1:-1;6254:7:0;;;;;;;;;;;;;;;;;6180:84;;5120:19;;;;;;;;;;-1:-1:-1;5120:19:0;;;;-1:-1:-1;;;;;5120:19:0;;;7046:156;;;;;;;;;;-1:-1:-1;7046:156:0;;;;;:::i;:::-;;:::i;6551:133::-;;;;;;;;;;-1:-1:-1;6551:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;6653:19:0;;;6635:7;6653:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;6551:133;5000:80;;;;;;;;;;-1:-1:-1;5000:80:0;;;;-1:-1:-1;;;;;5000:80:0;;;11478:142;;;;;;;;;;-1:-1:-1;11478:142:0;;;;;:::i;:::-;;:::i;5089:24::-;;;;;;;;;;-1:-1:-1;5089:24:0;;;;-1:-1:-1;;;;;5089:24:0;;;6692:216;6796:10;6767:4;6784:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;6784:32:0;;;;;;;;;;:41;;;6841:37;6767:4;;6784:32;;6841:37;;;;6819:6;6626:25:1;;6614:2;6599:18;;6581:76;6841:37:0;;;;;;;;-1:-1:-1;6896:4:0;6692:216;;;;;:::o;7210:370::-;-1:-1:-1;;;;;7330:19:0;;7310:4;7330:19;;;:11;:19;;;;;;;;7350:10;7330:31;;;;;;;;-1:-1:-1;;7330:52:0;7327:186;;7432:69;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7432:19:0;;-1:-1:-1;7432:19:0;;;:11;:19;;;;;7452:10;7432:31;;;;;;;;;;:69;;7468:6;;7432:35;:69::i;:::-;-1:-1:-1;;;;;7398:19:0;;;;;;:11;:19;;;;;;;;7418:10;7398:31;;;;;;;:103;7327:186;7532:40;7546:6;7554:9;7565:6;7532:13;:40::i;:::-;7525:47;;7210:370;;;;;;:::o;11352:118::-;11409:20;;11401:61;;-1:-1:-1;;;;;11409:20:0;;;;11440:21;11401:61;;;;;11409:20;11401:61;11409:20;11401:61;11440:21;11409:20;11401:61;;;;;;;;;;;;;;;;;;;;;11352:118::o;11628:220::-;2375:4;2410:5;-1:-1:-1;;;;;2410:5:0;2281:10;2399:16;2265:38;;;;-1:-1:-1;;;2265:38:0;;6348:2:1;2265:38:0;;;6330:21:1;6387:1;6367:18;;;6360:29;6425:8;6405:18;;;6398:36;6451:18;;2265:38:0;;;;;;;;;11721:12:::1;:28:::0;;;11762:12:::1;:28:::0;;;11813:27:::1;11777:13:::0;11736;11813:27:::1;:::i;:::-;11802:8;:38:::0;-1:-1:-1;;11628:220:0:o;6916:122::-;6971:4;6995:35;7003:7;-1:-1:-1;;6995:7:0;:35::i;2429:131::-;2375:4;2410:5;-1:-1:-1;;;;;2410:5:0;2281:10;2399:16;2265:38;;;;-1:-1:-1;;;2265:38:0;;6348:2:1;2265:38:0;;;6330:21:1;6387:1;6367:18;;;6360:29;6425:8;6405:18;;;6398:36;6451:18;;2265:38:0;6320:155:1;2265:38:0;2502:1:::1;2486:18:::0;;;::::1;::::0;;2520:32:::1;::::0;2801:74:1;;;2520:32:0::1;::::0;2789:2:1;2774:18;2520:32:0::1;;;;;;;2429:131::o:0;7046:156::-;7126:4;7150:44;7164:10;7176:9;7187:6;7150:13;:44::i;11478:142::-;2375:4;2410:5;-1:-1:-1;;;;;2410:5:0;2281:10;2399:16;2265:38;;;;-1:-1:-1;;;2265:38:0;;6348:2:1;2265:38:0;;;6330:21:1;6387:1;6367:18;;;6360:29;6425:8;6405:18;;;6398:36;6451:18;;2265:38:0;6320:155:1;2265:38:0;11608:4:::1;11590:13;11575:12;;:28;;;;:::i;:::-;11574:38;;;;:::i;:::-;11555:16;:57:::0;-1:-1:-1;11478:142:0:o;605:246::-;663:7;687:6;683:47;;-1:-1:-1;717:1:0;710:8;;683:47;740:9;752:5;756:1;752;:5;:::i;:::-;740:17;-1:-1:-1;785:1:0;776:5;780:1;740:17;776:5;:::i;:::-;:10;768:56;;;;-1:-1:-1;;;768:56:0;;5946:2:1;768:56:0;;;5928:21:1;5985:2;5965:18;;;5958:30;6024:34;6004:18;;;5997:62;6095:3;6075:18;;;6068:31;6116:19;;768:56:0;5918:223:1;857:132:0;915:7;942:39;946:1;949;942:39;;;;;;;;;;;;;;;;;:3;:39::i;409:190::-;495:7;531:12;523:6;;;;515:29;;;;-1:-1:-1;;;515:29:0;;;;;;;;:::i;:::-;-1:-1:-1;555:9:0;567:5;571:1;567;:5;:::i;:::-;555:17;409:190;-1:-1:-1;;;;;409:190:0:o;7588:792::-;7700:6;;7680:4;;7700:6;;7697:63;;;7716:41;7731:6;7739:9;7750:6;7716:14;:41::i;:::-;7709:48;;;;7697:63;7797:4;;-1:-1:-1;;;;;7784:17:0;;;7797:4;;7784:17;;;;:38;;-1:-1:-1;7818:4:0;;-1:-1:-1;;;;;7805:17:0;;;7818:4;;7805:17;;7784:38;7780:200;;;-1:-1:-1;;;;;7847:26:0;;;;;;:15;:26;;;;;;;;;:79;;-1:-1:-1;7910:16:0;;-1:-1:-1;;;;;7877:20:0;;;;;;:9;:20;;;;;;:29;;7900:6;;7877:29;:::i;:::-;:49;;7847:79;7839:129;;;;-1:-1:-1;;;7839:129:0;;4825:2:1;7839:129:0;;;4807:21:1;4864:2;4844:18;;;4837:30;4903:34;4883:18;;;4876:62;4974:7;4954:18;;;4947:35;4999:19;;7839:129:0;4797:227:1;7839:129:0;8003:16;:14;:16::i;:::-;8000:35;;;8022:10;:8;:10::i;:::-;8068:53;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8068:17:0;;-1:-1:-1;8068:17:0;;;:9;:17;;;;;;;;:53;;8090:6;;8068:21;:53::i;:::-;-1:-1:-1;;;;;8048:17:0;;;;;;:9;:17;;;;;;;;:73;;;;8817:11;:19;;;;;;;;8816:20;8159:56;;8209:6;8159:56;;;8183:23;8191:6;8199;8183:7;:23::i;:::-;-1:-1:-1;;;;;8249:20:0;;;;;;:9;:20;;;;;;8134:81;;-1:-1:-1;8249:40:0;;8134:81;8249:24;:40::i;:::-;-1:-1:-1;;;;;8226:20:0;;;;;;;:9;:20;;;;;;;:63;;;;8307:43;;;;;;;;;;8335:14;6626:25:1;;6614:2;6599:18;;6581:76;8307:43:0;;;;;;;;-1:-1:-1;8368:4:0;;7588:792;-1:-1:-1;;;;7588:792:0:o;995:189::-;1081:7;1116:12;1109:5;1101:28;;;;-1:-1:-1;;;1101:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1140:9:0;1152:5;1156:1;1152;:5;:::i;8392:330::-;8522:53;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8522:17:0;;8485:4;8522:17;;;:9;:17;;;;;;;:53;;8544:6;;8522:21;:53::i;:::-;-1:-1:-1;;;;;8502:17:0;;;;;;;:9;:17;;;;;;:73;;;;8609:20;;;;;;;:32;;8634:6;8609:24;:32::i;:::-;-1:-1:-1;;;;;8586:20:0;;;;;;;:9;:20;;;;;;;:55;;;;8657:35;;;;;;;;;;8685:6;6626:25:1;;6614:2;6599:18;;6581:76;8657:35:0;;;;;;;;-1:-1:-1;8710:4:0;8392:330;;;;;:::o;9189:197::-;9276:4;;9238;;-1:-1:-1;;;;;9276:4:0;9262:10;:18;;;;:38;;-1:-1:-1;9294:6:0;;;;9293:7;9262:38;:62;;;;-1:-1:-1;9313:11:0;;;;;;;9262:62;:116;;;;-1:-1:-1;9365:13:0;;9355:4;9337:24;;;;:9;:24;;;;;;:41;;9262:116;9255:123;;9189:197;:::o;9394:1572::-;5294:6;:13;;;;5303:4;5294:13;;;9474::::1;::::0;9567:8:::1;::::0;9549:12:::1;::::0;5294:6;;9524:59:::1;::::0;9581:1:::1;::::0;9524:52:::1;::::0;;;9474:13;;9524:24:::1;:38::i;:::-;:42:::0;::::1;:52::i;:59::-;9498:85:::0;-1:-1:-1;9594:20:0::1;9617:41;:20:::0;9498:85;9617:24:::1;:41::i;:::-;9695:16;::::0;;9709:1:::1;9695:16:::0;;;;;::::1;::::0;;9594:64;;-1:-1:-1;9671:21:0::1;::::0;9695:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;9695:16:0::1;9671:40;;9740:4;9722;9727:1;9722:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9722:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;9766:6:::1;::::0;:13:::1;::::0;;;;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;9722:7;;9766:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9756:4;9761:1;9756:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9756:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;9850:6:::1;::::0;:188:::1;::::0;;;;9816:21:::1;::::0;9850:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;9922:12;;9792:21:::1;::::0;9965:4;;9992::::1;::::0;10012:15:::1;::::0;9850:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10049:17;10069:40;10095:13;10069:21;:25;;:40;;;;:::i;:::-;10049:60;;10120:19;10142:33;10155:19;10172:1;10155:12;;:16;;:19;;;;:::i;:::-;10142:8;::::0;;:12:::1;:33::i;:::-;10120:55;;10186:26;10215:51;10264:1;10215:44;10247:11;10215:27;10229:12;;10215:9;:13;;:27;;;;:::i;:51::-;10186:80;;10277:26;10306:44;10338:11;10306:27;10320:12;;10306:9;:13;;:27;;;;:::i;:44::-;10424:20;::::0;10416:77:::1;::::0;10277:73;;-1:-1:-1;10366:21:0::1;::::0;-1:-1:-1;;;;;10424:20:0;;::::1;::::0;10483:5:::1;::::0;10277:73;;10366:21;10416:77;10366:21;10416:77;10277:73;10424:20;10483:5;10416:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10365:128;;;10512:16;10504:59;;;::::0;-1:-1:-1;;;10504:59:0;;5587:2:1;10504:59:0::1;::::0;::::1;5569:21:1::0;5626:2;5606:18;;;5599:30;5665:32;5645:18;;;5638:60;5715:18;;10504:59:0::1;5559:180:1::0;10504:59:0::1;10579:19:::0;;10576:383:::1;;10614:6;::::0;:265:::1;::::0;;;;10690:4:::1;10614:265;::::0;::::1;3250:34:1::0;3300:18;;;3293:34;;;10614:6:0::1;3343:18:1::0;;;3336:34;;;3386:18;;;3379:34;10788:42:0::1;3429:19:1::0;;;3422:44;10849:15:0::1;3482:19:1::0;;;3475:35;-1:-1:-1;;;;;10614:6:0;;::::1;::::0;:22:::1;::::0;10644:18;;3161:19:1;;10614:265:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;10899:48:0::1;::::0;;7867:25:1;;;7923:2;7908:18;;7901:34;;;10899:48:0::1;::::0;-1:-1:-1;7840:18:1;10899:48:0::1;;;;;;;10576:383;-1:-1:-1::0;;5312:6:0;:14;;;;;;-1:-1:-1;;;;;;;;9394:1572:0:o;8852:329::-;8919:7;8939:17;8959:40;8984:14;;8959:20;8970:8;;8959:6;:10;;:20;;;;:::i;:40::-;9055:4;9037:24;;;;:9;:24;;;;;;8939:60;;-1:-1:-1;9037:39:0;;8939:60;9037:28;:39::i;:::-;9028:4;9010:24;;;;:9;:24;;;;;;;:66;;;;9092:42;;-1:-1:-1;;;;;9092:42:0;;;;;;;9124:9;6626:25:1;;6614:2;6599:18;;6581:76;9092:42:0;;;;;;;;9152:21;:6;9163:9;9152:10;:21::i;:::-;9145:28;8852:329;-1:-1:-1;;;;8852:329:0:o;82:179::-;140:7;;172:5;176:1;172;:5;:::i;:::-;160:17;;201:1;196;:6;;188:46;;;;-1:-1:-1;;;188:46:0;;5231:2:1;188:46:0;;;5213:21:1;5270:2;5250:18;;;5243:30;5309:29;5289:18;;;5282:57;5356:18;;188:46:0;5203:177:1;267:136:0;325:7;352:43;356:1;359;352:43;;;;;;;;;;;;;;;;;:3;:43::i;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;142:1;139;132:12;94:2;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:2;;;405:1;402;395:12;357:2;437:9;431:16;456:31;481:5;456:31;:::i;522:388::-;590:6;598;651:2;639:9;630:7;626:23;622:32;619:2;;;667:1;664;657:12;619:2;706:9;693:23;725:31;750:5;725:31;:::i;:::-;775:5;-1:-1:-1;832:2:1;817:18;;804:32;845:33;804:32;845:33;:::i;:::-;897:7;887:17;;;609:301;;;;;:::o;915:456::-;992:6;1000;1008;1061:2;1049:9;1040:7;1036:23;1032:32;1029:2;;;1077:1;1074;1067:12;1029:2;1116:9;1103:23;1135:31;1160:5;1135:31;:::i;:::-;1185:5;-1:-1:-1;1242:2:1;1227:18;;1214:32;1255:33;1214:32;1255:33;:::i;:::-;1019:352;;1307:7;;-1:-1:-1;;;1361:2:1;1346:18;;;;1333:32;;1019:352::o;1376:315::-;1444:6;1452;1505:2;1493:9;1484:7;1480:23;1476:32;1473:2;;;1521:1;1518;1511:12;1473:2;1560:9;1547:23;1579:31;1604:5;1579:31;:::i;:::-;1629:5;1681:2;1666:18;;;;1653:32;;-1:-1:-1;;;1463:228:1:o;1696:180::-;1755:6;1808:2;1796:9;1787:7;1783:23;1779:32;1776:2;;;1824:1;1821;1814:12;1776:2;-1:-1:-1;1847:23:1;;1766:110;-1:-1:-1;1766:110:1:o;1881:248::-;1949:6;1957;2010:2;1998:9;1989:7;1985:23;1981:32;1978:2;;;2026:1;2023;2016:12;1978:2;-1:-1:-1;;2049:23:1;;;2119:2;2104:18;;;2091:32;;-1:-1:-1;1968:161:1:o;2134:306::-;2222:6;2230;2238;2291:2;2279:9;2270:7;2266:23;2262:32;2259:2;;;2307:1;2304;2297:12;2259:2;2336:9;2330:16;2320:26;;2386:2;2375:9;2371:18;2365:25;2355:35;;2430:2;2419:9;2415:18;2409:25;2399:35;;2249:191;;;;;:::o;3962:656::-;4074:4;4103:2;4132;4121:9;4114:21;4164:6;4158:13;4207:6;4202:2;4191:9;4187:18;4180:34;4232:1;4242:140;4256:6;4253:1;4250:13;4242:140;;;4351:14;;;4347:23;;4341:30;4317:17;;;4336:2;4313:26;4306:66;4271:10;;4242:140;;;4400:6;4397:1;4394:13;4391:2;;;4470:1;4465:2;4456:6;4445:9;4441:22;4437:31;4430:42;4391:2;-1:-1:-1;4534:2:1;4522:15;4539:66;4518:88;4503:104;;;;4609:2;4499:113;;4083:535;-1:-1:-1;;;4083:535:1:o;6662:1026::-;6924:4;6972:3;6961:9;6957:19;7003:6;6992:9;6985:25;7029:2;7067:6;7062:2;7051:9;7047:18;7040:34;7110:3;7105:2;7094:9;7090:18;7083:31;7134:6;7169;7163:13;7200:6;7192;7185:22;7238:3;7227:9;7223:19;7216:26;;7277:2;7269:6;7265:15;7251:29;;7298:1;7308:218;7322:6;7319:1;7316:13;7308:218;;;7387:13;;-1:-1:-1;;;;;7383:62:1;7371:75;;7501:15;;;;7466:12;;;;7344:1;7337:9;7308:218;;;-1:-1:-1;;;;;;;7582:55:1;;;;7577:2;7562:18;;7555:83;-1:-1:-1;;;7669:3:1;7654:19;7647:35;7543:3;6933:755;-1:-1:-1;;;6933:755:1:o;8135:128::-;8175:3;8206:1;8202:6;8199:1;8196:13;8193:2;;;8212:18;;:::i;:::-;-1:-1:-1;8248:9:1;;8183:80::o;8268:274::-;8308:1;8334;8324:2;;8369:77;8366:1;8359:88;8470:4;8467:1;8460:15;8498:4;8495:1;8488:15;8324:2;-1:-1:-1;8527:9:1;;8314:228::o;8547:::-;8587:7;8713:1;-1:-1:-1;;8641:74:1;8638:1;8635:81;8630:1;8623:9;8616:17;8612:105;8609:2;;;8720:18;;:::i;:::-;-1:-1:-1;8760:9:1;;8599:176::o;8780:125::-;8820:4;8848:1;8845;8842:8;8839:2;;;8853:18;;:::i;:::-;-1:-1:-1;8890:9:1;;8829:76::o;8910:184::-;8962:77;8959:1;8952:88;9059:4;9056:1;9049:15;9083:4;9080:1;9073:15;9099:184;9151:77;9148:1;9141:88;9248:4;9245:1;9238:15;9272:4;9269:1;9262:15;9477:154;-1:-1:-1;;;;;9556:5:1;9552:54;9545:5;9542:65;9532:2;;9621:1;9618;9611:12

Swarm Source

ipfs://19aaec8cd473e107e485e127053864959b6f91a726fb5c265df4108fa10312ea

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.