ETH Price: $3,592.84 (+3.63%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Remains Addr...203962952024-07-27 7:09:23160 days ago1722064163IN
0xb0D1b694...A61f66B48
0 ETH0.000077621.66623154

Advanced mode:
Parent Transaction Hash Block
From
To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
YOLO

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 7 : YOLO.sol
// * ————————————————————————————————————————————————————————————————————————————————— *
// |                                                                                   |
// |    SSSSS K    K EEEEEE L      EEEEEE PPPPP  H    H U    U N     N K    K  SSSSS   |
// |   S      K   K  E      L      E      P    P H    H U    U N N   N K   K  S        |
// |    SSSS  KKKK   EEE    L      EEE    PPPPP  HHHHHH U    U N  N  N KKKK    SSSS    |
// |        S K   K  E      L      E      P      H    H U    U N   N N K   K       S   |
// |   SSSSS  K    K EEEEEE LLLLLL EEEEEE P      H    H  UUUU  N     N K    K SSSSS    |
// |                                                                                   |
// | * AN ETHEREUM-BASED INDENTITY PLATFORM BROUGHT TO YOU BY NEUROMANTIC INDUSTRIES * |
// |                                                                                   |
// |                             @@@@@@@@@@@@@@@@@@@@@@@@                              |
// |                             @@@@@@@@@@@@@@@@@@@@@@@@                              |
// |                          @@@,,,,,,,,,,,,,,,,,,,,,,,,@@@                           |
// |                       @@@,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@@                        |
// |                       @@@,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@@                        |
// |                       @@@,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@@                        |
// |                       @@@,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@@                        |
// |                       @@@@@@@@@@,,,,,,,,,,@@@@@@,,,,,,,@@@                        |
// |                       @@@@@@@@@@,,,,,,,,,,@@@@@@,,,,,,,@@@                        |
// |                       @@@@@@@@@@,,,,,,,,,,@@@@@@,,,,,,,@@@                        |
// |                       @@@,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@@                        |
// |                       @@@,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@@                        |
// |                       @@@,,,,,,,@@@@@@,,,,,,,,,,,,,,,,,@@@                        |
// |                       @@@,,,,,,,@@@@@@,,,,,,,,,,,,,,,,,@@@                        |
// |                          @@@,,,,,,,,,,,,,,,,,,,,,,,,@@@                           |
// |                          @@@,,,,,,,,,,,,,,,,,,,,@@@@@@@                           |
// |                             @@@@@@@@@@@@@@@@@@@@@@@@@@@                           |
// |                             @@@@@@@@@@@@@@@@@@@@@@@@@@@                           |
// |                             @@@@,,,,,,,,,,,,,,,,@@@@,,,@@@                        |
// |                                 @@@@@@@@@@@@@@@@,,,,@@@                           |
// |                                           @@@,,,,,,,,,,@@@                        |
// |                                           @@@,,,,,,,,,,@@@                        |
// |                                              @@@,,,,@@@                           |
// |                                           @@@,,,,,,,,,,@@@                        |
// |                                                                                   |
// |                                                                                   |
// |   for more information visit skelephunks.com  |  follow @skelephunks on twitter   |
// |                                                                                   |
// * ————————————————————————————————————————————————————————————————————————————————— *
   
   
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //                                           |  YOLO is a game for quickly doubling your ✨ fragments //
    //  The Skelephunks YOLOGame Contract        |  Any player can risk any amount of fragments and call  //
    //  By Autopsyop,for Neuromantic Industries  |  the YOLO function in an attempt to double it. Either  //
    //  Part of the Skelephunks Platform         |  they will get back twice the amount of Fragments that //
    //                                           |  they wagered, or they will get back nothing. YOLO!    //
    ////////////////////////////////////////////////////////////////////////////////////////////////////////                                    


/// SPDX-License-Identifier: Unlicense
pragma solidity  ^0.8.20;

import "@openzeppelin/contracts/access/Ownable.sol";
import {RemainsController} from "./controllers/RemainsController.sol";
import {Controllable} from "./abstract/Controllable.sol";
import {IYOLO} from "../interface/IYOLO.sol";
 
contract YOLO is
    Controllable,
    IYOLO,
    RemainsController
{
    uint startTime;
    constructor (){
        startTime = block.timestamp;
    }
    event YOLOPlayed(address indexed wallet, uint wager, uint multiplier, bool win);

    // YOLO
    struct Game {
        uint64 age;//64
        address player;//224
        uint16 wager;//240
        uint8 multiplier;//248
        bool win;//249
    }
    Game[] games;
    function oddsForMultiplier(uint8 multiplier) public pure returns (uint8){
        return multiplier+1;
    }
    function yolo(uint16 wager, uint8 multiplier, uint8 number) public {
        address player = msg.sender;
        require(remains.fragmentsRemaining(player) >= wager,"Not enough fragments for wager");
        uint256 randomNum = uint256(
            keccak256(
                abi.encode(
                    player,
                    tx.gasprice,
                    block.number,
                    block.prevrandao,
                    block.timestamp,
                    blockhash(block.number - 1),
                    address(this),
                    wager
                )
            )
        );
        bool win = randomNum % oddsForMultiplier(multiplier) == number;
        if(win){
            uint X = multiplier-1;// initial bet is only redeemed upon loss, so substract it from payout
            remains.awardFragments(player ,wager * X);
        }else{
            remains.redeemFragments(player, wager);
        }
        games.push(Game(uint64(block.timestamp - startTime), player, wager, multiplier, win));
        emit YOLOPlayed(player, wager, multiplier, win);
    }
    function gamesPlayed() public view returns (uint){
        return games.length;
    }
    function gamesPlayedByWallet(address player) public view returns (uint){
        uint numGames;
        uint n = games.length;
        for(uint i; i < n; i++){
            if(games[i].player == player){
                numGames++;
            }
        }
        return numGames;
    }
    function gameAtIndex(uint index) public view returns (Record memory){
        Game memory game = games[index];
        return Record(startTime+game.age,game.player,game.wager,game.multiplier,game.win);
    }
    function indexOfPlayersNextGame(address player, uint lastIndex) public view returns (uint){
        uint total = games.length;
        uint i;
        for( i = lastIndex; i < total; i++){
            if(games[i].player == player){
                break;
            }
        }
        return i;
    }
    function indexOfPlayersPreviousGame(address player, uint lastIndex) public view returns (uint){
        uint i = lastIndex-1;
        for(i; i >= 0; i--){
            if(games[i].player == player){
                break;
            }
        }
        return i;
    }
    function indexOfPreviousWin(uint lastIndex) public view returns (uint){
        uint i = lastIndex-1;
        for(i; i >= 0; i--){
            if(games[i].win){
                break;
            }
        }
        return i;
    }
    function indexOfPreviousLoss(uint lastIndex) public view returns (uint){
        uint i = lastIndex-1;
        for(i; i >= 0; i--){
            if(!games[i].win){
                break;
            }
        }
        return i;
    }
    function gameOfPlayerAtIndex(address player, uint index) public view returns (Record memory){
        uint max = gamesPlayedByWallet(player);
        require(index < max, "out of range for wallet");
        uint g;
        for(uint i; i <= index; i++){
            g = indexOfPlayersNextGame( player, g);
        }
        return gameAtIndex(g);
    }
    function recentGamesOfPlayer(address player, uint numGames) public view returns(Record[] memory){
        require(numGames > 0, "requested 0 games");
        Record[] memory recent;
        uint i;
        uint max = gamesPlayedByWallet(player);
        require(max > 0, "wallet hasnt played");
        uint g = max;
        uint min;
        if(numGames < max){
            min = max - numGames;
        }else{
            min = 0;
        }
        for(uint j = min; j < max ; j++ ){
            g = indexOfPlayersPreviousGame(player, g);
            recent[i] = gameAtIndex(g);
            i++;
        }
        return recent;
    }
    function recentGames(uint numGames) public view returns(Record[] memory){//5
        Record[] memory recent;
        uint i;
        uint max = games.length;//10
        uint min;
        if(numGames < max){
            min = max - numGames;//5
        }else{
            min = 1;
        }
        for(uint j = max; j >= min ; j-- ){
            recent[i] = gameAtIndex(j-1);
            i++;
        }
        return recent;
    }
   
}

File 2 of 7 : IYOLO.sol
// SPDX-License-Identifier: Unlicense
pragma solidity  ^0.8.20;
 
interface IYOLO{
    struct Record {
        uint timestamp;
        address player;
        uint16 wager;
        uint8 multiplier;
        bool win;
    }
    function gamesPlayed() external view returns (uint);
    function gameAtIndex(uint index) external view returns (Record memory);
    // function recentWins(uint numGames) external view returns(Record[] memory);
    // function recentLosses(uint numGames) external view returns(Record[] memory);
    function recentGames(uint numGames) external view returns(Record[] memory);
    function gamesPlayedByWallet(address player) external view returns (uint);
    function indexOfPlayersNextGame(address player, uint lastIndex) external view returns (uint);
    function indexOfPlayersPreviousGame(address player, uint lastIndex) external view returns (uint);
    function gameOfPlayerAtIndex(address player, uint index) external view returns (Record memory);
    function recentGamesOfPlayer(address player, uint numGames) external view returns(Record[] memory);

    function oddsForMultiplier(uint8 multiplier) external pure returns (uint8);
    function yolo(uint16 wager, uint8 multiplier, uint8 number) external;
}

File 3 of 7 : Controllable.sol
// SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/access/Ownable.sol";

abstract contract Controllable is Ownable {
    constructor() Ownable(msg.sender){
    
    }
    function isContract(
        address addr
    ) private view returns (bool) {
        return addr.code.length > 0; 
    }
    function isController(
        address addr
    ) public view returns (bool) {
        return controllers[addr];
    }
    mapping (address=>bool) controllers;
    function addController(
        address addr
    ) public onlyOwner {
        require(isContract(addr),"Only contract addresses");
        require(! isController(addr), "Already a controller");
        controllers[addr] = true;
    }
    function removeController(
        address addr
    ) public onlyOwner {
        require(isController(addr), "Not a controller");
        delete controllers[addr];
    }
    modifier onlyOwnerOrController {
        require(owner() == msg.sender || controllers[msg.sender] == true,string(abi.encodePacked((address(this)),": Only owner or controller may do this.")));
        _;
    }
}

File 4 of 7 : RemainsController.sol
// SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.0;

import {IRemains} from "../../interface/IRemains.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

abstract contract RemainsController is Ownable {
    IRemains remains;
    constructor(){
    }
    modifier requiresRemains {
        require( IRemains(
            address(0)) != remains, 
            "No Remains contract linked"
         );
        _;
    }
    function setRemainsAddress(address addr) public onlyOwner {
        require(
            address(remains) != addr,
            "Remains contract already set to this"
        );
        remains = IRemains(addr);
    }

    function getRemainsAddress() public view returns (address) {
        return address(remains);
    }
}

File 5 of 7 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)

