FTM Price: $0.65 (-5.89%)
Gas: 13 GWei

Contract

0x4C41bFf37db389BA1edC7ED7e757059a1D08ceb5
 

Overview

FTM Balance

Fantom LogoFantom LogoFantom Logo0 FTM

FTM Value

$0.00

Token Holdings

Sponsored

Transaction Hash
Method
Block
From
To
Value
Approve589409052023-04-02 20:52:55381 days ago1680468775IN
0x4C41bFf3...a1D08ceb5
0 FTM0.0018754838.59741034
Approve576644212023-03-16 0:14:05399 days ago1678925645IN
0x4C41bFf3...a1D08ceb5
0 FTM0.0047062596.85444308
Approve570905272023-03-06 23:35:32408 days ago1678145732IN
0x4C41bFf3...a1D08ceb5
0 FTM0.00722204148.62316623
Approve570872442023-03-06 22:11:21408 days ago1678140681IN
0x4C41bFf3...a1D08ceb5
0 FTM0.0012628125.98749912
Approve568710162023-03-03 16:33:26411 days ago1677861206IN
0x4C41bFf3...a1D08ceb5
0 FTM0.0012504925.73412637
Approve568709362023-03-03 16:31:53411 days ago1677861113IN
0x4C41bFf3...a1D08ceb5
0 FTM0.0012512425.74939767
Approve567959372023-03-02 13:48:22412 days ago1677764902IN
0x4C41bFf3...a1D08ceb5
0 FTM0.001570432.31758289
Approve567539072023-03-01 22:22:43413 days ago1677709363IN
0x4C41bFf3...a1D08ceb5
0 FTM0.0017491835.99665741
Approve566676902023-02-28 12:30:22414 days ago1677587422IN
0x4C41bFf3...a1D08ceb5
0 FTM0.0021276943.77620909
Approve566210812023-02-27 18:39:49415 days ago1677523189IN
0x4C41bFf3...a1D08ceb5
0 FTM0.0022827546.97906788
Approve563260152023-02-22 23:12:28420 days ago1677107548IN
0x4C41bFf3...a1D08ceb5
0 FTM0.0011970925.86077091
Approve554386902023-02-09 21:02:43433 days ago1675976563IN
0x4C41bFf3...a1D08ceb5
0 FTM0.00528982181.22044122
Approve548119272023-01-31 23:21:47442 days ago1675207307IN
0x4C41bFf3...a1D08ceb5
0 FTM0.00710676153.52694839
Approve548113262023-01-31 23:09:29442 days ago1675206569IN
0x4C41bFf3...a1D08ceb5
0 FTM0.00271296111.61702593
Approve548112952023-01-31 23:08:46442 days ago1675206526IN
0x4C41bFf3...a1D08ceb5
0 FTM0.00516769111.63736582
Approve532371352023-01-04 21:42:10469 days ago1672868530IN
0x4C41bFf3...a1D08ceb5
0 FTM0.0013170628.45242226
Approve531523542023-01-03 13:28:50470 days ago1672752530IN
0x4C41bFf3...a1D08ceb5
0 FTM0.00527752112.8519723
Approve530552872022-12-31 13:58:37473 days ago1672495117IN
0x4C41bFf3...a1D08ceb5
0 FTM0.0040658787.83477663
Approve530089512022-12-29 12:43:37475 days ago1672317817IN
0x4C41bFf3...a1D08ceb5
0 FTM0.0018356762.88710649
Approve530088902022-12-29 12:40:40475 days ago1672317640IN
0x4C41bFf3...a1D08ceb5
0 FTM0.0027243858.85482409
Approve529973392022-12-29 1:22:10475 days ago1672276930IN
0x4C41bFf3...a1D08ceb5
0 FTM0.0016977436.6857529
Approve525635792022-12-20 2:02:26484 days ago1671501746IN
0x4C41bFf3...a1D08ceb5
0 FTM0.0010861523.21994812
Approve525628792022-12-20 1:38:59484 days ago1671500339IN
0x4C41bFf3...a1D08ceb5
0 FTM0.00538447115.1094
Approve525114072022-12-18 15:09:29486 days ago1671376169IN
0x4C41bFf3...a1D08ceb5
0 FTM0.0040051485.62215166
Approve525104192022-12-18 14:25:06486 days ago1671373506IN
0x4C41bFf3...a1D08ceb5
0 FTM0.0040060585.64163471
View all transactions

Latest 1 internal transaction

Parent Txn Hash Block From To Value
468783592022-09-13 13:25:39582 days ago1663075539  Contract Creation0 FTM
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CherryToken

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at ftmscan.com on 2022-09-13
*/

// Cherry.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

/**
 * Cherry Token (CHRY) contract
 *
 * ERC20 + burn() + mint()
 *
 * Burning:
 *  - token owners can burn their tokens
 *  - approved address can burn tokens from approvers
 *  - nobody else can burn tokens
 *
 * Minting:
 *  - only allowed to minter
 *  - only once per epoch
 *  - never mint more than 5% supply / epoch (unless low supply)
 *
 * Owner powers:
 *   - setMinter() as long as contract is not sealed
 *   - seal()      seal contract so that minter cannot be changed ever after
 */


