ETH Price: $3,322.53 (+1.93%)
Gas: 3 Gwei

Contract

0x08a2b7D713e388123dc6678168656659d297d397
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer Ownersh...146870602022-04-30 18:06:25821 days ago1651341985IN
0x08a2b7D7...9d297d397
0 ETH0.0014634950.5944065
Set Wrapped To U...144303962022-03-21 15:00:04861 days ago1647874804IN
0x08a2b7D7...9d297d397
0 ETH0.0015263831.46986095
Set Wrapped To P...144303942022-03-21 14:59:37861 days ago1647874777IN
0x08a2b7D7...9d297d397
0 ETH0.0016305233.83542655
Set Underlying T...144303872022-03-21 14:57:48861 days ago1647874668IN
0x08a2b7D7...9d297d397
0 ETH0.0014695929.82668702
Set Underlying T...144303282022-03-21 14:47:32861 days ago1647874052IN
0x08a2b7D7...9d297d397
0 ETH0.0008326928.35100912
Set Wrapped To U...143978592022-03-16 13:29:49866 days ago1647437389IN
0x08a2b7D7...9d297d397
0 ETH0.0014875330.66890263
Set Wrapped To P...143978592022-03-16 13:29:49866 days ago1647437389IN
0x08a2b7D7...9d297d397
0 ETH0.0014779330.66890263
Set Underlying T...143978112022-03-16 13:19:21866 days ago1647436761IN
0x08a2b7D7...9d297d397
0 ETH0.0020037440.66786733
Set Wrapped To U...143977942022-03-16 13:13:46866 days ago1647436426IN
0x08a2b7D7...9d297d397
0 ETH0.0015019830.96683839
Set Wrapped To P...143977912022-03-16 13:13:21866 days ago1647436401IN
0x08a2b7D7...9d297d397
0 ETH0.0015350931.85500871
Set Wrapped To U...143977832022-03-16 13:11:36866 days ago1647436296IN
0x08a2b7D7...9d297d397
0 ETH0.0016869934.78121245
Set Wrapped To P...143977812022-03-16 13:10:52866 days ago1647436252IN
0x08a2b7D7...9d297d397
0 ETH0.0014835230.78485327
Set Wrapped To U...143977762022-03-16 13:10:18866 days ago1647436218IN
0x08a2b7D7...9d297d397
0 ETH0.0017448535.9741748
Set Wrapped To P...143977762022-03-16 13:10:18866 days ago1647436218IN
0x08a2b7D7...9d297d397
0 ETH0.0017335935.9741748
Set Underlying T...143977762022-03-16 13:10:18866 days ago1647436218IN
0x08a2b7D7...9d297d397
0 ETH0.0017724835.9741748
Set Underlying T...143977632022-03-16 13:07:18866 days ago1647436038IN
0x08a2b7D7...9d297d397
0 ETH0.0018131836.80025631
Set Underlying T...143977542022-03-16 13:05:20866 days ago1647435920IN
0x08a2b7D7...9d297d397
0 ETH0.0017921436.37329087
Set Protocol To ...143976942022-03-16 12:49:55866 days ago1647434995IN
0x08a2b7D7...9d297d397
0 ETH0.0019016639.41035182
Set Protocol To ...143976912022-03-16 12:49:19866 days ago1647434959IN
0x08a2b7D7...9d297d397
0 ETH0.0019498540.40904844
0x60806040143775982022-03-13 9:46:46869 days ago1647164806IN
 Create: LendingRegistry
0 ETH0.0201829212.53245183

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LendingRegistry

Compiler Version
v0.7.1+commit.f4a555be

Optimization Enabled:
No with 200 runs

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

// File: Interfaces/ILendingLogic.sol


pragma solidity ^0.7.1;

interface ILendingLogic {
    /**
        @notice Get the APR based on underlying token.
        @param _token Address of the underlying token
        @return Interest with 18 decimals
    */
    function getAPRFromUnderlying(address _token) external view returns(uint256);

    /**
        @notice Get the APR based on wrapped token.
        @param _token Address of the wrapped token
        @return Interest with 18 decimals
    */
    function getAPRFromWrapped(address _token) external view returns(uint256);

    /**
        @notice Get the calls needed to lend.
        @param _underlying Address of the underlying token
        @param _amount Amount of the underlying token
        @return targets Addresses of the contracts to call
        @return data Calldata of the calls
    */
    function lend(address _underlying, uint256 _amount, address _tokenHolder) external view returns(address[] memory targets, bytes[] memory data);

    /**
        @notice Get the calls needed to unlend
        @param _wrapped Address of the wrapped token
        @param _amount Amount of the underlying tokens
        @return targets Addresses of the contracts to call
        @return data Calldata of the calls
    */
    function unlend(address _wrapped, uint256 _amount, address _tokenHolder) external view returns(address[] memory targets, bytes[] memory data);

    /**
        @notice Get the underlying wrapped exchange rate
        @param _wrapped Address of the wrapped token
        @return The exchange rate
    */
    function exchangeRate(address _wrapped) external returns(uint256);

    /**
        @notice Get the underlying wrapped exchange rate in a view (non state changing) way
        @param _wrapped Address of the wrapped token
        @return The exchange rate
    */
    function exchangeRateView(address _wrapped) external view returns(uint256);
}
// File: OpenZeppelin/Context.sol



pragma solidity ^0.7.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 GSN 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 payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}
// File: OpenZeppelin/Ownable.sol



pragma solidity ^0.7.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.
 */
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 () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
// File: LendingRegistry.sol


pragma experimental ABIEncoderV2;
pragma solidity ^0.7.1;



