Goerli Testnet

Contract

0x0fca532bcF25adCc6E21408de234359763A29e44

Overview

ETH Balance

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Value
0x6080604079457622022-11-13 12:10:48501 days ago1668341448IN
 Create: MetaVotePoll
0 ETH0.004141892.50000001

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

Contract Source Code Verified (Exact Match)

Contract Name:
MetaVotePoll

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license
/**
 *Submitted for verification at Etherscan.io on 2022-11-13
*/

// SPDX-License-Identifier: GPL-3.0
//
//  __  __      _     __      __   _       
// |  \/  |    | |    \ \    / /  | |      
// | \  / | ___| |_ __ \ \  / /__ | |_ ___ 
// | |\/| |/ _ \ __/ _` \ \/ / _ \| __/ _ \
// | |  | |  __/ || (_| |\  / (_) | ||  __/
// |_|__|_|\___|\__\__,_|_\/ \___/ \__\___|
// |  __ \ / __ \| |    | |                
// | |__) | |  | | |    | |                
// |  ___/| |  | | |    | |                
// | |    | |__| | |____| |____            
// |_|     \____/|______|______|           
//
//
// @author burakcbdn https://burakcbdn.me
//


pragma solidity ^0.8.0;

/**
 * @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;
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;


/**
 * @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.
 *
 * By default, the owner account will be the one that deploys the contract. 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;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @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 {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing 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 {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _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: contracts/MetaVotePoll.sol

pragma solidity >=0.7.0 <0.9.0;


contract MetaVotePoll is Ownable {


    struct Option {
        string name;
        uint256 voteCount;
        uint256 id;
    }

    struct Voting {
        Option[] options;
        string title;
        uint256 totalVoteCount;
        uint256 priceToVote;
        mapping(address => Voter) voters;
        address[] voterAddresses;
    }

    struct Voter {
        uint256 voteID;
    }

    Voting[] public currentVotings;

    address public votingOwner;

    /**
    * @param title name of the voting
    * @param priceToVote required price for voting
    * @dev Creates new voting
    */
    function createVoting(string calldata title, uint256 priceToVote)
        public
        onlyOwner
    {
        Voting storage newVoting = currentVotings.push();
        newVoting.title = title;
        newVoting.priceToVote = priceToVote;
    }

    /**
    * @param index index of the voting
    * @param name of the option
    * @param id id of the option
    * @dev Adds new option to specified voting
    */
    function addOptionToVoting(
        uint256 index,
        string calldata name,
        uint256 id
    ) public onlyOwner {
        currentVotings[index].options.push(
            Option({name: name, id: id, voteCount: 0})
        );
    }

    /**
    * @param votingIndex index of the voting
    * @param optionIndex index of the option
    * @dev Votes the specified option of specified voting, checks amount if any specified
    */
    function vote(uint8 votingIndex, uint8 optionIndex) public payable {
        require(votingIndex < currentVotings.length, "Voting Not Found");

        Voting storage currentVoting = currentVotings[votingIndex];
        require(currentVoting.voters[msg.sender].voteID == 0, "Already Voted");

        // check sent value

        require(
            msg.value >= currentVoting.priceToVote,
            "Insufficcient amount to vote"
        );

        currentVoting.voters[msg.sender].voteID = currentVoting
            .options[optionIndex]
            .id;
        currentVoting.voterAddresses.push(msg.sender);
        currentVoting.options[optionIndex].voteCount =
            currentVoting.options[optionIndex].voteCount +
            1;
    }

    /**
    * @param votingIndex index of the voting
    * @dev returns the title of the specified voting
    */
    function getVotingTitleFromIndex(uint8 votingIndex)
        public
        view
        returns (string memory)
    {
        require(votingIndex < currentVotings.length, "Voting Not Found");
        return currentVotings[votingIndex].title;
    }

    /**
    * @param votingIndex index of the voting
    * @dev returns the name of the winning option
    */
    function getWinnerName(uint8 votingIndex)
        public
        view
        onlyOwner
        returns (string memory)
    {
        require(votingIndex < currentVotings.length, "Voting Not Found");

        uint256 currentMax = 0;
        string memory currentWinner;

        for (
            uint256 i = 0;
            i < currentVotings[votingIndex].options.length;
            i++
        ) {
            if (currentVotings[votingIndex].options[i].voteCount > currentMax) {
                currentMax = currentVotings[votingIndex].options[i].voteCount;
                currentWinner = currentVotings[votingIndex].options[i].name;
            }
        }

        return currentWinner;
    }


    /**
    * @param votingIndex index of the voting
    * @dev returns the id of the winning option
    */
    function getWinnerID(uint8 votingIndex)
        public
        view
        onlyOwner
        returns (uint256)
    {
        require(votingIndex < currentVotings.length, "Voting Not Found");

        uint256 currentMax = 0;
        uint256 currentWinner;

        for (
            uint256 i = 0;
            i < currentVotings[votingIndex].options.length;
            i++
        ) {
            if (currentVotings[votingIndex].options[i].voteCount > currentMax) {
                currentMax = currentVotings[votingIndex].options[i].voteCount;
                currentWinner = currentVotings[votingIndex].options[i].id;
            }
        }
        return currentWinner;
    }

    /**
    * @param votingIndex index of the voting
    * @dev Shares total amounts amount the voters of the winning option, takes %10 cut to owner
    */
    function sendAmountsToVoting(uint8 votingIndex) public payable onlyOwner {
        require(votingIndex < currentVotings.length, "Voting Not Found");

        uint256 totalBalance = address(this).balance;

        (bool ownerCut, ) = payable(owner()).call{
            value: (totalBalance * 10) / 100
        }("");
        require(ownerCut);

        uint256 remainingBalance = totalBalance - (totalBalance * 10) / 100;

        uint256 currentMax = 0;
        uint256 currentWinner = 0;

        for (
            uint256 i = 0;
            i < currentVotings[votingIndex].options.length;
            i++
        ) {
            if (currentVotings[votingIndex].options[i].voteCount > currentMax) {
                currentMax = currentVotings[votingIndex].options[i].voteCount;
                currentWinner = currentVotings[votingIndex].options[i].id;
            }
        }

        uint256 prizePerVoter = remainingBalance / currentMax;

        for (
            uint256 i = 0;
            i < currentVotings[votingIndex].voterAddresses.length;
            i++
        ) {
            address adressOfVoter = currentVotings[votingIndex].voterAddresses[
                i
            ];
            if (
                currentVotings[votingIndex].voters[adressOfVoter].voteID ==
                currentWinner
            ) {
                (bool winnerCut, ) = payable(owner()).call{
                    value: prizePerVoter
                }("");
                require(winnerCut);
            }
        }
    }
}

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"addOptionToVoting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"title","type":"string"},{"internalType":"uint256","name":"priceToVote","type":"uint256"}],"name":"createVoting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"currentVotings","outputs":[{"internalType":"string","name":"title","type":"string"},{"internalType":"uint256","name":"totalVoteCount","type":"uint256"},{"internalType":"uint256","name":"priceToVote","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"votingIndex","type":"uint8"}],"name":"getVotingTitleFromIndex","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"votingIndex","type":"uint8"}],"name":"getWinnerID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"votingIndex","type":"uint8"}],"name":"getWinnerName","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":[{"internalType":"uint8","name":"votingIndex","type":"uint8"}],"name":"sendAmountsToVoting","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"votingIndex","type":"uint8"},{"internalType":"uint8","name":"optionIndex","type":"uint8"}],"name":"vote","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"votingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b5061002d61002261003260201b60201c565b61003a60201b60201c565b6100fe565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611c9f8061010d6000396000f3fe6080604052600436106100a75760003560e01c8063715018a611610064578063715018a6146101e7578063809163e3146101fe5780638da5cb5b14610229578063df49c4de14610254578063f2fde38b14610270578063faeec7fd14610299576100a7565b80630c70ee7a146100ac5780631a1625a5146100e95780632cbfa9ab1461011257806334a9f7de1461012e578063655055ec1461016b5780636abc4be9146101aa575b600080fd5b3480156100b857600080fd5b506100d360048036038101906100ce9190611534565b6102c2565b6040516100e091906116fa565b60405180910390f35b3480156100f557600080fd5b50610110600480360381019061010b9190611433565b6104e6565b005b61012c60048036038101906101279190611534565b610534565b005b34801561013a57600080fd5b5061015560048036038101906101509190611534565b610941565b60405161016291906116fa565b60405180910390f35b34801561017757600080fd5b50610192600480360381019061018d9190611493565b610a45565b6040516101a19392919061171c565b60405180910390f35b3480156101b657600080fd5b506101d160048036038101906101cc9190611534565b610b07565b6040516101de91906117fa565b60405180910390f35b3480156101f357600080fd5b506101fc610ca5565b005b34801561020a57600080fd5b50610213610cb9565b60405161022091906116df565b60405180910390f35b34801561023557600080fd5b5061023e610cdf565b60405161024b91906116df565b60405180910390f35b61026e60048036038101906102699190611561565b610d08565b005b34801561027c57600080fd5b5061029760048036038101906102929190611406565b610f8b565b005b3480156102a557600080fd5b506102c060048036038101906102bb91906114c0565b61100f565b005b60606102cc6110fe565b6001805490508260ff1610610316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030d9061179a565b60405180910390fd5b6000606060005b60018560ff168154811061033457610333611ad5565b5b9060005260206000209060060201600001805490508110156104db578260018660ff168154811061036857610367611ad5565b5b9060005260206000209060060201600001828154811061038b5761038a611ad5565b5b90600052602060002090600302016001015411156104c85760018560ff16815481106103ba576103b9611ad5565b5b906000526020600020906006020160000181815481106103dd576103dc611ad5565b5b906000526020600020906003020160010154925060018560ff168154811061040857610407611ad5565b5b9060005260206000209060060201600001818154811061042b5761042a611ad5565b5b90600052602060002090600302016000018054610447906119cd565b80601f0160208091040260200160405190810160405280929190818152602001828054610473906119cd565b80156104c05780601f10610495576101008083540402835291602001916104c0565b820191906000526020600020905b8154815290600101906020018083116104a357829003601f168201915b505050505091505b80806104d3906119ff565b91505061031d565b508092505050919050565b6104ee6110fe565b60006001808160018154018082558091505003906000526020600020906006020190508383826001019190610524929190611248565b5081816003018190555050505050565b61053c6110fe565b6001805490508160ff1610610586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057d9061179a565b60405180910390fd5b60004790506000610595610cdf565b73ffffffffffffffffffffffffffffffffffffffff166064600a846105ba91906118c3565b6105c49190611892565b6040516105d0906116ca565b60006040518083038185875af1925050503d806000811461060d576040519150601f19603f3d011682016040523d82523d6000602084013e610612565b606091505b505090508061062057600080fd5b60006064600a8461063191906118c3565b61063b9190611892565b83610646919061191d565b905060008060005b60018760ff168154811061066557610664611ad5565b5b906000526020600020906006020160000180549050811015610784578260018860ff168154811061069957610698611ad5565b5b906000526020600020906006020160000182815481106106bc576106bb611ad5565b5b90600052602060002090600302016001015411156107715760018760ff16815481106106eb576106ea611ad5565b5b9060005260206000209060060201600001818154811061070e5761070d611ad5565b5b906000526020600020906003020160010154925060018760ff168154811061073957610738611ad5565b5b9060005260206000209060060201600001818154811061075c5761075b611ad5565b5b90600052602060002090600302016002015491505b808061077c906119ff565b91505061064e565b50600082846107939190611892565b905060005b60018860ff16815481106107af576107ae611ad5565b5b90600052602060002090600602016005018054905081101561093757600060018960ff16815481106107e4576107e3611ad5565b5b9060005260206000209060060201600501828154811061080757610806611ad5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508360018a60ff168154811061084c5761084b611ad5565b5b906000526020600020906006020160040160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156109235760006108ae610cdf565b73ffffffffffffffffffffffffffffffffffffffff16846040516108d1906116ca565b60006040518083038185875af1925050503d806000811461090e576040519150601f19603f3d011682016040523d82523d6000602084013e610913565b606091505b505090508061092157600080fd5b505b50808061092f906119ff565b915050610798565b5050505050505050565b60606001805490508260ff161061098d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109849061179a565b60405180910390fd5b60018260ff16815481106109a4576109a3611ad5565b5b906000526020600020906006020160010180546109c0906119cd565b80601f01602080910402602001604051908101604052809291908181526020018280546109ec906119cd565b8015610a395780601f10610a0e57610100808354040283529160200191610a39565b820191906000526020600020905b815481529060010190602001808311610a1c57829003601f168201915b50505050509050919050565b60018181548110610a5557600080fd5b9060005260206000209060060201600091509050806001018054610a78906119cd565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa4906119cd565b8015610af15780601f10610ac657610100808354040283529160200191610af1565b820191906000526020600020905b815481529060010190602001808311610ad457829003601f168201915b5050505050908060020154908060030154905083565b6000610b116110fe565b6001805490508260ff1610610b5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b529061179a565b60405180910390fd5b60008080600090505b60018560ff1681548110610b7b57610b7a611ad5565b5b906000526020600020906006020160000180549050811015610c9a578260018660ff1681548110610baf57610bae611ad5565b5b90600052602060002090600602016000018281548110610bd257610bd1611ad5565b5b9060005260206000209060030201600101541115610c875760018560ff1681548110610c0157610c00611ad5565b5b90600052602060002090600602016000018181548110610c2457610c23611ad5565b5b906000526020600020906003020160010154925060018560ff1681548110610c4f57610c4e611ad5565b5b90600052602060002090600602016000018181548110610c7257610c71611ad5565b5b90600052602060002090600302016002015491505b8080610c92906119ff565b915050610b64565b508092505050919050565b610cad6110fe565b610cb7600061117c565b565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6001805490508260ff1610610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061179a565b60405180910390fd5b600060018360ff1681548110610d6b57610d6a611ad5565b5b9060005260206000209060060201905060008160040160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414610e02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df99061175a565b60405180910390fd5b8060030154341015610e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e40906117ba565b60405180910390fd5b806000018260ff1681548110610e6257610e61611ad5565b5b9060005260206000209060030201600201548160040160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080600501339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001816000018360ff1681548110610f3c57610f3b611ad5565b5b906000526020600020906003020160010154610f58919061183c565b816000018360ff1681548110610f7157610f70611ad5565b5b906000526020600020906003020160010181905550505050565b610f936110fe565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611003576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffa9061177a565b60405180910390fd5b61100c8161117c565b50565b6110176110fe565b6001848154811061102b5761102a611ad5565b5b9060005260206000209060060201600001604051806060016040528085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020016000815260200183815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000190805190602001906110e19291906112ce565b506020820151816001015560408201518160020155505050505050565b611106611240565b73ffffffffffffffffffffffffffffffffffffffff16611124610cdf565b73ffffffffffffffffffffffffffffffffffffffff161461117a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611171906117da565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b828054611254906119cd565b90600052602060002090601f01602090048101928261127657600085556112bd565b82601f1061128f57803560ff19168380011785556112bd565b828001600101855582156112bd579182015b828111156112bc5782358255916020019190600101906112a1565b5b5090506112ca9190611354565b5090565b8280546112da906119cd565b90600052602060002090601f0160209004810192826112fc5760008555611343565b82601f1061131557805160ff1916838001178555611343565b82800160010185558215611343579182015b82811115611342578251825591602001919060010190611327565b5b5090506113509190611354565b5090565b5b8082111561136d576000816000905550600101611355565b5090565b60008135905061138081611c24565b92915050565b60008083601f84011261139c5761139b611b09565b5b8235905067ffffffffffffffff8111156113b9576113b8611b04565b5b6020830191508360018202830111156113d5576113d4611b0e565b5b9250929050565b6000813590506113eb81611c3b565b92915050565b60008135905061140081611c52565b92915050565b60006020828403121561141c5761141b611b18565b5b600061142a84828501611371565b91505092915050565b60008060006040848603121561144c5761144b611b18565b5b600084013567ffffffffffffffff81111561146a57611469611b13565b5b61147686828701611386565b93509350506020611489868287016113dc565b9150509250925092565b6000602082840312156114a9576114a8611b18565b5b60006114b7848285016113dc565b91505092915050565b600080600080606085870312156114da576114d9611b18565b5b60006114e8878288016113dc565b945050602085013567ffffffffffffffff81111561150957611508611b13565b5b61151587828801611386565b93509350506040611528878288016113dc565b91505092959194509250565b60006020828403121561154a57611549611b18565b5b6000611558848285016113f1565b91505092915050565b6000806040838503121561157857611577611b18565b5b6000611586858286016113f1565b9250506020611597858286016113f1565b9150509250929050565b6115aa81611951565b82525050565b60006115bb82611815565b6115c5818561182b565b93506115d581856020860161199a565b6115de81611b1d565b840191505092915050565b60006115f6600d8361182b565b915061160182611b2e565b602082019050919050565b600061161960268361182b565b915061162482611b57565b604082019050919050565b600061163c60108361182b565b915061164782611ba6565b602082019050919050565b600061165f601c8361182b565b915061166a82611bcf565b602082019050919050565b600061168260208361182b565b915061168d82611bf8565b602082019050919050565b60006116a5600083611820565b91506116b082611c21565b600082019050919050565b6116c481611983565b82525050565b60006116d582611698565b9150819050919050565b60006020820190506116f460008301846115a1565b92915050565b6000602082019050818103600083015261171481846115b0565b905092915050565b6000606082019050818103600083015261173681866115b0565b905061174560208301856116bb565b61175260408301846116bb565b949350505050565b60006020820190508181036000830152611773816115e9565b9050919050565b600060208201905081810360008301526117938161160c565b9050919050565b600060208201905081810360008301526117b38161162f565b9050919050565b600060208201905081810360008301526117d381611652565b9050919050565b600060208201905081810360008301526117f381611675565b9050919050565b600060208201905061180f60008301846116bb565b92915050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600061184782611983565b915061185283611983565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561188757611886611a48565b5b828201905092915050565b600061189d82611983565b91506118a883611983565b9250826118b8576118b7611a77565b5b828204905092915050565b60006118ce82611983565b91506118d983611983565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561191257611911611a48565b5b828202905092915050565b600061192882611983565b915061193383611983565b92508282101561194657611945611a48565b5b828203905092915050565b600061195c82611963565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156119b857808201518184015260208101905061199d565b838111156119c7576000848401525b50505050565b600060028204905060018216806119e557607f821691505b602082108114156119f9576119f8611aa6565b5b50919050565b6000611a0a82611983565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611a3d57611a3c611a48565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416c726561647920566f74656400000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f566f74696e67204e6f7420466f756e6400000000000000000000000000000000600082015250565b7f496e7375666669636369656e7420616d6f756e7420746f20766f746500000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b611c2d81611951565b8114611c3857600080fd5b50565b611c4481611983565b8114611c4f57600080fd5b50565b611c5b8161198d565b8114611c6657600080fd5b5056fea26469706673582212205387753d26bc5700d36dd21948ddec7a63dbe09560982d6bdab005b5040b374964736f6c63430008070033