pragma solidity ^0.8.20;

import {Context} from "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * The initial owner is set to the address provided by the deployer. This can
 * later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    /**
     * @dev The caller account is not authorized to perform an operation.
     */
    error OwnableUnauthorizedAccount(address account);

    /**
     * @dev The owner is not a valid owner account. (eg. `address(0)`)
     */
    error OwnableInvalidOwner(address owner);

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.
     */
    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 6 of 7 : IRemains.sol
// SPDX-License-Identifier: Unlicense
pragma solidity  ^0.8.20;
 
interface IRemains
{
//YIELD
    function bonesRemaining(address wallet ) external view returns (uint);

    function awardBones(address wallet, uint amount ) external;
    function redeemBones(address wallet, uint amount )external;

    function fragmentsRemainingForToken(address wallet, uint16 tokenId ) external view returns (uint);
    function fragmentsRemaining(address wallet ) external view returns (uint);

    function awardFragments(address wallet, uint amount ) external;
    function redeemFragments(address wallet, uint amount )external;
    function secureMyFragments( uint16 tokenId ) external;
}

File 7 of 7 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)

pragma solidity ^0.8.20;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"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":"wallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"wager","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"multiplier","type":"uint256"},{"indexed":false,"internalType":"bool","name":"win","type":"bool"}],"name":"YOLOPlayed","type":"event"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"addController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"gameAtIndex","outputs":[{"components":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"address","name":"player","type":"address"},{"internalType":"uint16","name":"wager","type":"uint16"},{"internalType":"uint8","name":"multiplier","type":"uint8"},{"internalType":"bool","name":"win","type":"bool"}],"internalType":"struct IYOLO.Record","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"player","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"gameOfPlayerAtIndex","outputs":[{"components":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"address","name":"player","type":"address"},{"internalType":"uint16","name":"wager","type":"uint16"},{"internalType":"uint8","name":"multiplier","type":"uint8"},{"internalType":"bool","name":"win","type":"bool"}],"internalType":"struct IYOLO.Record","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gamesPlayed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"player","type":"address"}],"name":"gamesPlayedByWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRemainsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"player","type":"address"},{"internalType":"uint256","name":"lastIndex","type":"uint256"}],"name":"indexOfPlayersNextGame","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"player","type":"address"},{"internalType":"uint256","name":"lastIndex","type":"uint256"}],"name":"indexOfPlayersPreviousGame","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"lastIndex","type":"uint256"}],"name":"indexOfPreviousLoss","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"lastIndex","type":"uint256"}],"name":"indexOfPreviousWin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isController","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"multiplier","type":"uint8"}],"name":"oddsForMultiplier","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numGames","type":"uint256"}],"name":"recentGames","outputs":[{"components":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"address","name":"player","type":"address"},{"internalType":"uint16","name":"wager","type":"uint16"},{"internalType":"uint8","name":"multiplier","type":"uint8"},{"internalType":"bool","name":"win","type":"bool"}],"internalType":"struct IYOLO.Record[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"player","type":"address"},{"internalType":"uint256","name":"numGames","type":"uint256"}],"name":"recentGamesOfPlayer","outputs":[{"components":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"address","name":"player","type":"address"},{"internalType":"uint16","name":"wager","type":"uint16"},{"internalType":"uint8","name":"multiplier","type":"uint8"},{"internalType":"bool","name":"win","type":"bool"}],"internalType":"struct IYOLO.Record[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"removeController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setRemainsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"wager","type":"uint16"},{"internalType":"uint8","name":"multiplier","type":"uint8"},{"internalType":"uint8","name":"number","type":"uint8"}],"name":"yolo","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561000f575f80fd5b50335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610081575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610078919061019d565b60405180910390fd5b6100908161009d60201b60201c565b50426003819055506101b6565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101878261015e565b9050919050565b6101978161017d565b82525050565b5f6020820190506101b05f83018461018e565b92915050565b6120d8806101c35f395ff3fe608060405234801561000f575f80fd5b506004361061012a575f3560e01c80638da5cb5b116100ab578063c9ec28881161006f578063c9ec288814610378578063ce7616d7146103a8578063d3007b0c146103d8578063f2fde38b146103f6578063f6a74ed7146104125761012a565b80638da5cb5b146102c2578063a7fc7a07146102e0578063b429afeb146102fc578063bb8aa1fc1461032c578063c4f441b61461035c5761012a565b80636e71e628116100f25780636e71e6281461020c57806370a8158914610228578063715018a61461025857806372652636146102625780638903f947146102925761012a565b80633aa497281461012e57806353d0048d1461015e5780635615e1201461018e57806367829e0a146101be5780636c39b7ee146101ee575b5f80fd5b6101486004803603810190610143919061150b565b61042e565b604051610155919061161e565b60405180910390f35b6101786004803603810190610173919061150b565b6104c1565b6040516101859190611646565b60405180910390f35b6101a860048036038101906101a3919061165f565b610569565b6040516101b59190611646565b60405180910390f35b6101d860048036038101906101d3919061168a565b610616565b6040516101e591906117c3565b60405180910390f35b6101f66106b1565b6040516102039190611646565b60405180910390f35b61022660048036038101906102219190611837565b6106bd565b005b610242600480360381019061023d9190611887565b610af7565b60405161024f91906118c1565b60405180910390f35b610260610b0c565b005b61027c6004803603810190610277919061150b565b610b1f565b60405161028991906117c3565b60405180910390f35b6102ac60048036038101906102a7919061150b565b610c42565b6040516102b99190611646565b60405180910390f35b6102ca610ce3565b6040516102d791906118e9565b60405180910390f35b6102fa60048036038101906102f5919061165f565b610d0a565b005b6103166004803603810190610311919061165f565b610dfa565b6040516103239190611911565b60405180910390f35b6103466004803603810190610341919061168a565b610e4c565b604051610353919061161e565b60405180910390f35b6103766004803603810190610371919061165f565b610fd0565b005b610392600480360381019061038d919061168a565b6110aa565b60405161039f9190611646565b60405180910390f35b6103c260048036038101906103bd919061168a565b61110f565b6040516103cf9190611646565b60405180910390f35b6103e0611175565b6040516103ed91906118e9565b60405180910390f35b610410600480360381019061040b919061165f565b61119d565b005b61042c6004803603810190610427919061165f565b611221565b005b610436611431565b5f61044084610569565b9050808310610484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047b90611984565b60405180910390fd5b5f805b8481116104ad576104988683610c42565b915080806104a5906119cf565b915050610487565b506104b781610e4c565b9250505092915050565b5f806001836104d09190611a16565b90505b5f811061055f578373ffffffffffffffffffffffffffffffffffffffff166004828154811061050557610504611a49565b5b905f5260205f20015f0160089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16031561055f57808061055790611a76565b9150506104d3565b8091505092915050565b5f805f60048054905090505f5b8181101561060b578473ffffffffffffffffffffffffffffffffffffffff16600482815481106105a9576105a8611a49565b5b905f5260205f20015f0160089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036105fe5782806105fa906119cf565b9350505b8080600101915050610576565b508192505050919050565b6060805f8060048054905090505f8186101561063f5785826106389190611a16565b9050610644565b600190505b5f8290505b8181106106a4576106656001826106609190611a16565b610e4c565b85858151811061067857610677611a49565b5b6020026020010181905250838061068e906119cf565b945050808061069c90611a76565b915050610649565b5083945050505050919050565b5f600480549050905090565b5f3390508361ffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f4327350836040518263ffffffff1660e01b815260040161072091906118e9565b602060405180830381865afa15801561073b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075f9190611ab1565b10156107a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079790611b26565b60405180910390fd5b5f813a4344426001436107b39190611a16565b40308b6040516020016107cd989796959493929190611b6b565b604051602081830303815290604052805190602001205f1c90505f8360ff166107f586610af7565b60ff16836108039190611c14565b14905080156108bd575f60018661081a9190611c44565b60ff16905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ccfd5ae485838a61ffff1661086d9190611c78565b6040518363ffffffff1660e01b815260040161088a929190611cb9565b5f604051808303815f87803b1580156108a1575f80fd5b505af11580156108b3573d5f803e3d5ffd5b5050505050610947565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb0128ee84886040518363ffffffff1660e01b8152600401610919929190611d19565b5f604051808303815f87803b158015610930575f80fd5b505af1158015610942573d5f803e3d5ffd5b505050505b60046040518060a00160405280600354426109629190611a16565b67ffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018861ffff1681526020018760ff168152602001831515815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506020820151815f0160086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151815f01601c6101000a81548161ffff021916908361ffff1602179055506060820151815f01601e6101000a81548160ff021916908360ff1602179055506080820151815f01601f6101000a81548160ff02191690831515021790555050508273ffffffffffffffffffffffffffffffffffffffff167fc0334af56178d56deae363b19b8aae293bcce362ead15192376f078a10e80c52878784604051610ae793929190611d70565b60405180910390a2505050505050565b5f600182610b059190611da5565b9050919050565b610b146112c0565b610b1d5f611347565b565b60605f8211610b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5a90611e23565b60405180910390fd5b60605f80610b7086610569565b90505f8111610bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bab90611e8b565b60405180910390fd5b5f8190505f82871015610bd4578683610bcd9190611a16565b9050610bd8565b5f90505b5f8190505b83811015610c3357610bef89846104c1565b9250610bfa83610e4c565b868681518110610c0d57610c0c611a49565b5b60200260200101819052508480610c23906119cf565b9550508080600101915050610bdd565b50849550505050505092915050565b5f8060048054905090505f8390505b81811015610cd8578473ffffffffffffffffffffffffffffffffffffffff1660048281548110610c8457610c83611a49565b5b905f5260205f20015f0160089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160315610cd8578080600101915050610c51565b809250505092915050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610d126112c0565b610d1b81611408565b610d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5190611ef3565b60405180910390fd5b610d6381610dfa565b15610da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a90611f5b565b60405180910390fd5b6001805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610e54611431565b5f60048381548110610e6957610e68611a49565b5b905f5260205f20016040518060a00160405290815f82015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020015f820160089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f8201601c9054906101000a900461ffff1661ffff1661ffff1681526020015f8201601e9054906101000a900460ff1660ff1660ff1681526020015f8201601f9054906101000a900460ff16151515158152505090506040518060a00160405280825f015167ffffffffffffffff16600354610f7e9190611f79565b8152602001826020015173ffffffffffffffffffffffffffffffffffffffff168152602001826040015161ffff168152602001826060015160ff16815260200182608001511515815250915050919050565b610fd86112c0565b8073ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105e9061201c565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f806001836110b99190611a16565b90505b5f811061110657600481815481106110d7576110d6611a49565b5b905f5260205f20015f01601f9054906101000a900460ff166111065780806110fe90611a76565b9150506110bc565b80915050919050565b5f8060018361111e9190611a16565b90505b5f811061116c576004818154811061113c5761113b611a49565b5b905f5260205f20015f01601f9054906101000a900460ff161561116c57808061116490611a76565b915050611121565b80915050919050565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6111a56112c0565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611215575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161120c91906118e9565b60405180910390fd5b61121e81611347565b50565b6112296112c0565b61123281610dfa565b611271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126890612084565b60405180910390fd5b60015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff021916905550565b6112c861142a565b73ffffffffffffffffffffffffffffffffffffffff166112e6610ce3565b73ffffffffffffffffffffffffffffffffffffffff16146113455761130961142a565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161133c91906118e9565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f33905090565b6040518060a001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f61ffff1681526020015f60ff1681526020015f151581525090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6114a78261147e565b9050919050565b6114b78161149d565b81146114c1575f80fd5b50565b5f813590506114d2816114ae565b92915050565b5f819050919050565b6114ea816114d8565b81146114f4575f80fd5b50565b5f81359050611505816114e1565b92915050565b5f80604083850312156115215761152061147a565b5b5f61152e858286016114c4565b925050602061153f858286016114f7565b9150509250929050565b611552816114d8565b82525050565b6115618161149d565b82525050565b5f61ffff82169050919050565b61157d81611567565b82525050565b5f60ff82169050919050565b61159881611583565b82525050565b5f8115159050919050565b6115b28161159e565b82525050565b60a082015f8201516115cc5f850182611549565b5060208201516115df6020850182611558565b5060408201516115f26040850182611574565b506060820151611605606085018261158f565b50608082015161161860808501826115a9565b50505050565b5f60a0820190506116315f8301846115b8565b92915050565b611640816114d8565b82525050565b5f6020820190506116595f830184611637565b92915050565b5f602082840312156116745761167361147a565b5b5f611681848285016114c4565b91505092915050565b5f6020828403121561169f5761169e61147a565b5b5f6116ac848285016114f7565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b60a082015f8201516116f25f850182611549565b5060208201516117056020850182611558565b5060408201516117186040850182611574565b50606082015161172b606085018261158f565b50608082015161173e60808501826115a9565b50505050565b5f61174f83836116de565b60a08301905092915050565b5f602082019050919050565b5f611771826116b5565b61177b81856116bf565b9350611786836116cf565b805f5b838110156117b657815161179d8882611744565b97506117a88361175b565b925050600181019050611789565b5085935050505092915050565b5f6020820190508181035f8301526117db8184611767565b905092915050565b6117ec81611567565b81146117f6575f80fd5b50565b5f81359050611807816117e3565b92915050565b61181681611583565b8114611820575f80fd5b50565b5f813590506118318161180d565b92915050565b5f805f6060848603121561184e5761184d61147a565b5b5f61185b868287016117f9565b935050602061186c86828701611823565b925050604061187d86828701611823565b9150509250925092565b5f6020828403121561189c5761189b61147a565b5b5f6118a984828501611823565b91505092915050565b6118bb81611583565b82525050565b5f6020820190506118d45f8301846118b2565b92915050565b6118e38161149d565b82525050565b5f6020820190506118fc5f8301846118da565b92915050565b61190b8161159e565b82525050565b5f6020820190506119245f830184611902565b92915050565b5f82825260208201905092915050565b7f6f7574206f662072616e676520666f722077616c6c65740000000000000000005f82015250565b5f61196e60178361192a565b91506119798261193a565b602082019050919050565b5f6020820190508181035f83015261199b81611962565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6119d9826114d8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611a0b57611a0a6119a2565b5b600182019050919050565b5f611a20826114d8565b9150611a2b836114d8565b9250828203905081811115611a4357611a426119a2565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f611a80826114d8565b91505f8203611a9257611a916119a2565b5b600182039050919050565b5f81519050611aab816114e1565b92915050565b5f60208284031215611ac657611ac561147a565b5b5f611ad384828501611a9d565b91505092915050565b7f4e6f7420656e6f75676820667261676d656e747320666f7220776167657200005f82015250565b5f611b10601e8361192a565b9150611b1b82611adc565b602082019050919050565b5f6020820190508181035f830152611b3d81611b04565b9050919050565b5f819050919050565b611b5681611b44565b82525050565b611b6581611567565b82525050565b5f61010082019050611b7f5f83018b6118da565b611b8c602083018a611637565b611b996040830189611637565b611ba66060830188611637565b611bb36080830187611637565b611bc060a0830186611b4d565b611bcd60c08301856118da565b611bda60e0830184611b5c565b9998505050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611c1e826114d8565b9150611c29836114d8565b925082611c3957611c38611be7565b5b828206905092915050565b5f611c4e82611583565b9150611c5983611583565b9250828203905060ff811115611c7257611c716119a2565b5b92915050565b5f611c82826114d8565b9150611c8d836114d8565b9250828202611c9b816114d8565b91508282048414831517611cb257611cb16119a2565b5b5092915050565b5f604082019050611ccc5f8301856118da565b611cd96020830184611637565b9392505050565b5f819050919050565b5f611d03611cfe611cf984611567565b611ce0565b6114d8565b9050919050565b611d1381611ce9565b82525050565b5f604082019050611d2c5f8301856118da565b611d396020830184611d0a565b9392505050565b5f611d5a611d55611d5084611583565b611ce0565b6114d8565b9050919050565b611d6a81611d40565b82525050565b5f606082019050611d835f830186611d0a565b611d906020830185611d61565b611d9d6040830184611902565b949350505050565b5f611daf82611583565b9150611dba83611583565b9250828201905060ff811115611dd357611dd26119a2565b5b92915050565b7f72657175657374656420302067616d65730000000000000000000000000000005f82015250565b5f611e0d60118361192a565b9150611e1882611dd9565b602082019050919050565b5f6020820190508181035f830152611e3a81611e01565b9050919050565b7f77616c6c6574206861736e7420706c61796564000000000000000000000000005f82015250565b5f611e7560138361192a565b9150611e8082611e41565b602082019050919050565b5f6020820190508181035f830152611ea281611e69565b9050919050565b7f4f6e6c7920636f6e7472616374206164647265737365730000000000000000005f82015250565b5f611edd60178361192a565b9150611ee882611ea9565b602082019050919050565b5f6020820190508181035f830152611f0a81611ed1565b9050919050565b7f416c7265616479206120636f6e74726f6c6c65720000000000000000000000005f82015250565b5f611f4560148361192a565b9150611f5082611f11565b602082019050919050565b5f6020820190508181035f830152611f7281611f39565b9050919050565b5f611f83826114d8565b9150611f8e836114d8565b9250828201905080821115611fa657611fa56119a2565b5b92915050565b7f52656d61696e7320636f6e747261637420616c72656164792073657420746f205f8201527f7468697300000000000000000000000000000000000000000000000000000000602082015250565b5f61200660248361192a565b915061201182611fac565b604082019050919050565b5f6020820190508181035f83015261203381611ffa565b9050919050565b7f4e6f74206120636f6e74726f6c6c6572000000000000000000000000000000005f82015250565b5f61206e60108361192a565b91506120798261203a565b602082019050919050565b5f6020820190508181035f83015261209b81612062565b905091905056fea264697066735822122056b3009d18949d0369ba72884693e887f2a40ab58fe23002b7f628643524a57464736f6c634300081a0033