abstract contract Ownable {

  // ==== Events      ====
  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


  // ==== Storage     ====
  // Private so it cannot be changed by inherited contracts
  address private _owner;


  // ==== Constructor ====
  constructor() {
    _transferOwnership(msg.sender);
  }


  // ==== Modifiers   ====
  modifier onlyOwner() {
    require(_owner == msg.sender, "Ownable: caller is not the owner");
    _;
  }


  // ==== Views       ====
  function owner() public view virtual returns (address) {
    return _owner;
  }


  // ==== Mutators    ====

  function renounceOwnership() public virtual onlyOwner {
    _transferOwnership(address(0));
  }

  function transferOwnership(address newOwner_) public virtual onlyOwner {
    require(newOwner_ != address(0), "Ownable: new owner is the zero address");
    _transferOwnership(newOwner_);
  }


  // ==== Internals   ====

  function _transferOwnership(address newOwner_) internal virtual {
    address oldOwner = owner();
    _owner = newOwner_;
    emit OwnershipTransferred(oldOwner, newOwner_);
  }
}


interface IERC20 {

    event Transfer(address indexed from,  address indexed to,      uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    function totalSupply()                             external view returns (uint256);
    function balanceOf(address account)                external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);

    function transfer(     address to,                uint256 amount)  external returns (bool);
    function approve(      address spender,           uint256 amount)  external returns (bool);
    function transferFrom( address from,  address to, uint256 amount ) external returns (bool);
}

interface IERC20Metadata is IERC20 {
    function name()     external view returns (string memory);
    function symbol()   external view returns (string memory);
    function decimals() external view returns (uint8);
}