Deployed Bytecode

0x6080604052600436106100a75760003560e01c8063715018a611610064578063715018a6146101e7578063809163e3146101fe5780638da5cb5b14610229578063df49c4de14610254578063f2fde38b14610270578063faeec7fd14610299576100a7565b80630c70ee7a146100ac5780631a1625a5146100e95780632cbfa9ab1461011257806334a9f7de1461012e578063655055ec1461016b5780636abc4be9146101aa575b600080fd5b3480156100b857600080fd5b506100d360048036038101906100ce9190611534565b6102c2565b6040516100e091906116fa565b60405180910390f35b3480156100f557600080fd5b50610110600480360381019061010b9190611433565b6104e6565b005b61012c60048036038101906101279190611534565b610534565b005b34801561013a57600080fd5b5061015560048036038101906101509190611534565b610941565b60405161016291906116fa565b60405180910390f35b34801561017757600080fd5b50610192600480360381019061018d9190611493565b610a45565b6040516101a19392919061171c565b60405180910390f35b3480156101b657600080fd5b506101d160048036038101906101cc9190611534565b610b07565b6040516101de91906117fa565b60405180910390f35b3480156101f357600080fd5b506101fc610ca5565b005b34801561020a57600080fd5b50610213610cb9565b60405161022091906116df565b60405180910390f35b34801561023557600080fd5b5061023e610cdf565b60405161024b91906116df565b60405180910390f35b61026e60048036038101906102699190611561565b610d08565b005b34801561027c57600080fd5b5061029760048036038101906102929190611406565b610f8b565b005b3480156102a557600080fd5b506102c060048036038101906102bb91906114c0565b61100f565b005b60606102cc6110fe565b6001805490508260ff1610610316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030d9061179a565b60405180910390fd5b6000606060005b60018560ff168154811061033457610333611ad5565b5b9060005260206000209060060201600001805490508110156104db578260018660ff168154811061036857610367611ad5565b5b9060005260206000209060060201600001828154811061038b5761038a611ad5565b5b90600052602060002090600302016001015411156104c85760018560ff16815481106103ba576103b9611ad5565b5b906000526020600020906006020160000181815481106103dd576103dc611ad5565b5b906000526020600020906003020160010154925060018560ff168154811061040857610407611ad5565b5b9060005260206000209060060201600001818154811061042b5761042a611ad5565b5b90600052602060002090600302016000018054610447906119cd565b80601f0160208091040260200160405190810160405280929190818152602001828054610473906119cd565b80156104c05780601f10610495576101008083540402835291602001916104c0565b820191906000526020600020905b8154815290600101906020018083116104a357829003601f168201915b505050505091505b80806104d3906119ff565b91505061031d565b508092505050919050565b6104ee6110fe565b60006001808160018154018082558091505003906000526020600020906006020190508383826001019190610524929190611248565b5081816003018190555050505050565b61053c6110fe565b6001805490508160ff1610610586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057d9061179a565b60405180910390fd5b60004790506000610595610cdf565b73ffffffffffffffffffffffffffffffffffffffff166064600a846105ba91906118c3565b6105c49190611892565b6040516105d0906116ca565b60006040518083038185875af1925050503d806000811461060d576040519150601f19603f3d011682016040523d82523d6000602084013e610612565b606091505b505090508061062057600080fd5b60006064600a8461063191906118c3565b61063b9190611892565b83610646919061191d565b905060008060005b60018760ff168154811061066557610664611ad5565b5b906000526020600020906006020160000180549050811015610784578260018860ff168154811061069957610698611ad5565b5b906000526020600020906006020160000182815481106106bc576106bb611ad5565b5b90600052602060002090600302016001015411156107715760018760ff16815481106106eb576106ea611ad5565b5b9060005260206000209060060201600001818154811061070e5761070d611ad5565b5b906000526020600020906003020160010154925060018760ff168154811061073957610738611ad5565b5b9060005260206000209060060201600001818154811061075c5761075b611ad5565b5b90600052602060002090600302016002015491505b808061077c906119ff565b91505061064e565b50600082846107939190611892565b905060005b60018860ff16815481106107af576107ae611ad5565b5b90600052602060002090600602016005018054905081101561093757600060018960ff16815481106107e4576107e3611ad5565b5b9060005260206000209060060201600501828154811061080757610806611ad5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508360018a60ff168154811061084c5761084b611ad5565b5b906000526020600020906006020160040160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156109235760006108ae610cdf565b73ffffffffffffffffffffffffffffffffffffffff16846040516108d1906116ca565b60006040518083038185875af1925050503d806000811461090e576040519150601f19603f3d011682016040523d82523d6000602084013e610913565b606091505b505090508061092157600080fd5b505b50808061092f906119ff565b915050610798565b5050505050505050565b60606001805490508260ff161061098d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109849061179a565b60405180910390fd5b60018260ff16815481106109a4576109a3611ad5565b5b906000526020600020906006020160010180546109c0906119cd565b80601f01602080910402602001604051908101604052809291908181526020018280546109ec906119cd565b8015610a395780601f10610a0e57610100808354040283529160200191610a39565b820191906000526020600020905b815481529060010190602001808311610a1c57829003601f168201915b50505050509050919050565b60018181548110610a5557600080fd5b9060005260206000209060060201600091509050806001018054610a78906119cd565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa4906119cd565b8015610af15780601f10610ac657610100808354040283529160200191610af1565b820191906000526020600020905b815481529060010190602001808311610ad457829003601f168201915b5050505050908060020154908060030154905083565b6000610b116110fe565b6001805490508260ff1610610b5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b529061179a565b60405180910390fd5b60008080600090505b60018560ff1681548110610b7b57610b7a611ad5565b5b906000526020600020906006020160000180549050811015610c9a578260018660ff1681548110610baf57610bae611ad5565b5b90600052602060002090600602016000018281548110610bd257610bd1611ad5565b5b9060005260206000209060030201600101541115610c875760018560ff1681548110610c0157610c00611ad5565b5b90600052602060002090600602016000018181548110610c2457610c23611ad5565b5b906000526020600020906003020160010154925060018560ff1681548110610c4f57610c4e611ad5565b5b90600052602060002090600602016000018181548110610c7257610c71611ad5565b5b90600052602060002090600302016002015491505b8080610c92906119ff565b915050610b64565b508092505050919050565b610cad6110fe565b610cb7600061117c565b565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6001805490508260ff1610610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061179a565b60405180910390fd5b600060018360ff1681548110610d6b57610d6a611ad5565b5b9060005260206000209060060201905060008160040160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414610e02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df99061175a565b60405180910390fd5b8060030154341015610e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e40906117ba565b60405180910390fd5b806000018260ff1681548110610e6257610e61611ad5565b5b9060005260206000209060030201600201548160040160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080600501339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001816000018360ff1681548110610f3c57610f3b611ad5565b5b906000526020600020906003020160010154610f58919061183c565b816000018360ff1681548110610f7157610f70611ad5565b5b906000526020600020906003020160010181905550505050565b610f936110fe565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611003576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffa9061177a565b60405180910390fd5b61100c8161117c565b50565b6110176110fe565b6001848154811061102b5761102a611ad5565b5b9060005260206000209060060201600001604051806060016040528085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020016000815260200183815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000190805190602001906110e19291906112ce565b506020820151816001015560408201518160020155505050505050565b611106611240565b73ffffffffffffffffffffffffffffffffffffffff16611124610cdf565b73ffffffffffffffffffffffffffffffffffffffff161461117a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611171906117da565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b828054611254906119cd565b90600052602060002090601f01602090048101928261127657600085556112bd565b82601f1061128f57803560ff19168380011785556112bd565b828001600101855582156112bd579182015b828111156112bc5782358255916020019190600101906112a1565b5b5090506112ca9190611354565b5090565b8280546112da906119cd565b90600052602060002090601f0160209004810192826112fc5760008555611343565b82601f1061131557805160ff1916838001178555611343565b82800160010185558215611343579182015b82811115611342578251825591602001919060010190611327565b5b5090506113509190611354565b5090565b5b8082111561136d576000816000905550600101611355565b5090565b60008135905061138081611c24565b92915050565b60008083601f84011261139c5761139b611b09565b5b8235905067ffffffffffffffff8111156113b9576113b8611b04565b5b6020830191508360018202830111156113d5576113d4611b0e565b5b9250929050565b6000813590506113eb81611c3b565b92915050565b60008135905061140081611c52565b92915050565b60006020828403121561141c5761141b611b18565b5b600061142a84828501611371565b91505092915050565b60008060006040848603121561144c5761144b611b18565b5b600084013567ffffffffffffffff81111561146a57611469611b13565b5b61147686828701611386565b93509350506020611489868287016113dc565b9150509250925092565b6000602082840312156114a9576114a8611b18565b5b60006114b7848285016113dc565b91505092915050565b600080600080606085870312156114da576114d9611b18565b5b60006114e8878288016113dc565b945050602085013567ffffffffffffffff81111561150957611508611b13565b5b61151587828801611386565b93509350506040611528878288016113dc565b91505092959194509250565b60006020828403121561154a57611549611b18565b5b6000611558848285016113f1565b91505092915050565b6000806040838503121561157857611577611b18565b5b6000611586858286016113f1565b9250506020611597858286016113f1565b9150509250929050565b6115aa81611951565b82525050565b60006115bb82611815565b6115c5818561182b565b93506115d581856020860161199a565b6115de81611b1d565b840191505092915050565b60006115f6600d8361182b565b915061160182611b2e565b602082019050919050565b600061161960268361182b565b915061162482611b57565b604082019050919050565b600061163c60108361182b565b915061164782611ba6565b602082019050919050565b600061165f601c8361182b565b915061166a82611bcf565b602082019050919050565b600061168260208361182b565b915061168d82611bf8565b602082019050919050565b60006116a5600083611820565b91506116b082611c21565b600082019050919050565b6116c481611983565b82525050565b60006116d582611698565b9150819050919050565b60006020820190506116f460008301846115a1565b92915050565b6000602082019050818103600083015261171481846115b0565b905092915050565b6000606082019050818103600083015261173681866115b0565b905061174560208301856116bb565b61175260408301846116bb565b949350505050565b60006020820190508181036000830152611773816115e9565b9050919050565b600060208201905081810360008301526117938161160c565b9050919050565b600060208201905081810360008301526117b38161162f565b9050919050565b600060208201905081810360008301526117d381611652565b9050919050565b600060208201905081810360008301526117f381611675565b9050919050565b600060208201905061180f60008301846116bb565b92915050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600061184782611983565b915061185283611983565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561188757611886611a48565b5b828201905092915050565b600061189d82611983565b91506118a883611983565b9250826118b8576118b7611a77565b5b828204905092915050565b60006118ce82611983565b91506118d983611983565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561191257611911611a48565b5b828202905092915050565b600061192882611983565b915061193383611983565b92508282101561194657611945611a48565b5b828203905092915050565b600061195c82611963565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156119b857808201518184015260208101905061199d565b838111156119c7576000848401525b50505050565b600060028204905060018216806119e557607f821691505b602082108114156119f9576119f8611aa6565b5b50919050565b6000611a0a82611983565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611a3d57611a3c611a48565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416c726561647920566f74656400000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f566f74696e67204e6f7420466f756e6400000000000000000000000000000000600082015250565b7f496e7375666669636369656e7420616d6f756e7420746f20766f746500000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b611c2d81611951565b8114611c3857600080fd5b50565b611c4481611983565b8114611c4f57600080fd5b50565b611c5b8161198d565b8114611c6657600080fd5b5056fea26469706673582212205387753d26bc5700d36dd21948ddec7a63dbe09560982d6bdab005b5040b374964736f6c63430008070033