Deployed Bytecode

0x608060405234801561000f575f80fd5b506004361061012a575f3560e01c80638da5cb5b116100ab578063c9ec28881161006f578063c9ec288814610378578063ce7616d7146103a8578063d3007b0c146103d8578063f2fde38b146103f6578063f6a74ed7146104125761012a565b80638da5cb5b146102c2578063a7fc7a07146102e0578063b429afeb146102fc578063bb8aa1fc1461032c578063c4f441b61461035c5761012a565b80636e71e628116100f25780636e71e6281461020c57806370a8158914610228578063715018a61461025857806372652636146102625780638903f947146102925761012a565b80633aa497281461012e57806353d0048d1461015e5780635615e1201461018e57806367829e0a146101be5780636c39b7ee146101ee575b5f80fd5b6101486004803603810190610143919061150b565b61042e565b604051610155919061161e565b60405180910390f35b6101786004803603810190610173919061150b565b6104c1565b6040516101859190611646565b60405180910390f35b6101a860048036038101906101a3919061165f565b610569565b6040516101b59190611646565b60405180910390f35b6101d860048036038101906101d3919061168a565b610616565b6040516101e591906117c3565b60405180910390f35b6101f66106b1565b6040516102039190611646565b60405180910390f35b61022660048036038101906102219190611837565b6106bd565b005b610242600480360381019061023d9190611887565b610af7565b60405161024f91906118c1565b60405180910390f35b610260610b0c565b005b61027c6004803603810190610277919061150b565b610b1f565b60405161028991906117c3565b60405180910390f35b6102ac60048036038101906102a7919061150b565b610c42565b6040516102b99190611646565b60405180910390f35b6102ca610ce3565b6040516102d791906118e9565b60405180910390f35b6102fa60048036038101906102f5919061165f565b610d0a565b005b6103166004803603810190610311919061165f565b610dfa565b6040516103239190611911565b60405180910390f35b6103466004803603810190610341919061168a565b610e4c565b604051610353919061161e565b60405180910390f35b6103766004803603810190610371919061165f565b610fd0565b005b610392600480360381019061038d919061168a565b6110aa565b60405161039f9190611646565b60405180910390f35b6103c260048036038101906103bd919061168a565b61110f565b6040516103cf9190611646565b60405180910390f35b6103e0611175565b6040516103ed91906118e9565b60405180910390f35b610410600480360381019061040b919061165f565b61119d565b005b61042c6004803603810190610427919061165f565b611221565b005b610436611431565b5f61044084610569565b9050808310610484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047b90611984565b60405180910390fd5b5f805b8481116104ad576104988683610c42565b915080806104a5906119cf565b915050610487565b506104b781610e4c565b9250505092915050565b5f806001836104d09190611a16565b90505b5f811061055f578373ffffffffffffffffffffffffffffffffffffffff166004828154811061050557610504611a49565b5b905f5260205f20015f0160089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16031561055f57808061055790611a76565b9150506104d3565b8091505092915050565b5f805f60048054905090505f5b8181101561060b578473ffffffffffffffffffffffffffffffffffffffff16600482815481106105a9576105a8611a49565b5b905f5260205f20015f0160089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036105fe5782806105fa906119cf565b9350505b8080600101915050610576565b508192505050919050565b6060805f8060048054905090505f8186101561063f5785826106389190611a16565b9050610644565b600190505b5f8290505b8181106106a4576106656001826106609190611a16565b610e4c565b85858151811061067857610677611a49565b5b6020026020010181905250838061068e906119cf565b945050808061069c90611a76565b915050610649565b5083945050505050919050565b5f600480549050905090565b5f3390508361ffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f4327350836040518263ffffffff1660e01b815260040161072091906118e9565b602060405180830381865afa15801561073b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075f9190611ab1565b10156107a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079790611b26565b60405180910390fd5b5f813a4344426001436107b39190611a16565b40308b6040516020016107cd989796959493929190611b6b565b604051602081830303815290604052805190602001205f1c90505f8360ff166107f586610af7565b60ff16836108039190611c14565b14905080156108bd575f60018661081a9190611c44565b60ff16905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ccfd5ae485838a61ffff1661086d9190611c78565b6040518363ffffffff1660e01b815260040161088a929190611cb9565b5f604051808303815f87803b1580156108a1575f80fd5b505af11580156108b3573d5f803e3d5ffd5b5050505050610947565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb0128ee84886040518363ffffffff1660e01b8152600401610919929190611d19565b5f604051808303815f87803b158015610930575f80fd5b505af1158015610942573d5f803e3d5ffd5b505050505b60046040518060a00160405280600354426109629190611a16565b67ffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018861ffff1681526020018760ff168152602001831515815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506020820151815f0160086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151815f01601c6101000a81548161ffff021916908361ffff1602179055506060820151815f01601e6101000a81548160ff021916908360ff1602179055506080820151815f01601f6101000a81548160ff02191690831515021790555050508273ffffffffffffffffffffffffffffffffffffffff167fc0334af56178d56deae363b19b8aae293bcce362ead15192376f078a10e80c52878784604051610ae793929190611d70565b60405180910390a2505050505050565b5f600182610b059190611da5565b9050919050565b610b146112c0565b610b1d5f611347565b565b60605f8211610b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5a90611e23565b60405180910390fd5b60605f80610b7086610569565b90505f8111610bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bab90611e8b565b60405180910390fd5b5f8190505f82871015610bd4578683610bcd9190611a16565b9050610bd8565b5f90505b5f8190505b83811015610c3357610bef89846104c1565b9250610bfa83610e4c565b868681518110610c0d57610c0c611a49565b5b60200260200101819052508480610c23906119cf565b9550508080600101915050610bdd565b50849550505050505092915050565b5f8060048054905090505f8390505b81811015610cd8578473ffffffffffffffffffffffffffffffffffffffff1660048281548110610c8457610c83611a49565b5b905f5260205f20015f0160089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160315610cd8578080600101915050610c51565b809250505092915050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610d126112c0565b610d1b81611408565b610d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5190611ef3565b60405180910390fd5b610d6381610dfa565b15610da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a90611f5b565b60405180910390fd5b6001805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610e54611431565b5f60048381548110610e6957610e68611a49565b5b905f5260205f20016040518060a00160405290815f82015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020015f820160089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f8201601c9054906101000a900461ffff1661ffff1661ffff1681526020015f8201601e9054906101000a900460ff1660ff1660ff1681526020015f8201601f9054906101000a900460ff16151515158152505090506040518060a00160405280825f015167ffffffffffffffff16600354610f7e9190611f79565b8152602001826020015173ffffffffffffffffffffffffffffffffffffffff168152602001826040015161ffff168152602001826060015160ff16815260200182608001511515815250915050919050565b610fd86112c0565b8073ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105e9061201c565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f806001836110b99190611a16565b90505b5f811061110657600481815481106110d7576110d6611a49565b5b905f5260205f20015f01601f9054906101000a900460ff166111065780806110fe90611a76565b9150506110bc565b80915050919050565b5f8060018361111e9190611a16565b90505b5f811061116c576004818154811061113c5761113b611a49565b5b905f5260205f20015f01601f9054906101000a900460ff161561116c57808061116490611a76565b915050611121565b80915050919050565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6111a56112c0565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611215575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161120c91906118e9565b60405180910390fd5b61121e81611347565b50565b6112296112c0565b61123281610dfa565b611271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126890612084565b60405180910390fd5b60015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff021916905550565b6112c861142a565b73ffffffffffffffffffffffffffffffffffffffff166112e6610ce3565b73ffffffffffffffffffffffffffffffffffffffff16146113455761130961142a565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161133c91906118e9565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f33905090565b6040518060a001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f61ffff1681526020015f60ff1681526020015f151581525090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6114a78261147e565b9050919050565b6114b78161149d565b81146114c1575f80fd5b50565b5f813590506114d2816114ae565b92915050565b5f819050919050565b6114ea816114d8565b81146114f4575f80fd5b50565b5f81359050611505816114e1565b92915050565b5f80604083850312156115215761152061147a565b5b5f61152e858286016114c4565b925050602061153f858286016114f7565b9150509250929050565b611552816114d8565b82525050565b6115618161149d565b82525050565b5f61ffff82169050919050565b61157d81611567565b82525050565b5f60ff82169050919050565b61159881611583565b82525050565b5f8115159050919050565b6115b28161159e565b82525050565b60a082015f8201516115cc5f850182611549565b5060208201516115df6020850182611558565b5060408201516115f26040850182611574565b506060820151611605606085018261158f565b50608082015161161860808501826115a9565b50505050565b5f60a0820190506116315f8301846115b8565b92915050565b611640816114d8565b82525050565b5f6020820190506116595f830184611637565b92915050565b5f602082840312156116745761167361147a565b5b5f611681848285016114c4565b91505092915050565b5f6020828403121561169f5761169e61147a565b5b5f6116ac848285016114f7565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b60a082015f8201516116f25f850182611549565b5060208201516117056020850182611558565b5060408201516117186040850182611574565b50606082015161172b606085018261158f565b50608082015161173e60808501826115a9565b50505050565b5f61174f83836116de565b60a08301905092915050565b5f602082019050919050565b5f611771826116b5565b61177b81856116bf565b9350611786836116cf565b805f5b838110156117b657815161179d8882611744565b97506117a88361175b565b925050600181019050611789565b5085935050505092915050565b5f6020820190508181035f8301526117db8184611767565b905092915050565b6117ec81611567565b81146117f6575f80fd5b50565b5f81359050611807816117e3565b92915050565b61181681611583565b8114611820575f80fd5b50565b5f813590506118318161180d565b92915050565b5f805f6060848603121561184e5761184d61147a565b5b5f61185b868287016117f9565b935050602061186c86828701611823565b925050604061187d86828701611823565b9150509250925092565b5f6020828403121561189c5761189b61147a565b5b5f6118a984828501611823565b91505092915050565b6118bb81611583565b82525050565b5f6020820190506118d45f8301846118b2565b92915050565b6118e38161149d565b82525050565b5f6020820190506118fc5f8301846118da565b92915050565b61190b8161159e565b82525050565b5f6020820190506119245f830184611902565b92915050565b5f82825260208201905092915050565b7f6f7574206f662072616e676520666f722077616c6c65740000000000000000005f82015250565b5f61196e60178361192a565b91506119798261193a565b602082019050919050565b5f6020820190508181035f83015261199b81611962565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6119d9826114d8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611a0b57611a0a6119a2565b5b600182019050919050565b5f611a20826114d8565b9150611a2b836114d8565b9250828203905081811115611a4357611a426119a2565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f611a80826114d8565b91505f8203611a9257611a916119a2565b5b600182039050919050565b5f81519050611aab816114e1565b92915050565b5f60208284031215611ac657611ac561147a565b5b5f611ad384828501611a9d565b91505092915050565b7f4e6f7420656e6f75676820667261676d656e747320666f7220776167657200005f82015250565b5f611b10601e8361192a565b9150611b1b82611adc565b602082019050919050565b5f6020820190508181035f830152611b3d81611b04565b9050919050565b5f819050919050565b611b5681611b44565b82525050565b611b6581611567565b82525050565b5f61010082019050611b7f5f83018b6118da565b611b8c602083018a611637565b611b996040830189611637565b611ba66060830188611637565b611bb36080830187611637565b611bc060a0830186611b4d565b611bcd60c08301856118da565b611bda60e0830184611b5c565b9998505050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611c1e826114d8565b9150611c29836114d8565b925082611c3957611c38611be7565b5b828206905092915050565b5f611c4e82611583565b9150611c5983611583565b9250828203905060ff811115611c7257611c716119a2565b5b92915050565b5f611c82826114d8565b9150611c8d836114d8565b9250828202611c9b816114d8565b91508282048414831517611cb257611cb16119a2565b5b5092915050565b5f604082019050611ccc5f8301856118da565b611cd96020830184611637565b9392505050565b5f819050919050565b5f611d03611cfe611cf984611567565b611ce0565b6114d8565b9050919050565b611d1381611ce9565b82525050565b5f604082019050611d2c5f8301856118da565b611d396020830184611d0a565b9392505050565b5f611d5a611d55611d5084611583565b611ce0565b6114d8565b9050919050565b611d6a81611d40565b82525050565b5f606082019050611d835f830186611d0a565b611d906020830185611d61565b611d9d6040830184611902565b949350505050565b5f611daf82611583565b9150611dba83611583565b9250828201905060ff811115611dd357611dd26119a2565b5b92915050565b7f72657175657374656420302067616d65730000000000000000000000000000005f82015250565b5f611e0d60118361192a565b9150611e1882611dd9565b602082019050919050565b5f6020820190508181035f830152611e3a81611e01565b9050919050565b7f77616c6c6574206861736e7420706c61796564000000000000000000000000005f82015250565b5f611e7560138361192a565b9150611e8082611e41565b602082019050919050565b5f6020820190508181035f830152611ea281611e69565b9050919050565b7f4f6e6c7920636f6e7472616374206164647265737365730000000000000000005f82015250565b5f611edd60178361192a565b9150611ee882611ea9565b602082019050919050565b5f6020820190508181035f830152611f0a81611ed1565b9050919050565b7f416c7265616479206120636f6e74726f6c6c65720000000000000000000000005f82015250565b5f611f4560148361192a565b9150611f5082611f11565b602082019050919050565b5f6020820190508181035f830152611f7281611f39565b9050919050565b5f611f83826114d8565b9150611f8e836114d8565b9250828201905080821115611fa657611fa56119a2565b5b92915050565b7f52656d61696e7320636f6e747261637420616c72656164792073657420746f205f8201527f7468697300000000000000000000000000000000000000000000000000000000602082015250565b5f61200660248361192a565b915061201182611fac565b604082019050919050565b5f6020820190508181035f83015261203381611ffa565b9050919050565b7f4e6f74206120636f6e74726f6c6c6572000000000000000000000000000000005f82015250565b5f61206e60108361192a565b91506120798261203a565b602082019050919050565b5f6020820190508181035f83015261209b81612062565b905091905056fea264697066735822122056b3009d18949d0369ba72884693e887f2a40ab58fe23002b7f628643524a57464736f6c634300081a0033

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  ]

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.