// TODO consider making this contract upgradeable
contract LendingRegistry is Ownable {

    // Maps wrapped token to protocol
    mapping(address => bytes32) public wrappedToProtocol;
    // Maps wrapped token to underlying
    mapping(address => address) public wrappedToUnderlying;

    mapping(address => mapping(bytes32 => address)) public underlyingToProtocolWrapped;

    // Maps protocol to addresses containing lend and unlend logic
    mapping(bytes32 => address) public protocolToLogic;

    event WrappedToProtocolSet(address indexed wrapped, bytes32 indexed protocol);
    event WrappedToUnderlyingSet(address indexed wrapped, address indexed underlying);
    event ProtocolToLogicSet(bytes32 indexed protocol, address indexed logic);
    event UnderlyingToProtocolWrappedSet(address indexed underlying, bytes32 indexed protocol, address indexed wrapped);

    /**
        @notice Set which protocl a wrapped token belongs to
        @param _wrapped Address of the wrapped token
        @param _protocol Bytes32 key of the protocol
    */
    function setWrappedToProtocol(address _wrapped, bytes32 _protocol) onlyOwner external {
        wrappedToProtocol[_wrapped] = _protocol;
        emit WrappedToProtocolSet(_wrapped, _protocol);
    }

    /**
        @notice Set what is the underlying for a wrapped token
        @param _wrapped Address of the wrapped token
        @param _underlying Address of the underlying token
    */
    function setWrappedToUnderlying(address _wrapped, address _underlying) onlyOwner external {
        wrappedToUnderlying[_wrapped] = _underlying;
        emit WrappedToUnderlyingSet(_wrapped, _underlying);
    }

    /**
        @notice Set the logic contract for the protocol
        @param _protocol Bytes32 key of the protocol
        @param _logic Address of the lending logic contract for that protocol
    */
    function setProtocolToLogic(bytes32 _protocol, address _logic) onlyOwner external {
        protocolToLogic[_protocol] = _logic;
        emit ProtocolToLogicSet(_protocol, _logic);
    }

    /**
        @notice Set the wrapped token for the underlying deposited in this protocol
        @param _underlying Address of the unerlying token
        @param _protocol Bytes32 key of the protocol
        @param _wrapped Address of the wrapped token
    */
    function setUnderlyingToProtocolWrapped(address _underlying, bytes32 _protocol, address _wrapped) onlyOwner external {
        underlyingToProtocolWrapped[_underlying][_protocol] = _wrapped;
        emit UnderlyingToProtocolWrappedSet(_underlying, _protocol, _wrapped);
    }

    /**
        @notice Get tx data to lend the underlying amount in a specific protocol
        @param _underlying Address of the underlying token
        @param _amount Amount to lend
        @param _protocol Bytes32 key of the protocol
        @return targets Addresses of the contracts to call
        @return data Calldata for the calls
    */
    function getLendTXData(address _underlying, uint256 _amount, address _tokenHolder, bytes32 _protocol) external view returns(address[] memory targets, bytes[] memory data) {
        ILendingLogic lendingLogic = ILendingLogic(protocolToLogic[_protocol]);
        require(address(lendingLogic) != address(0), "NO_LENDING_LOGIC_SET");

        return lendingLogic.lend(_underlying, _amount, _tokenHolder);
    }

    /**
        @notice Get the tx data to unlend the wrapped amount
        @param _wrapped Address of the wrapped token
        @param _amount Amount of wrapped token to unlend
        @return targets Addresses of the contracts to call
        @return data Calldata for the calls
    */
    function getUnlendTXData(address _wrapped, uint256 _amount, address _tokenHolder) external view returns(address[] memory targets, bytes[] memory data) {
        ILendingLogic lendingLogic = ILendingLogic(protocolToLogic[wrappedToProtocol[_wrapped]]);
        require(address(lendingLogic) != address(0), "NO_LENDING_LOGIC_SET");

        return lendingLogic.unlend(_wrapped, _amount, _tokenHolder);
    }

    /**
        @notice Get the beste apr for the give protocols
        @dev returns default values if lending logic not found
        @param _underlying Address of the underlying token
        @param _protocols Array of protocols to include
        @return apr The APR
        @return protocol Protocol that provides the APR
    */
    function getBestApr(address _underlying, bytes32[] memory _protocols) external view returns(uint256 apr, bytes32 protocol) {
        uint256 bestApr;
        bytes32 bestProtocol;

        for(uint256 i = 0; i < _protocols.length; i++) {
            bytes32 protocol = _protocols[i];
            ILendingLogic lendingLogic = ILendingLogic(protocolToLogic[protocol]);
            require(address(lendingLogic) != address(0), "NO_LENDING_LOGIC_SET");

            uint256 apr = lendingLogic.getAPRFromUnderlying(_underlying);
            if (apr > bestApr) {
                bestApr = apr;
                bestProtocol = protocol;
            }
        }

        return (bestApr, bestProtocol);
    }
}

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":true,"internalType":"bytes32","name":"protocol","type":"bytes32"},{"indexed":true,"internalType":"address","name":"logic","type":"address"}],"name":"ProtocolToLogicSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlying","type":"address"},{"indexed":true,"internalType":"bytes32","name":"protocol","type":"bytes32"},{"indexed":true,"internalType":"address","name":"wrapped","type":"address"}],"name":"UnderlyingToProtocolWrappedSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"wrapped","type":"address"},{"indexed":true,"internalType":"bytes32","name":"protocol","type":"bytes32"}],"name":"WrappedToProtocolSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"wrapped","type":"address"},{"indexed":true,"internalType":"address","name":"underlying","type":"address"}],"name":"WrappedToUnderlyingSet","type":"event"},{"inputs":[{"internalType":"address","name":"_underlying","type":"address"},{"internalType":"bytes32[]","name":"_protocols","type":"bytes32[]"}],"name":"getBestApr","outputs":[{"internalType":"uint256","name":"apr","type":"uint256"},{"internalType":"bytes32","name":"protocol","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_underlying","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_tokenHolder","type":"address"},{"internalType":"bytes32","name":"_protocol","type":"bytes32"}],"name":"getLendTXData","outputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wrapped","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_tokenHolder","type":"address"}],"name":"getUnlendTXData","outputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"protocolToLogic","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_protocol","type":"bytes32"},{"internalType":"address","name":"_logic","type":"address"}],"name":"setProtocolToLogic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_underlying","type":"address"},{"internalType":"bytes32","name":"_protocol","type":"bytes32"},{"internalType":"address","name":"_wrapped","type":"address"}],"name":"setUnderlyingToProtocolWrapped","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wrapped","type":"address"},{"internalType":"bytes32","name":"_protocol","type":"bytes32"}],"name":"setWrappedToProtocol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wrapped","type":"address"},{"internalType":"address","name":"_underlying","type":"address"}],"name":"setWrappedToUnderlying","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"underlyingToProtocolWrapped","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wrappedToProtocol","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wrappedToUnderlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b5060006100216100c460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506100cc565b600033905090565b611bc5806100db6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063adedc86a1161008c578063d26809e111610066578063d26809e11461025e578063d7aceec71461027a578063f2fde38b146102aa578063f8b7f422146102c6576100ea565b8063adedc86a146101e1578063b7db91fc14610212578063bda82acc14610242576100ea565b806358d28ef7116100c857806358d28ef71461016c5780635f91dd811461019d578063715018a6146101b95780638da5cb5b146101c3576100ea565b806314457947146100ef578063196041181461010b57806355579d321461013c575b600080fd5b610109600480360381019061010491906113ce565b6102f6565b005b6101256004803603810190610120919061133e565b610479565b604051610133929190611927565b60405180910390f35b610156600480360381019061015191906112d9565b610607565b6040516101639190611823565b60405180910390f35b6101866004803603810190610181919061141d565b61063a565b604051610194929190611875565b60405180910390f35b6101b760048036038101906101b29190611392565b6107c3565b005b6101c16108e4565b005b6101cb610a37565b6040516101d89190611823565b60405180910390f35b6101fb60048036038101906101f6919061146c565b610a60565b604051610209929190611875565b60405180910390f35b61022c600480360381019061022791906112d9565b610bab565b60405161023991906118ac565b60405180910390f35b61025c60048036038101906102579190611564565b610bc3565b005b61027860048036038101906102739190611302565b610cf2565b005b610294600480360381019061028f9190611392565b610e63565b6040516102a19190611823565b60405180910390f35b6102c460048036038101906102bf91906112d9565b610ea5565b005b6102e060048036038101906102db919061153b565b611067565b6040516102ed9190611823565b60405180910390f35b6102fe61109a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461038b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038290611907565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff167ef16cac75566114cbfffaff7857b8fff8050ff0820a182eac3b236f0b62ac2b60405160405180910390a4505050565b60008060008060005b85518110156105f757600086828151811061049957fe5b6020026020010151905060006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561054b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610542906118e7565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166337bca10f8b6040518263ffffffff1660e01b81526004016105869190611823565b60206040518083038186803b15801561059e57600080fd5b505afa1580156105b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d691906115a0565b9050858111156105e7578095508294505b5050508080600101915050610482565b5081819350935050509250929050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606080600060046000600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071b906118e7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166342bde0b88787876040518463ffffffff1660e01b81526004016107619392919061183e565b60006040518083038186803b15801561077957600080fd5b505afa15801561078d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906107b691906114cf565b9250925050935093915050565b6107cb61109a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084f90611907565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808273ffffffffffffffffffffffffffffffffffffffff167f8d6c4851f1ff74632094f71fe39e4b0603cfd53a02524b0f56e077ec1a62464460405160405180910390a35050565b6108ec61109a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097090611907565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60608060006004600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b02906118e7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16637b1c44328888886040518463ffffffff1660e01b8152600401610b489392919061183e565b60006040518083038186803b158015610b6057600080fd5b505afa158015610b74573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610b9d91906114cf565b925092505094509492505050565b60016020528060005260406000206000915090505481565b610bcb61109a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4f90611907565b60405180910390fd5b806004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16827f05b94fa6d67a57a259499d28d3f8fd0eb8131cda46ea8c527ce24199839cb66460405160405180910390a35050565b610cfa61109a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7e90611907565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fcff55967603e193c0ecb65c41c4fa6f4032a9053d0fad30061ec89105cc7b5c260405160405180910390a35050565b60036020528160005260406000206020528060005260406000206000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ead61109a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190611907565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa1906118c7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b6000813590506110b181611b4a565b92915050565b6000815190506110c681611b4a565b92915050565b600082601f8301126110dd57600080fd5b81516110f06110eb8261197d565b611950565b9150818183526020840193506020810190508385602084028201111561111557600080fd5b60005b83811015611145578161112b88826110b7565b845260208401935060208301925050600181019050611118565b5050505092915050565b600082601f83011261116057600080fd5b813561117361116e826119a5565b611950565b9150818183526020840193506020810190508385602084028201111561119857600080fd5b60005b838110156111c857816111ae8882611246565b84526020840193506020830192505060018101905061119b565b5050505092915050565b600082601f8301126111e357600080fd5b81516111f66111f1826119cd565b611950565b9150818183526020840193506020810190508360005b8381101561123c5781518601611222888261125b565b84526020840193506020830192505060018101905061120c565b5050505092915050565b60008135905061125581611b61565b92915050565b600082601f83011261126c57600080fd5b815161127f61127a826119f5565b611950565b9150808252602083016020830185838301111561129b57600080fd5b6112a6838284611b06565b50505092915050565b6000813590506112be81611b78565b92915050565b6000815190506112d381611b78565b92915050565b6000602082840312156112eb57600080fd5b60006112f9848285016110a2565b91505092915050565b6000806040838503121561131557600080fd5b6000611323858286016110a2565b9250506020611334858286016110a2565b9150509250929050565b6000806040838503121561135157600080fd5b600061135f858286016110a2565b925050602083013567ffffffffffffffff81111561137c57600080fd5b6113888582860161114f565b9150509250929050565b600080604083850312156113a557600080fd5b60006113b3858286016110a2565b92505060206113c485828601611246565b9150509250929050565b6000806000606084860312156113e357600080fd5b60006113f1868287016110a2565b935050602061140286828701611246565b9250506040611413868287016110a2565b9150509250925092565b60008060006060848603121561143257600080fd5b6000611440868287016110a2565b9350506020611451868287016112af565b9250506040611462868287016110a2565b9150509250925092565b6000806000806080858703121561148257600080fd5b6000611490878288016110a2565b94505060206114a1878288016112af565b93505060406114b2878288016110a2565b92505060606114c387828801611246565b91505092959194509250565b600080604083850312156114e257600080fd5b600083015167ffffffffffffffff8111156114fc57600080fd5b611508858286016110cc565b925050602083015167ffffffffffffffff81111561152557600080fd5b611531858286016111d2565b9150509250929050565b60006020828403121561154d57600080fd5b600061155b84828501611246565b91505092915050565b6000806040838503121561157757600080fd5b600061158585828601611246565b9250506020611596858286016110a2565b9150509250929050565b6000602082840312156115b257600080fd5b60006115c0848285016112c4565b91505092915050565b60006115d583836115f5565b60208301905092915050565b60006115ed83836116f5565b905092915050565b6115fe81611ac0565b82525050565b61160d81611ac0565b82525050565b600061161e82611a41565b6116288185611a7c565b935061163383611a21565b8060005b8381101561166457815161164b88826115c9565b975061165683611a62565b925050600181019050611637565b5085935050505092915050565b600061167c82611a4c565b6116868185611a8d565b93508360208202850161169885611a31565b8060005b858110156116d457848403895281516116b585826115e1565b94506116c083611a6f565b925060208a0199505060018101905061169c565b50829750879550505050505092915050565b6116ef81611ad2565b82525050565b600061170082611a57565b61170a8185611a9e565b935061171a818560208601611b06565b61172381611b39565b840191505092915050565b600061173b602683611aaf565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006117a1601483611aaf565b91507f4e4f5f4c454e44494e475f4c4f4749435f5345540000000000000000000000006000830152602082019050919050565b60006117e1602083611aaf565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b61181d81611afc565b82525050565b60006020820190506118386000830184611604565b92915050565b60006060820190506118536000830186611604565b6118606020830185611814565b61186d6040830184611604565b949350505050565b6000604082019050818103600083015261188f8185611613565b905081810360208301526118a38184611671565b90509392505050565b60006020820190506118c160008301846116e6565b92915050565b600060208201905081810360008301526118e08161172e565b9050919050565b6000602082019050818103600083015261190081611794565b9050919050565b60006020820190508181036000830152611920816117d4565b9050919050565b600060408201905061193c6000830185611814565b61194960208301846116e6565b9392505050565b6000604051905081810181811067ffffffffffffffff8211171561197357600080fd5b8060405250919050565b600067ffffffffffffffff82111561199457600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156119bc57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156119e457600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115611a0c57600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611acb82611adc565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015611b24578082015181840152602081019050611b09565b83811115611b33576000848401525b50505050565b6000601f19601f8301169050919050565b611b5381611ac0565b8114611b5e57600080fd5b50565b611b6a81611ad2565b8114611b7557600080fd5b50565b611b8181611afc565b8114611b8c57600080fd5b5056fea2646970667358221220b7a86cfec1379bd8a2b0a50cb3e529d843003231489e40a800a979138403cff764736f6c63430007010033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063adedc86a1161008c578063d26809e111610066578063d26809e11461025e578063d7aceec71461027a578063f2fde38b146102aa578063f8b7f422146102c6576100ea565b8063adedc86a146101e1578063b7db91fc14610212578063bda82acc14610242576100ea565b806358d28ef7116100c857806358d28ef71461016c5780635f91dd811461019d578063715018a6146101b95780638da5cb5b146101c3576100ea565b806314457947146100ef578063196041181461010b57806355579d321461013c575b600080fd5b610109600480360381019061010491906113ce565b6102f6565b005b6101256004803603810190610120919061133e565b610479565b604051610133929190611927565b60405180910390f35b610156600480360381019061015191906112d9565b610607565b6040516101639190611823565b60405180910390f35b6101866004803603810190610181919061141d565b61063a565b604051610194929190611875565b60405180910390f35b6101b760048036038101906101b29190611392565b6107c3565b005b6101c16108e4565b005b6101cb610a37565b6040516101d89190611823565b60405180910390f35b6101fb60048036038101906101f6919061146c565b610a60565b604051610209929190611875565b60405180910390f35b61022c600480360381019061022791906112d9565b610bab565b60405161023991906118ac565b60405180910390f35b61025c60048036038101906102579190611564565b610bc3565b005b61027860048036038101906102739190611302565b610cf2565b005b610294600480360381019061028f9190611392565b610e63565b6040516102a19190611823565b60405180910390f35b6102c460048036038101906102bf91906112d9565b610ea5565b005b6102e060048036038101906102db919061153b565b611067565b6040516102ed9190611823565b60405180910390f35b6102fe61109a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461038b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038290611907565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff167ef16cac75566114cbfffaff7857b8fff8050ff0820a182eac3b236f0b62ac2b60405160405180910390a4505050565b60008060008060005b85518110156105f757600086828151811061049957fe5b6020026020010151905060006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561054b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610542906118e7565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166337bca10f8b6040518263ffffffff1660e01b81526004016105869190611823565b60206040518083038186803b15801561059e57600080fd5b505afa1580156105b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d691906115a0565b9050858111156105e7578095508294505b5050508080600101915050610482565b5081819350935050509250929050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606080600060046000600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071b906118e7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166342bde0b88787876040518463ffffffff1660e01b81526004016107619392919061183e565b60006040518083038186803b15801561077957600080fd5b505afa15801561078d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906107b691906114cf565b9250925050935093915050565b6107cb61109a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084f90611907565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808273ffffffffffffffffffffffffffffffffffffffff167f8d6c4851f1ff74632094f71fe39e4b0603cfd53a02524b0f56e077ec1a62464460405160405180910390a35050565b6108ec61109a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097090611907565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60608060006004600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b02906118e7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16637b1c44328888886040518463ffffffff1660e01b8152600401610b489392919061183e565b60006040518083038186803b158015610b6057600080fd5b505afa158015610b74573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610b9d91906114cf565b925092505094509492505050565b60016020528060005260406000206000915090505481565b610bcb61109a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4f90611907565b60405180910390fd5b806004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16827f05b94fa6d67a57a259499d28d3f8fd0eb8131cda46ea8c527ce24199839cb66460405160405180910390a35050565b610cfa61109a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7e90611907565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fcff55967603e193c0ecb65c41c4fa6f4032a9053d0fad30061ec89105cc7b5c260405160405180910390a35050565b60036020528160005260406000206020528060005260406000206000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ead61109a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190611907565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa1906118c7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b6000813590506110b181611b4a565b92915050565b6000815190506110c681611b4a565b92915050565b600082601f8301126110dd57600080fd5b81516110f06110eb8261197d565b611950565b9150818183526020840193506020810190508385602084028201111561111557600080fd5b60005b83811015611145578161112b88826110b7565b845260208401935060208301925050600181019050611118565b5050505092915050565b600082601f83011261116057600080fd5b813561117361116e826119a5565b611950565b9150818183526020840193506020810190508385602084028201111561119857600080fd5b60005b838110156111c857816111ae8882611246565b84526020840193506020830192505060018101905061119b565b5050505092915050565b600082601f8301126111e357600080fd5b81516111f66111f1826119cd565b611950565b9150818183526020840193506020810190508360005b8381101561123c5781518601611222888261125b565b84526020840193506020830192505060018101905061120c565b5050505092915050565b60008135905061125581611b61565b92915050565b600082601f83011261126c57600080fd5b815161127f61127a826119f5565b611950565b9150808252602083016020830185838301111561129b57600080fd5b6112a6838284611b06565b50505092915050565b6000813590506112be81611b78565b92915050565b6000815190506112d381611b78565b92915050565b6000602082840312156112eb57600080fd5b60006112f9848285016110a2565b91505092915050565b6000806040838503121561131557600080fd5b6000611323858286016110a2565b9250506020611334858286016110a2565b9150509250929050565b6000806040838503121561135157600080fd5b600061135f858286016110a2565b925050602083013567ffffffffffffffff81111561137c57600080fd5b6113888582860161114f565b9150509250929050565b600080604083850312156113a557600080fd5b60006113b3858286016110a2565b92505060206113c485828601611246565b9150509250929050565b6000806000606084860312156113e357600080fd5b60006113f1868287016110a2565b935050602061140286828701611246565b9250506040611413868287016110a2565b9150509250925092565b60008060006060848603121561143257600080fd5b6000611440868287016110a2565b9350506020611451868287016112af565b9250506040611462868287016110a2565b9150509250925092565b6000806000806080858703121561148257600080fd5b6000611490878288016110a2565b94505060206114a1878288016112af565b93505060406114b2878288016110a2565b92505060606114c387828801611246565b91505092959194509250565b600080604083850312156114e257600080fd5b600083015167ffffffffffffffff8111156114fc57600080fd5b611508858286016110cc565b925050602083015167ffffffffffffffff81111561152557600080fd5b611531858286016111d2565b9150509250929050565b60006020828403121561154d57600080fd5b600061155b84828501611246565b91505092915050565b6000806040838503121561157757600080fd5b600061158585828601611246565b9250506020611596858286016110a2565b9150509250929050565b6000602082840312156115b257600080fd5b60006115c0848285016112c4565b91505092915050565b60006115d583836115f5565b60208301905092915050565b60006115ed83836116f5565b905092915050565b6115fe81611ac0565b82525050565b61160d81611ac0565b82525050565b600061161e82611a41565b6116288185611a7c565b935061163383611a21565b8060005b8381101561166457815161164b88826115c9565b975061165683611a62565b925050600181019050611637565b5085935050505092915050565b600061167c82611a4c565b6116868185611a8d565b93508360208202850161169885611a31565b8060005b858110156116d457848403895281516116b585826115e1565b94506116c083611a6f565b925060208a0199505060018101905061169c565b50829750879550505050505092915050565b6116ef81611ad2565b82525050565b600061170082611a57565b61170a8185611a9e565b935061171a818560208601611b06565b61172381611b39565b840191505092915050565b600061173b602683611aaf565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006117a1601483611aaf565b91507f4e4f5f4c454e44494e475f4c4f4749435f5345540000000000000000000000006000830152602082019050919050565b60006117e1602083611aaf565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b61181d81611afc565b82525050565b60006020820190506118386000830184611604565b92915050565b60006060820190506118536000830186611604565b6118606020830185611814565b61186d6040830184611604565b949350505050565b6000604082019050818103600083015261188f8185611613565b905081810360208301526118a38184611671565b90509392505050565b60006020820190506118c160008301846116e6565b92915050565b600060208201905081810360008301526118e08161172e565b9050919050565b6000602082019050818103600083015261190081611794565b9050919050565b60006020820190508181036000830152611920816117d4565b9050919050565b600060408201905061193c6000830185611814565b61194960208301846116e6565b9392505050565b6000604051905081810181811067ffffffffffffffff8211171561197357600080fd5b8060405250919050565b600067ffffffffffffffff82111561199457600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156119bc57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156119e457600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115611a0c57600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611acb82611adc565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015611b24578082015181840152602081019050611b09565b83811115611b33576000848401525b50505050565b6000601f19601f8301169050919050565b611b5381611ac0565b8114611b5e57600080fd5b50565b611b6a81611ad2565b8114611b7557600080fd5b50565b611b8181611afc565b8114611b8c57600080fd5b5056fea2646970667358221220b7a86cfec1379bd8a2b0a50cb3e529d843003231489e40a800a979138403cff764736f6c63430007010033