Deployed Bytecode Sourcemap

4152:6074:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6945:720;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4785:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8657:1566;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6569:254;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4572:30;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;7787:702;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3259:103;;;;;;;;;;;;;:::i;:::-;;4611:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2611:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5674:770;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3517:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5218:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6945:720;7054:13;2497;:11;:13::i;:::-;7107:14:::1;:21;;;;7093:11;:35;;;7085:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7162:18;7195:27;7254:9;7235:390;7286:14;7301:11;7286:27;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;:42;;;;7282:1;:46;7235:390;;;7428:10;7377:14;7392:11;7377:27;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;7413:1;7377:38;;;;;;;;:::i;:::-;;;;;;;;;;;;:48;;;:61;7373:241;;;7472:14;7487:11;7472:27;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;7508:1;7472:38;;;;;;;;:::i;:::-;;;;;;;;;;;;:48;;;7459:61;;7555:14;7570:11;7555:27;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;7591:1;7555:38;;;;;;;;:::i;:::-;;;;;;;;;;;;:43;;7539:59;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7373:241;7343:3;;;;;:::i;:::-;;;;7235:390;;;;7644:13;7637:20;;;;6945:720:::0;;;:::o;4785:253::-;2497:13;:11;:13::i;:::-;4902:24:::1;4929:14;:21:::0;::::1;;;;;;;;;;;;;;;;;;;;;;;4902:48;;4979:5;;4961:9;:15;;:23;;;;;;;:::i;:::-;;5019:11;4995:9;:21;;:35;;;;4891:147;4785:253:::0;;;:::o;8657:1566::-;2497:13;:11;:13::i;:::-;8763:14:::1;:21;;;;8749:11;:35;;;8741:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8818:20;8841:21;8818:44;;8876:13;8903:7;:5;:7::i;:::-;8895:21;;8960:3;8954:2;8939:12;:17;;;;:::i;:::-;8938:25;;;;:::i;:::-;8895:83;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8875:103;;;8997:8;8989:17;;;::::0;::::1;;9019:24;9083:3;9077:2;9062:12;:17;;;;:::i;:::-;9061:25;;;;:::i;:::-;9046:12;:40;;;;:::i;:::-;9019:67;;9099:18;9132:21:::0;9189:9:::1;9170:388;9221:14;9236:11;9221:27;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;:42;;;;9217:1;:46;9170:388;;;9363:10;9312:14;9327:11;9312:27;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;9348:1;9312:38;;;;;;;;:::i;:::-;;;;;;;;;;;;:48;;;:61;9308:239;;;9407:14;9422:11;9407:27;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;9443:1;9407:38;;;;;;;;:::i;:::-;;;;;;;;;;;;:48;;;9394:61;;9490:14;9505:11;9490:27;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;9526:1;9490:38;;;;;;;;:::i;:::-;;;;;;;;;;;;:41;;;9474:57;;9308:239;9278:3;;;;;:::i;:::-;;;;9170:388;;;;9570:21;9613:10;9594:16;:29;;;;:::i;:::-;9570:53;;9655:9;9636:580;9687:14;9702:11;9687:27;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:42;;:49;;;;9683:1;:53;9636:580;;;9781:21;9805:14;9820:11;9805:27;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:42;;9866:1;9805:77;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9781:101;;9996:13;9919:14;9934:11;9919:27;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:34;;:49;9954:13;9919:49;;;;;;;;;;;;;;;:56;;;:90;9897:308;;;10045:14;10073:7;:5;:7::i;:::-;10065:21;;10116:13;10065:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10044:108;;;10179:9;10171:18;;;::::0;::::1;;10025:180;9897:308;9766:450;9751:3;;;;;:::i;:::-;;;;9636:580;;;;8730:1493;;;;;;8657:1566:::0;:::o;6569:254::-;6669:13;6722:14;:21;;;;6708:11;:35;;;6700:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;6782:14;6797:11;6782:27;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:33;;6775:40;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6569:254;;;:::o;4572:30::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7787:702::-;7894:7;2497:13;:11;:13::i;:::-;7941:14:::1;:21;;;;7927:11;:35;;;7919:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7996:18;8029:21:::0;8082:9;8094:1:::1;8082:13;;8063:388;8114:14;8129:11;8114:27;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;:42;;;;8110:1;:46;8063:388;;;8256:10;8205:14;8220:11;8205:27;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;8241:1;8205:38;;;;;;;;:::i;:::-;;;;;;;;;;;;:48;;;:61;8201:239;;;8300:14;8315:11;8300:27;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;8336:1;8300:38;;;;;;;;:::i;:::-;;;;;;;;;;;;:48;;;8287:61;;8383:14;8398:11;8383:27;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;8419:1;8383:38;;;;;;;;:::i;:::-;;;;;;;;;;;;:41;;;8367:57;;8201:239;8171:3;;;;;:::i;:::-;;;;8063:388;;;;8468:13;8461:20;;;;7787:702:::0;;;:::o;3259:103::-;2497:13;:11;:13::i;:::-;3324:30:::1;3351:1;3324:18;:30::i;:::-;3259:103::o:0;4611:26::-;;;;;;;;;;;;;:::o;2611:87::-;2657:7;2684:6;;;;;;;;;;;2677:13;;2611:87;:::o;5674:770::-;5774:14;:21;;;;5760:11;:35;;;5752:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;5829:28;5860:14;5875:11;5860:27;;;;;;;;;;:::i;:::-;;;;;;;;;;;;5829:58;;5949:1;5906:13;:20;;:32;5927:10;5906:32;;;;;;;;;;;;;;;:39;;;:44;5898:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6047:13;:25;;;6034:9;:38;;6012:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;6183:13;:35;;6219:11;6183:48;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:65;;;6141:13;:20;;:32;6162:10;6141:32;;;;;;;;;;;;;;;:39;;:107;;;;6259:13;:28;;6293:10;6259:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6435:1;6375:13;:21;;6397:11;6375:34;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:44;;;:61;;;;:::i;:::-;6315:13;:21;;6337:11;6315:34;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:44;;:121;;;;5741:703;5674:770;;:::o;3517:201::-;2497:13;:11;:13::i;:::-;3626:1:::1;3606:22;;:8;:22;;;;3598:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3682:28;3701:8;3682:18;:28::i;:::-;3517:201:::0;:::o;5218:248::-;2497:13;:11;:13::i;:::-;5356:14:::1;5371:5;5356:21;;;;;;;;:::i;:::-;;;;;;;;;;;;:29;;5405:42;;;;;;;;5419:4;;5405:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5444:1;5405:42;;;;5429:2;5405:42;;::::0;5356:102:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;5218:248:::0;;;;:::o;2776:132::-;2851:12;:10;:12::i;:::-;2840:23;;:7;:5;:7::i;:::-;:23;;;2832:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2776:132::o;3878:191::-;3952:16;3971:6;;;;;;;;;;;3952:25;;3997:8;3988:6;;:17;;;;;;;;;;;;;;;;;;4052:8;4021:40;;4042:8;4021:40;;;;;;;;;;;;3941:128;3878:191;:::o;1162:98::-;1215:7;1242:10;1235:17;;1162:98;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;166:553::-;224:8;234:6;284:3;277:4;269:6;265:17;261:27;251:122;;292:79;;:::i;:::-;251:122;405:6;392:20;382:30;;435:18;427:6;424:30;421:117;;;457:79;;:::i;:::-;421:117;571:4;563:6;559:17;547:29;;625:3;617:4;609:6;605:17;595:8;591:32;588:41;585:128;;;632:79;;:::i;:::-;585:128;166:553;;;;;:::o;725:139::-;771:5;809:6;796:20;787:29;;825:33;852:5;825:33;:::i;:::-;725:139;;;;:::o;870:135::-;914:5;952:6;939:20;930:29;;968:31;993:5;968:31;:::i;:::-;870:135;;;;:::o;1011:329::-;1070:6;1119:2;1107:9;1098:7;1094:23;1090:32;1087:119;;;1125:79;;:::i;:::-;1087:119;1245:1;1270:53;1315:7;1306:6;1295:9;1291:22;1270:53;:::i;:::-;1260:63;;1216:117;1011:329;;;;:::o;1346:674::-;1426:6;1434;1442;1491:2;1479:9;1470:7;1466:23;1462:32;1459:119;;;1497:79;;:::i;:::-;1459:119;1645:1;1634:9;1630:17;1617:31;1675:18;1667:6;1664:30;1661:117;;;1697:79;;:::i;:::-;1661:117;1810:65;1867:7;1858:6;1847:9;1843:22;1810:65;:::i;:::-;1792:83;;;;1588:297;1924:2;1950:53;1995:7;1986:6;1975:9;1971:22;1950:53;:::i;:::-;1940:63;;1895:118;1346:674;;;;;:::o;2026:329::-;2085:6;2134:2;2122:9;2113:7;2109:23;2105:32;2102:119;;;2140:79;;:::i;:::-;2102:119;2260:1;2285:53;2330:7;2321:6;2310:9;2306:22;2285:53;:::i;:::-;2275:63;;2231:117;2026:329;;;;:::o;2361:819::-;2450:6;2458;2466;2474;2523:2;2511:9;2502:7;2498:23;2494:32;2491:119;;;2529:79;;:::i;:::-;2491:119;2649:1;2674:53;2719:7;2710:6;2699:9;2695:22;2674:53;:::i;:::-;2664:63;;2620:117;2804:2;2793:9;2789:18;2776:32;2835:18;2827:6;2824:30;2821:117;;;2857:79;;:::i;:::-;2821:117;2970:65;3027:7;3018:6;3007:9;3003:22;2970:65;:::i;:::-;2952:83;;;;2747:298;3084:2;3110:53;3155:7;3146:6;3135:9;3131:22;3110:53;:::i;:::-;3100:63;;3055:118;2361:819;;;;;;;:::o;3186:325::-;3243:6;3292:2;3280:9;3271:7;3267:23;3263:32;3260:119;;;3298:79;;:::i;:::-;3260:119;3418:1;3443:51;3486:7;3477:6;3466:9;3462:22;3443:51;:::i;:::-;3433:61;;3389:115;3186:325;;;;:::o;3517:466::-;3581:6;3589;3638:2;3626:9;3617:7;3613:23;3609:32;3606:119;;;3644:79;;:::i;:::-;3606:119;3764:1;3789:51;3832:7;3823:6;3812:9;3808:22;3789:51;:::i;:::-;3779:61;;3735:115;3889:2;3915:51;3958:7;3949:6;3938:9;3934:22;3915:51;:::i;:::-;3905:61;;3860:116;3517:466;;;;;:::o;3989:118::-;4076:24;4094:5;4076:24;:::i;:::-;4071:3;4064:37;3989:118;;:::o;4113:364::-;4201:3;4229:39;4262:5;4229:39;:::i;:::-;4284:71;4348:6;4343:3;4284:71;:::i;:::-;4277:78;;4364:52;4409:6;4404:3;4397:4;4390:5;4386:16;4364:52;:::i;:::-;4441:29;4463:6;4441:29;:::i;:::-;4436:3;4432:39;4425:46;;4205:272;4113:364;;;;:::o;4483:366::-;4625:3;4646:67;4710:2;4705:3;4646:67;:::i;:::-;4639:74;;4722:93;4811:3;4722:93;:::i;:::-;4840:2;4835:3;4831:12;4824:19;;4483:366;;;:::o;4855:::-;4997:3;5018:67;5082:2;5077:3;5018:67;:::i;:::-;5011:74;;5094:93;5183:3;5094:93;:::i;:::-;5212:2;5207:3;5203:12;5196:19;;4855:366;;;:::o;5227:::-;5369:3;5390:67;5454:2;5449:3;5390:67;:::i;:::-;5383:74;;5466:93;5555:3;5466:93;:::i;:::-;5584:2;5579:3;5575:12;5568:19;;5227:366;;;:::o;5599:::-;5741:3;5762:67;5826:2;5821:3;5762:67;:::i;:::-;5755:74;;5838:93;5927:3;5838:93;:::i;:::-;5956:2;5951:3;5947:12;5940:19;;5599:366;;;:::o;5971:::-;6113:3;6134:67;6198:2;6193:3;6134:67;:::i;:::-;6127:74;;6210:93;6299:3;6210:93;:::i;:::-;6328:2;6323:3;6319:12;6312:19;;5971:366;;;:::o;6343:398::-;6502:3;6523:83;6604:1;6599:3;6523:83;:::i;:::-;6516:90;;6615:93;6704:3;6615:93;:::i;:::-;6733:1;6728:3;6724:11;6717:18;;6343:398;;;:::o;6747:118::-;6834:24;6852:5;6834:24;:::i;:::-;6829:3;6822:37;6747:118;;:::o;6871:379::-;7055:3;7077:147;7220:3;7077:147;:::i;:::-;7070:154;;7241:3;7234:10;;6871:379;;;:::o;7256:222::-;7349:4;7387:2;7376:9;7372:18;7364:26;;7400:71;7468:1;7457:9;7453:17;7444:6;7400:71;:::i;:::-;7256:222;;;;:::o;7484:313::-;7597:4;7635:2;7624:9;7620:18;7612:26;;7684:9;7678:4;7674:20;7670:1;7659:9;7655:17;7648:47;7712:78;7785:4;7776:6;7712:78;:::i;:::-;7704:86;;7484:313;;;;:::o;7803:533::-;7972:4;8010:2;7999:9;7995:18;7987:26;;8059:9;8053:4;8049:20;8045:1;8034:9;8030:17;8023:47;8087:78;8160:4;8151:6;8087:78;:::i;:::-;8079:86;;8175:72;8243:2;8232:9;8228:18;8219:6;8175:72;:::i;:::-;8257;8325:2;8314:9;8310:18;8301:6;8257:72;:::i;:::-;7803:533;;;;;;:::o;8342:419::-;8508:4;8546:2;8535:9;8531:18;8523:26;;8595:9;8589:4;8585:20;8581:1;8570:9;8566:17;8559:47;8623:131;8749:4;8623:131;:::i;:::-;8615:139;;8342:419;;;:::o;8767:::-;8933:4;8971:2;8960:9;8956:18;8948:26;;9020:9;9014:4;9010:20;9006:1;8995:9;8991:17;8984:47;9048:131;9174:4;9048:131;:::i;:::-;9040:139;;8767:419;;;:::o;9192:::-;9358:4;9396:2;9385:9;9381:18;9373:26;;9445:9;9439:4;9435:20;9431:1;9420:9;9416:17;9409:47;9473:131;9599:4;9473:131;:::i;:::-;9465:139;;9192:419;;;:::o;9617:::-;9783:4;9821:2;9810:9;9806:18;9798:26;;9870:9;9864:4;9860:20;9856:1;9845:9;9841:17;9834:47;9898:131;10024:4;9898:131;:::i;:::-;9890:139;;9617:419;;;:::o;10042:::-;10208:4;10246:2;10235:9;10231:18;10223:26;;10295:9;10289:4;10285:20;10281:1;10270:9;10266:17;10259:47;10323:131;10449:4;10323:131;:::i;:::-;10315:139;;10042:419;;;:::o;10467:222::-;10560:4;10598:2;10587:9;10583:18;10575:26;;10611:71;10679:1;10668:9;10664:17;10655:6;10611:71;:::i;:::-;10467:222;;;;:::o;10776:99::-;10828:6;10862:5;10856:12;10846:22;;10776:99;;;:::o;10881:147::-;10982:11;11019:3;11004:18;;10881:147;;;;:::o;11034:169::-;11118:11;11152:6;11147:3;11140:19;11192:4;11187:3;11183:14;11168:29;;11034:169;;;;:::o;11209:305::-;11249:3;11268:20;11286:1;11268:20;:::i;:::-;11263:25;;11302:20;11320:1;11302:20;:::i;:::-;11297:25;;11456:1;11388:66;11384:74;11381:1;11378:81;11375:107;;;11462:18;;:::i;:::-;11375:107;11506:1;11503;11499:9;11492:16;;11209:305;;;;:::o;11520:185::-;11560:1;11577:20;11595:1;11577:20;:::i;:::-;11572:25;;11611:20;11629:1;11611:20;:::i;:::-;11606:25;;11650:1;11640:35;;11655:18;;:::i;:::-;11640:35;11697:1;11694;11690:9;11685:14;;11520:185;;;;:::o;11711:348::-;11751:7;11774:20;11792:1;11774:20;:::i;:::-;11769:25;;11808:20;11826:1;11808:20;:::i;:::-;11803:25;;11996:1;11928:66;11924:74;11921:1;11918:81;11913:1;11906:9;11899:17;11895:105;11892:131;;;12003:18;;:::i;:::-;11892:131;12051:1;12048;12044:9;12033:20;;11711:348;;;;:::o;12065:191::-;12105:4;12125:20;12143:1;12125:20;:::i;:::-;12120:25;;12159:20;12177:1;12159:20;:::i;:::-;12154:25;;12198:1;12195;12192:8;12189:34;;;12203:18;;:::i;:::-;12189:34;12248:1;12245;12241:9;12233:17;;12065:191;;;;:::o;12262:96::-;12299:7;12328:24;12346:5;12328:24;:::i;:::-;12317:35;;12262:96;;;:::o;12364:126::-;12401:7;12441:42;12434:5;12430:54;12419:65;;12364:126;;;:::o;12496:77::-;12533:7;12562:5;12551:16;;12496:77;;;:::o;12579:86::-;12614:7;12654:4;12647:5;12643:16;12632:27;;12579:86;;;:::o;12671:307::-;12739:1;12749:113;12763:6;12760:1;12757:13;12749:113;;;12848:1;12843:3;12839:11;12833:18;12829:1;12824:3;12820:11;12813:39;12785:2;12782:1;12778:10;12773:15;;12749:113;;;12880:6;12877:1;12874:13;12871:101;;;12960:1;12951:6;12946:3;12942:16;12935:27;12871:101;12720:258;12671:307;;;:::o;12984:320::-;13028:6;13065:1;13059:4;13055:12;13045:22;;13112:1;13106:4;13102:12;13133:18;13123:81;;13189:4;13181:6;13177:17;13167:27;;13123:81;13251:2;13243:6;13240:14;13220:18;13217:38;13214:84;;;13270:18;;:::i;:::-;13214:84;13035:269;12984:320;;;:::o;13310:233::-;13349:3;13372:24;13390:5;13372:24;:::i;:::-;13363:33;;13418:66;13411:5;13408:77;13405:103;;;13488:18;;:::i;:::-;13405:103;13535:1;13528:5;13524:13;13517:20;;13310:233;;;:::o;13549:180::-;13597:77;13594:1;13587:88;13694:4;13691:1;13684:15;13718:4;13715:1;13708:15;13735:180;13783:77;13780:1;13773:88;13880:4;13877:1;13870:15;13904:4;13901:1;13894:15;13921:180;13969:77;13966:1;13959:88;14066:4;14063:1;14056:15;14090:4;14087:1;14080:15;14107:180;14155:77;14152:1;14145:88;14252:4;14249:1;14242:15;14276:4;14273:1;14266:15;14293:117;14402:1;14399;14392:12;14416:117;14525:1;14522;14515:12;14539:117;14648:1;14645;14638:12;14662:117;14771:1;14768;14761:12;14785:117;14894:1;14891;14884:12;14908:102;14949:6;15000:2;14996:7;14991:2;14984:5;14980:14;14976:28;14966:38;;14908:102;;;:::o;15016:163::-;15156:15;15152:1;15144:6;15140:14;15133:39;15016:163;:::o;15185:225::-;15325:34;15321:1;15313:6;15309:14;15302:58;15394:8;15389:2;15381:6;15377:15;15370:33;15185:225;:::o;15416:166::-;15556:18;15552:1;15544:6;15540:14;15533:42;15416:166;:::o;15588:178::-;15728:30;15724:1;15716:6;15712:14;15705:54;15588:178;:::o;15772:182::-;15912:34;15908:1;15900:6;15896:14;15889:58;15772:182;:::o;15960:114::-;;:::o;16080:122::-;16153:24;16171:5;16153:24;:::i;:::-;16146:5;16143:35;16133:63;;16192:1;16189;16182:12;16133:63;16080:122;:::o;16208:::-;16281:24;16299:5;16281:24;:::i;:::-;16274:5;16271:35;16261:63;;16320:1;16317;16310:12;16261:63;16208:122;:::o;16336:118::-;16407:22;16423:5;16407:22;:::i;:::-;16400:5;16397:33;16387:61;;16444:1;16441;16434:12;16387:61;16336:118;:::o

Swarm Source

ipfs://5387753d26bc5700d36dd21948ddec7a63dbe09560982d6bdab005b5040b3749

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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