ETH Price: $3,384.30 (+0.81%)
Gas: 4.78 Gwei

Contract

0xB72749A16410dB6b3FeAc000a5A90c2f6cF7935E
 

Overview

ETH Balance

1.98588125 ETH

Eth Value

$6,720.81 (@ $3,384.30/ETH)

Token Holdings

Multichain Info

Transaction Hash
Method
Block
From
To
Sell Shares193120902024-02-26 13:38:35306 days ago1708954715IN
0xB72749A1...f6cF7935E
0 ETH0.0027112241.65532535
Sell Shares193120812024-02-26 13:36:47306 days ago1708954607IN
0xB72749A1...f6cF7935E
0 ETH0.002887344.36880868
Sell Shares191956872024-02-10 5:39:47322 days ago1707543587IN
0xB72749A1...f6cF7935E
0 ETH0.0022372734.37353361
Sell Shares191956842024-02-10 5:39:11322 days ago1707543551IN
0xB72749A1...f6cF7935E
0 ETH0.0020376731.30687645
Sell Shares191956812024-02-10 5:38:35322 days ago1707543515IN
0xB72749A1...f6cF7935E
0 ETH0.0020403531.34811638
Sell Shares185349272023-11-09 14:16:47415 days ago1699539407IN
0xB72749A1...f6cF7935E
0 ETH0.0026132240.15714987
Sell Shares185349242023-11-09 14:16:11415 days ago1699539371IN
0xB72749A1...f6cF7935E
0 ETH0.0030653447.09617181
Sell Shares185349232023-11-09 14:15:59415 days ago1699539359IN
0xB72749A1...f6cF7935E
0 ETH0.0031992445.77740869
Sell Shares185349212023-11-09 14:15:35415 days ago1699539335IN
0xB72749A1...f6cF7935E
0 ETH0.0032947347.14369831
Sell Shares185349112023-11-09 14:13:35415 days ago1699539215IN
0xB72749A1...f6cF7935E
0 ETH0.0033198651.00655795
Sell Shares185349092023-11-09 14:13:11415 days ago1699539191IN
0xB72749A1...f6cF7935E
0 ETH0.0031673845.32149627
Sell Shares185349062023-11-09 14:12:35415 days ago1699539155IN
0xB72749A1...f6cF7935E
0 ETH0.0032866547.02810114
Sell Shares185030122023-11-05 3:03:59419 days ago1699153439IN
0xB72749A1...f6cF7935E
0 ETH0.0009567714.7
Sell Shares185030082023-11-05 3:03:11419 days ago1699153391IN
0xB72749A1...f6cF7935E
0 ETH0.0009539513.65
Sell Shares183549482023-10-15 9:41:23440 days ago1697362883IN
0xB72749A1...f6cF7935E
0 ETH0.000346155.31841901
Sell Shares183527062023-10-15 2:10:23440 days ago1697335823IN
0xB72749A1...f6cF7935E
0 ETH0.000399316.13513272
Sell Shares183527032023-10-15 2:09:35440 days ago1697335775IN
0xB72749A1...f6cF7935E
0 ETH0.00036765.64795101
Sell Shares183526992023-10-15 2:08:47440 days ago1697335727IN
0xB72749A1...f6cF7935E
0 ETH0.000347915.34642357
Sell Shares183422632023-10-13 15:07:59442 days ago1697209679IN
0xB72749A1...f6cF7935E
0 ETH0.000615079.45
Sell Shares183103462023-10-09 3:51:11446 days ago1696823471IN
0xB72749A1...f6cF7935E
0 ETH0.000359285.52102397
Buy Shares182991382023-10-07 14:15:11448 days ago1696688111IN
0xB72749A1...f6cF7935E
0.00556875 ETH0.000541276.78685771
Sell Shares182469872023-09-30 7:19:11455 days ago1696058351IN
0xB72749A1...f6cF7935E
0 ETH0.000410126.3012006
Sell Shares182469852023-09-30 7:18:47455 days ago1696058327IN
0xB72749A1...f6cF7935E
0 ETH0.00043686.71113705
Sell Shares182469832023-09-30 7:18:23455 days ago1696058303IN
0xB72749A1...f6cF7935E
0 ETH0.00041316.34695831
Sell Shares182469802023-09-30 7:17:47455 days ago1696058267IN
0xB72749A1...f6cF7935E
0 ETH0.000412926.34424115
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
193120902024-02-26 13:38:35306 days ago1708954715
0xB72749A1...f6cF7935E
0.00090312 ETH
193120902024-02-26 13:38:35306 days ago1708954715
0xB72749A1...f6cF7935E
0.00090312 ETH
193120902024-02-26 13:38:35306 days ago1708954715
0xB72749A1...f6cF7935E
0.01625625 ETH
193120812024-02-26 13:36:47306 days ago1708954607
0xB72749A1...f6cF7935E
0.00112812 ETH
193120812024-02-26 13:36:47306 days ago1708954607
0xB72749A1...f6cF7935E
0.00112812 ETH
193120812024-02-26 13:36:47306 days ago1708954607
0xB72749A1...f6cF7935E
0.02030625 ETH
191956872024-02-10 5:39:47322 days ago1707543587
0xB72749A1...f6cF7935E
0.0006125 ETH
191956872024-02-10 5:39:47322 days ago1707543587
0xB72749A1...f6cF7935E
0.0006125 ETH
191956872024-02-10 5:39:47322 days ago1707543587
0xB72749A1...f6cF7935E
0.011025 ETH
191956842024-02-10 5:39:11322 days ago1707543551
0xB72749A1...f6cF7935E
0.0010125 ETH
191956842024-02-10 5:39:11322 days ago1707543551
0xB72749A1...f6cF7935E
0.0010125 ETH
191956842024-02-10 5:39:11322 days ago1707543551
0xB72749A1...f6cF7935E
0.018225 ETH
191956812024-02-10 5:38:35322 days ago1707543515
0xB72749A1...f6cF7935E
0.00195312 ETH
191956812024-02-10 5:38:35322 days ago1707543515
0xB72749A1...f6cF7935E
0.00195312 ETH
191956812024-02-10 5:38:35322 days ago1707543515
0xB72749A1...f6cF7935E
0.03515625 ETH
185349272023-11-09 14:16:47415 days ago1699539407
0xB72749A1...f6cF7935E
0.00125 ETH
185349272023-11-09 14:16:47415 days ago1699539407
0xB72749A1...f6cF7935E
0.00125 ETH
185349272023-11-09 14:16:47415 days ago1699539407
0xB72749A1...f6cF7935E
0.0225 ETH
185349242023-11-09 14:16:11415 days ago1699539371
0xB72749A1...f6cF7935E
0.00037812 ETH
185349242023-11-09 14:16:11415 days ago1699539371
0xB72749A1...f6cF7935E
0.00037812 ETH
185349242023-11-09 14:16:11415 days ago1699539371
0xB72749A1...f6cF7935E
0.00680625 ETH
185349232023-11-09 14:15:59415 days ago1699539359
0xB72749A1...f6cF7935E
0.00045 ETH
185349232023-11-09 14:15:59415 days ago1699539359
0xB72749A1...f6cF7935E
0.00045 ETH
185349232023-11-09 14:15:59415 days ago1699539359
0xB72749A1...f6cF7935E
0.0081 ETH
185349212023-11-09 14:15:35415 days ago1699539335
0xB72749A1...f6cF7935E
0.00052812 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
iso3166SharesV1

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2023-08-24
*/