Deployed Bytecode Sourcemap

5359:5163:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7685:278;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9803:716;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5543:54;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9044:409;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;6387:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4656:148;;;:::i;:::-;;4014:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8328:412;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5443:52;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7219:189;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6791:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5606:82;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4959:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5765:50;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7685:278;4236:12;:10;:12::i;:::-;4226:22;;:6;;;;;;;;;;:22;;;4218:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7867:8:::1;7813:27;:40;7841:11;7813:40;;;;;;;;;;;;;;;:51;7854:9;7813:51;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;7946:8;7891:64;;7935:9;7922:11;7891:64;;;;;;;;;;;;7685:278:::0;;;:::o;9803:716::-;9895:11;9908:16;9937:15;9963:20;10000:9;9996:473;10019:10;:17;10015:1;:21;9996:473;;;10058:16;10077:10;10088:1;10077:13;;;;;;;;;;;;;;10058:32;;10105:26;10148:15;:25;10164:8;10148:25;;;;;;;;;;;;;;;;;;;;;10105:69;;10230:1;10197:35;;10205:12;10197:35;;;;10189:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10274:11;10288:12;:33;;;10322:11;10288:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10274:60;;10359:7;10353:3;:13;10349:109;;;10397:3;10387:13;;10434:8;10419:23;;10349:109;9996:473;;;10038:3;;;;;;;9996:473;;;;10489:7;10498:12;10481:30;;;;;;9803:716;;;;;:::o;5543:54::-;;;;;;;;;;;;;;;;;;;;;;:::o;9044:409::-;9148:24;9174:19;9206:26;9249:15;:44;9265:17;:27;9283:8;9265:27;;;;;;;;;;;;;;;;9249:44;;;;;;;;;;;;;;;;;;;;;9206:88;;9346:1;9313:35;;9321:12;9313:35;;;;9305:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9393:12;:19;;;9413:8;9423:7;9432:12;9393:52;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9386:59;;;;;9044:409;;;;;;:::o;6387:201::-;4236:12;:10;:12::i;:::-;4226:22;;:6;;;;;;;;;;:22;;;4218:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6514:9:::1;6484:17;:27;6502:8;6484:27;;;;;;;;;;;;;;;:39;;;;6570:9;6560:8;6539:41;;;;;;;;;;;;6387:201:::0;;:::o;4656:148::-;4236:12;:10;:12::i;:::-;4226:22;;:6;;;;;;;;;;:22;;;4218:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4763:1:::1;4726:40;;4747:6;::::0;::::1;;;;;;;;4726:40;;;;;;;;;;;;4794:1;4777:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4656:148::o:0;4014:79::-;4052:7;4079:6;;;;;;;;;;;4072:13;;4014:79;:::o;8328:412::-;8452:24;8478:19;8510:26;8553:15;:26;8569:9;8553:26;;;;;;;;;;;;;;;;;;;;;8510:70;;8632:1;8599:35;;8607:12;8599:35;;;;8591:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8679:12;:17;;;8697:11;8710:7;8719:12;8679:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8672:60;;;;;8328:412;;;;;;;:::o;5443:52::-;;;;;;;;;;;;;;;;;:::o;7219:189::-;4236:12;:10;:12::i;:::-;4226:22;;:6;;;;;;;;;;:22;;;4218:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7341:6:::1;7312:15;:26;7328:9;7312:26;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;7393:6;7363:37;;7382:9;7363:37;;;;;;;;;;7219:189:::0;;:::o;6791:213::-;4236:12;:10;:12::i;:::-;4226:22;;:6;;;;;;;;;;:22;;;4218:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6924:11:::1;6892:19;:29;6912:8;6892:29;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;6984:11;6951:45;;6974:8;6951:45;;;;;;;;;;;;6791:213:::0;;:::o;5606:82::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4959:244::-;4236:12;:10;:12::i;:::-;4226:22;;:6;;;;;;;;;;:22;;;4218:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5068:1:::1;5048:22;;:8;:22;;;;5040:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5158:8;5129:38;;5150:6;::::0;::::1;;;;;;;;5129:38;;;;;;;;;;;;5187:8;5178:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;4959:244:::0;:::o;5765:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;2595:106::-;2648:15;2683:10;2676:17;;2595:106;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;:::i;:::-;57:78;;;;:::o;142:134::-;;226:6;220:13;211:22;;238:33;265:5;238:33;:::i;:::-;205:71;;;;:::o;301:722::-;;429:3;422:4;414:6;410:17;406:27;396:2;;447:1;444;437:12;396:2;477:6;471:13;499:80;514:64;571:6;514:64;:::i;:::-;499:80;:::i;:::-;490:89;;596:5;621:6;614:5;607:21;651:4;643:6;639:17;629:27;;673:4;668:3;664:14;657:21;;726:6;773:3;765:4;757:6;753:17;748:3;744:27;741:36;738:2;;;790:1;787;780:12;738:2;815:1;800:217;825:6;822:1;819:13;800:217;;;883:3;905:48;949:3;937:10;905:48;:::i;:::-;900:3;893:61;977:4;972:3;968:14;961:21;;1005:4;1000:3;996:14;989:21;;857:160;847:1;844;840:9;835:14;;800:217;;;804:14;389:634;;;;;;;:::o;1049:707::-;;1166:3;1159:4;1151:6;1147:17;1143:27;1133:2;;1184:1;1181;1174:12;1133:2;1221:6;1208:20;1243:80;1258:64;1315:6;1258:64;:::i;:::-;1243:80;:::i;:::-;1234:89;;1340:5;1365:6;1358:5;1351:21;1395:4;1387:6;1383:17;1373:27;;1417:4;1412:3;1408:14;1401:21;;1470:6;1517:3;1509:4;1501:6;1497:17;1492:3;1488:27;1485:36;1482:2;;;1534:1;1531;1524:12;1482:2;1559:1;1544:206;1569:6;1566:1;1563:13;1544:206;;;1627:3;1649:37;1682:3;1670:10;1649:37;:::i;:::-;1644:3;1637:50;1710:4;1705:3;1701:14;1694:21;;1738:4;1733:3;1729:14;1722:21;;1601:149;1591:1;1588;1584:9;1579:14;;1544:206;;;1548:14;1126:630;;;;;;;:::o;1780:713::-;;1917:3;1910:4;1902:6;1898:17;1894:27;1884:2;;1935:1;1932;1925:12;1884:2;1965:6;1959:13;1987:89;2002:73;2068:6;2002:73;:::i;:::-;1987:89;:::i;:::-;1978:98;;2093:5;2118:6;2111:5;2104:21;2148:4;2140:6;2136:17;2126:27;;2170:4;2165:3;2161:14;2154:21;;2223:6;2256:1;2241:246;2266:6;2263:1;2260:13;2241:246;;;2342:3;2336:10;2328:6;2324:23;2366:57;2419:3;2407:10;2366:57;:::i;:::-;2361:3;2354:70;2447:4;2442:3;2438:14;2431:21;;2475:4;2470:3;2466:14;2459:21;;2298:189;2288:1;2285;2281:9;2276:14;;2241:246;;;2245:14;1877:616;;;;;;;:::o;2501:130::-;;2581:6;2568:20;2559:29;;2593:33;2620:5;2593:33;:::i;:::-;2553:78;;;;:::o;2639:442::-;;2751:3;2744:4;2736:6;2732:17;2728:27;2718:2;;2769:1;2766;2759:12;2718:2;2799:6;2793:13;2821:64;2836:48;2877:6;2836:48;:::i;:::-;2821:64;:::i;:::-;2812:73;;2905:6;2898:5;2891:21;2941:4;2933:6;2929:17;2974:4;2967:5;2963:16;3009:3;3000:6;2995:3;2991:16;2988:25;2985:2;;;3026:1;3023;3016:12;2985:2;3036:39;3068:6;3063:3;3058;3036:39;:::i;:::-;2711:370;;;;;;;:::o;3089:130::-;;3169:6;3156:20;3147:29;;3181:33;3208:5;3181:33;:::i;:::-;3141:78;;;;:::o;3226:134::-;;3310:6;3304:13;3295:22;;3322:33;3349:5;3322:33;:::i;:::-;3289:71;;;;:::o;3367:241::-;;3471:2;3459:9;3450:7;3446:23;3442:32;3439:2;;;3487:1;3484;3477:12;3439:2;3522:1;3539:53;3584:7;3575:6;3564:9;3560:22;3539:53;:::i;:::-;3529:63;;3501:97;3433:175;;;;:::o;3615:366::-;;;3736:2;3724:9;3715:7;3711:23;3707:32;3704:2;;;3752:1;3749;3742:12;3704:2;3787:1;3804:53;3849:7;3840:6;3829:9;3825:22;3804:53;:::i;:::-;3794:63;;3766:97;3894:2;3912:53;3957:7;3948:6;3937:9;3933:22;3912:53;:::i;:::-;3902:63;;3873:98;3698:283;;;;;:::o;3988:502::-;;;4134:2;4122:9;4113:7;4109:23;4105:32;4102:2;;;4150:1;4147;4140:12;4102:2;4185:1;4202:53;4247:7;4238:6;4227:9;4223:22;4202:53;:::i;:::-;4192:63;;4164:97;4320:2;4309:9;4305:18;4292:32;4344:18;4336:6;4333:30;4330:2;;;4376:1;4373;4366:12;4330:2;4396:78;4466:7;4457:6;4446:9;4442:22;4396:78;:::i;:::-;4386:88;;4271:209;4096:394;;;;;:::o;4497:366::-;;;4618:2;4606:9;4597:7;4593:23;4589:32;4586:2;;;4634:1;4631;4624:12;4586:2;4669:1;4686:53;4731:7;4722:6;4711:9;4707:22;4686:53;:::i;:::-;4676:63;;4648:97;4776:2;4794:53;4839:7;4830:6;4819:9;4815:22;4794:53;:::i;:::-;4784:63;;4755:98;4580:283;;;;;:::o;4870:491::-;;;;5008:2;4996:9;4987:7;4983:23;4979:32;4976:2;;;5024:1;5021;5014:12;4976:2;5059:1;5076:53;5121:7;5112:6;5101:9;5097:22;5076:53;:::i;:::-;5066:63;;5038:97;5166:2;5184:53;5229:7;5220:6;5209:9;5205:22;5184:53;:::i;:::-;5174:63;;5145:98;5274:2;5292:53;5337:7;5328:6;5317:9;5313:22;5292:53;:::i;:::-;5282:63;;5253:98;4970:391;;;;;:::o;5368:491::-;;;;5506:2;5494:9;5485:7;5481:23;5477:32;5474:2;;;5522:1;5519;5512:12;5474:2;5557:1;5574:53;5619:7;5610:6;5599:9;5595:22;5574:53;:::i;:::-;5564:63;;5536:97;5664:2;5682:53;5727:7;5718:6;5707:9;5703:22;5682:53;:::i;:::-;5672:63;;5643:98;5772:2;5790:53;5835:7;5826:6;5815:9;5811:22;5790:53;:::i;:::-;5780:63;;5751:98;5468:391;;;;;:::o;5866:617::-;;;;;6021:3;6009:9;6000:7;5996:23;5992:33;5989:2;;;6038:1;6035;6028:12;5989:2;6073:1;6090:53;6135:7;6126:6;6115:9;6111:22;6090:53;:::i;:::-;6080:63;;6052:97;6180:2;6198:53;6243:7;6234:6;6223:9;6219:22;6198:53;:::i;:::-;6188:63;;6159:98;6288:2;6306:53;6351:7;6342:6;6331:9;6327:22;6306:53;:::i;:::-;6296:63;;6267:98;6396:2;6414:53;6459:7;6450:6;6439:9;6435:22;6414:53;:::i;:::-;6404:63;;6375:98;5983:500;;;;;;;:::o;6490:675::-;;;6681:2;6669:9;6660:7;6656:23;6652:32;6649:2;;;6697:1;6694;6687:12;6649:2;6753:1;6742:9;6738:17;6732:24;6776:18;6768:6;6765:30;6762:2;;;6808:1;6805;6798:12;6762:2;6828:89;6909:7;6900:6;6889:9;6885:22;6828:89;:::i;:::-;6818:99;;6711:212;6975:2;6964:9;6960:18;6954:25;6999:18;6991:6;6988:30;6985:2;;;7031:1;7028;7021:12;6985:2;7051:98;7141:7;7132:6;7121:9;7117:22;7051:98;:::i;:::-;7041:108;;6933:222;6643:522;;;;;:::o;7172:241::-;;7276:2;7264:9;7255:7;7251:23;7247:32;7244:2;;;7292:1;7289;7282:12;7244:2;7327:1;7344:53;7389:7;7380:6;7369:9;7365:22;7344:53;:::i;:::-;7334:63;;7306:97;7238:175;;;;:::o;7420:366::-;;;7541:2;7529:9;7520:7;7516:23;7512:32;7509:2;;;7557:1;7554;7547:12;7509:2;7592:1;7609:53;7654:7;7645:6;7634:9;7630:22;7609:53;:::i;:::-;7599:63;;7571:97;7699:2;7717:53;7762:7;7753:6;7742:9;7738:22;7717:53;:::i;:::-;7707:63;;7678:98;7503:283;;;;;:::o;7793:263::-;;7908:2;7896:9;7887:7;7883:23;7879:32;7876:2;;;7924:1;7921;7914:12;7876:2;7959:1;7976:64;8032:7;8023:6;8012:9;8008:22;7976:64;:::i;:::-;7966:74;;7938:108;7870:186;;;;:::o;8064:173::-;;8151:46;8193:3;8185:6;8151:46;:::i;:::-;8226:4;8221:3;8217:14;8203:28;;8144:93;;;;:::o;8246:189::-;;8365:64;8425:3;8417:6;8365:64;:::i;:::-;8351:78;;8344:91;;;;:::o;8443:103::-;8516:24;8534:5;8516:24;:::i;:::-;8511:3;8504:37;8498:48;;:::o;8553:113::-;8636:24;8654:5;8636:24;:::i;:::-;8631:3;8624:37;8618:48;;:::o;8704:690::-;;8849:54;8897:5;8849:54;:::i;:::-;8916:86;8995:6;8990:3;8916:86;:::i;:::-;8909:93;;9023:56;9073:5;9023:56;:::i;:::-;9099:7;9127:1;9112:260;9137:6;9134:1;9131:13;9112:260;;;9204:6;9198:13;9225:63;9284:3;9269:13;9225:63;:::i;:::-;9218:70;;9305:60;9358:6;9305:60;:::i;:::-;9295:70;;9169:203;9159:1;9156;9152:9;9147:14;;9112:260;;;9116:14;9385:3;9378:10;;8828:566;;;;;;;:::o;9429:920::-;;9592:63;9649:5;9592:63;:::i;:::-;9668:95;9756:6;9751:3;9668:95;:::i;:::-;9661:102;;9786:3;9828:4;9820:6;9816:17;9811:3;9807:27;9855:65;9914:5;9855:65;:::i;:::-;9940:7;9968:1;9953:357;9978:6;9975:1;9972:13;9953:357;;;10040:9;10034:4;10030:20;10025:3;10018:33;10085:6;10079:13;10107:82;10184:4;10169:13;10107:82;:::i;:::-;10099:90;;10206:69;10268:6;10206:69;:::i;:::-;10196:79;;10298:4;10293:3;10289:14;10282:21;;10010:300;10000:1;9997;9993:9;9988:14;;9953:357;;;9957:14;10323:4;10316:11;;10340:3;10333:10;;9571:778;;;;;;;;;:::o;10357:113::-;10440:24;10458:5;10440:24;:::i;:::-;10435:3;10428:37;10422:48;;:::o;10477:323::-;;10577:38;10609:5;10577:38;:::i;:::-;10627:60;10680:6;10675:3;10627:60;:::i;:::-;10620:67;;10692:52;10737:6;10732:3;10725:4;10718:5;10714:16;10692:52;:::i;:::-;10765:29;10787:6;10765:29;:::i;:::-;10760:3;10756:39;10749:46;;10557:243;;;;;:::o;10808:375::-;;10968:67;11032:2;11027:3;10968:67;:::i;:::-;10961:74;;11068:34;11064:1;11059:3;11055:11;11048:55;11137:8;11132:2;11127:3;11123:12;11116:30;11174:2;11169:3;11165:12;11158:19;;10954:229;;;:::o;11192:320::-;;11352:67;11416:2;11411:3;11352:67;:::i;:::-;11345:74;;11452:22;11448:1;11443:3;11439:11;11432:43;11503:2;11498:3;11494:12;11487:19;;11338:174;;;:::o;11521:332::-;;11681:67;11745:2;11740:3;11681:67;:::i;:::-;11674:74;;11781:34;11777:1;11772:3;11768:11;11761:55;11844:2;11839:3;11835:12;11828:19;;11667:186;;;:::o;11861:113::-;11944:24;11962:5;11944:24;:::i;:::-;11939:3;11932:37;11926:48;;:::o;11981:222::-;;12108:2;12097:9;12093:18;12085:26;;12122:71;12190:1;12179:9;12175:17;12166:6;12122:71;:::i;:::-;12079:124;;;;:::o;12210:444::-;;12393:2;12382:9;12378:18;12370:26;;12407:71;12475:1;12464:9;12460:17;12451:6;12407:71;:::i;:::-;12489:72;12557:2;12546:9;12542:18;12533:6;12489:72;:::i;:::-;12572;12640:2;12629:9;12625:18;12616:6;12572:72;:::i;:::-;12364:290;;;;;;:::o;12661:665::-;;12934:2;12923:9;12919:18;12911:26;;12984:9;12978:4;12974:20;12970:1;12959:9;12955:17;12948:47;13009:108;13112:4;13103:6;13009:108;:::i;:::-;13001:116;;13165:9;13159:4;13155:20;13150:2;13139:9;13135:18;13128:48;13190:126;13311:4;13302:6;13190:126;:::i;:::-;13182:134;;12905:421;;;;;:::o;13333:222::-;;13460:2;13449:9;13445:18;13437:26;;13474:71;13542:1;13531:9;13527:17;13518:6;13474:71;:::i;:::-;13431:124;;;;:::o;13562:416::-;;13762:2;13751:9;13747:18;13739:26;;13812:9;13806:4;13802:20;13798:1;13787:9;13783:17;13776:47;13837:131;13963:4;13837:131;:::i;:::-;13829:139;;13733:245;;;:::o;13985:416::-;;14185:2;14174:9;14170:18;14162:26;;14235:9;14229:4;14225:20;14221:1;14210:9;14206:17;14199:47;14260:131;14386:4;14260:131;:::i;:::-;14252:139;;14156:245;;;:::o;14408:416::-;;14608:2;14597:9;14593:18;14585:26;;14658:9;14652:4;14648:20;14644:1;14633:9;14629:17;14622:47;14683:131;14809:4;14683:131;:::i;:::-;14675:139;;14579:245;;;:::o;14831:333::-;;14986:2;14975:9;14971:18;14963:26;;15000:71;15068:1;15057:9;15053:17;15044:6;15000:71;:::i;:::-;15082:72;15150:2;15139:9;15135:18;15126:6;15082:72;:::i;:::-;14957:207;;;;;:::o;15171:256::-;;15233:2;15227:9;15217:19;;15271:4;15263:6;15259:17;15370:6;15358:10;15355:22;15334:18;15322:10;15319:34;15316:62;15313:2;;;15391:1;15388;15381:12;15313:2;15411:10;15407:2;15400:22;15211:216;;;;:::o;15434:304::-;;15593:18;15585:6;15582:30;15579:2;;;15625:1;15622;15615:12;15579:2;15660:4;15652:6;15648:17;15640:25;;15723:4;15717;15713:15;15705:23;;15516:222;;;:::o;15745:304::-;;15904:18;15896:6;15893:30;15890:2;;;15936:1;15933;15926:12;15890:2;15971:4;15963:6;15959:17;15951:25;;16034:4;16028;16024:15;16016:23;;15827:222;;;:::o;16056:313::-;;16224:18;16216:6;16213:30;16210:2;;;16256:1;16253;16246:12;16210:2;16291:4;16283:6;16279:17;16271:25;;16354:4;16348;16344:15;16336:23;;16147:222;;;:::o;16376:321::-;;16519:18;16511:6;16508:30;16505:2;;;16551:1;16548;16541:12;16505:2;16618:4;16614:9;16607:4;16599:6;16595:17;16591:33;16583:41;;16682:4;16676;16672:15;16664:23;;16442:255;;;:::o;16704:151::-;;16790:3;16782:11;;16828:4;16823:3;16819:14;16811:22;;16776:79;;;:::o;16862:160::-;;16957:3;16949:11;;16995:4;16990:3;16986:14;16978:22;;16943:79;;;:::o;17029:137::-;;17138:5;17132:12;17122:22;;17103:63;;;:::o;17173:146::-;;17291:5;17285:12;17275:22;;17256:63;;;:::o;17326:121::-;;17419:5;17413:12;17403:22;;17384:63;;;:::o;17454:108::-;;17552:4;17547:3;17543:14;17535:22;;17529:33;;;:::o;17569:117::-;;17676:4;17671:3;17667:14;17659:22;;17653:33;;;:::o;17694:178::-;;17824:6;17819:3;17812:19;17861:4;17856:3;17852:14;17837:29;;17805:67;;;;:::o;17881:187::-;;18020:6;18015:3;18008:19;18057:4;18052:3;18048:14;18033:29;;18001:67;;;;:::o;18077:152::-;;18181:6;18176:3;18169:19;18218:4;18213:3;18209:14;18194:29;;18162:67;;;;:::o;18238:163::-;;18353:6;18348:3;18341:19;18390:4;18385:3;18381:14;18366:29;;18334:67;;;;:::o;18409:91::-;;18471:24;18489:5;18471:24;:::i;:::-;18460:35;;18454:46;;;:::o;18507:72::-;;18569:5;18558:16;;18552:27;;;:::o;18586:121::-;;18659:42;18652:5;18648:54;18637:65;;18631:76;;;:::o;18714:72::-;;18776:5;18765:16;;18759:27;;;:::o;18794:268::-;18859:1;18866:101;18880:6;18877:1;18874:13;18866:101;;;18956:1;18951:3;18947:11;18941:18;18937:1;18932:3;18928:11;18921:39;18902:2;18899:1;18895:10;18890:15;;18866:101;;;18982:6;18979:1;18976:13;18973:2;;;19047:1;19038:6;19033:3;19029:16;19022:27;18973:2;18843:219;;;;:::o;19070:97::-;;19158:2;19154:7;19149:2;19142:5;19138:14;19134:28;19124:38;;19118:49;;;:::o;19175:117::-;19244:24;19262:5;19244:24;:::i;:::-;19237:5;19234:35;19224:2;;19283:1;19280;19273:12;19224:2;19218:74;:::o;19299:117::-;19368:24;19386:5;19368:24;:::i;:::-;19361:5;19358:35;19348:2;;19407:1;19404;19397:12;19348:2;19342:74;:::o;19423:117::-;19492:24;19510:5;19492:24;:::i;:::-;19485:5;19482:35;19472:2;;19531:1;19528;19521:12;19472:2;19466:74;:::o

Swarm Source

ipfs://b7a86cfec1379bd8a2b0a50cb3e529d843003231489e40a800a979138403cff7

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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