abstract contract ERC20 is IERC20, IERC20Metadata {

    // ==== Storage ====

    uint   private _totalSupply;

    // Strings cannot be immutable
    string private _name;
    string private _symbol;

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


    // ==== Constructor ====

    constructor(string memory name_, string memory symbol_) {
      _name = name_;
      _symbol = symbol_;
    }


    // ==== Views      ====

    function name() public view virtual override returns (string memory) {
      return _name;
    }

    function symbol() public view virtual override returns (string memory) {
      return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
      return 18;
    }

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

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
      return _balances[account];
    }


    // ==== Mutators   ====

    /**
     * @dev See {IERC20-transfer}.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
      address owner = msg.sender;
      _transfer(owner, to, amount);
      return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
      return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = msg.sender;
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = msg.sender;
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = msg.sender;
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = msg.sender;
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    // ==== Internals ====

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to   != address(0), "ERC20: transfer to the zero address");

        uint fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);
    }


    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply       += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        uint accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }
}


// Minimal interface for Minter contract
interface IMinter {
  // returns the token address that the minter wants to mint
  function token() external view returns (address);
}


contract CherryToken is ERC20, Ownable {

  // ==== Constants ====
  uint    constant PERIOD    = 6 hours;
  uint    constant minSupply = 10000 ether;

  // ==== Storage   ====
  bool    public isSealed;
  uint32  public epoch;
  address public minter;


  // ==== Constructor ====
  constructor() ERC20("Cherry", "CHRY") {
      //   10 000 for initial liquidity pool
      // + 10 000 for airdrops and Cherrific team
      _mint(msg.sender, 20000 ether);
  }


  // ==== Governance  ====

  // seal contract for ever
  function seal() external onlyOwner {
    isSealed = true;
  }

  // set minter as long as contract isn't sealed
  function setMinter(address minter_) external onlyOwner {
    // function disabled once contract is sealed
    require( ! isSealed , "Contract is sealed");

    // Safeguard: make sure we set the correct minter
    // If this fails, it means minter is not set correctly
    require( IMinter(minter_).token() == address(this), "Minter not correctly set");

    minter = minter_;
  }


  // ==== Views    ====

  // Current epoch
  function getEpoch() public view returns (uint) {
    return block.timestamp / PERIOD;
  }


  // ==== Mutators ====

  // from OpenZeppelin
  function burn(uint256 amount) external returns (bool) {
    _burn(msg.sender, amount);
    return true;
  }

  // from OpenZeppelin
  function burnFrom(address account, uint256 amount) external returns (bool) {
    _spendAllowance(account, msg.sender, amount);
    _burn(account, amount);
    return true;
  }




  // only minter can mint
  function mint(address recipient_, uint256 amount_) external returns (bool) {

    require(msg.sender == minter, "Only minter can mint");

    uint newEpoch = getEpoch();
    require(newEpoch > epoch, "Mint only once per epoch");

    // all below code can only run once per epoch

    epoch = uint32(newEpoch);

    // make sure we don't mint too much
    uint supply = totalSupply();
    if (supply < minSupply) {
      // during low supply, we don't want to mint up to more than 120% minSupply
      require( supply + amount_ <= (minSupply * 120) / 100, "Minting too much while low supply");
    } else {
      // make sure minter does not go crazy
      // don't mint more than 5% of total supply per epoch
      // +5 if to allow for rounding errors on the minter side
      require( amount_ <= (supply / 20) + 5, "Don't mint > 5% supply per epoch");
    }

    _mint(recipient_, amount_);
    return true;
  }

}

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":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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"epoch","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isSealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"seal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter_","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280600681526020016543686572727960d01b815250604051806040016040528060048152602001634348525960e01b81525081600190816200005f919062000293565b5060026200006e828262000293565b50505062000082336200009e60201b60201c565b620000983369043c33c193756480000062000107565b62000387565b6000620000b36005546001600160a01b031690565b600580546001600160a01b0319166001600160a01b0385811691821790925560405192935091908316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620001625760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b806000808282546200017591906200035f565b90915550506001600160a01b03821660009081526003602052604081208054839290620001a49084906200035f565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200021957607f821691505b6020821081036200023a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200028e57600081815260208120601f850160051c81016020861015620002695750805b601f850160051c820191505b818110156200028a5782815560010162000275565b5050505b505050565b81516001600160401b03811115620002af57620002af620001ee565b620002c781620002c0845462000204565b8462000240565b602080601f831160018114620002ff5760008415620002e65750858301515b600019600386901b1c1916600185901b1785556200028a565b600085815260208120601f198616915b8281101562000330578886015182559484019460019091019084016200030f565b50858210156200034f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200038157634e487b7160e01b600052601160045260246000fd5b92915050565b61147980620003976000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806370a08231116100e357806395d89b411161008c578063dd62ed3e11610066578063dd62ed3e14610340578063f2fde38b14610379578063fca3b5aa1461038c57600080fd5b806395d89b4114610312578063a457c2d71461031a578063a9059cbb1461032d57600080fd5b806379cc6790116100bd57806379cc6790146102c25780638da5cb5b146102d5578063900cf0cf146102e657600080fd5b806370a0823114610289578063715018a6146102b2578063757991a8146102ba57600080fd5b8063313ce5671161014557806340c10f191161011f57806340c10f191461024f57806342966c6814610262578063631f98521461027557600080fd5b8063313ce5671461022357806339509351146102325780633fb27b851461024557600080fd5b8063095ea7b311610176578063095ea7b3146101db57806318160ddd146101fe57806323b872dd1461021057600080fd5b806306fdde031461019257806307546172146101b0575b600080fd5b61019a61039f565b6040516101a79190611231565b60405180910390f35b6006546101c3906001600160a01b031681565b6040516001600160a01b0390911681526020016101a7565b6101ee6101e9366004611294565b610431565b60405190151581526020016101a7565b6000545b6040519081526020016101a7565b6101ee61021e3660046112c0565b61044b565b604051601281526020016101a7565b6101ee610240366004611294565b61046f565b61024d6104ae565b005b6101ee61025d366004611294565b61053d565b6101ee610270366004611301565b610763565b6005546101ee90600160a01b900460ff1681565b61020261029736600461131a565b6001600160a01b031660009081526003602052604090205490565b61024d610777565b6102026107dd565b6101ee6102d0366004611294565b6107f0565b6005546001600160a01b03166101c3565b6005546102fd90600160a81b900463ffffffff1681565b60405163ffffffff90911681526020016101a7565b61019a610810565b6101ee610328366004611294565b61081f565b6101ee61033b366004611294565b6108c9565b61020261034e36600461133e565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b61024d61038736600461131a565b6108d7565b61024d61039a36600461131a565b6109b9565b6060600180546103ae90611377565b80601f01602080910402602001604051908101604052809291908181526020018280546103da90611377565b80156104275780601f106103fc57610100808354040283529160200191610427565b820191906000526020600020905b81548152906001019060200180831161040a57829003601f168201915b5050505050905090565b60003361043f818585610b5e565b60019150505b92915050565b600033610459858285610cb7565b610464858585610d49565b506001949350505050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490919061043f90829086906104a99087906113c7565b610b5e565b6005546001600160a01b0316331461050d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055565b6006546000906001600160a01b0316331461059a5760405162461bcd60e51b815260206004820152601460248201527f4f6e6c79206d696e7465722063616e206d696e740000000000000000000000006044820152606401610504565b60006105a46107dd565b600554909150600160a81b900463ffffffff1681116106055760405162461bcd60e51b815260206004820152601860248201527f4d696e74206f6e6c79206f6e6365207065722065706f636800000000000000006044820152606401610504565b600580547fffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff16600160a81b63ffffffff84160217905560005469021e19e0c9bab24000008110156106f457606461066769021e19e0c9bab240000060786113da565b61067191906113f1565b61067b85836113c7565b11156106ef5760405162461bcd60e51b815260206004820152602160248201527f4d696e74696e6720746f6f206d756368207768696c65206c6f7720737570706c60448201527f79000000000000000000000000000000000000000000000000000000000000006064820152608401610504565b610759565b6106ff6014826113f1565b61070a9060056113c7565b8411156107595760405162461bcd60e51b815260206004820181905260248201527f446f6e2774206d696e74203e20352520737570706c79207065722065706f63686044820152606401610504565b6104648585610f61565b600061076f338361103f565b506001919050565b6005546001600160a01b031633146107d15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610504565b6107db60006111bc565b565b60006107eb615460426113f1565b905090565b60006107fd833384610cb7565b610807838361103f565b50600192915050565b6060600280546103ae90611377565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909190838110156108bc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610504565b6104648286868403610b5e565b60003361043f818585610d49565b6005546001600160a01b031633146109315760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610504565b6001600160a01b0381166109ad5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610504565b6109b6816111bc565b50565b6005546001600160a01b03163314610a135760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610504565b600554600160a01b900460ff1615610a6d5760405162461bcd60e51b815260206004820152601260248201527f436f6e7472616374206973207365616c656400000000000000000000000000006044820152606401610504565b306001600160a01b0316816001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ab5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad99190611413565b6001600160a01b031614610b2f5760405162461bcd60e51b815260206004820152601860248201527f4d696e746572206e6f7420636f72726563746c792073657400000000000000006044820152606401610504565b6006805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6001600160a01b038316610bd95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610504565b6001600160a01b038216610c555760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610504565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038381166000908152600460209081526040808320938616835292905220546000198114610d435781811015610d365760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610504565b610d438484848403610b5e565b50505050565b6001600160a01b038316610dc55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610504565b6001600160a01b038216610e415760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610504565b6001600160a01b03831660009081526003602052604090205481811015610ed05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610504565b6001600160a01b03808516600090815260036020526040808220858503905591851681529081208054849290610f079084906113c7565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f5391815260200190565b60405180910390a350505050565b6001600160a01b038216610fb75760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610504565b80600080828254610fc891906113c7565b90915550506001600160a01b03821660009081526003602052604081208054839290610ff59084906113c7565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382166110bb5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610504565b6001600160a01b0382166000908152600360205260409020548181101561114a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610504565b6001600160a01b0383166000908152600360205260408120838303905580548391908190611179908490611430565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610caa565b60006111d06005546001600160a01b031690565b6005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0385811691821790925560405192935091908316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208083528351808285015260005b8181101561125e57858101830151858201604001528201611242565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146109b657600080fd5b600080604083850312156112a757600080fd5b82356112b28161127f565b946020939093013593505050565b6000806000606084860312156112d557600080fd5b83356112e08161127f565b925060208401356112f08161127f565b929592945050506040919091013590565b60006020828403121561131357600080fd5b5035919050565b60006020828403121561132c57600080fd5b81356113378161127f565b9392505050565b6000806040838503121561135157600080fd5b823561135c8161127f565b9150602083013561136c8161127f565b809150509250929050565b600181811c9082168061138b57607f821691505b6020821081036113ab57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610445576104456113b1565b8082028115828204841417610445576104456113b1565b60008261140e57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561142557600080fd5b81516113378161127f565b81810381811115610445576104456113b156fea2646970667358221220fc7d9b6eaf9ff4b3c9e3f3c41e9dbfe640ca991992425e450d838265736b8a5564736f6c63430008110033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018d5760003560e01c806370a08231116100e357806395d89b411161008c578063dd62ed3e11610066578063dd62ed3e14610340578063f2fde38b14610379578063fca3b5aa1461038c57600080fd5b806395d89b4114610312578063a457c2d71461031a578063a9059cbb1461032d57600080fd5b806379cc6790116100bd57806379cc6790146102c25780638da5cb5b146102d5578063900cf0cf146102e657600080fd5b806370a0823114610289578063715018a6146102b2578063757991a8146102ba57600080fd5b8063313ce5671161014557806340c10f191161011f57806340c10f191461024f57806342966c6814610262578063631f98521461027557600080fd5b8063313ce5671461022357806339509351146102325780633fb27b851461024557600080fd5b8063095ea7b311610176578063095ea7b3146101db57806318160ddd146101fe57806323b872dd1461021057600080fd5b806306fdde031461019257806307546172146101b0575b600080fd5b61019a61039f565b6040516101a79190611231565b60405180910390f35b6006546101c3906001600160a01b031681565b6040516001600160a01b0390911681526020016101a7565b6101ee6101e9366004611294565b610431565b60405190151581526020016101a7565b6000545b6040519081526020016101a7565b6101ee61021e3660046112c0565b61044b565b604051601281526020016101a7565b6101ee610240366004611294565b61046f565b61024d6104ae565b005b6101ee61025d366004611294565b61053d565b6101ee610270366004611301565b610763565b6005546101ee90600160a01b900460ff1681565b61020261029736600461131a565b6001600160a01b031660009081526003602052604090205490565b61024d610777565b6102026107dd565b6101ee6102d0366004611294565b6107f0565b6005546001600160a01b03166101c3565b6005546102fd90600160a81b900463ffffffff1681565b60405163ffffffff90911681526020016101a7565b61019a610810565b6101ee610328366004611294565b61081f565b6101ee61033b366004611294565b6108c9565b61020261034e36600461133e565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b61024d61038736600461131a565b6108d7565b61024d61039a36600461131a565b6109b9565b6060600180546103ae90611377565b80601f01602080910402602001604051908101604052809291908181526020018280546103da90611377565b80156104275780601f106103fc57610100808354040283529160200191610427565b820191906000526020600020905b81548152906001019060200180831161040a57829003601f168201915b5050505050905090565b60003361043f818585610b5e565b60019150505b92915050565b600033610459858285610cb7565b610464858585610d49565b506001949350505050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490919061043f90829086906104a99087906113c7565b610b5e565b6005546001600160a01b0316331461050d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055565b6006546000906001600160a01b0316331461059a5760405162461bcd60e51b815260206004820152601460248201527f4f6e6c79206d696e7465722063616e206d696e740000000000000000000000006044820152606401610504565b60006105a46107dd565b600554909150600160a81b900463ffffffff1681116106055760405162461bcd60e51b815260206004820152601860248201527f4d696e74206f6e6c79206f6e6365207065722065706f636800000000000000006044820152606401610504565b600580547fffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff16600160a81b63ffffffff84160217905560005469021e19e0c9bab24000008110156106f457606461066769021e19e0c9bab240000060786113da565b61067191906113f1565b61067b85836113c7565b11156106ef5760405162461bcd60e51b815260206004820152602160248201527f4d696e74696e6720746f6f206d756368207768696c65206c6f7720737570706c60448201527f79000000000000000000000000000000000000000000000000000000000000006064820152608401610504565b610759565b6106ff6014826113f1565b61070a9060056113c7565b8411156107595760405162461bcd60e51b815260206004820181905260248201527f446f6e2774206d696e74203e20352520737570706c79207065722065706f63686044820152606401610504565b6104648585610f61565b600061076f338361103f565b506001919050565b6005546001600160a01b031633146107d15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610504565b6107db60006111bc565b565b60006107eb615460426113f1565b905090565b60006107fd833384610cb7565b610807838361103f565b50600192915050565b6060600280546103ae90611377565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909190838110156108bc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610504565b6104648286868403610b5e565b60003361043f818585610d49565b6005546001600160a01b031633146109315760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610504565b6001600160a01b0381166109ad5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610504565b6109b6816111bc565b50565b6005546001600160a01b03163314610a135760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610504565b600554600160a01b900460ff1615610a6d5760405162461bcd60e51b815260206004820152601260248201527f436f6e7472616374206973207365616c656400000000000000000000000000006044820152606401610504565b306001600160a01b0316816001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ab5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad99190611413565b6001600160a01b031614610b2f5760405162461bcd60e51b815260206004820152601860248201527f4d696e746572206e6f7420636f72726563746c792073657400000000000000006044820152606401610504565b6006805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6001600160a01b038316610bd95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610504565b6001600160a01b038216610c555760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610504565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038381166000908152600460209081526040808320938616835292905220546000198114610d435781811015610d365760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610504565b610d438484848403610b5e565b50505050565b6001600160a01b038316610dc55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610504565b6001600160a01b038216610e415760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610504565b6001600160a01b03831660009081526003602052604090205481811015610ed05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610504565b6001600160a01b03808516600090815260036020526040808220858503905591851681529081208054849290610f079084906113c7565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f5391815260200190565b60405180910390a350505050565b6001600160a01b038216610fb75760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610504565b80600080828254610fc891906113c7565b90915550506001600160a01b03821660009081526003602052604081208054839290610ff59084906113c7565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382166110bb5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610504565b6001600160a01b0382166000908152600360205260409020548181101561114a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610504565b6001600160a01b0383166000908152600360205260408120838303905580548391908190611179908490611430565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610caa565b60006111d06005546001600160a01b031690565b6005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0385811691821790925560405192935091908316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208083528351808285015260005b8181101561125e57858101830151858201604001528201611242565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146109b657600080fd5b600080604083850312156112a757600080fd5b82356112b28161127f565b946020939093013593505050565b6000806000606084860312156112d557600080fd5b83356112e08161127f565b925060208401356112f08161127f565b929592945050506040919091013590565b60006020828403121561131357600080fd5b5035919050565b60006020828403121561132c57600080fd5b81356113378161127f565b9392505050565b6000806040838503121561135157600080fd5b823561135c8161127f565b9150602083013561136c8161127f565b809150509250929050565b600181811c9082168061138b57607f821691505b6020821081036113ab57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610445576104456113b1565b8082028115828204841417610445576104456113b1565b60008261140e57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561142557600080fd5b81516113378161127f565b81810381811115610445576104456113b156fea2646970667358221220fc7d9b6eaf9ff4b3c9e3f3c41e9dbfe640ca991992425e450d838265736b8a5564736f6c63430008110033

Deployed Bytecode Sourcemap

8590:2559:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3316:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8829:21;;;;;-1:-1:-1;;;;;8829:21:0;;;;;;-1:-1:-1;;;;;731:55:1;;;713:74;;701:2;686:18;8829:21:0;567:226:1;4651:199:0;;;;;;:::i;:::-;;:::i;:::-;;;1442:14:1;;1435:22;1417:41;;1405:2;1390:18;4651:199:0;1277:187:1;3631:106:0;3692:7;3717:12;3631:106;;;1615:25:1;;;1603:2;1588:18;3631:106:0;1469:177:1;4916:293:0;;;;;;:::i;:::-;;:::i;3532:91::-;;;3613:2;2254:36:1;;2242:2;2227:18;3532:91:0;2112:184:1;5319:236:0;;;;;;:::i;:::-;;:::i;9134:63::-;;;:::i;:::-;;10205:939;;;;;;:::i;:::-;;:::i;9847:110::-;;;;;;:::i;:::-;;:::i;8776:23::-;;;;;-1:-1:-1;;;8776:23:0;;;;;;3800:125;;;;;;:::i;:::-;-1:-1:-1;;;;;3899:18:0;3874:7;3899:18;;;:9;:18;;;;;;;3800:125;1253:97;;;:::i;9697:91::-;;;:::i;9987:179::-;;;;;;:::i;:::-;;:::i;1134:81::-;1203:6;;-1:-1:-1;;;;;1203:6:0;1134:81;;8804:20;;;;;-1:-1:-1;;;8804:20:0;;;;;;;;;2912:10:1;2900:23;;;2882:42;;2870:2;2855:18;8804:20:0;2738:192:1;3422:102:0;;;:::i;5665:434::-;;;;;;:::i;:::-;;:::i;4020:185::-;;;;;;:::i;:::-;;:::i;4268:149::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4382:18:0;;;4357:7;4382:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4268:149;1356:194;;;;;;:::i;:::-;;:::i;9253:389::-;;;;;;:::i;:::-;;:::i;3316:98::-;3370:13;3401:5;3394:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3316:98;:::o;4651:199::-;4734:4;4767:10;4788:32;4767:10;4804:7;4813:6;4788:8;:32::i;:::-;4838:4;4831:11;;;4651:199;;;;;:::o;4916:293::-;5047:4;5082:10;5103:38;5119:4;5082:10;5134:6;5103:15;:38::i;:::-;5152:27;5162:4;5168:2;5172:6;5152:9;:27::i;:::-;-1:-1:-1;5197:4:0;;4916:293;-1:-1:-1;;;;4916:293:0:o;5319:236::-;5440:10;5407:4;4382:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;4382:27:0;;;;;;;;;;5407:4;;5440:10;5461:64;;5440:10;;4382:27;;5486:38;;5514:10;;5486:38;:::i;:::-;5461:8;:64::i;9134:63::-;1027:6;;-1:-1:-1;;;;;1027:6:0;1037:10;1027:20;1019:65;;;;-1:-1:-1;;;1019:65:0;;4291:2:1;1019:65:0;;;4273:21:1;;;4310:18;;;4303:30;4369:34;4349:18;;;4342:62;4421:18;;1019:65:0;;;;;;;;;9176:8:::1;:15:::0;;;::::1;-1:-1:-1::0;;;9176:15:0::1;::::0;;9134:63::o;10205:939::-;10311:6;;10274:4;;-1:-1:-1;;;;;10311:6:0;10297:10;:20;10289:53;;;;-1:-1:-1;;;10289:53:0;;4652:2:1;10289:53:0;;;4634:21:1;4691:2;4671:18;;;4664:30;4730:22;4710:18;;;4703:50;4770:18;;10289:53:0;4450:344:1;10289:53:0;10351:13;10367:10;:8;:10::i;:::-;10403:5;;10351:26;;-1:-1:-1;;;;10403:5:0;;;;10392:16;;10384:53;;;;-1:-1:-1;;;10384:53:0;;5001:2:1;10384:53:0;;;4983:21:1;5040:2;5020:18;;;5013:30;5079:26;5059:18;;;5052:54;5123:18;;10384:53:0;4799:348:1;10384:53:0;10499:5;:24;;;;-1:-1:-1;;;10499:24:0;;;;;;;-1:-1:-1;3717:12:0;8732:11;10611:18;;10607:479;;;10771:3;10752:15;8732:11;10764:3;10752:15;:::i;:::-;10751:23;;;;:::i;:::-;10731:16;10740:7;10731:6;:16;:::i;:::-;:43;;10722:90;;;;-1:-1:-1;;;10722:90:0;;5806:2:1;10722:90:0;;;5788:21:1;5845:2;5825:18;;;5818:30;5884:34;5864:18;;;5857:62;5955:3;5935:18;;;5928:31;5976:19;;10722:90:0;5604:397:1;10722:90:0;10607:479;;;11025:11;11034:2;11025:6;:11;:::i;:::-;11024:17;;11040:1;11024:17;:::i;:::-;11013:7;:28;;11004:74;;;;-1:-1:-1;;;11004:74:0;;6208:2:1;11004:74:0;;;6190:21:1;;;6227:18;;;6220:30;6286:34;6266:18;;;6259:62;6338:18;;11004:74:0;6006:356:1;11004:74:0;11094:26;11100:10;11112:7;11094:5;:26::i;9847:110::-;9895:4;9908:25;9914:10;9926:6;9908:5;:25::i;:::-;-1:-1:-1;9947:4:0;;9847:110;-1:-1:-1;9847:110:0:o;1253:97::-;1027:6;;-1:-1:-1;;;;;1027:6:0;1037:10;1027:20;1019:65;;;;-1:-1:-1;;;1019:65:0;;4291:2:1;1019:65:0;;;4273:21:1;;;4310:18;;;4303:30;4369:34;4349:18;;;4342:62;4421:18;;1019:65:0;4089:356:1;1019:65:0;1314:30:::1;1341:1;1314:18;:30::i;:::-;1253:97::o:0;9697:91::-;9738:4;9758:24;8691:7;9758:15;:24;:::i;:::-;9751:31;;9697:91;:::o;9987:179::-;10056:4;10069:44;10085:7;10094:10;10106:6;10069:15;:44::i;:::-;10120:22;10126:7;10135:6;10120:5;:22::i;:::-;-1:-1:-1;10156:4:0;9987:179;;;;:::o;3422:102::-;3478:13;3509:7;3502:14;;;;;:::i;5665:434::-;5791:10;5758:4;4382:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;4382:27:0;;;;;;;;;;5758:4;;5791:10;5903:15;5883:16;:35;;5875:85;;;;-1:-1:-1;;;5875:85:0;;6569:2:1;5875:85:0;;;6551:21:1;6608:2;6588:18;;;6581:30;6647:34;6627:18;;;6620:62;6718:7;6698:18;;;6691:35;6743:19;;5875:85:0;6367:401:1;5875:85:0;5996:60;6005:5;6012:7;6040:15;6021:16;:34;5996:8;:60::i;4020:185::-;4099:4;4130:10;4149:28;4130:10;4166:2;4170:6;4149:9;:28::i;1356:194::-;1027:6;;-1:-1:-1;;;;;1027:6:0;1037:10;1027:20;1019:65;;;;-1:-1:-1;;;1019:65:0;;4291:2:1;1019:65:0;;;4273:21:1;;;4310:18;;;4303:30;4369:34;4349:18;;;4342:62;4421:18;;1019:65:0;4089:356:1;1019:65:0;-1:-1:-1;;;;;1442:23:0;::::1;1434:74;;;::::0;-1:-1:-1;;;1434:74:0;;6975:2:1;1434:74:0::1;::::0;::::1;6957:21:1::0;7014:2;6994:18;;;6987:30;7053:34;7033:18;;;7026:62;7124:8;7104:18;;;7097:36;7150:19;;1434:74:0::1;6773:402:1::0;1434:74:0::1;1515:29;1534:9;1515:18;:29::i;:::-;1356:194:::0;:::o;9253:389::-;1027:6;;-1:-1:-1;;;;;1027:6:0;1037:10;1027:20;1019:65;;;;-1:-1:-1;;;1019:65:0;;4291:2:1;1019:65:0;;;4273:21:1;;;4310:18;;;4303:30;4369:34;4349:18;;;4342:62;4421:18;;1019:65:0;4089:356:1;1019:65:0;9376:8:::1;::::0;-1:-1:-1;;;9376:8:0;::::1;;;9374:10;9365:43;;;::::0;-1:-1:-1;;;9365:43:0;;7382:2:1;9365:43:0::1;::::0;::::1;7364:21:1::0;7421:2;7401:18;;;7394:30;7460:20;7440:18;;;7433:48;7498:18;;9365:43:0::1;7180:342:1::0;9365:43:0::1;9577:4;-1:-1:-1::0;;;;;9541:41:0::1;9549:7;-1:-1:-1::0;;;;;9541:22:0::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9541:41:0::1;;9532:79;;;::::0;-1:-1:-1;;;9532:79:0;;7985:2:1;9532:79:0::1;::::0;::::1;7967:21:1::0;8024:2;8004:18;;;7997:30;8063:26;8043:18;;;8036:54;8107:18;;9532:79:0::1;7783:348:1::0;9532:79:0::1;9620:6;:16:::0;;-1:-1:-1;;9620:16:0::1;-1:-1:-1::0;;;;;9620:16:0;;;::::1;::::0;;;::::1;::::0;;9253:389::o;7556:382::-;-1:-1:-1;;;;;7692:21:0;;7684:70;;;;-1:-1:-1;;;7684:70:0;;8338:2:1;7684:70:0;;;8320:21:1;8377:2;8357:18;;;8350:30;8416:34;8396:18;;;8389:62;8487:6;8467:18;;;8460:34;8511:19;;7684:70:0;8136:400:1;7684:70:0;-1:-1:-1;;;;;7773:21:0;;7765:68;;;;-1:-1:-1;;;7765:68:0;;8743:2:1;7765:68:0;;;8725:21:1;8782:2;8762:18;;;8755:30;8821:34;8801:18;;;8794:62;8892:4;8872:18;;;8865:32;8914:19;;7765:68:0;8541:398:1;7765:68:0;-1:-1:-1;;;;;7846:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7898:32;;1615:25:1;;;7898:32:0;;1588:18:1;7898:32:0;;;;;;;;7556:382;;;:::o;7946:450::-;-1:-1:-1;;;;;4382:18:0;;;8081:21;4382:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;8145:37:0;;8141:248;;8227:6;8207:16;:26;;8199:68;;;;-1:-1:-1;;;8199:68:0;;9146:2:1;8199:68:0;;;9128:21:1;9185:2;9165:18;;;9158:30;9224:31;9204:18;;;9197:59;9273:18;;8199:68:0;8944:353:1;8199:68:0;8311:51;8320:5;8327:7;8355:6;8336:16;:25;8311:8;:51::i;:::-;8070:326;7946:450;;;:::o;6214:569::-;-1:-1:-1;;;;;6345:18:0;;6337:68;;;;-1:-1:-1;;;6337:68:0;;9504:2:1;6337:68:0;;;9486:21:1;9543:2;9523:18;;;9516:30;9582:34;9562:18;;;9555:62;9653:7;9633:18;;;9626:35;9678:19;;6337:68:0;9302:401:1;6337:68:0;-1:-1:-1;;;;;6424:18:0;;6416:66;;;;-1:-1:-1;;;6416:66:0;;9910:2:1;6416:66:0;;;9892:21:1;9949:2;9929:18;;;9922:30;9988:34;9968:18;;;9961:62;10059:5;10039:18;;;10032:33;10082:19;;6416:66:0;9708:399:1;6416:66:0;-1:-1:-1;;;;;6514:15:0;;6495:16;6514:15;;;:9;:15;;;;;;6548:21;;;;6540:72;;;;-1:-1:-1;;;6540:72:0;;10314:2:1;6540:72:0;;;10296:21:1;10353:2;10333:18;;;10326:30;10392:34;10372:18;;;10365:62;10463:8;10443:18;;;10436:36;10489:19;;6540:72:0;10112:402:1;6540:72:0;-1:-1:-1;;;;;6648:15:0;;;;;;;:9;:15;;;;;;6666:20;;;6648:38;;6708:13;;;;;;;;:23;;6680:6;;6648:15;6708:23;;6680:6;;6708:23;:::i;:::-;;;;;;;;6764:2;-1:-1:-1;;;;;6749:26:0;6758:4;-1:-1:-1;;;;;6749:26:0;;6768:6;6749:26;;;;1615:25:1;;1603:2;1588:18;;1469:177;6749:26:0;;;;;;;;6326:457;6214:569;;;:::o;6793:282::-;-1:-1:-1;;;;;6877:21:0;;6869:65;;;;-1:-1:-1;;;6869:65:0;;10721:2:1;6869:65:0;;;10703:21:1;10760:2;10740:18;;;10733:30;10799:33;10779:18;;;10772:61;10850:18;;6869:65:0;10519:355:1;6869:65:0;6969:6;6947:12;;:28;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;6986:18:0;;;;;;:9;:18;;;;;:28;;7008:6;;6986:18;:28;;7008:6;;6986:28;:::i;:::-;;;;-1:-1:-1;;7030:37:0;;1615:25:1;;;-1:-1:-1;;;;;7030:37:0;;;7047:1;;7030:37;;1603:2:1;1588:18;7030:37:0;;;;;;;6793:282;;:::o;7083:465::-;-1:-1:-1;;;;;7167:21:0;;7159:67;;;;-1:-1:-1;;;7159:67:0;;11081:2:1;7159:67:0;;;11063:21:1;11120:2;11100:18;;;11093:30;11159:34;11139:18;;;11132:62;11230:3;11210:18;;;11203:31;11251:19;;7159:67:0;10879:397:1;7159:67:0;-1:-1:-1;;;;;7261:18:0;;7239:19;7261:18;;;:9;:18;;;;;;7298:24;;;;7290:71;;;;-1:-1:-1;;;7290:71:0;;11483:2:1;7290:71:0;;;11465:21:1;11522:2;11502:18;;;11495:30;11561:34;11541:18;;;11534:62;11632:4;11612:18;;;11605:32;11654:19;;7290:71:0;11281:398:1;7290:71:0;-1:-1:-1;;;;;7397:18:0;;;;;;:9;:18;;;;;7418:23;;;7397:44;;7463:22;;7435:6;;7397:18;;;7463:22;;7435:6;;7463:22;:::i;:::-;;;;-1:-1:-1;;7503:37:0;;1615:25:1;;;7529:1:0;;-1:-1:-1;;;;;7503:37:0;;;;;1603:2:1;1588:18;7503:37:0;1469:177:1;1588:181:0;1659:16;1678:7;1203:6;;-1:-1:-1;;;;;1203:6:0;;1134:81;1678:7;1692:6;:18;;-1:-1:-1;;1692:18:0;-1:-1:-1;;;;;1692:18:0;;;;;;;;;1722:41;;1659:26;;-1:-1:-1;1692:18:0;1722:41;;;;;;-1:-1:-1;;1722:41:0;1652:117;1588:181;:::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;798:154::-;-1:-1:-1;;;;;877:5:1;873:54;866:5;863:65;853:93;;942:1;939;932:12;957:315;1025:6;1033;1086:2;1074:9;1065:7;1061:23;1057:32;1054:52;;;1102:1;1099;1092:12;1054:52;1141:9;1128:23;1160:31;1185:5;1160:31;:::i;:::-;1210:5;1262:2;1247:18;;;;1234:32;;-1:-1:-1;;;957:315:1:o;1651:456::-;1728:6;1736;1744;1797:2;1785:9;1776:7;1772:23;1768:32;1765:52;;;1813:1;1810;1803:12;1765:52;1852:9;1839:23;1871:31;1896:5;1871:31;:::i;:::-;1921:5;-1:-1:-1;1978:2:1;1963:18;;1950:32;1991:33;1950:32;1991:33;:::i;:::-;1651:456;;2043:7;;-1:-1:-1;;;2097:2:1;2082:18;;;;2069:32;;1651:456::o;2301:180::-;2360:6;2413:2;2401:9;2392:7;2388:23;2384:32;2381:52;;;2429:1;2426;2419:12;2381:52;-1:-1:-1;2452:23:1;;2301:180;-1:-1:-1;2301:180:1:o;2486:247::-;2545:6;2598:2;2586:9;2577:7;2573:23;2569:32;2566:52;;;2614:1;2611;2604:12;2566:52;2653:9;2640:23;2672:31;2697:5;2672:31;:::i;:::-;2722:5;2486:247;-1:-1:-1;;;2486:247:1:o;2935:388::-;3003:6;3011;3064:2;3052:9;3043:7;3039:23;3035:32;3032:52;;;3080:1;3077;3070:12;3032:52;3119:9;3106:23;3138:31;3163:5;3138:31;:::i;:::-;3188:5;-1:-1:-1;3245:2:1;3230:18;;3217:32;3258:33;3217:32;3258:33;:::i;:::-;3310:7;3300:17;;;2935:388;;;;;:::o;3328:437::-;3407:1;3403:12;;;;3450;;;3471:61;;3525:4;3517:6;3513:17;3503:27;;3471:61;3578:2;3570:6;3567:14;3547:18;3544:38;3541:218;;-1:-1:-1;;;3612:1:1;3605:88;3716:4;3713:1;3706:15;3744:4;3741:1;3734:15;3541:218;;3328:437;;;:::o;3770:184::-;-1:-1:-1;;;3819:1:1;3812:88;3919:4;3916:1;3909:15;3943:4;3940:1;3933:15;3959:125;4024:9;;;4045:10;;;4042:36;;;4058:18;;:::i;5152:168::-;5225:9;;;5256;;5273:15;;;5267:22;;5253:37;5243:71;;5294:18;;:::i;5325:274::-;5365:1;5391;5381:189;;-1:-1:-1;;;5423:1:1;5416:88;5527:4;5524:1;5517:15;5555:4;5552:1;5545:15;5381:189;-1:-1:-1;5584:9:1;;5325:274::o;7527:251::-;7597:6;7650:2;7638:9;7629:7;7625:23;7621:32;7618:52;;;7666:1;7663;7656:12;7618:52;7698:9;7692:16;7717:31;7742:5;7717:31;:::i;11684:128::-;11751:9;;;11772:11;;;11769:37;;;11786:18;;:::i

Swarm Source

ipfs://fc7d9b6eaf9ff4b3c9e3f3c41e9dbfe640ca991992425e450d838265736b8a55

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.