// SPDX-License-Identifier: MIT

// File: contracts/Context.sol

// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

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: contracts/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/FriendtechShares.sol

pragma solidity >=0.8.2 <0.9.0;

// TODO: Events, final pricing model,

contract iso3166SharesV1 is Ownable {
    address public protocolFeeDestination;
    uint256 public protocolFeePercent = 50000000000000000;
    uint256 public subjectFeePercent = 50000000000000000;

    event Trade(
        address trader,
        uint256 subject,
        bool isBuy,
        uint256 shareAmount,
        uint256 ethAmount,
        uint256 protocolEthAmount,
        uint256 subjectEthAmount,
        uint256 supply
    );

    // SharesSubject => (Holder => Balance)
    mapping(uint256 => mapping(address => uint256)) public sharesBalance;

    // SharesSubject => Supply
    mapping(uint256 => uint256) public sharesSupply;
    mapping(address => address) public invite;

    function setFeeDestination(address _feeDestination) public onlyOwner {
        protocolFeeDestination = _feeDestination;
    }

    function setProtocolFeePercent(uint256 _feePercent) public onlyOwner {
        protocolFeePercent = _feePercent;
    }

    function setSubjectFeePercent(uint256 _feePercent) public onlyOwner {
        subjectFeePercent = _feePercent;
    }

    function register(address _inviter) public {
        require(invite[msg.sender] == address(0), "Error: Repeat binding");
        require(_inviter != msg.sender, "Error: Binding self");
        require(
            _inviter != address(0),
            "Error: Binding inviter is zero address"
        );

        require(
            invite[_inviter] != msg.sender,
            "Error: Do not allow mutual binding"
        );
        invite[msg.sender] = _inviter;
    }

    function getPrice(
        uint256 supply,
        uint256 amount
    ) public pure returns (uint256) {
        uint256 sum1 = supply == 0
            ? 0
            : ((supply - 1) * (supply) * (2 * (supply - 1) + 1)) / 6;
        uint256 sum2 = supply == 0 && amount == 1
            ? 0
            : ((supply - 1 + amount) *
                (supply + amount) *
                (2 * (supply - 1 + amount) + 1)) / 6;
        uint256 summation = sum2 - sum1;
        return (summation * 1 ether) / 16000;
    }

    function getBuyPrice(
        uint256 sharesSubject,
        uint256 amount
    ) public view returns (uint256) {
        return getPrice(sharesSupply[sharesSubject], amount);
    }

    function getSellPrice(
        uint256 sharesSubject,
        uint256 amount
    ) public view returns (uint256) {
        return getPrice(sharesSupply[sharesSubject] - amount, amount);
    }

    function getBuyPriceAfterFee(
        uint256 sharesSubject,
        uint256 amount
    ) public view returns (uint256) {
        uint256 price = getBuyPrice(sharesSubject, amount);
        uint256 protocolFee = (price * protocolFeePercent) / 1 ether;
        uint256 subjectFee = (price * subjectFeePercent) / 1 ether;
        return price + protocolFee + subjectFee;
    }

    function getSellPriceAfterFee(
        uint256 sharesSubject,
        uint256 amount
    ) public view returns (uint256) {
        uint256 price = getSellPrice(sharesSubject, amount);
        uint256 protocolFee = (price * protocolFeePercent) / 1 ether;
        uint256 subjectFee = (price * subjectFeePercent) / 1 ether;
        return price - protocolFee - subjectFee;
    }

    function buyShares(uint256 sharesSubject, uint256 amount) public payable {
        uint256 supply = sharesSupply[sharesSubject];
        uint256 price = getPrice(supply, amount);
        uint256 protocolFee = (price * protocolFeePercent) / 1 ether;
        uint256 subjectFee = (price * subjectFeePercent) / 1 ether;
        require(
            msg.value >= price + protocolFee + subjectFee,
            "Insufficient payment"
        );

        sharesBalance[sharesSubject][msg.sender] =
            sharesBalance[sharesSubject][msg.sender] +
            amount;
        sharesSupply[sharesSubject] = supply + amount;
        emit Trade(
            msg.sender,
            sharesSubject,
            true,
            amount,
            price,
            protocolFee,
            subjectFee,
            supply + amount
        );
        (bool success1, ) = protocolFeeDestination.call{value: protocolFee}("");
        if (invite[msg.sender] != address(0)) {
            (bool success2, ) = invite[msg.sender].call{value: subjectFee}("");
            require(success1 && success2, "Unable to send funds");
        } else {
            (bool success2, ) = protocolFeeDestination.call{value: subjectFee}(
                ""
            );
            require(success1 && success2, "Unable to send funds");
        }
    }

    function sellShares(uint256 sharesSubject, uint256 amount) public payable {
        uint256 supply = sharesSupply[sharesSubject];
        require(supply > amount, "Cannot sell the last share");
        uint256 price = getPrice(supply - amount, amount);
        uint256 protocolFee = (price * protocolFeePercent) / 1 ether;
        uint256 subjectFee = (price * subjectFeePercent) / 1 ether;
        require(
            sharesBalance[sharesSubject][msg.sender] >= amount,
            "Insufficient shares"
        );
        sharesBalance[sharesSubject][msg.sender] =
            sharesBalance[sharesSubject][msg.sender] -
            amount;

        sharesSupply[sharesSubject] = supply - amount;
        emit Trade(
            msg.sender,
            sharesSubject,
            false,
            amount,
            price,
            protocolFee,
            subjectFee,
            supply - amount
        );
        (bool success1, ) = msg.sender.call{
            value: price - protocolFee - subjectFee
        }("");
        (bool success2, ) = protocolFeeDestination.call{value: protocolFee}("");
        if (invite[msg.sender] != address(0)) {
            (bool success3, ) = invite[msg.sender].call{value: subjectFee}("");
            require(success1 && success2 && success3, "Unable to send funds");
        } else {
            (bool success3, ) = protocolFeeDestination.call{value: subjectFee}(
                ""
            );
            require(success1 && success2 && success3, "Unable to send funds");
        }
    }
}

