ETH Price: $2,427.75 (+2.32%)

Contract

0x00FEeF969243D9faB0913b6e97a24DC6341a986B
 

Overview

ETH Balance

0.019322553654497424 ETH

Eth Value

$46.91 (@ $2,427.75/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve201378162024-06-21 4:50:2375 days ago1718945423IN
0x00FEeF96...6341a986B
0 ETH0.0001182.53652169
Transfer198358072024-05-09 23:36:47118 days ago1715297807IN
0x00FEeF96...6341a986B
0 ETH0.000236074.1320111
Approve191581972024-02-04 23:26:11213 days ago1707089171IN
0x00FEeF96...6341a986B
0 ETH0.0006867314.76192156
Approve191539522024-02-04 9:07:35213 days ago1707037655IN
0x00FEeF96...6341a986B
0 ETH0.0008361218.06617625
Approve191436732024-02-02 22:25:47215 days ago1706912747IN
0x00FEeF96...6341a986B
0 ETH0.0008441918.14653277
Approve191371742024-02-02 0:31:59216 days ago1706833919IN
0x00FEeF96...6341a986B
0 ETH0.0010001821.49958546
Approve191356832024-02-01 19:32:23216 days ago1706815943IN
0x00FEeF96...6341a986B
0 ETH0.0018977740.7938974
Approve191322542024-02-01 7:59:23216 days ago1706774363IN
0x00FEeF96...6341a986B
0 ETH0.0008700618.7025767
Approve191309492024-02-01 3:35:11216 days ago1706758511IN
0x00FEeF96...6341a986B
0 ETH0.0010350522.37027358
Approve191309382024-02-01 3:32:59216 days ago1706758379IN
0x00FEeF96...6341a986B
0 ETH0.0009771121.11811892
Approve191307412024-02-01 2:52:23217 days ago1706755943IN
0x00FEeF96...6341a986B
0 ETH0.0012029126.03212856
Transfer191307302024-02-01 2:50:11217 days ago1706755811IN
0x00FEeF96...6341a986B
0 ETH0.0008664921.65161291
Approve191307142024-02-01 2:46:47217 days ago1706755607IN
0x00FEeF96...6341a986B
0 ETH0.0010486922.70048537
Approve191307052024-02-01 2:44:59217 days ago1706755499IN
0x00FEeF96...6341a986B
0 ETH0.0011186124.21404616
Approve191302832024-02-01 1:19:47217 days ago1706750387IN
0x00FEeF96...6341a986B
0 ETH0.0011567825.03377923
Approve191266662024-01-31 13:08:59217 days ago1706706539IN
0x00FEeF96...6341a986B
0 ETH0.0015968634.32564405
Approve191259782024-01-31 10:50:47217 days ago1706698247IN
0x00FEeF96...6341a986B
0 ETH0.0018432539.62210111
Approve191259082024-01-31 10:36:23217 days ago1706697383IN
0x00FEeF96...6341a986B
0 ETH0.0014857931.93822542
Approve191253642024-01-31 8:46:35217 days ago1706690795IN
0x00FEeF96...6341a986B
0 ETH0.0009111119.57499258
Approve191231782024-01-31 1:23:59218 days ago1706664239IN
0x00FEeF96...6341a986B
0 ETH0.0009557720.65691937
Approve191184312024-01-30 9:28:35218 days ago1706606915IN
0x00FEeF96...6341a986B
0 ETH0.0010109521.73113439
Approve191183352024-01-30 9:09:23218 days ago1706605763IN
0x00FEeF96...6341a986B
0 ETH0.0010793923.17239287
Approve191177072024-01-30 7:02:59218 days ago1706598179IN
0x00FEeF96...6341a986B
0 ETH0.0014232430.59358456
Approve191175932024-01-30 6:40:11218 days ago1706596811IN
0x00FEeF96...6341a986B
0 ETH0.0011133223.93164728
Approve191175792024-01-30 6:37:23218 days ago1706596643IN
0x00FEeF96...6341a986B
0 ETH0.0010015321.50093795
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
201379582024-06-21 5:18:5975 days ago1718947139
0x00FEeF96...6341a986B
0.00137127 ETH
191748122024-02-07 7:24:59210 days ago1707290699
0x00FEeF96...6341a986B
0.00603701 ETH
191587232024-02-05 1:11:47213 days ago1707095507
0x00FEeF96...6341a986B
0.00065147 ETH
191581972024-02-04 23:26:11213 days ago1707089171
0x00FEeF96...6341a986B
0.00033955 ETH
191473482024-02-03 10:50:23214 days ago1706957423
0x00FEeF96...6341a986B
0.00241196 ETH
191438752024-02-02 23:07:11215 days ago1706915231
0x00FEeF96...6341a986B
0.00293541 ETH
191438682024-02-02 23:05:47215 days ago1706915147
0x00FEeF96...6341a986B
0.003217 ETH
191438622024-02-02 23:04:23215 days ago1706915063
0x00FEeF96...6341a986B
0.00235884 ETH
191438562024-02-02 23:03:11215 days ago1706914991
0x00FEeF96...6341a986B
0.05118952 ETH
191438562024-02-02 23:03:11215 days ago1706914991
0x00FEeF96...6341a986B
0.00252139 ETH
191438452024-02-02 23:00:59215 days ago1706914859
0x00FEeF96...6341a986B
0.00270134 ETH
191438292024-02-02 22:57:47215 days ago1706914667
0x00FEeF96...6341a986B
0.00362826 ETH
191437972024-02-02 22:51:23215 days ago1706914283
0x00FEeF96...6341a986B
0.00492025 ETH
191371762024-02-02 0:32:23216 days ago1706833943
0x00FEeF96...6341a986B
0.00232403 ETH
191356842024-02-01 19:32:35216 days ago1706815955
0x00FEeF96...6341a986B
0.00112272 ETH
191322542024-02-01 7:59:23216 days ago1706774363
0x00FEeF96...6341a986B
0.00179724 ETH
191309442024-02-01 3:34:11216 days ago1706758451
0x00FEeF96...6341a986B
0.00111296 ETH
191309412024-02-01 3:33:35216 days ago1706758415
0x00FEeF96...6341a986B
0.00933739 ETH
191307492024-02-01 2:53:59217 days ago1706756039
0x00FEeF96...6341a986B
0.00508363 ETH
191307372024-02-01 2:51:35217 days ago1706755895
0x00FEeF96...6341a986B
0.0056108 ETH
191307072024-02-01 2:45:23217 days ago1706755523
0x00FEeF96...6341a986B
0.00126031 ETH
191302862024-02-01 1:20:23217 days ago1706750423
0x00FEeF96...6341a986B
0.00090903 ETH
191301052024-02-01 0:43:35217 days ago1706748215
0x00FEeF96...6341a986B
0.00354542 ETH
191266772024-01-31 13:11:23217 days ago1706706683
0x00FEeF96...6341a986B
0.00172567 ETH
191262042024-01-31 11:36:23217 days ago1706700983
0x00FEeF96...6341a986B
0.00217143 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Ace

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-25
*/

/**
    Website    : https://www.acechain.tech/
    Twitter    : https://twitter.com/AceChainERC20
    Telegram   : https://t.me/AceChainCoin
**/

pragma solidity 0.8.19;
// SPDX-License-Identifier: MIT

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

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

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

}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract Ace is Context, IERC20, Ownable {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping(address => uint256) private _holderLastTransferTimestamp;

    bool public isTransferDelay = true;
    address payable private _marketingWallet;
    address private constant _deadAddress = address(0xdead);

    uint256 private _initialBuyTax=30;
    uint256 private _initialSaleTax=35;
    uint256 private _finalBuyTax=5;
    uint256 private _finalSaleTax=5;
    
    uint256 private _reduceBuyTaxAt=25;
    uint256 private _reduceSellTaxAt=35;
    uint256 private _preventSwapBefore=35;
    uint256 private _buyCount=0;

    string private constant _name = unicode"Ace Chain";
    string private constant _symbol = unicode"ACE";
    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 10000000 * 10**_decimals;

    uint256 public _maxTxAmount = 200000 * 10**_decimals;
    uint256 public _maxWalletSize = 200000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 0 * 10**_decimals;
    uint256 public _maxTaxSwap= 75000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;

    bool private isTradingOpen;
    bool private isInSwap = false;    
    bool private isSwapEnabled = false;

    event MaxTxAmountUpdated(uint _maxTxAmount);

    modifier lockTheSwap {
        isInSwap = true;
        _;
        isInSwap = false;
    }

    constructor () {
        _marketingWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[_deadAddress]= true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingWallet] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

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

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approveTx(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        isTransferDelay = false;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToFee(uint256 amount) private {
        _marketingWallet.transfer(amount);
    }

    function openTrading() external onlyOwner() {
        require(!isTradingOpen, "trading is already open");

        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approveTx(address(this), address(uniswapV2Router), _tTotal);

        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);

        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);

        isSwapEnabled = true;
        isTradingOpen = true;
    }

    receive() external payable {}

    function manualSwap() external {
        require(_msgSender() == _marketingWallet);

        uint256 tokenBalance = balanceOf(address(this));
        if(tokenBalance > 0){
          swapTokensForEth(tokenBalance);
        }

        uint256 ethBalance = address(this).balance;
        if(ethBalance > 0){
          sendETHToFee(ethBalance);
        }
    }

    function _approveTx(address _ownerAddress, address _spenderAddress, uint256 _amount) private {
        require(_ownerAddress != address(0), "ERC20: approve from the zero address");
        require(_spenderAddress != address(0), "ERC20: approve to the zero address");

        _allowances[_ownerAddress][_spenderAddress] = _amount;
        emit Approval(_ownerAddress, _spenderAddress, _amount);
    }

    function _transferTx(address _from, address _to, uint256 _amount) private {
        require(_from != address(0), "ERC20: transfer from the zero address");
        require(_to != address(0), "ERC20: transfer to the zero address");
        require(_amount > 0, "Transfer amount must be greater than zero");

        uint256 taxAmount = 0;
        if (_from != owner() && _to != owner()) {

            if (isTransferDelay) {
                  if (_to != address(uniswapV2Router) && _to != address(uniswapV2Pair)) {
                      require(
                          _holderLastTransferTimestamp[tx.origin] <
                              block.number,
                          "_transferTx:: Transfer Delay enabled.  Only one purchase per block allowed."
                      );
                      _holderLastTransferTimestamp[tx.origin] = block.number;
                  }
              }

            if (_from == uniswapV2Pair && _to != address(uniswapV2Router) && ! _isExcludedFromFee[_to] ) {
                require(_amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(_to) + _amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                _buyCount++;
            }

            if ( _to == uniswapV2Pair && _from != address(this) ){
                taxAmount = _amount.mul 
                ((_buyCount>_reduceSellTaxAt)
                    ?_finalSaleTax:_initialSaleTax).div(100
                );
            } else if (_from == uniswapV2Pair && _to != address(this) ){
                taxAmount = _amount.mul
                ((_buyCount>_reduceBuyTaxAt)
                    ?_finalBuyTax:_initialBuyTax).div(100
                );
            }

            uint256 tokenContractBalance = balanceOf(address(this));
            if (
                !isInSwap && 
                _to == uniswapV2Pair && 
                isSwapEnabled && 
                tokenContractBalance > _taxSwapThreshold && 
                _buyCount>_preventSwapBefore
            ) {
                swapTokensForEth(min(_amount, min(tokenContractBalance, _maxTaxSwap)));
                uint256 ethContractBalance = address(this).balance;
                if(ethContractBalance > 50000000000000000) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if(taxAmount > 0){
          _balances[address(this)] = _balances[address(this)].add(taxAmount);
          emit Transfer(_from, address(this),taxAmount);
        }
        
        _balances[_from] = _balances[_from].sub(_amount);
        _balances[_to] = _balances[_to].add(_amount.sub(taxAmount));
        emit Transfer(_from, _to, _amount.sub(taxAmount));
    }
}

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":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"isTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526006805460ff19166001179055601e6007556023600881905560056009818155600a9182556019600b55600c839055600d929092556000600e556200004a919062000378565b620000599062030d4062000390565b600f556200006a6009600a62000378565b620000799062030d4062000390565b6010556200008a6009600a62000378565b6200009790600062000390565b601155620000a86009600a62000378565b620000b790620124f862000390565b6012556014805461ffff60a81b19169055348015620000d557600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060068054610100600160a81b03191661010033021790556200013c6009600a62000378565b6200014b906298968062000390565b336000908152600160208190526040822092909255600390620001766000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560039093527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c80548516600190811790915530845282842080548616821790556006546101009004909116835291208054909216179055620002033390565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200023d6009600a62000378565b6200024c906298968062000390565b60405190815260200160405180910390a3620003aa565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002ba5781600019048211156200029e576200029e62000263565b80851615620002ac57918102915b93841c93908002906200027e565b509250929050565b600082620002d35750600162000372565b81620002e25750600062000372565b8160018114620002fb5760028114620003065762000326565b600191505062000372565b60ff8411156200031a576200031a62000263565b50506001821b62000372565b5060208310610133831016604e8410600b84101617156200034b575081810a62000372565b62000357838362000279565b80600019048211156200036e576200036e62000263565b0290505b92915050565b60006200038960ff841683620002c2565b9392505050565b808202811582820484141762000372576200037262000263565b6118af80620003ba6000396000f3fe6080604052600436106101185760003560e01c8063751039fc116100a0578063a9059cbb11610064578063a9059cbb14610304578063bf474bed14610324578063c9567bf91461033a578063dd62ed3e1461034f578063e4905fd31461039557600080fd5b8063751039fc1461026f5780637d1db4a5146102845780638da5cb5b1461029a5780638f9a55c0146102c257806395d89b41146102d857600080fd5b806323b872dd116100e757806323b872dd146101d1578063313ce567146101f157806351bc3c851461020d57806370a0823114610224578063715018a61461025a57600080fd5b806306fdde0314610124578063095ea7b3146101685780630faee56f1461019857806318160ddd146101bc57600080fd5b3661011f57005b600080fd5b34801561013057600080fd5b5060408051808201909152600981526820b1b29021b430b4b760b91b60208201525b60405161015f919061147e565b60405180910390f35b34801561017457600080fd5b506101886101833660046114e4565b6103af565b604051901515815260200161015f565b3480156101a457600080fd5b506101ae60125481565b60405190815260200161015f565b3480156101c857600080fd5b506101ae6103c6565b3480156101dd57600080fd5b506101886101ec366004611510565b6103e6565b3480156101fd57600080fd5b506040516009815260200161015f565b34801561021957600080fd5b5061022261044f565b005b34801561023057600080fd5b506101ae61023f366004611551565b6001600160a01b031660009081526001602052604090205490565b34801561026657600080fd5b506102226104a7565b34801561027b57600080fd5b50610222610524565b34801561029057600080fd5b506101ae600f5481565b3480156102a657600080fd5b506000546040516001600160a01b03909116815260200161015f565b3480156102ce57600080fd5b506101ae60105481565b3480156102e457600080fd5b5060408051808201909152600381526241434560e81b6020820152610152565b34801561031057600080fd5b5061018861031f3660046114e4565b6105dd565b34801561033057600080fd5b506101ae60115481565b34801561034657600080fd5b506102226105ea565b34801561035b57600080fd5b506101ae61036a36600461156e565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156103a157600080fd5b506006546101889060ff1681565b60006103bc3384846109a5565b5060015b92915050565b60006103d46009600a6116a1565b6103e190629896806116b0565b905090565b60006103f3848484610ac9565b610445843361044085604051806060016040528060288152602001611852602891396001600160a01b038a16600090815260026020908152604080832033845290915290205491906110dd565b6109a5565b5060019392505050565b60065461010090046001600160a01b0316336001600160a01b03161461047457600080fd5b3060009081526001602052604090205480156104935761049381611117565b4780156104a3576104a381611291565b5050565b6000546001600160a01b031633146104da5760405162461bcd60e51b81526004016104d1906116c7565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461054e5760405162461bcd60e51b81526004016104d1906116c7565b61055a6009600a6116a1565b61056790629896806116b0565b600f556105766009600a6116a1565b61058390629896806116b0565b6010556006805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6105bd6009600a6116a1565b6105ca90629896806116b0565b60405190815260200160405180910390a1565b60006103bc338484610ac9565b6000546001600160a01b031633146106145760405162461bcd60e51b81526004016104d1906116c7565b601454600160a01b900460ff161561066e5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104d1565b601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556106b69030906106a96009600a6116a1565b61044090629896806116b0565b601360009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610709573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072d91906116fc565b6001600160a01b031663c9c6539630601360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561078f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b391906116fc565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610800573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082491906116fc565b601480546001600160a01b039283166001600160a01b03199091161790556013541663f305d719473061086c816001600160a01b031660009081526001602052604090205490565b6000806108816000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156108e9573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061090e9190611719565b505060145460135460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098b9190611747565b506014805462ff00ff60a01b19166201000160a01b179055565b6001600160a01b038316610a075760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d1565b6001600160a01b038216610a685760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d1565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b2d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d1565b6001600160a01b038216610b8f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d1565b60008111610bf15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104d1565b600080546001600160a01b03858116911614801590610c1e57506000546001600160a01b03848116911614155b15610f9a5760065460ff1615610d0a576013546001600160a01b03848116911614801590610c5a57506014546001600160a01b03848116911614155b15610d0a57326000908152600560205260409020544311610cf75760405162461bcd60e51b815260206004820152604b60248201527f5f7472616e7366657254783a3a205472616e736665722044656c617920656e6160448201527f626c65642e20204f6e6c79206f6e652070757263686173652070657220626c6f60648201526a31b59030b63637bbb2b21760a91b608482015260a4016104d1565b3260009081526005602052604090204390555b6014546001600160a01b038581169116148015610d3557506013546001600160a01b03848116911614155b8015610d5a57506001600160a01b03831660009081526003602052604090205460ff16155b15610e4257600f54821115610db15760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016104d1565b60105482610dd4856001600160a01b031660009081526001602052604090205490565b610dde9190611769565b1115610e2c5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016104d1565b600e8054906000610e3c8361177c565b91905055505b6014546001600160a01b038481169116148015610e6857506001600160a01b0384163014155b15610ea057610e996064610e93600c54600e5411610e8857600854610e8c565b600a545b85906112cf565b90611358565b9050610ef3565b6014546001600160a01b038581169116148015610ec657506001600160a01b0383163014155b15610ef357610ef06064610e93600b54600e5411610ee657600754610e8c565b60095485906112cf565b90505b30600090815260016020526040902054601454600160a81b900460ff16158015610f2a57506014546001600160a01b038581169116145b8015610f3f5750601454600160b01b900460ff165b8015610f4c575060115481115b8015610f5b5750600d54600e54115b15610f9857610f7d610f7884610f738460125461139a565b61139a565b611117565b4766b1a2bc2ec50000811115610f9657610f9647611291565b505b505b80156110145730600090815260016020526040902054610fba90826113af565b30600081815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061100b9085815260200190565b60405180910390a35b6001600160a01b038416600090815260016020526040902054611037908361140e565b6001600160a01b03851660009081526001602052604090205561107c61105d838361140e565b6001600160a01b038516600090815260016020526040902054906113af565b6001600160a01b0380851660008181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6110c6858561140e565b60405190815260200160405180910390a350505050565b600081848411156111015760405162461bcd60e51b81526004016104d1919061147e565b50600061110e8486611795565b95945050505050565b6014805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061115f5761115f6117a8565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156111b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc91906116fc565b816001815181106111ef576111ef6117a8565b6001600160a01b03928316602091820292909201015260135461121591309116846109a5565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac9479061124e9085906000908690309042906004016117be565b600060405180830381600087803b15801561126857600080fd5b505af115801561127c573d6000803e3d6000fd5b50506014805460ff60a81b1916905550505050565b6006546040516101009091046001600160a01b0316906108fc8315029083906000818181858888f193505050501580156104a3573d6000803e3d6000fd5b6000826000036112e1575060006103c0565b60006112ed83856116b0565b9050826112fa858361182f565b146113515760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104d1565b9392505050565b600061135183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611450565b60008183116113a95782611351565b50919050565b6000806113bc8385611769565b9050838110156113515760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104d1565b600061135183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110dd565b600081836114715760405162461bcd60e51b81526004016104d1919061147e565b50600061110e848661182f565b600060208083528351808285015260005b818110156114ab5785810183015185820160400152820161148f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146114e157600080fd5b50565b600080604083850312156114f757600080fd5b8235611502816114cc565b946020939093013593505050565b60008060006060848603121561152557600080fd5b8335611530816114cc565b92506020840135611540816114cc565b929592945050506040919091013590565b60006020828403121561156357600080fd5b8135611351816114cc565b6000806040838503121561158157600080fd5b823561158c816114cc565b9150602083013561159c816114cc565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156115f85781600019048211156115de576115de6115a7565b808516156115eb57918102915b93841c93908002906115c2565b509250929050565b60008261160f575060016103c0565b8161161c575060006103c0565b8160018114611632576002811461163c57611658565b60019150506103c0565b60ff84111561164d5761164d6115a7565b50506001821b6103c0565b5060208310610133831016604e8410600b841016171561167b575081810a6103c0565b61168583836115bd565b8060001904821115611699576116996115a7565b029392505050565b600061135160ff841683611600565b80820281158282048414176103c0576103c06115a7565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561170e57600080fd5b8151611351816114cc565b60008060006060848603121561172e57600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561175957600080fd5b8151801515811461135157600080fd5b808201808211156103c0576103c06115a7565b60006001820161178e5761178e6115a7565b5060010190565b818103818111156103c0576103c06115a7565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561180e5784516001600160a01b0316835293830193918301916001016117e9565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261184c57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201ab3baa2c953102feadcdb94d1ac49103fc144b6e46d532e7ff6acb8e18e969364736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101185760003560e01c8063751039fc116100a0578063a9059cbb11610064578063a9059cbb14610304578063bf474bed14610324578063c9567bf91461033a578063dd62ed3e1461034f578063e4905fd31461039557600080fd5b8063751039fc1461026f5780637d1db4a5146102845780638da5cb5b1461029a5780638f9a55c0146102c257806395d89b41146102d857600080fd5b806323b872dd116100e757806323b872dd146101d1578063313ce567146101f157806351bc3c851461020d57806370a0823114610224578063715018a61461025a57600080fd5b806306fdde0314610124578063095ea7b3146101685780630faee56f1461019857806318160ddd146101bc57600080fd5b3661011f57005b600080fd5b34801561013057600080fd5b5060408051808201909152600981526820b1b29021b430b4b760b91b60208201525b60405161015f919061147e565b60405180910390f35b34801561017457600080fd5b506101886101833660046114e4565b6103af565b604051901515815260200161015f565b3480156101a457600080fd5b506101ae60125481565b60405190815260200161015f565b3480156101c857600080fd5b506101ae6103c6565b3480156101dd57600080fd5b506101886101ec366004611510565b6103e6565b3480156101fd57600080fd5b506040516009815260200161015f565b34801561021957600080fd5b5061022261044f565b005b34801561023057600080fd5b506101ae61023f366004611551565b6001600160a01b031660009081526001602052604090205490565b34801561026657600080fd5b506102226104a7565b34801561027b57600080fd5b50610222610524565b34801561029057600080fd5b506101ae600f5481565b3480156102a657600080fd5b506000546040516001600160a01b03909116815260200161015f565b3480156102ce57600080fd5b506101ae60105481565b3480156102e457600080fd5b5060408051808201909152600381526241434560e81b6020820152610152565b34801561031057600080fd5b5061018861031f3660046114e4565b6105dd565b34801561033057600080fd5b506101ae60115481565b34801561034657600080fd5b506102226105ea565b34801561035b57600080fd5b506101ae61036a36600461156e565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156103a157600080fd5b506006546101889060ff1681565b60006103bc3384846109a5565b5060015b92915050565b60006103d46009600a6116a1565b6103e190629896806116b0565b905090565b60006103f3848484610ac9565b610445843361044085604051806060016040528060288152602001611852602891396001600160a01b038a16600090815260026020908152604080832033845290915290205491906110dd565b6109a5565b5060019392505050565b60065461010090046001600160a01b0316336001600160a01b03161461047457600080fd5b3060009081526001602052604090205480156104935761049381611117565b4780156104a3576104a381611291565b5050565b6000546001600160a01b031633146104da5760405162461bcd60e51b81526004016104d1906116c7565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461054e5760405162461bcd60e51b81526004016104d1906116c7565b61055a6009600a6116a1565b61056790629896806116b0565b600f556105766009600a6116a1565b61058390629896806116b0565b6010556006805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6105bd6009600a6116a1565b6105ca90629896806116b0565b60405190815260200160405180910390a1565b60006103bc338484610ac9565b6000546001600160a01b031633146106145760405162461bcd60e51b81526004016104d1906116c7565b601454600160a01b900460ff161561066e5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104d1565b601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556106b69030906106a96009600a6116a1565b61044090629896806116b0565b601360009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610709573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072d91906116fc565b6001600160a01b031663c9c6539630601360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561078f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b391906116fc565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610800573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082491906116fc565b601480546001600160a01b039283166001600160a01b03199091161790556013541663f305d719473061086c816001600160a01b031660009081526001602052604090205490565b6000806108816000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156108e9573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061090e9190611719565b505060145460135460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098b9190611747565b506014805462ff00ff60a01b19166201000160a01b179055565b6001600160a01b038316610a075760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d1565b6001600160a01b038216610a685760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d1565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b2d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d1565b6001600160a01b038216610b8f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d1565b60008111610bf15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104d1565b600080546001600160a01b03858116911614801590610c1e57506000546001600160a01b03848116911614155b15610f9a5760065460ff1615610d0a576013546001600160a01b03848116911614801590610c5a57506014546001600160a01b03848116911614155b15610d0a57326000908152600560205260409020544311610cf75760405162461bcd60e51b815260206004820152604b60248201527f5f7472616e7366657254783a3a205472616e736665722044656c617920656e6160448201527f626c65642e20204f6e6c79206f6e652070757263686173652070657220626c6f60648201526a31b59030b63637bbb2b21760a91b608482015260a4016104d1565b3260009081526005602052604090204390555b6014546001600160a01b038581169116148015610d3557506013546001600160a01b03848116911614155b8015610d5a57506001600160a01b03831660009081526003602052604090205460ff16155b15610e4257600f54821115610db15760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016104d1565b60105482610dd4856001600160a01b031660009081526001602052604090205490565b610dde9190611769565b1115610e2c5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016104d1565b600e8054906000610e3c8361177c565b91905055505b6014546001600160a01b038481169116148015610e6857506001600160a01b0384163014155b15610ea057610e996064610e93600c54600e5411610e8857600854610e8c565b600a545b85906112cf565b90611358565b9050610ef3565b6014546001600160a01b038581169116148015610ec657506001600160a01b0383163014155b15610ef357610ef06064610e93600b54600e5411610ee657600754610e8c565b60095485906112cf565b90505b30600090815260016020526040902054601454600160a81b900460ff16158015610f2a57506014546001600160a01b038581169116145b8015610f3f5750601454600160b01b900460ff165b8015610f4c575060115481115b8015610f5b5750600d54600e54115b15610f9857610f7d610f7884610f738460125461139a565b61139a565b611117565b4766b1a2bc2ec50000811115610f9657610f9647611291565b505b505b80156110145730600090815260016020526040902054610fba90826113af565b30600081815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061100b9085815260200190565b60405180910390a35b6001600160a01b038416600090815260016020526040902054611037908361140e565b6001600160a01b03851660009081526001602052604090205561107c61105d838361140e565b6001600160a01b038516600090815260016020526040902054906113af565b6001600160a01b0380851660008181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6110c6858561140e565b60405190815260200160405180910390a350505050565b600081848411156111015760405162461bcd60e51b81526004016104d1919061147e565b50600061110e8486611795565b95945050505050565b6014805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061115f5761115f6117a8565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156111b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc91906116fc565b816001815181106111ef576111ef6117a8565b6001600160a01b03928316602091820292909201015260135461121591309116846109a5565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac9479061124e9085906000908690309042906004016117be565b600060405180830381600087803b15801561126857600080fd5b505af115801561127c573d6000803e3d6000fd5b50506014805460ff60a81b1916905550505050565b6006546040516101009091046001600160a01b0316906108fc8315029083906000818181858888f193505050501580156104a3573d6000803e3d6000fd5b6000826000036112e1575060006103c0565b60006112ed83856116b0565b9050826112fa858361182f565b146113515760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104d1565b9392505050565b600061135183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611450565b60008183116113a95782611351565b50919050565b6000806113bc8385611769565b9050838110156113515760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104d1565b600061135183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110dd565b600081836114715760405162461bcd60e51b81526004016104d1919061147e565b50600061110e848661182f565b600060208083528351808285015260005b818110156114ab5785810183015185820160400152820161148f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146114e157600080fd5b50565b600080604083850312156114f757600080fd5b8235611502816114cc565b946020939093013593505050565b60008060006060848603121561152557600080fd5b8335611530816114cc565b92506020840135611540816114cc565b929592945050506040919091013590565b60006020828403121561156357600080fd5b8135611351816114cc565b6000806040838503121561158157600080fd5b823561158c816114cc565b9150602083013561159c816114cc565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156115f85781600019048211156115de576115de6115a7565b808516156115eb57918102915b93841c93908002906115c2565b509250929050565b60008261160f575060016103c0565b8161161c575060006103c0565b8160018114611632576002811461163c57611658565b60019150506103c0565b60ff84111561164d5761164d6115a7565b50506001821b6103c0565b5060208310610133831016604e8410600b841016171561167b575081810a6103c0565b61168583836115bd565b8060001904821115611699576116996115a7565b029392505050565b600061135160ff841683611600565b80820281158282048414176103c0576103c06115a7565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561170e57600080fd5b8151611351816114cc565b60008060006060848603121561172e57600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561175957600080fd5b8151801515811461135157600080fd5b808201808211156103c0576103c06115a7565b60006001820161178e5761178e6115a7565b5060010190565b818103818111156103c0576103c06115a7565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561180e5784516001600160a01b0316835293830193918301916001016117e9565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261184c57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201ab3baa2c953102feadcdb94d1ac49103fc144b6e46d532e7ff6acb8e18e969364736f6c63430008130033

Deployed Bytecode Sourcemap

3624:8609:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5692:83;;;;;;;;;;-1:-1:-1;5762:5:0;;;;;;;;;;;;-1:-1:-1;;;5762:5:0;;;;5692:83;;;;;;;:::i;:::-;;;;;;;;6853:163;;;;;;;;;;-1:-1:-1;6853:163:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6853:163:0;1023:187:1;4889:49:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;4889:49:0;1215:177:1;6096:95:0;;;;;;;;;;;;;:::i;6528:317::-;;;;;;;;;;-1:-1:-1;6528:317:0;;;;;:::i;:::-;;:::i;6005:83::-;;;;;;;;;;-1:-1:-1;6005:83:0;;4635:1;2000:36:1;;1988:2;1973:18;6005:83:0;1858:184:1;8665:368:0;;;;;;;;;;;;;:::i;:::-;;5878:119;;;;;;;;;;-1:-1:-1;5878:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;5971:18:0;5944:7;5971:18;;;:9;:18;;;;;;;5878:119;2705:148;;;;;;;;;;;;;:::i;7623:195::-;;;;;;;;;;;;;:::i;4711:52::-;;;;;;;;;;;;;;;;2491:79;;;;;;;;;;-1:-1:-1;2529:7:0;2556:6;2491:79;;-1:-1:-1;;;;;2556:6:0;;;2445:51:1;;2433:2;2418:18;2491:79:0;2299:203:1;4770:54:0;;;;;;;;;;;;;;;;5783:87;;;;;;;;;;-1:-1:-1;5855:7:0;;;;;;;;;;;;-1:-1:-1;;;5855:7:0;;;;5783:87;;6199:169;;;;;;;;;;-1:-1:-1;6199:169:0;;;;;:::i;:::-;;:::i;4831:51::-;;;;;;;;;;;;;;;;7932:688;;;;;;;;;;;;;:::i;6376:143::-;;;;;;;;;;-1:-1:-1;6376:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6484:18:0;;;6457:7;6484:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6376:143;4013:34;;;;;;;;;;-1:-1:-1;4013:34:0;;;;;;;;6853:163;6928:4;6945:41;326:10;6970:7;6979:6;6945:10;:41::i;:::-;-1:-1:-1;7004:4:0;6853:163;;;;;:::o;6096:95::-;6149:7;4689:13;4635:1;4689:2;:13;:::i;:::-;4678:24;;:8;:24;:::i;:::-;6169:14;;6096:95;:::o;6528:317::-;6626:4;6643:38;6655:6;6663:9;6674:6;6643:11;:38::i;:::-;6692:123;6703:6;326:10;6725:89;6763:6;6725:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6725:19:0;;;;;;:11;:19;;;;;;;;326:10;6725:33;;;;;;;;;;:37;:89::i;:::-;6692:10;:123::i;:::-;-1:-1:-1;6833:4:0;6528:317;;;;;:::o;8665:368::-;8731:16;;;;;-1:-1:-1;;;;;8731:16:0;326:10;-1:-1:-1;;;;;8715:32:0;;8707:41;;;;;;8802:4;8761:20;5971:18;;;:9;:18;;;;;;8822:16;;8819:75;;8852:30;8869:12;8852:16;:30::i;:::-;8927:21;8962:14;;8959:67;;8990:24;9003:10;8990:12;:24::i;:::-;8696:337;;8665:368::o;2705:148::-;2618:6;;-1:-1:-1;;;;;2618:6:0;326:10;2618:22;2610:67;;;;-1:-1:-1;;;2610:67:0;;;;;;;:::i;:::-;;;;;;;;;2812:1:::1;2796:6:::0;;2775:40:::1;::::0;-1:-1:-1;;;;;2796:6:0;;::::1;::::0;2775:40:::1;::::0;2812:1;;2775:40:::1;2843:1;2826:19:::0;;-1:-1:-1;;;;;;2826:19:0::1;::::0;;2705:148::o;7623:195::-;2618:6;;-1:-1:-1;;;;;2618:6:0;326:10;2618:22;2610:67;;;;-1:-1:-1;;;2610:67:0;;;;;;;:::i;:::-;4689:13:::1;4635:1;4689:2;:13;:::i;:::-;4678:24;::::0;:8:::1;:24;:::i;:::-;7676:12;:22:::0;4689:13:::1;4635:1;4689:2;:13;:::i;:::-;4678:24;::::0;:8:::1;:24;:::i;:::-;7709:14;:24:::0;7744:15:::1;:23:::0;;-1:-1:-1;;7744:23:0::1;::::0;;7783:27:::1;4689:13;4635:1;-1:-1:-1::0;4689:13:0::1;:::i;:::-;4678:24;::::0;:8:::1;:24;:::i;:::-;7783:27;::::0;1361:25:1;;;1349:2;1334:18;7783:27:0::1;;;;;;;7623:195::o:0;6199:169::-;6277:4;6294:44;326:10;6320:9;6331:6;6294:11;:44::i;7932:688::-;2618:6;;-1:-1:-1;;;;;2618:6:0;326:10;2618:22;2610:67;;;;-1:-1:-1;;;2610:67:0;;;;;;;:::i;:::-;7996:13:::1;::::0;-1:-1:-1;;;7996:13:0;::::1;;;7995:14;7987:50;;;::::0;-1:-1:-1;;;7987:50:0;;5151:2:1;7987:50:0::1;::::0;::::1;5133:21:1::0;5190:2;5170:18;;;5163:30;5229:25;5209:18;;;5202:53;5272:18;;7987:50:0::1;4949:347:1::0;7987:50:0::1;8050:15;:80:::0;;-1:-1:-1;;;;;;8050:80:0::1;8087:42;8050:80:::0;;::::1;::::0;;;8141:60:::1;::::0;8160:4:::1;::::0;4689:13:::1;4635:1;4689:2;:13;:::i;:::-;4678:24;::::0;:8:::1;:24;:::i;8141:60::-;8248:15;;;;;;;;;-1:-1:-1::0;;;;;8248:15:0::1;-1:-1:-1::0;;;;;8248:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8230:55:0::1;;8294:4;8301:15;;;;;;;;;-1:-1:-1::0;;;;;8301:15:0::1;-1:-1:-1::0;;;;;8301:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8230:94;::::0;-1:-1:-1;;;;;;8230:94:0::1;::::0;;;;;;-1:-1:-1;;;;;5787:15:1;;;8230:94:0::1;::::0;::::1;5769:34:1::0;5839:15;;5819:18;;;5812:43;5704:18;;8230:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8214:13;:110:::0;;-1:-1:-1;;;;;8214:110:0;;::::1;-1:-1:-1::0;;;;;;8214:110:0;;::::1;;::::0;;8335:15:::1;::::0;::::1;:31;8374:21;8405:4;8411:24;8405:4:::0;-1:-1:-1;;;;;5971:18:0;5944:7;5971:18;;;:9;:18;;;;;;;5878:119;8411:24:::1;8436:1;8438::::0;8440:7:::1;2529::::0;2556:6;-1:-1:-1;;;;;2556:6:0;;2491:79;8440:7:::1;8335:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;8335:129:0;;;-1:-1:-1;;;;;6225:15:1;;;8335:129:0::1;::::0;::::1;6207:34:1::0;6257:18;;;6250:34;;;;6300:18;;;6293:34;;;;6343:18;;;6336:34;6407:15;;;6386:19;;;6379:44;8448:15:0::1;6439:19:1::0;;;6432:35;6141:19;;8335:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;8484:13:0::1;::::0;8515:15:::1;::::0;8477:71:::1;::::0;-1:-1:-1;;;8477:71:0;;-1:-1:-1;;;;;8515:15:0;;::::1;8477:71;::::0;::::1;6963:51:1::0;-1:-1:-1;;7030:18:1;;;7023:34;8484:13:0;::::1;::::0;-1:-1:-1;8477:29:0::1;::::0;6936:18:1;;8477:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;8561:13:0::1;:20:::0;;-1:-1:-1;;;;8592:20:0;-1:-1:-1;;;8592:20:0;;;7932:688::o;9041:406::-;-1:-1:-1;;;;;9153:27:0;;9145:76;;;;-1:-1:-1;;;9145:76:0;;7552:2:1;9145:76:0;;;7534:21:1;7591:2;7571:18;;;7564:30;7630:34;7610:18;;;7603:62;-1:-1:-1;;;7681:18:1;;;7674:34;7725:19;;9145:76:0;7350:400:1;9145:76:0;-1:-1:-1;;;;;9240:29:0;;9232:76;;;;-1:-1:-1;;;9232:76:0;;7957:2:1;9232:76:0;;;7939:21:1;7996:2;7976:18;;;7969:30;8035:34;8015:18;;;8008:62;-1:-1:-1;;;8086:18:1;;;8079:32;8128:19;;9232:76:0;7755:398:1;9232:76:0;-1:-1:-1;;;;;9321:26:0;;;;;;;:11;:26;;;;;;;;:43;;;;;;;;;;;;;:53;;;9390:49;;1361:25:1;;;9390:49:0;;1334:18:1;9390:49:0;;;;;;;9041:406;;;:::o;9455:2775::-;-1:-1:-1;;;;;9548:19:0;;9540:69;;;;-1:-1:-1;;;9540:69:0;;8360:2:1;9540:69:0;;;8342:21:1;8399:2;8379:18;;;8372:30;8438:34;8418:18;;;8411:62;-1:-1:-1;;;8489:18:1;;;8482:35;8534:19;;9540:69:0;8158:401:1;9540:69:0;-1:-1:-1;;;;;9628:17:0;;9620:65;;;;-1:-1:-1;;;9620:65:0;;8766:2:1;9620:65:0;;;8748:21:1;8805:2;8785:18;;;8778:30;8844:34;8824:18;;;8817:62;-1:-1:-1;;;8895:18:1;;;8888:33;8938:19;;9620:65:0;8564:399:1;9620:65:0;9714:1;9704:7;:11;9696:65;;;;-1:-1:-1;;;9696:65:0;;9170:2:1;9696:65:0;;;9152:21:1;9209:2;9189:18;;;9182:30;9248:34;9228:18;;;9221:62;-1:-1:-1;;;9299:18:1;;;9292:39;9348:19;;9696:65:0;8968:405:1;9696:65:0;9774:17;2556:6;;-1:-1:-1;;;;;9810:16:0;;;2556:6;;9810:16;;;;:34;;-1:-1:-1;2529:7:0;2556:6;-1:-1:-1;;;;;9830:14:0;;;2556:6;;9830:14;;9810:34;9806:2040;;;9867:15;;;;9863:507;;;9924:15;;-1:-1:-1;;;;;9909:31:0;;;9924:15;;9909:31;;;;:64;;-1:-1:-1;9959:13:0;;-1:-1:-1;;;;;9944:29:0;;;9959:13;;9944:29;;9909:64;9905:448;;;10065:9;10036:39;;;;:28;:39;;;;;;10109:12;-1:-1:-1;10000:252:0;;;;-1:-1:-1;;;10000:252:0;;9580:2:1;10000:252:0;;;9562:21:1;9619:2;9599:18;;;9592:30;9658:34;9638:18;;;9631:62;9729:34;9709:18;;;9702:62;-1:-1:-1;;;9780:19:1;;;9773:42;9832:19;;10000:252:0;9378:479:1;10000:252:0;10306:9;10277:39;;;;:28;:39;;;;;10319:12;10277:54;;9905:448;10399:13;;-1:-1:-1;;;;;10390:22:0;;;10399:13;;10390:22;:57;;;;-1:-1:-1;10431:15:0;;-1:-1:-1;;;;;10416:31:0;;;10431:15;;10416:31;;10390:57;:86;;;;-1:-1:-1;;;;;;10453:23:0;;;;;;:18;:23;;;;;;;;10451:25;10390:86;10386:319;;;10517:12;;10506:7;:23;;10498:61;;;;-1:-1:-1;;;10498:61:0;;10064:2:1;10498:61:0;;;10046:21:1;10103:2;10083:18;;;10076:30;10142:27;10122:18;;;10115:55;10187:18;;10498:61:0;9862:349:1;10498:61:0;10614:14;;10603:7;10586:14;10596:3;-1:-1:-1;;;;;5971:18:0;5944:7;5971:18;;;:9;:18;;;;;;;5878:119;10586:14;:24;;;;:::i;:::-;:42;;10578:81;;;;-1:-1:-1;;;10578:81:0;;10548:2:1;10578:81:0;;;10530:21:1;10587:2;10567:18;;;10560:30;10626:28;10606:18;;;10599:56;10672:18;;10578:81:0;10346:350:1;10578:81:0;10678:9;:11;;;:9;:11;;;:::i;:::-;;;;;;10386:319;10733:13;;-1:-1:-1;;;;;10726:20:0;;;10733:13;;10726:20;:46;;;;-1:-1:-1;;;;;;10750:22:0;;10767:4;10750:22;;10726:46;10721:479;;;10805:139;10922:3;10805:112;10847:16;;10837:9;;:26;10836:80;;10901:15;;10836:80;;;10887:13;;10836:80;10805:7;;:11;:112::i;:::-;:116;;:139::i;:::-;10793:151;;10721:479;;;10979:13;;-1:-1:-1;;;;;10970:22:0;;;10979:13;;10970:22;:46;;;;-1:-1:-1;;;;;;10996:20:0;;11011:4;10996:20;;10970:46;10966:234;;;11049:135;11162:3;11049:108;11090:15;;11080:9;;:25;11079:77;;11142:14;;11079:77;;;11129:12;;11049:7;;:11;:108::i;:135::-;11037:147;;10966:234;11265:4;11216:28;5971:18;;;:9;:18;;;;;;11309:8;;-1:-1:-1;;;11309:8:0;;;;11308:9;:51;;;;-1:-1:-1;11346:13:0;;-1:-1:-1;;;;;11339:20:0;;;11346:13;;11339:20;11308:51;:86;;;;-1:-1:-1;11381:13:0;;-1:-1:-1;;;11381:13:0;;;;11308:86;:148;;;;;11439:17;;11416:20;:40;11308:148;:198;;;;;11488:18;;11478:9;;:28;11308:198;11286:549;;;11541:70;11558:52;11562:7;11571:38;11575:20;11597:11;;11571:3;:38::i;:::-;11558:3;:52::i;:::-;11541:16;:70::i;:::-;11659:21;11723:17;11702:38;;11699:121;;;11765:35;11778:21;11765:12;:35::i;:::-;11522:313;11286:549;9846:2000;9806:2040;11861:13;;11858:166;;11933:4;11915:24;;;;:9;:24;;;;;;:39;;11944:9;11915:28;:39::i;:::-;11906:4;11888:24;;;;:9;:24;;;;;;;:66;;;;11972:40;;-1:-1:-1;;;;;11972:40:0;;;;;;;12002:9;1361:25:1;;1349:2;1334:18;;1215:177;11972:40:0;;;;;;;;11858:166;-1:-1:-1;;;;;12063:16:0;;;;;;:9;:16;;;;;;:29;;12084:7;12063:20;:29::i;:::-;-1:-1:-1;;;;;12044:16:0;;;;;;:9;:16;;;;;:48;12120:42;12139:22;:7;12151:9;12139:11;:22::i;:::-;-1:-1:-1;;;;;12120:14:0;;;;;;:9;:14;;;;;;;:18;:42::i;:::-;-1:-1:-1;;;;;12103:14:0;;;;;;;:9;:14;;;;;:59;;;;12178:44;;;12199:22;:7;12211:9;12199:11;:22::i;:::-;12178:44;;1361:25:1;;;1349:2;1334:18;12178:44:0;;;;;;;9529:2701;9455:2775;;;:::o;1383:190::-;1469:7;1505:12;1497:6;;;;1489:29;;;;-1:-1:-1;;;1489:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1529:9:0;1541:5;1545:1;1541;:5;:::i;:::-;1529:17;1383:190;-1:-1:-1;;;;;1383:190:0:o;7130:485::-;5234:8;:15;;-1:-1:-1;;;;5234:15:0;-1:-1:-1;;;5234:15:0;;;7232:16:::1;::::0;;7246:1:::1;7232:16:::0;;;;;::::1;::::0;;-1:-1:-1;;7232:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;7232:16:0::1;7208:40;;7277:4;7259;7264:1;7259:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7259:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;7303:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;7303:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;7259:7;;7303:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7293:4;7298:1;7293:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7293:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;7370:15:::1;::::0;7336:64:::1;::::0;7355:4:::1;::::0;7370:15:::1;7388:11:::0;7336:10:::1;:64::i;:::-;7411:15;::::0;:196:::1;::::0;-1:-1:-1;;;7411:196:0;;-1:-1:-1;;;;;7411:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;7492:11;;7411:15:::1;::::0;7534:4;;7561::::1;::::0;7581:15:::1;::::0;7411:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5272:8:0;:16;;-1:-1:-1;;;;5272:16:0;;;-1:-1:-1;;;;7130:485:0:o;7826:98::-;7883:16;;:33;;:16;;;;-1:-1:-1;;;;;7883:16:0;;:33;;;;;;;;;;;;:16;:33;;;;;;;;;;;;;;;;;;;1581:246;1639:7;1663:1;1668;1663:6;1659:47;;-1:-1:-1;1693:1:0;1686:8;;1659:47;1716:9;1728:5;1732:1;1728;:5;:::i;:::-;1716:17;-1:-1:-1;1761:1:0;1752:5;1756:1;1716:17;1752:5;:::i;:::-;:10;1744:56;;;;-1:-1:-1;;;1744:56:0;;12647:2:1;1744:56:0;;;12629:21:1;12686:2;12666:18;;;12659:30;12725:34;12705:18;;;12698:62;-1:-1:-1;;;12776:18:1;;;12769:31;12817:19;;1744:56:0;12445:397:1;1744:56:0;1818:1;1581:246;-1:-1:-1;;;1581:246:0:o;1835:132::-;1893:7;1920:39;1924:1;1927;1920:39;;;;;;;;;;;;;;;;;:3;:39::i;7024:98::-;7081:7;7108:1;7106;:3;7105:9;;7113:1;7105:9;;;-1:-1:-1;7111:1:0;7024:98;-1:-1:-1;7024:98:0:o;1052:179::-;1110:7;;1142:5;1146:1;1142;:5;:::i;:::-;1130:17;;1171:1;1166;:6;;1158:46;;;;-1:-1:-1;;;1158:46:0;;13049:2:1;1158:46:0;;;13031:21:1;13088:2;13068:18;;;13061:30;13127:29;13107:18;;;13100:57;13174:18;;1158:46:0;12847:351:1;1239:136:0;1297:7;1324:43;1328:1;1331;1324:43;;;;;;;;;;;;;;;;;:3;:43::i;1975:189::-;2061:7;2096:12;2089:5;2081:28;;;;-1:-1:-1;;;2081:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2120:9:0;2132:5;2136:1;2132;:5;:::i;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;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;2900:127::-;2961:10;2956:3;2952:20;2949:1;2942:31;2992:4;2989:1;2982:15;3016:4;3013:1;3006:15;3032:422;3121:1;3164:5;3121:1;3178:270;3199:7;3189:8;3186:21;3178:270;;;3258:4;3254:1;3250:6;3246:17;3240:4;3237:27;3234:53;;;3267:18;;:::i;:::-;3317:7;3307:8;3303:22;3300:55;;;3337:16;;;;3300:55;3416:22;;;;3376:15;;;;3178:270;;;3182:3;3032:422;;;;;:::o;3459:806::-;3508:5;3538:8;3528:80;;-1:-1:-1;3579:1:1;3593:5;;3528:80;3627:4;3617:76;;-1:-1:-1;3664:1:1;3678:5;;3617:76;3709:4;3727:1;3722:59;;;;3795:1;3790:130;;;;3702:218;;3722:59;3752:1;3743:10;;3766:5;;;3790:130;3827:3;3817:8;3814:17;3811:43;;;3834:18;;:::i;:::-;-1:-1:-1;;3890:1:1;3876:16;;3905:5;;3702:218;;4004:2;3994:8;3991:16;3985:3;3979:4;3976:13;3972:36;3966:2;3956:8;3953:16;3948:2;3942:4;3939:12;3935:35;3932:77;3929:159;;;-1:-1:-1;4041:19:1;;;4073:5;;3929:159;4120:34;4145:8;4139:4;4120:34;:::i;:::-;4190:6;4186:1;4182:6;4178:19;4169:7;4166:32;4163:58;;;4201:18;;:::i;:::-;4239:20;;3459:806;-1:-1:-1;;;3459:806:1:o;4270:140::-;4328:5;4357:47;4398:4;4388:8;4384:19;4378:4;4357:47;:::i;4415:168::-;4488:9;;;4519;;4536:15;;;4530:22;;4516:37;4506:71;;4557:18;;:::i;4588:356::-;4790:2;4772:21;;;4809:18;;;4802:30;4868:34;4863:2;4848:18;;4841:62;4935:2;4920:18;;4588:356::o;5301:251::-;5371:6;5424:2;5412:9;5403:7;5399:23;5395:32;5392:52;;;5440:1;5437;5430:12;5392:52;5472:9;5466:16;5491:31;5516:5;5491:31;:::i;6478:306::-;6566:6;6574;6582;6635:2;6623:9;6614:7;6610:23;6606:32;6603:52;;;6651:1;6648;6641:12;6603:52;6680:9;6674:16;6664:26;;6730:2;6719:9;6715:18;6709:25;6699:35;;6774:2;6763:9;6759:18;6753:25;6743:35;;6478:306;;;;;:::o;7068:277::-;7135:6;7188:2;7176:9;7167:7;7163:23;7159:32;7156:52;;;7204:1;7201;7194:12;7156:52;7236:9;7230:16;7289:5;7282:13;7275:21;7268:5;7265:32;7255:60;;7311:1;7308;7301:12;10216:125;10281:9;;;10302:10;;;10299:36;;;10315:18;;:::i;10701:135::-;10740:3;10761:17;;;10758:43;;10781:18;;:::i;:::-;-1:-1:-1;10828:1:1;10817:13;;10701:135::o;10841:128::-;10908:9;;;10929:11;;;10926:37;;;10943:18;;:::i;11106:127::-;11167:10;11162:3;11158:20;11155:1;11148:31;11198:4;11195:1;11188:15;11222:4;11219:1;11212:15;11238:980;11500:4;11548:3;11537:9;11533:19;11579:6;11568:9;11561:25;11605:2;11643:6;11638:2;11627:9;11623:18;11616:34;11686:3;11681:2;11670:9;11666:18;11659:31;11710:6;11745;11739:13;11776:6;11768;11761:22;11814:3;11803:9;11799:19;11792:26;;11853:2;11845:6;11841:15;11827:29;;11874:1;11884:195;11898:6;11895:1;11892:13;11884:195;;;11963:13;;-1:-1:-1;;;;;11959:39:1;11947:52;;12054:15;;;;12019:12;;;;11995:1;11913:9;11884:195;;;-1:-1:-1;;;;;;;12135:32:1;;;;12130:2;12115:18;;12108:60;-1:-1:-1;;;12199:3:1;12184:19;12177:35;12096:3;11238:980;-1:-1:-1;;;11238:980:1:o;12223:217::-;12263:1;12289;12279:132;;12333:10;12328:3;12324:20;12321:1;12314:31;12368:4;12365:1;12358:15;12396:4;12393:1;12386:15;12279:132;-1:-1:-1;12425:9:1;;12223:217::o

Swarm Source

ipfs://1ab3baa2c953102feadcdb94d1ac49103fc144b6e46d532e7ff6acb8e18e9693

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.