Contract Security Audit

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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"trader","type":"address"},{"indexed":false,"internalType":"uint256","name":"subject","type":"uint256"},{"indexed":false,"internalType":"bool","name":"isBuy","type":"bool"},{"indexed":false,"internalType":"uint256","name":"shareAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"protocolEthAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"subjectEthAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"supply","type":"uint256"}],"name":"Trade","type":"event"},{"inputs":[{"internalType":"uint256","name":"sharesSubject","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buyShares","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sharesSubject","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getBuyPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"sharesSubject","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getBuyPriceAfterFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"supply","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"sharesSubject","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getSellPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"sharesSubject","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getSellPriceAfterFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"invite","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolFeeDestination","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_inviter","type":"address"}],"name":"register","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sharesSubject","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sellShares","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeDestination","type":"address"}],"name":"setFeeDestination","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feePercent","type":"uint256"}],"name":"setProtocolFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feePercent","type":"uint256"}],"name":"setSubjectFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"sharesBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"sharesSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"subjectFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405266b1a2bc2ec5000060025566b1a2bc2ec5000060035534801561002657600080fd5b5061003033610035565b610085565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6111b8806100946000396000f3fe60806040526004361061011f5760003560e01c80638da5cb5b116100a0578063cd9c712111610064578063cd9c712114610323578063d6e6eb9f14610343578063dfe641c614610359578063f2fde38b14610391578063fbe53234146103b157600080fd5b80638da5cb5b146102925780639477d85d146102b0578063a4983421146102d0578063beebc5da146102f0578063c157253d1461030357600080fd5b80634b77c468116100e75780634b77c468146101cf5780634ce7957c1461021d5780635a8a764e1461023d5780635cf4ee911461025d578063715018a61461027d57600080fd5b8063063a741f146101245780632279a9701461015757806324dc441d1461016c57806340e104a7146101825780634420e486146101af575b600080fd5b34801561013057600080fd5b5061014461013f366004611000565b6103d1565b6040519081526020015b60405180910390f35b61016a610165366004611000565b61044b565b005b34801561017857600080fd5b5061014460035481565b34801561018e57600080fd5b5061014461019d366004611022565b60056020526000908152604090205481565b3480156101bb57600080fd5b5061016a6101ca366004611057565b610817565b3480156101db57600080fd5b506102056101ea366004611057565b6006602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161014e565b34801561022957600080fd5b50600154610205906001600160a01b031681565b34801561024957600080fd5b5061016a610258366004611022565b6109cc565b34801561026957600080fd5b50610144610278366004611000565b6109d9565b34801561028957600080fd5b5061016a610af0565b34801561029e57600080fd5b506000546001600160a01b0316610205565b3480156102bc57600080fd5b506101446102cb366004611000565b610b04565b3480156102dc57600080fd5b5061016a6102eb366004611022565b610b2f565b61016a6102fe366004611000565b610b3c565b34801561030f57600080fd5b5061014461031e366004611000565b610e2c565b34801561032f57600080fd5b5061014461033e366004611000565b610e45565b34801561034f57600080fd5b5061014460025481565b34801561036557600080fd5b50610144610374366004611072565b600460209081526000928352604080842090915290825290205481565b34801561039d57600080fd5b5061016a6103ac366004611057565b610eb3565b3480156103bd57600080fd5b5061016a6103cc366004611057565b610f2c565b6000806103de8484610e2c565b90506000670de0b6b3a7640000600254836103f991906110b4565b61040391906110cb565b90506000670de0b6b3a76400006003548461041e91906110b4565b61042891906110cb565b90508061043583856110ed565b61043f91906110ed565b93505050505b92915050565b6000828152600560205260409020548181116104ae5760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f742073656c6c20746865206c61737420736861726500000000000060448201526064015b60405180910390fd5b60006104c36104bd8484611100565b846109d9565b90506000670de0b6b3a7640000600254836104de91906110b4565b6104e891906110cb565b90506000670de0b6b3a76400006003548461050391906110b4565b61050d91906110cb565b600087815260046020908152604080832033845290915290205490915085111561056f5760405162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e742073686172657360681b60448201526064016104a5565b6000868152600460209081526040808320338452909152902054610594908690611100565b60008781526004602090815260408083203384529091529020556105b88585611100565b6000878152600560205260408120919091557f29db2a6062b25ead33a5fc8d1163c4d7f54397202547c27c1c99a203446477349033908890888787876105fe848d611100565b604051610612989796959493929190611113565b60405180910390a1600033826106288587611100565b6106329190611100565b604051600081818185875af1925050503d806000811461066e576040519150601f19603f3d011682016040523d82523d6000602084013e610673565b606091505b50506001546040519192506000916001600160a01b039091169085908381818185875af1925050503d80600081146106c7576040519150601f19603f3d011682016040523d82523d6000602084013e6106cc565b606091505b5050336000908152600660205260409020549091506001600160a01b03161561078657336000908152600660205260408082205490516001600160a01b039091169085908381818185875af1925050503d8060008114610748576040519150601f19603f3d011682016040523d82523d6000602084013e61074d565b606091505b5050905082801561075b5750815b80156107645750805b6107805760405162461bcd60e51b81526004016104a590611154565b5061080d565b6001546040516000916001600160a01b03169085908381818185875af1925050503d80600081146107d3576040519150601f19603f3d011682016040523d82523d6000602084013e6107d8565b606091505b505090508280156107e65750815b80156107ef5750805b61080b5760405162461bcd60e51b81526004016104a590611154565b505b5050505050505050565b336000908152600660205260409020546001600160a01b0316156108755760405162461bcd60e51b81526020600482015260156024820152744572726f723a205265706561742062696e64696e6760581b60448201526064016104a5565b336001600160a01b038216036108c35760405162461bcd60e51b815260206004820152601360248201527222b93937b91d102134b73234b7339039b2b63360691b60448201526064016104a5565b6001600160a01b0381166109285760405162461bcd60e51b815260206004820152602660248201527f4572726f723a2042696e64696e6720696e7669746572206973207a65726f206160448201526564647265737360d01b60648201526084016104a5565b6001600160a01b038181166000908152600660205260409020543391160361099d5760405162461bcd60e51b815260206004820152602260248201527f4572726f723a20446f206e6f7420616c6c6f77206d757475616c2062696e64696044820152616e6760f01b60648201526084016104a5565b33600090815260066020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6109d4610f56565b600355565b6000808315610a345760066109ef600186611100565b6109fa9060026110b4565b610a059060016110ed565b85610a11600182611100565b610a1b91906110b4565b610a2591906110b4565b610a2f91906110cb565b610a37565b60005b9050600084158015610a495750836001145b610abe57600684610a5b600188611100565b610a6591906110ed565b610a709060026110b4565b610a7b9060016110ed565b610a8586886110ed565b86610a9160018a611100565b610a9b91906110ed565b610aa591906110b4565b610aaf91906110b4565b610ab991906110cb565b610ac1565b60005b90506000610acf8383611100565b9050613e80610ae682670de0b6b3a76400006110b4565b61043f91906110cb565b610af8610f56565b610b026000610fb0565b565b600082815260056020526040812054610b2890610b22908490611100565b836109d9565b9392505050565b610b37610f56565b600255565b60008281526005602052604081205490610b5682846109d9565b90506000670de0b6b3a764000060025483610b7191906110b4565b610b7b91906110cb565b90506000670de0b6b3a764000060035484610b9691906110b4565b610ba091906110cb565b905080610bad83856110ed565b610bb791906110ed565b341015610bfd5760405162461bcd60e51b8152602060048201526014602482015273125b9cdd59999a58da595b9d081c185e5b595b9d60621b60448201526064016104a5565b6000868152600460209081526040808320338452909152902054610c229086906110ed565b6000878152600460209081526040808320338452909152902055610c4685856110ed565b6000878152600560205260409020557f29db2a6062b25ead33a5fc8d1163c4d7f54397202547c27c1c99a203446477343387600188878787610c88848d6110ed565b604051610c9c989796959493929190611113565b60405180910390a16001546040516000916001600160a01b03169084908381818185875af1925050503d8060008114610cf1576040519150601f19603f3d011682016040523d82523d6000602084013e610cf6565b606091505b5050336000908152600660205260409020549091506001600160a01b031615610da757336000908152600660205260408082205490516001600160a01b039091169084908381818185875af1925050503d8060008114610d72576040519150601f19603f3d011682016040523d82523d6000602084013e610d77565b606091505b50509050818015610d855750805b610da15760405162461bcd60e51b81526004016104a590611154565b50610e23565b6001546040516000916001600160a01b03169084908381818185875af1925050503d8060008114610df4576040519150601f19603f3d011682016040523d82523d6000602084013e610df9565b606091505b50509050818015610e075750805b61080d5760405162461bcd60e51b81526004016104a590611154565b50505050505050565b600082815260056020526040812054610b2890836109d9565b600080610e528484610b04565b90506000670de0b6b3a764000060025483610e6d91906110b4565b610e7791906110cb565b90506000670de0b6b3a764000060035484610e9291906110b4565b610e9c91906110cb565b905080610ea98385611100565b61043f9190611100565b610ebb610f56565b6001600160a01b038116610f205760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104a5565b610f2981610fb0565b50565b610f34610f56565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610b025760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806040838503121561101357600080fd5b50508035926020909101359150565b60006020828403121561103457600080fd5b5035919050565b80356001600160a01b038116811461105257600080fd5b919050565b60006020828403121561106957600080fd5b610b288261103b565b6000806040838503121561108557600080fd5b823591506110956020840161103b565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176104455761044561109e565b6000826110e857634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156104455761044561109e565b818103818111156104455761044561109e565b6001600160a01b03989098168852602088019690965293151560408701526060860192909252608085015260a084015260c083015260e08201526101000190565b602080825260149082015273556e61626c6520746f2073656e642066756e647360601b60408201526060019056fea26469706673582212209bcb79b3b05970c81a82d640bddc907fde07d50cd7655eab1472d14f16a09dfd64736f6c63430008120033

Deployed Bytecode

0x60806040526004361061011f5760003560e01c80638da5cb5b116100a0578063cd9c712111610064578063cd9c712114610323578063d6e6eb9f14610343578063dfe641c614610359578063f2fde38b14610391578063fbe53234146103b157600080fd5b80638da5cb5b146102925780639477d85d146102b0578063a4983421146102d0578063beebc5da146102f0578063c157253d1461030357600080fd5b80634b77c468116100e75780634b77c468146101cf5780634ce7957c1461021d5780635a8a764e1461023d5780635cf4ee911461025d578063715018a61461027d57600080fd5b8063063a741f146101245780632279a9701461015757806324dc441d1461016c57806340e104a7146101825780634420e486146101af575b600080fd5b34801561013057600080fd5b5061014461013f366004611000565b6103d1565b6040519081526020015b60405180910390f35b61016a610165366004611000565b61044b565b005b34801561017857600080fd5b5061014460035481565b34801561018e57600080fd5b5061014461019d366004611022565b60056020526000908152604090205481565b3480156101bb57600080fd5b5061016a6101ca366004611057565b610817565b3480156101db57600080fd5b506102056101ea366004611057565b6006602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161014e565b34801561022957600080fd5b50600154610205906001600160a01b031681565b34801561024957600080fd5b5061016a610258366004611022565b6109cc565b34801561026957600080fd5b50610144610278366004611000565b6109d9565b34801561028957600080fd5b5061016a610af0565b34801561029e57600080fd5b506000546001600160a01b0316610205565b3480156102bc57600080fd5b506101446102cb366004611000565b610b04565b3480156102dc57600080fd5b5061016a6102eb366004611022565b610b2f565b61016a6102fe366004611000565b610b3c565b34801561030f57600080fd5b5061014461031e366004611000565b610e2c565b34801561032f57600080fd5b5061014461033e366004611000565b610e45565b34801561034f57600080fd5b5061014460025481565b34801561036557600080fd5b50610144610374366004611072565b600460209081526000928352604080842090915290825290205481565b34801561039d57600080fd5b5061016a6103ac366004611057565b610eb3565b3480156103bd57600080fd5b5061016a6103cc366004611057565b610f2c565b6000806103de8484610e2c565b90506000670de0b6b3a7640000600254836103f991906110b4565b61040391906110cb565b90506000670de0b6b3a76400006003548461041e91906110b4565b61042891906110cb565b90508061043583856110ed565b61043f91906110ed565b93505050505b92915050565b6000828152600560205260409020548181116104ae5760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f742073656c6c20746865206c61737420736861726500000000000060448201526064015b60405180910390fd5b60006104c36104bd8484611100565b846109d9565b90506000670de0b6b3a7640000600254836104de91906110b4565b6104e891906110cb565b90506000670de0b6b3a76400006003548461050391906110b4565b61050d91906110cb565b600087815260046020908152604080832033845290915290205490915085111561056f5760405162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e742073686172657360681b60448201526064016104a5565b6000868152600460209081526040808320338452909152902054610594908690611100565b60008781526004602090815260408083203384529091529020556105b88585611100565b6000878152600560205260408120919091557f29db2a6062b25ead33a5fc8d1163c4d7f54397202547c27c1c99a203446477349033908890888787876105fe848d611100565b604051610612989796959493929190611113565b60405180910390a1600033826106288587611100565b6106329190611100565b604051600081818185875af1925050503d806000811461066e576040519150601f19603f3d011682016040523d82523d6000602084013e610673565b606091505b50506001546040519192506000916001600160a01b039091169085908381818185875af1925050503d80600081146106c7576040519150601f19603f3d011682016040523d82523d6000602084013e6106cc565b606091505b5050336000908152600660205260409020549091506001600160a01b03161561078657336000908152600660205260408082205490516001600160a01b039091169085908381818185875af1925050503d8060008114610748576040519150601f19603f3d011682016040523d82523d6000602084013e61074d565b606091505b5050905082801561075b5750815b80156107645750805b6107805760405162461bcd60e51b81526004016104a590611154565b5061080d565b6001546040516000916001600160a01b03169085908381818185875af1925050503d80600081146107d3576040519150601f19603f3d011682016040523d82523d6000602084013e6107d8565b606091505b505090508280156107e65750815b80156107ef5750805b61080b5760405162461bcd60e51b81526004016104a590611154565b505b5050505050505050565b336000908152600660205260409020546001600160a01b0316156108755760405162461bcd60e51b81526020600482015260156024820152744572726f723a205265706561742062696e64696e6760581b60448201526064016104a5565b336001600160a01b038216036108c35760405162461bcd60e51b815260206004820152601360248201527222b93937b91d102134b73234b7339039b2b63360691b60448201526064016104a5565b6001600160a01b0381166109285760405162461bcd60e51b815260206004820152602660248201527f4572726f723a2042696e64696e6720696e7669746572206973207a65726f206160448201526564647265737360d01b60648201526084016104a5565b6001600160a01b038181166000908152600660205260409020543391160361099d5760405162461bcd60e51b815260206004820152602260248201527f4572726f723a20446f206e6f7420616c6c6f77206d757475616c2062696e64696044820152616e6760f01b60648201526084016104a5565b33600090815260066020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6109d4610f56565b600355565b6000808315610a345760066109ef600186611100565b6109fa9060026110b4565b610a059060016110ed565b85610a11600182611100565b610a1b91906110b4565b610a2591906110b4565b610a2f91906110cb565b610a37565b60005b9050600084158015610a495750836001145b610abe57600684610a5b600188611100565b610a6591906110ed565b610a709060026110b4565b610a7b9060016110ed565b610a8586886110ed565b86610a9160018a611100565b610a9b91906110ed565b610aa591906110b4565b610aaf91906110b4565b610ab991906110cb565b610ac1565b60005b90506000610acf8383611100565b9050613e80610ae682670de0b6b3a76400006110b4565b61043f91906110cb565b610af8610f56565b610b026000610fb0565b565b600082815260056020526040812054610b2890610b22908490611100565b836109d9565b9392505050565b610b37610f56565b600255565b60008281526005602052604081205490610b5682846109d9565b90506000670de0b6b3a764000060025483610b7191906110b4565b610b7b91906110cb565b90506000670de0b6b3a764000060035484610b9691906110b4565b610ba091906110cb565b905080610bad83856110ed565b610bb791906110ed565b341015610bfd5760405162461bcd60e51b8152602060048201526014602482015273125b9cdd59999a58da595b9d081c185e5b595b9d60621b60448201526064016104a5565b6000868152600460209081526040808320338452909152902054610c229086906110ed565b6000878152600460209081526040808320338452909152902055610c4685856110ed565b6000878152600560205260409020557f29db2a6062b25ead33a5fc8d1163c4d7f54397202547c27c1c99a203446477343387600188878787610c88848d6110ed565b604051610c9c989796959493929190611113565b60405180910390a16001546040516000916001600160a01b03169084908381818185875af1925050503d8060008114610cf1576040519150601f19603f3d011682016040523d82523d6000602084013e610cf6565b606091505b5050336000908152600660205260409020549091506001600160a01b031615610da757336000908152600660205260408082205490516001600160a01b039091169084908381818185875af1925050503d8060008114610d72576040519150601f19603f3d011682016040523d82523d6000602084013e610d77565b606091505b50509050818015610d855750805b610da15760405162461bcd60e51b81526004016104a590611154565b50610e23565b6001546040516000916001600160a01b03169084908381818185875af1925050503d8060008114610df4576040519150601f19603f3d011682016040523d82523d6000602084013e610df9565b606091505b50509050818015610e075750805b61080d5760405162461bcd60e51b81526004016104a590611154565b50505050505050565b600082815260056020526040812054610b2890836109d9565b600080610e528484610b04565b90506000670de0b6b3a764000060025483610e6d91906110b4565b610e7791906110cb565b90506000670de0b6b3a764000060035484610e9291906110b4565b610e9c91906110cb565b905080610ea98385611100565b61043f9190611100565b610ebb610f56565b6001600160a01b038116610f205760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104a5565b610f2981610fb0565b50565b610f34610f56565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610b025760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806040838503121561101357600080fd5b50508035926020909101359150565b60006020828403121561103457600080fd5b5035919050565b80356001600160a01b038116811461105257600080fd5b919050565b60006020828403121561106957600080fd5b610b288261103b565b6000806040838503121561108557600080fd5b823591506110956020840161103b565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176104455761044561109e565b6000826110e857634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156104455761044561109e565b818103818111156104455761044561109e565b6001600160a01b03989098168852602088019690965293151560408701526060860192909252608085015260a084015260c083015260e08201526101000190565b602080825260149082015273556e61626c6520746f2073656e642066756e647360601b60408201526060019056fea26469706673582212209bcb79b3b05970c81a82d640bddc907fde07d50cd7655eab1472d14f16a09dfd64736f6c63430008120033

Deployed Bytecode Sourcemap

3762:6262:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6292:382;;;;;;;;;;-1:-1:-1;6292:382:0;;;;;:::i;:::-;;:::i;:::-;;;413:25:1;;;401:2;386:18;6292:382:0;;;;;;;;8442:1579;;;;;;:::i;:::-;;:::i;:::-;;3909:52;;;;;;;;;;;;;;;;4377:47;;;;;;;;;;-1:-1:-1;4377:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;4871:481;;;;;;;;;;-1:-1:-1;4871:481:0;;;;;:::i;:::-;;:::i;4431:41::-;;;;;;;;;;-1:-1:-1;4431:41:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;4431:41:0;;;;;;-1:-1:-1;;;;;1167:32:1;;;1149:51;;1137:2;1122:18;4431:41:0;1003:203:1;3805:37:0;;;;;;;;;;-1:-1:-1;3805:37:0;;;;-1:-1:-1;;;;;3805:37:0;;;4745:118;;;;;;;;;;-1:-1:-1;4745:118:0;;;;;:::i;:::-;;:::i;5360:526::-;;;;;;;;;;-1:-1:-1;5360:526:0;;;;;:::i;:::-;;:::i;2789:103::-;;;;;;;;;;;;;:::i;2141:87::-;;;;;;;;;;-1:-1:-1;2187:7:0;2214:6;-1:-1:-1;;;;;2214:6:0;2141:87;;6088:196;;;;;;;;;;-1:-1:-1;6088:196:0;;;;;:::i;:::-;;:::i;4617:120::-;;;;;;;;;;-1:-1:-1;4617:120:0;;;;;:::i;:::-;;:::i;7074:1360::-;;;;;;:::i;:::-;;:::i;5894:186::-;;;;;;;;;;-1:-1:-1;5894:186:0;;;;;:::i;:::-;;:::i;6682:384::-;;;;;;;;;;-1:-1:-1;6682:384:0;;;;;:::i;:::-;;:::i;3849:53::-;;;;;;;;;;;;;;;;4268:68;;;;;;;;;;-1:-1:-1;4268:68:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;3047:238;;;;;;;;;;-1:-1:-1;3047:238:0;;;;;:::i;:::-;;:::i;4481:128::-;;;;;;;;;;-1:-1:-1;4481:128:0;;;;;:::i;:::-;;:::i;6292:382::-;6406:7;6426:13;6442:34;6454:13;6469:6;6442:11;:34::i;:::-;6426:50;;6487:19;6540:7;6518:18;;6510:5;:26;;;;:::i;:::-;6509:38;;;;:::i;:::-;6487:60;;6558:18;6609:7;6588:17;;6580:5;:25;;;;:::i;:::-;6579:37;;;;:::i;:::-;6558:58;-1:-1:-1;6558:58:0;6634:19;6642:11;6634:5;:19;:::i;:::-;:32;;;;:::i;:::-;6627:39;;;;;6292:382;;;;;:::o;8442:1579::-;8527:14;8544:27;;;:12;:27;;;;;;8590:15;;;8582:54;;;;-1:-1:-1;;;8582:54:0;;2329:2:1;8582:54:0;;;2311:21:1;2368:2;2348:18;;;2341:30;2407:28;2387:18;;;2380:56;2453:18;;8582:54:0;;;;;;;;;8647:13;8663:33;8672:15;8681:6;8672;:15;:::i;:::-;8689:6;8663:8;:33::i;:::-;8647:49;;8707:19;8760:7;8738:18;;8730:5;:26;;;;:::i;:::-;8729:38;;;;:::i;:::-;8707:60;;8778:18;8829:7;8808:17;;8800:5;:25;;;;:::i;:::-;8799:37;;;;:::i;:::-;8869:28;;;;:13;:28;;;;;;;;8898:10;8869:40;;;;;;;;8778:58;;-1:-1:-1;8869:50:0;-1:-1:-1;8869:50:0;8847:119;;;;-1:-1:-1;;;8847:119:0;;2817:2:1;8847:119:0;;;2799:21:1;2856:2;2836:18;;;2829:30;-1:-1:-1;;;2875:18:1;;;2868:49;2934:18;;8847:119:0;2615:343:1;8847:119:0;9033:28;;;;:13;:28;;;;;;;;9062:10;9033:40;;;;;;;;:62;;9089:6;;9033:62;:::i;:::-;8977:28;;;;:13;:28;;;;;;;;9006:10;8977:40;;;;;;;:118;9138:15;9147:6;9138;:15;:::i;:::-;9108:27;;;;:12;:27;;;;;:45;;;;9169:211;;9189:10;;9121:13;;9262:6;9283:5;9303:11;9329:10;9354:15;9262:6;9354;:15;:::i;:::-;9169:211;;;;;;;;;;;;;:::i;:::-;;;;;;;;9392:13;9411:10;9470;9448:19;9456:11;9448:5;:19;:::i;:::-;:32;;;;:::i;:::-;9411:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9526:22:0;;:51;;9391:104;;-1:-1:-1;9507:13:0;;-1:-1:-1;;;;;9526:22:0;;;;9561:11;;9507:13;9526:51;9507:13;9526:51;9561:11;9526:22;:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9599:10:0;9622:1;9592:18;;;:6;:18;;;;;;9506:71;;-1:-1:-1;;;;;;9592:18:0;:32;9588:426;;9668:10;9642:13;9661:18;;;:6;:18;;;;;;;:46;;-1:-1:-1;;;;;9661:18:0;;;;9692:10;;9642:13;9661:46;9642:13;9661:46;9692:10;9661:18;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9641:66;;;9730:8;:20;;;;;9742:8;9730:20;:32;;;;;9754:8;9730:32;9722:65;;;;-1:-1:-1;;;9722:65:0;;;;;;;:::i;:::-;9626:173;9588:426;;;9840:22;;:82;;9821:13;;-1:-1:-1;;;;;9840:22:0;;9875:10;;9821:13;9840:82;9821:13;9840:82;9875:10;9840:22;:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9820:102;;;9945:8;:20;;;;;9957:8;9945:20;:32;;;;;9969:8;9945:32;9937:65;;;;-1:-1:-1;;;9937:65:0;;;;;;;:::i;:::-;9805:209;9588:426;8516:1505;;;;;;8442:1579;;:::o;4871:481::-;4940:10;4963:1;4933:18;;;:6;:18;;;;;;-1:-1:-1;;;;;4933:18:0;:32;4925:66;;;;-1:-1:-1;;;4925:66:0;;4444:2:1;4925:66:0;;;4426:21:1;4483:2;4463:18;;;4456:30;-1:-1:-1;;;4502:18:1;;;4495:51;4563:18;;4925:66:0;4242:345:1;4925:66:0;5022:10;-1:-1:-1;;;;;5010:22:0;;;5002:54;;;;-1:-1:-1;;;5002:54:0;;4794:2:1;5002:54:0;;;4776:21:1;4833:2;4813:18;;;4806:30;-1:-1:-1;;;4852:18:1;;;4845:49;4911:18;;5002:54:0;4592:343:1;5002:54:0;-1:-1:-1;;;;;5089:22:0;;5067:110;;;;-1:-1:-1;;;5067:110:0;;5142:2:1;5067:110:0;;;5124:21:1;5181:2;5161:18;;;5154:30;5220:34;5200:18;;;5193:62;-1:-1:-1;;;5271:18:1;;;5264:36;5317:19;;5067:110:0;4940:402:1;5067:110:0;-1:-1:-1;;;;;5212:16:0;;;;;;;:6;:16;;;;;;5232:10;5212:16;;:30;5190:114;;;;-1:-1:-1;;;5190:114:0;;5549:2:1;5190:114:0;;;5531:21:1;5588:2;5568:18;;;5561:30;5627:34;5607:18;;;5600:62;-1:-1:-1;;;5678:18:1;;;5671:32;5720:19;;5190:114:0;5347:398:1;5190:114:0;5322:10;5315:18;;;;:6;:18;;;;;:29;;-1:-1:-1;;;;;;5315:29:0;-1:-1:-1;;;;;5315:29:0;;;;;;;;;;4871:481::o;4745:118::-;2027:13;:11;:13::i;:::-;4824:17:::1;:31:::0;4745:118::o;5360:526::-;5456:7;;5491:11;;:98;;5588:1;5568:10;5577:1;5568:6;:10;:::i;:::-;5563:16;;:1;:16;:::i;:::-;:20;;5582:1;5563:20;:::i;:::-;5552:6;5537:10;5546:1;5552:6;5537:10;:::i;:::-;5536:23;;;;:::i;:::-;:48;;;;:::i;:::-;5535:54;;;;:::i;:::-;5491:98;;;5518:1;5491:98;5476:113;-1:-1:-1;5600:12:0;5615:11;;:26;;;;;5630:6;5640:1;5630:11;5615:26;:174;;5788:1;5772:6;5759:10;5768:1;5759:6;:10;:::i;:::-;:19;;;;:::i;:::-;5754:25;;:1;:25;:::i;:::-;:29;;5782:1;5754:29;:::i;:::-;5717:15;5726:6;5717;:15;:::i;:::-;5689:6;5676:10;5685:1;5676:6;:10;:::i;:::-;:19;;;;:::i;:::-;5675:58;;;;:::i;:::-;:109;;;;:::i;:::-;5674:115;;;;:::i;:::-;5615:174;;;5657:1;5615:174;5600:189;-1:-1:-1;5800:17:0;5820:11;5827:4;5600:189;5820:11;:::i;:::-;5800:31;-1:-1:-1;5873:5:0;5850:19;5800:31;5862:7;5850:19;:::i;:::-;5849:29;;;;:::i;2789:103::-;2027:13;:11;:13::i;:::-;2854:30:::1;2881:1;2854:18;:30::i;:::-;2789:103::o:0;6088:196::-;6195:7;6231:27;;;:12;:27;;;;;;6222:54;;6231:36;;6261:6;;6231:36;:::i;:::-;6269:6;6222:8;:54::i;:::-;6215:61;6088:196;-1:-1:-1;;;6088:196:0:o;4617:120::-;2027:13;:11;:13::i;:::-;4697:18:::1;:32:::0;4617:120::o;7074:1360::-;7158:14;7175:27;;;:12;:27;;;;;;;7229:24;7175:27;7246:6;7229:8;:24::i;:::-;7213:40;;7264:19;7317:7;7295:18;;7287:5;:26;;;;:::i;:::-;7286:38;;;;:::i;:::-;7264:60;;7335:18;7386:7;7365:17;;7357:5;:25;;;;:::i;:::-;7356:37;;;;:::i;:::-;7335:58;-1:-1:-1;7335:58:0;7439:19;7447:11;7439:5;:19;:::i;:::-;:32;;;;:::i;:::-;7426:9;:45;;7404:115;;;;-1:-1:-1;;;7404:115:0;;5952:2:1;7404:115:0;;;5934:21:1;5991:2;5971:18;;;5964:30;-1:-1:-1;;;6010:18:1;;;6003:50;6070:18;;7404:115:0;5750:344:1;7404:115:0;7588:28;;;;:13;:28;;;;;;;;7617:10;7588:40;;;;;;;;:62;;7644:6;;7588:62;:::i;:::-;7532:28;;;;:13;:28;;;;;;;;7561:10;7532:40;;;;;;;:118;7691:15;7700:6;7691;:15;:::i;:::-;7661:27;;;;:12;:27;;;;;:45;7722:210;7742:10;7674:13;7795:4;7814:6;7835:5;7855:11;7881:10;7906:15;7814:6;7906;:15;:::i;:::-;7722:210;;;;;;;;;;;;;:::i;:::-;;;;;;;;7963:22;;:51;;7944:13;;-1:-1:-1;;;;;7963:22:0;;7998:11;;7944:13;7963:51;7944:13;7963:51;7998:11;7963:22;:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8036:10:0;8059:1;8029:18;;;:6;:18;;;;;;7943:71;;-1:-1:-1;;;;;;8029:18:0;:32;8025:402;;8105:10;8079:13;8098:18;;;:6;:18;;;;;;;:46;;-1:-1:-1;;;;;8098:18:0;;;;8129:10;;8079:13;8098:46;8079:13;8098:46;8129:10;8098:18;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8078:66;;;8167:8;:20;;;;;8179:8;8167:20;8159:53;;;;-1:-1:-1;;;8159:53:0;;;;;;;:::i;:::-;8063:161;8025:402;;;8265:22;;:82;;8246:13;;-1:-1:-1;;;;;8265:22:0;;8300:10;;8246:13;8265:82;8246:13;8265:82;8300:10;8265:22;:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8245:102;;;8370:8;:20;;;;;8382:8;8370:20;8362:53;;;;-1:-1:-1;;;8362:53:0;;;;;;;:::i;8025:402::-;7147:1287;;;;;7074:1360;;:::o;5894:186::-;6000:7;6036:27;;;:12;:27;;;;;;6027:45;;6065:6;6027:8;:45::i;6682:384::-;6797:7;6817:13;6833:35;6846:13;6861:6;6833:12;:35::i;:::-;6817:51;;6879:19;6932:7;6910:18;;6902:5;:26;;;;:::i;:::-;6901:38;;;;:::i;:::-;6879:60;;6950:18;7001:7;6980:17;;6972:5;:25;;;;:::i;:::-;6971:37;;;;:::i;:::-;6950:58;-1:-1:-1;6950:58:0;7026:19;7034:11;7026:5;:19;:::i;:::-;:32;;;;:::i;3047:238::-;2027:13;:11;:13::i;:::-;-1:-1:-1;;;;;3150:22:0;::::1;3128:110;;;::::0;-1:-1:-1;;;3128:110:0;;6301:2:1;3128:110:0::1;::::0;::::1;6283:21:1::0;6340:2;6320:18;;;6313:30;6379:34;6359:18;;;6352:62;-1:-1:-1;;;6430:18:1;;;6423:36;6476:19;;3128:110:0::1;6099:402:1::0;3128:110:0::1;3249:28;3268:8;3249:18;:28::i;:::-;3047:238:::0;:::o;4481:128::-;2027:13;:11;:13::i;:::-;4561:22:::1;:40:::0;;-1:-1:-1;;;;;;4561:40:0::1;-1:-1:-1::0;;;;;4561:40:0;;;::::1;::::0;;;::::1;::::0;;4481:128::o;2306:132::-;2187:7;2214:6;-1:-1:-1;;;;;2214:6:0;772:10;2370:23;2362:68;;;;-1:-1:-1;;;2362:68:0;;6708:2:1;2362:68:0;;;6690:21:1;;;6727:18;;;6720:30;6786:34;6766:18;;;6759:62;6838:18;;2362:68:0;6506:356:1;3445:191:0;3519:16;3538:6;;-1:-1:-1;;;;;3555:17:0;;;-1:-1:-1;;;;;;3555:17:0;;;;;;3588:40;;3538:6;;;;;;;3588:40;;3519:16;3588:40;3508:128;3445:191;:::o;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;449:180::-;508:6;561:2;549:9;540:7;536:23;532:32;529:52;;;577:1;574;567:12;529:52;-1:-1:-1;600:23:1;;449:180;-1:-1:-1;449:180:1:o;634:173::-;702:20;;-1:-1:-1;;;;;751:31:1;;741:42;;731:70;;797:1;794;787:12;731:70;634:173;;;:::o;812:186::-;871:6;924:2;912:9;903:7;899:23;895:32;892:52;;;940:1;937;930:12;892:52;963:29;982:9;963:29;:::i;1211:254::-;1279:6;1287;1340:2;1328:9;1319:7;1315:23;1311:32;1308:52;;;1356:1;1353;1346:12;1308:52;1392:9;1379:23;1369:33;;1421:38;1455:2;1444:9;1440:18;1421:38;:::i;:::-;1411:48;;1211:254;;;;;:::o;1470:127::-;1531:10;1526:3;1522:20;1519:1;1512:31;1562:4;1559:1;1552:15;1586:4;1583:1;1576:15;1602:168;1675:9;;;1706;;1723:15;;;1717:22;;1703:37;1693:71;;1744:18;;:::i;1775:217::-;1815:1;1841;1831:132;;1885:10;1880:3;1876:20;1873:1;1866:31;1920:4;1917:1;1910:15;1948:4;1945:1;1938:15;1831:132;-1:-1:-1;1977:9:1;;1775:217::o;1997:125::-;2062:9;;;2083:10;;;2080:36;;;2096:18;;:::i;2482:128::-;2549:9;;;2570:11;;;2567:37;;;2584:18;;:::i;2963:715::-;-1:-1:-1;;;;;3318:32:1;;;;3300:51;;3382:2;3367:18;;3360:34;;;;3437:14;;3430:22;3425:2;3410:18;;3403:50;3484:2;3469:18;;3462:34;;;;3527:3;3512:19;;3505:35;3338:3;3556:19;;3549:35;3615:3;3600:19;;3593:35;3659:3;3644:19;;3637:35;3287:3;3272:19;;2963:715::o;3893:344::-;4095:2;4077:21;;;4134:2;4114:18;;;4107:30;-1:-1:-1;;;4168:2:1;4153:18;;4146:50;4228:2;4213:18;;3893:344::o

Swarm Source

ipfs://9bcb79b3b05970c81a82d640bddc907fde07d50cd7655eab1472d14f16a09dfd

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.