POL Price: $0.702689 (+2.87%)
Gas: 25 GWei
 

Overview

POL Balance

Polygon PoS Chain LogoPolygon PoS Chain LogoPolygon PoS Chain Logo0 POL

POL Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Initialize136307112021-04-23 12:50:411323 days ago1619182241IN
mStable: Nexus
0 POL0.000196471

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

Contract Source Code Verified (Exact Match)

Contract Name:
Nexus

Compiler Version
v0.8.2+commit.661d1103

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU AGPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2021-06-25
*/

pragma solidity 0.8.2;


interface INexus {
    function governor() external view returns (address);

    function getModule(bytes32 key) external view returns (address);

    function proposeModule(bytes32 _key, address _addr) external;

    function cancelProposedModule(bytes32 _key) external;

    function acceptProposedModule(bytes32 _key) external;

    function acceptProposedModules(bytes32[] calldata _keys) external;

    function requestLockModule(bytes32 _key) external;

    function cancelLockModule(bytes32 _key) external;

    function lockModule(bytes32 _key) external;
}

contract Governable {
    event GovernorChanged(address indexed previousGovernor, address indexed newGovernor);

    address private _governor;

    /**
     * @dev Initializes the contract setting the deployer as the initial Governor.
     */
    constructor() {
        _governor = msg.sender;
        emit GovernorChanged(address(0), _governor);
    }

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

    /**
     * @dev Throws if called by any account other than the Governor.
     */
    modifier onlyGovernor() {
        require(isGovernor(), "GOV: caller is not the Governor");
        _;
    }

    /**
     * @dev Returns true if the caller is the current Governor.
     */
    function isGovernor() public view returns (bool) {
        return msg.sender == _governor;
    }

    /**
     * @dev Transfers Governance of the contract to a new account (`newGovernor`).
     * Can only be called by the current Governor.
     * @param _newGovernor Address of the new Governor
     */
    function changeGovernor(address _newGovernor) external virtual onlyGovernor {
        _changeGovernor(_newGovernor);
    }

    /**
     * @dev Change Governance of the contract to a new account (`newGovernor`).
     * @param _newGovernor Address of the new Governor
     */
    function _changeGovernor(address _newGovernor) internal {
        require(_newGovernor != address(0), "GOV: new Governor is address(0)");
        emit GovernorChanged(_governor, _newGovernor);
        _governor = _newGovernor;
    }
}

contract ClaimableGovernor is Governable {
    event GovernorChangeClaimed(address indexed proposedGovernor);
    event GovernorChangeCancelled(address indexed governor, address indexed proposed);
    event GovernorChangeRequested(address indexed governor, address indexed proposed);

    address public proposedGovernor = address(0);

    /**
     * @dev Throws if called by any account other than the Proposed Governor.
     */
    modifier onlyProposedGovernor() {
        require(msg.sender == proposedGovernor, "Sender is not proposed governor");
        _;
    }

    constructor(address _governorAddr) {
        _changeGovernor(_governorAddr);
    }

    // @override
    function changeGovernor(address) external view override onlyGovernor {
        revert("Direct change not allowed");
    }

    /**
     * @dev Current Governor request to proposes a new Governor
     * @param _proposedGovernor Address of the proposed Governor
     */
    function requestGovernorChange(address _proposedGovernor) public virtual onlyGovernor {
        require(_proposedGovernor != address(0), "Proposed governor is address(0)");
        require(proposedGovernor == address(0), "Proposed governor already set");

        proposedGovernor = _proposedGovernor;
        emit GovernorChangeRequested(governor(), _proposedGovernor);
    }

    /**
     * @dev Current Governor cancel Governor change request
     */
    function cancelGovernorChange() public virtual onlyGovernor {
        require(proposedGovernor != address(0), "Proposed Governor not set");

        emit GovernorChangeCancelled(governor(), proposedGovernor);
        proposedGovernor = address(0);
    }

    /**
     * @dev Proposed Governor can claim governance ownership
     */
    function claimGovernorChange() public virtual onlyProposedGovernor {
        _changeGovernor(proposedGovernor);
        emit GovernorChangeClaimed(proposedGovernor);
        proposedGovernor = address(0);
    }
}

contract DelayedClaimableGovernor is ClaimableGovernor {
    uint256 public delay = 0;
    uint256 public requestTime = 0;

    /**
     * @dev Initializes the contract with given delay
     * @param _governorAddr Initial governor
     * @param _delay    Delay in seconds for 2 way handshake
     */
    constructor(address _governorAddr, uint256 _delay) ClaimableGovernor(_governorAddr) {
        require(_delay > 0, "Delay must be greater than zero");
        delay = _delay;
    }

    /**
     * @dev Requests change of governor and logs request time
     * @param _proposedGovernor Address of the new governor
     */
    function requestGovernorChange(address _proposedGovernor) public override onlyGovernor {
        requestTime = block.timestamp;
        super.requestGovernorChange(_proposedGovernor);
    }

    /**
     * @dev Cancels an outstanding governor change request by resetting request time
     */
    function cancelGovernorChange() public override onlyGovernor {
        requestTime = 0;
        super.cancelGovernorChange();
    }

    /**
     * @dev Proposed governor claims new position, callable after time elapsed
     */
    function claimGovernorChange() public override onlyProposedGovernor {
        require(block.timestamp >= (requestTime + delay), "Delay not over");
        super.claimGovernorChange();
        requestTime = 0;
    }
}

// SPDX-License-Identifier: AGPL-3.0-or-later
/**
 * @title   Nexus
 * @author  mStable
 * @notice  Address provider and system kernel, also facilitates governance changes
 * @dev     The Nexus is mStable's Kernel, and allows the publishing and propagating
 *          of new system Modules. Other Modules will read from the Nexus
 *          VERSION: 3.0
 *          DATE:    2021-04-15
 */
contract Nexus is INexus, DelayedClaimableGovernor {
    event ModuleProposed(bytes32 indexed key, address addr, uint256 timestamp);
    event ModuleAdded(bytes32 indexed key, address addr, bool isLocked);
    event ModuleCancelled(bytes32 indexed key);
    event ModuleLockRequested(bytes32 indexed key, uint256 timestamp);
    event ModuleLockEnabled(bytes32 indexed key);
    event ModuleLockCancelled(bytes32 indexed key);

    /** @dev Struct to store information about current modules */
    struct Module {
        address addr; // Module address
        bool isLocked; // Module lock status
    }

    /** @dev Struct to store information about proposed modules */
    struct Proposal {
        address newAddress; // Proposed Module address
        uint256 timestamp; // Timestamp when module upgrade was proposed
    }

    // 1 week delayed upgrade period
    uint256 public constant UPGRADE_DELAY = 1 weeks;

    // Module-key => Module
    mapping(bytes32 => Module) public modules;
    // Module-address => Module-key
    mapping(address => bytes32) private addressToModule;
    // Module-key => Proposal
    mapping(bytes32 => Proposal) public proposedModules;
    // Module-key => Timestamp when lock was proposed
    mapping(bytes32 => uint256) public proposedLockModules;

    // Init flag to allow add modules at the time of deplyment without delay
    bool public initialized = false;

    /**
     * @dev Modifier allows functions calls only when contract is not initialized.
     */
    modifier whenNotInitialized() {
        require(!initialized, "Nexus is already initialized");
        _;
    }

    /**
     * @dev Initialises the Nexus and adds the core data to the Kernel (itself and governor)
     * @param _governorAddr Governor address
     */
    constructor(address _governorAddr) DelayedClaimableGovernor(_governorAddr, UPGRADE_DELAY) {}

    // FIXME can this function be avoided as it just calls the super function
    function governor() public view override(Governable, INexus) returns (address) {
        return super.governor();
    }

    /**
     * @dev Adds multiple new modules to the system to initialize the
     *      Nexus contract with default modules. This should be called first
     *      after deploying Nexus contract.
     * @param _keys         Keys of the new modules in bytes32 form
     * @param _addresses    Contract addresses of the new modules
     * @param _isLocked     IsLocked flag for the new modules
     * @param _governorAddr New Governor address
     * @return bool         Success of publishing new Modules
     */
    function initialize(
        bytes32[] calldata _keys,
        address[] calldata _addresses,
        bool[] calldata _isLocked,
        address _governorAddr
    ) external onlyGovernor whenNotInitialized returns (bool) {
        uint256 len = _keys.length;
        require(len > 0, "No keys provided");
        require(len == _addresses.length, "Insufficient address data");
        require(len == _isLocked.length, "Insufficient locked statuses");

        for (uint256 i = 0; i < len; i++) {
            _publishModule(_keys[i], _addresses[i], _isLocked[i]);
        }

        if (_governorAddr != governor()) _changeGovernor(_governorAddr);

        initialized = true;
        return true;
    }

    /***************************************
                MODULE ADDING
    ****************************************/

    /**
     * @dev Propose a new or update existing module
     * @param _key  Key of the module
     * @param _addr Address of the module
     */
    function proposeModule(bytes32 _key, address _addr) external override onlyGovernor {
        require(_key != bytes32(0x0), "Key must not be zero");
        require(_addr != address(0), "Module address must not be 0");
        require(!modules[_key].isLocked, "Module must be unlocked");
        require(modules[_key].addr != _addr, "Module already has same address");
        Proposal storage p = proposedModules[_key];
        require(p.timestamp == 0, "Module already proposed");

        p.newAddress = _addr;
        p.timestamp = block.timestamp;
        emit ModuleProposed(_key, _addr, block.timestamp);
    }

    /**
     * @dev Cancel a proposed module request
     * @param _key Key of the module
     */
    function cancelProposedModule(bytes32 _key) external override onlyGovernor {
        uint256 timestamp = proposedModules[_key].timestamp;
        require(timestamp > 0, "Proposed module not found");

        delete proposedModules[_key];
        emit ModuleCancelled(_key);
    }

    /**
     * @dev Accept and publish an already proposed module
     * @param _key Key of the module
     */
    function acceptProposedModule(bytes32 _key) external override onlyGovernor {
        _acceptProposedModule(_key);
    }

    /**
     * @dev Accept and publish already proposed modules
     * @param _keys Keys array of the modules
     */
    function acceptProposedModules(bytes32[] calldata _keys) external override onlyGovernor {
        uint256 len = _keys.length;
        require(len > 0, "Keys array empty");

        for (uint256 i = 0; i < len; i++) {
            _acceptProposedModule(_keys[i]);
        }
    }

    /**
     * @dev Accept a proposed module
     * @param _key Key of the module
     */
    function _acceptProposedModule(bytes32 _key) internal {
        Proposal memory p = proposedModules[_key];
        require(_isDelayOver(p.timestamp), "Module upgrade delay not over");

        delete proposedModules[_key];
        _publishModule(_key, p.newAddress, false);
    }

    /**
     * @dev Internal func to publish a module to kernel
     * @param _key      Key of the new module in bytes32 form
     * @param _addr     Contract address of the new module
     * @param _isLocked Flag to lock a module
     */
    function _publishModule(
        bytes32 _key,
        address _addr,
        bool _isLocked
    ) internal {
        require(addressToModule[_addr] == bytes32(0x0), "Modules must have unique addr");
        require(!modules[_key].isLocked, "Module must be unlocked");
        // Old no longer points to a moduleAddress
        address oldModuleAddr = modules[_key].addr;
        if (oldModuleAddr != address(0x0)) {
            addressToModule[oldModuleAddr] = bytes32(0x0);
        }
        modules[_key].addr = _addr;
        modules[_key].isLocked = _isLocked;
        addressToModule[_addr] = _key;
        emit ModuleAdded(_key, _addr, _isLocked);
    }

    /***************************************
                MODULE LOCKING
    ****************************************/

    /**
     * @dev Request to lock an existing module
     * @param _key Key of the module
     */
    function requestLockModule(bytes32 _key) external override onlyGovernor {
        require(moduleExists(_key), "Module must exist");
        require(!modules[_key].isLocked, "Module must be unlocked");
        require(proposedLockModules[_key] == 0, "Lock already proposed");

        proposedLockModules[_key] = block.timestamp;
        emit ModuleLockRequested(_key, block.timestamp);
    }

    /**
     * @dev Cancel a lock module request
     * @param _key Key of the module
     */
    function cancelLockModule(bytes32 _key) external override onlyGovernor {
        require(proposedLockModules[_key] > 0, "Module lock request not found");

        delete proposedLockModules[_key];
        emit ModuleLockCancelled(_key);
    }

    /**
     * @dev Permanently lock a module to its current settings
     * @param _key Bytes32 key of the module
     */
    function lockModule(bytes32 _key) external override onlyGovernor {
        require(_isDelayOver(proposedLockModules[_key]), "Delay not over");

        modules[_key].isLocked = true;
        delete proposedLockModules[_key];
        emit ModuleLockEnabled(_key);
    }

    /***************************************
                HELPERS & GETTERS
    ****************************************/

    /**
     * @dev Checks if a module exists
     * @param _key  Key of the module
     * @return      Returns 'true' when a module exists, otherwise 'false'
     */
    function moduleExists(bytes32 _key) public view returns (bool) {
        if (_key != 0 && modules[_key].addr != address(0)) return true;
        return false;
    }

    /**
     * @dev Get the module address
     * @param _key  Key of the module
     * @return addr Return the address of the module
     */
    function getModule(bytes32 _key) external view override returns (address addr) {
        addr = modules[_key].addr;
    }

    /**
     * @dev Checks if upgrade delay over
     * @param _timestamp    Timestamp to check
     * @return              Return 'true' when delay is over, otherwise 'false'
     */
    function _isDelayOver(uint256 _timestamp) private view returns (bool) {
        if (_timestamp > 0 && block.timestamp >= _timestamp + UPGRADE_DELAY) return true;
        return false;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_governorAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"governor","type":"address"},{"indexed":true,"internalType":"address","name":"proposed","type":"address"}],"name":"GovernorChangeCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"proposedGovernor","type":"address"}],"name":"GovernorChangeClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"governor","type":"address"},{"indexed":true,"internalType":"address","name":"proposed","type":"address"}],"name":"GovernorChangeRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernor","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernor","type":"address"}],"name":"GovernorChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"key","type":"bytes32"},{"indexed":false,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"bool","name":"isLocked","type":"bool"}],"name":"ModuleAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"key","type":"bytes32"}],"name":"ModuleCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"key","type":"bytes32"}],"name":"ModuleLockCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"key","type":"bytes32"}],"name":"ModuleLockEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"key","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ModuleLockRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"key","type":"bytes32"},{"indexed":false,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ModuleProposed","type":"event"},{"inputs":[],"name":"UPGRADE_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"acceptProposedModule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"_keys","type":"bytes32[]"}],"name":"acceptProposedModules","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelGovernorChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"cancelLockModule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"cancelProposedModule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"changeGovernor","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimGovernorChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"delay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"getModule","outputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"_keys","type":"bytes32[]"},{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"bool[]","name":"_isLocked","type":"bool[]"},{"internalType":"address","name":"_governorAddr","type":"address"}],"name":"initialize","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isGovernor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"lockModule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"moduleExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"modules","outputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"isLocked","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"},{"internalType":"address","name":"_addr","type":"address"}],"name":"proposeModule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proposedGovernor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"proposedLockModules","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"proposedModules","outputs":[{"internalType":"address","name":"newAddress","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_proposedGovernor","type":"address"}],"name":"requestGovernorChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"requestLockModule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"requestTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052600180546001600160a01b0319169055600060028190556003556008805460ff191690553480156200003557600080fd5b50604051620019b0380380620019b08339810160408190526200005891620001a9565b600080546001600160a01b0319163317808255604051839262093a809284926001600160a01b0391909116919060008051602062001990833981519152908290a3620000a48162000107565b5060008111620000fb5760405162461bcd60e51b815260206004820152601f60248201527f44656c6179206d7573742062652067726561746572207468616e207a65726f0060448201526064015b60405180910390fd5b60025550620001d99050565b6001600160a01b0381166200015f5760405162461bcd60e51b815260206004820152601f60248201527f474f563a206e657720476f7665726e6f722069732061646472657373283029006044820152606401620000f2565b600080546040516001600160a01b03808516939216916000805160206200199083398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600060208284031215620001bb578081fd5b81516001600160a01b0381168114620001d2578182fd5b9392505050565b6117a780620001e96000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806385acd641116100c3578063b0b6cc1a1161007c578063b0b6cc1a1461031d578063c7af335214610371578063d7e0842a14610385578063d7fd0e7714610398578063e4c0aaf4146103a1578063efa2f3a2146103b457610158565b806385acd641146102ab5780638a11a370146102d45780638c33c19c146102e757806394ccb137146102ef57806397f5fea614610302578063ad339d7a1461031557610158565b8063381042c811610115578063381042c81461020d57806347fe8b1d146102205780636921ea411461022a5780636a42b8f81461023d5780636a89934b146102465780636d4e19911461029857610158565b8063099c47bc1461015d57806309ea14aa146101725780630c340a2414610185578063158ef93e146101af578063165ed306146101cc57806328066b86146101fa575b600080fd5b61017061016b36600461154f565b6103c7565b005b61017061018036600461168f565b610410565b6000546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b6008546101bc9060ff1681565b60405190151581526020016101a6565b6101ec6101da366004611677565b60076020526000908152604090205481565b6040519081526020016101a6565b610170610208366004611677565b61063e565b6101bc61021b3660046115b0565b610677565b6101ec62093a8081565b610170610238366004611570565b6108cd565b6101ec60025481565b610279610254366004611677565b600660205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b0390931683526020830191909152016101a6565b6101706102a6366004611677565b610990565b6101926102b9366004611677565b6000908152600460205260409020546001600160a01b031690565b600154610192906001600160a01b031681565b610170610a6b565b6101bc6102fd366004611677565b610aaa565b610170610310366004611677565b610ae7565b610170610c3c565b61035261032b366004611677565b6004602052600090815260409020546001600160a01b03811690600160a01b900460ff1682565b604080516001600160a01b0390931683529015156020830152016101a6565b6101bc6000546001600160a01b0316331490565b610170610393366004611677565b610cf5565b6101ec60035481565b6101706103af36600461154f565b610dd1565b6101706103c2366004611677565b610e49565b6103db6000546001600160a01b0316331490565b6104005760405162461bcd60e51b81526004016103f7906116f1565b60405180910390fd5b4260035561040d81610f0f565b50565b6104246000546001600160a01b0316331490565b6104405760405162461bcd60e51b81526004016103f7906116f1565b816104845760405162461bcd60e51b81526020600482015260146024820152734b6579206d757374206e6f74206265207a65726f60601b60448201526064016103f7565b6001600160a01b0381166104da5760405162461bcd60e51b815260206004820152601c60248201527f4d6f64756c652061646472657373206d757374206e6f7420626520300000000060448201526064016103f7565b600082815260046020526040902054600160a01b900460ff16156105105760405162461bcd60e51b81526004016103f7906116ba565b6000828152600460205260409020546001600160a01b038281169116141561057a5760405162461bcd60e51b815260206004820152601f60248201527f4d6f64756c6520616c7265616479206861732073616d6520616464726573730060448201526064016103f7565b60008281526006602052604090206001810154156105da5760405162461bcd60e51b815260206004820152601760248201527f4d6f64756c6520616c72656164792070726f706f73656400000000000000000060448201526064016103f7565b80546001600160a01b0319166001600160a01b0383169081178255426001830181905560408051928352602083019190915284917fa5917e6bf5563219e2772cffe6989d6f2ef8235ab280ab88f8c37479562e58a3910160405180910390a2505050565b6106526000546001600160a01b0316331490565b61066e5760405162461bcd60e51b81526004016103f7906116f1565b61040d81611056565b600061068d6000546001600160a01b0316331490565b6106a95760405162461bcd60e51b81526004016103f7906116f1565b60085460ff16156106fc5760405162461bcd60e51b815260206004820152601c60248201527f4e6578757320697320616c726561647920696e697469616c697a65640000000060448201526064016103f7565b868061073d5760405162461bcd60e51b815260206004820152601060248201526f139bc81ad95e5cc81c1c9bdd9a59195960821b60448201526064016103f7565b80861461078c5760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e74206164647265737320646174610000000000000060448201526064016103f7565b8084146107db5760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e74206c6f636b65642073746174757365730000000060448201526064016103f7565b60005b818110156108915761087f8a8a8381811061080957634e487b7160e01b600052603260045260246000fd5b9050602002013589898481811061083057634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610845919061154f565b88888581811061086557634e487b7160e01b600052603260045260246000fd5b905060200201602081019061087a9190611657565b611110565b8061088981611740565b9150506107de565b506000546001600160a01b038481169116146108b0576108b083611271565b50506008805460ff19166001908117909155979650505050505050565b6108e16000546001600160a01b0316331490565b6108fd5760405162461bcd60e51b81526004016103f7906116f1565b808061093e5760405162461bcd60e51b815260206004820152601060248201526f4b65797320617272617920656d70747960801b60448201526064016103f7565b60005b8181101561098a5761097884848381811061096c57634e487b7160e01b600052603260045260246000fd5b90506020020135611056565b8061098281611740565b915050610941565b50505050565b6109a46000546001600160a01b0316331490565b6109c05760405162461bcd60e51b81526004016103f7906116f1565b6000818152600760205260409020546109d890611322565b610a155760405162461bcd60e51b815260206004820152600e60248201526d2232b630bc903737ba1037bb32b960911b60448201526064016103f7565b6000818152600460209081526040808320805460ff60a01b1916600160a01b17905560079091528082208290555182917f097d0a4360ac95150faf267a7b4a999756a69238c2c7023cac729d81f0b733a391a250565b610a7f6000546001600160a01b0316331490565b610a9b5760405162461bcd60e51b81526004016103f7906116f1565b6000600355610aa8611349565b565b60008115801590610ad157506000828152600460205260409020546001600160a01b031615155b15610ade57506001610ae2565b5060005b919050565b610afb6000546001600160a01b0316331490565b610b175760405162461bcd60e51b81526004016103f7906116f1565b610b2081610aaa565b610b605760405162461bcd60e51b8152602060048201526011602482015270135bd91d5b19481b5d5cdd08195e1a5cdd607a1b60448201526064016103f7565b600081815260046020526040902054600160a01b900460ff1615610b965760405162461bcd60e51b81526004016103f7906116ba565b60008181526007602052604090205415610bea5760405162461bcd60e51b8152602060048201526015602482015274131bd8dac8185b1c9958591e481c1c9bdc1bdcd959605a1b60448201526064016103f7565b600081815260076020526040908190204290819055905182917f57456e8dc47899fbd8a75be3129514a3e4cca602e26b766d4bbb821975c4375891610c3191815260200190565b60405180910390a250565b6001546001600160a01b03163314610c965760405162461bcd60e51b815260206004820152601f60248201527f53656e646572206973206e6f742070726f706f73656420676f7665726e6f720060448201526064016103f7565b600254600354610ca69190611728565b421015610ce65760405162461bcd60e51b815260206004820152600e60248201526d2232b630bc903737ba1037bb32b960911b60448201526064016103f7565b610cee611436565b6000600355565b610d096000546001600160a01b0316331490565b610d255760405162461bcd60e51b81526004016103f7906116f1565b60008181526006602052604090206001015480610d845760405162461bcd60e51b815260206004820152601960248201527f50726f706f736564206d6f64756c65206e6f7420666f756e640000000000000060448201526064016103f7565b60008281526006602052604080822080546001600160a01b03191681556001018290555183917f4dd889c845f5a942b8304764283938168000b8f4903940690beb685ca2fc16cc91a25050565b610de56000546001600160a01b0316331490565b610e015760405162461bcd60e51b81526004016103f7906116f1565b60405162461bcd60e51b815260206004820152601960248201527f446972656374206368616e6765206e6f7420616c6c6f7765640000000000000060448201526064016103f7565b610e5d6000546001600160a01b0316331490565b610e795760405162461bcd60e51b81526004016103f7906116f1565b600081815260076020526040902054610ed45760405162461bcd60e51b815260206004820152601d60248201527f4d6f64756c65206c6f636b2072657175657374206e6f7420666f756e6400000060448201526064016103f7565b6000818152600760205260408082208290555182917f3d670309414f84151711e0ac2795a2b1686580ad9faca995492166a486255db391a250565b610f236000546001600160a01b0316331490565b610f3f5760405162461bcd60e51b81526004016103f7906116f1565b6001600160a01b038116610f955760405162461bcd60e51b815260206004820152601f60248201527f50726f706f73656420676f7665726e6f7220697320616464726573732830290060448201526064016103f7565b6001546001600160a01b031615610fee5760405162461bcd60e51b815260206004820152601d60248201527f50726f706f73656420676f7665726e6f7220616c72656164792073657400000060448201526064016103f7565b600180546001600160a01b0319166001600160a01b03831690811790915561101e6000546001600160a01b031690565b6001600160a01b03167fa48c163cc46eb28aba8bdb525da18f15a83020cc18f439c933d79ea3ad9b50bb60405160405180910390a350565b600081815260066020908152604091829020825180840190935280546001600160a01b031683526001015490820181905261109090611322565b6110dc5760405162461bcd60e51b815260206004820152601d60248201527f4d6f64756c6520757067726164652064656c6179206e6f74206f76657200000060448201526064016103f7565b600082815260066020526040812080546001600160a01b0319168155600101819055815161110c91849190611110565b5050565b6001600160a01b038216600090815260056020526040902054156111765760405162461bcd60e51b815260206004820152601d60248201527f4d6f64756c6573206d757374206861766520756e69717565206164647200000060448201526064016103f7565b600083815260046020526040902054600160a01b900460ff16156111ac5760405162461bcd60e51b81526004016103f7906116ba565b6000838152600460205260409020546001600160a01b031680156111e4576001600160a01b0381166000908152600560205260408120555b60008481526004602090815260408083208054861515600160a01b810260ff60a01b196001600160a01b038b166001600160a01b031990941684171617909255808552600584529382902088905581519384529183019190915285917f7bf901a62d0edd068a4e74518eb8241133713d384171c7d0a3b7f6eb5c04095d910160405180910390a250505050565b6001600160a01b0381166112c75760405162461bcd60e51b815260206004820152601f60248201527f474f563a206e657720476f7665726e6f7220697320616464726573732830290060448201526064016103f7565b600080546040516001600160a01b03808516939216917fde4b3f61490b74c0ed6237523974fe299126bbbf8a8a7482fd220104c59b0c8491a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008082118015610ad1575061133b62093a8083611728565b4210610ade57506001610ae2565b61135d6000546001600160a01b0316331490565b6113795760405162461bcd60e51b81526004016103f7906116f1565b6001546001600160a01b03166113d15760405162461bcd60e51b815260206004820152601960248201527f50726f706f73656420476f7665726e6f72206e6f74207365740000000000000060448201526064016103f7565b6001546001600160a01b03166113ef6000546001600160a01b031690565b6001600160a01b03167f2f7bb10f75b8694ea78291d7ca4c9f2a75bc45f0f97046164ad3ee984bdf4bba60405160405180910390a3600180546001600160a01b0319169055565b6001546001600160a01b031633146114905760405162461bcd60e51b815260206004820152601f60248201527f53656e646572206973206e6f742070726f706f73656420676f7665726e6f720060448201526064016103f7565b6001546114a5906001600160a01b0316611271565b6001546040516001600160a01b03909116907f0ad714cb5607f3b529b5d3292190925ae992a77b291e39ec09c390d4787896ba90600090a2600180546001600160a01b0319169055565b80356001600160a01b0381168114610ae257600080fd5b60008083601f840112611517578182fd5b50813567ffffffffffffffff81111561152e578182fd5b602083019150836020808302850101111561154857600080fd5b9250929050565b600060208284031215611560578081fd5b611569826114ef565b9392505050565b60008060208385031215611582578081fd5b823567ffffffffffffffff811115611598578182fd5b6115a485828601611506565b90969095509350505050565b60008060008060008060006080888a0312156115ca578283fd5b873567ffffffffffffffff808211156115e1578485fd5b6115ed8b838c01611506565b909950975060208a0135915080821115611605578485fd5b6116118b838c01611506565b909750955060408a0135915080821115611629578485fd5b506116368a828b01611506565b90945092506116499050606089016114ef565b905092959891949750929550565b600060208284031215611668578081fd5b81358015158114611569578182fd5b600060208284031215611688578081fd5b5035919050565b600080604083850312156116a1578182fd5b823591506116b1602084016114ef565b90509250929050565b60208082526017908201527f4d6f64756c65206d75737420626520756e6c6f636b6564000000000000000000604082015260600190565b6020808252601f908201527f474f563a2063616c6c6572206973206e6f742074686520476f7665726e6f7200604082015260600190565b6000821982111561173b5761173b61175b565b500190565b60006000198214156117545761175461175b565b5060010190565b634e487b7160e01b600052601160045260246000fdfea26469706673582212207ea1b7000c16354a344db47b85fa57e1e51f4bc2519ebb35a5bea3fbf244b06664736f6c63430008020033de4b3f61490b74c0ed6237523974fe299126bbbf8a8a7482fd220104c59b0c840000000000000000000000002f2db75c5276481e2b018ac03e968af7763ed118

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101585760003560e01c806385acd641116100c3578063b0b6cc1a1161007c578063b0b6cc1a1461031d578063c7af335214610371578063d7e0842a14610385578063d7fd0e7714610398578063e4c0aaf4146103a1578063efa2f3a2146103b457610158565b806385acd641146102ab5780638a11a370146102d45780638c33c19c146102e757806394ccb137146102ef57806397f5fea614610302578063ad339d7a1461031557610158565b8063381042c811610115578063381042c81461020d57806347fe8b1d146102205780636921ea411461022a5780636a42b8f81461023d5780636a89934b146102465780636d4e19911461029857610158565b8063099c47bc1461015d57806309ea14aa146101725780630c340a2414610185578063158ef93e146101af578063165ed306146101cc57806328066b86146101fa575b600080fd5b61017061016b36600461154f565b6103c7565b005b61017061018036600461168f565b610410565b6000546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b6008546101bc9060ff1681565b60405190151581526020016101a6565b6101ec6101da366004611677565b60076020526000908152604090205481565b6040519081526020016101a6565b610170610208366004611677565b61063e565b6101bc61021b3660046115b0565b610677565b6101ec62093a8081565b610170610238366004611570565b6108cd565b6101ec60025481565b610279610254366004611677565b600660205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b0390931683526020830191909152016101a6565b6101706102a6366004611677565b610990565b6101926102b9366004611677565b6000908152600460205260409020546001600160a01b031690565b600154610192906001600160a01b031681565b610170610a6b565b6101bc6102fd366004611677565b610aaa565b610170610310366004611677565b610ae7565b610170610c3c565b61035261032b366004611677565b6004602052600090815260409020546001600160a01b03811690600160a01b900460ff1682565b604080516001600160a01b0390931683529015156020830152016101a6565b6101bc6000546001600160a01b0316331490565b610170610393366004611677565b610cf5565b6101ec60035481565b6101706103af36600461154f565b610dd1565b6101706103c2366004611677565b610e49565b6103db6000546001600160a01b0316331490565b6104005760405162461bcd60e51b81526004016103f7906116f1565b60405180910390fd5b4260035561040d81610f0f565b50565b6104246000546001600160a01b0316331490565b6104405760405162461bcd60e51b81526004016103f7906116f1565b816104845760405162461bcd60e51b81526020600482015260146024820152734b6579206d757374206e6f74206265207a65726f60601b60448201526064016103f7565b6001600160a01b0381166104da5760405162461bcd60e51b815260206004820152601c60248201527f4d6f64756c652061646472657373206d757374206e6f7420626520300000000060448201526064016103f7565b600082815260046020526040902054600160a01b900460ff16156105105760405162461bcd60e51b81526004016103f7906116ba565b6000828152600460205260409020546001600160a01b038281169116141561057a5760405162461bcd60e51b815260206004820152601f60248201527f4d6f64756c6520616c7265616479206861732073616d6520616464726573730060448201526064016103f7565b60008281526006602052604090206001810154156105da5760405162461bcd60e51b815260206004820152601760248201527f4d6f64756c6520616c72656164792070726f706f73656400000000000000000060448201526064016103f7565b80546001600160a01b0319166001600160a01b0383169081178255426001830181905560408051928352602083019190915284917fa5917e6bf5563219e2772cffe6989d6f2ef8235ab280ab88f8c37479562e58a3910160405180910390a2505050565b6106526000546001600160a01b0316331490565b61066e5760405162461bcd60e51b81526004016103f7906116f1565b61040d81611056565b600061068d6000546001600160a01b0316331490565b6106a95760405162461bcd60e51b81526004016103f7906116f1565b60085460ff16156106fc5760405162461bcd60e51b815260206004820152601c60248201527f4e6578757320697320616c726561647920696e697469616c697a65640000000060448201526064016103f7565b868061073d5760405162461bcd60e51b815260206004820152601060248201526f139bc81ad95e5cc81c1c9bdd9a59195960821b60448201526064016103f7565b80861461078c5760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e74206164647265737320646174610000000000000060448201526064016103f7565b8084146107db5760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e74206c6f636b65642073746174757365730000000060448201526064016103f7565b60005b818110156108915761087f8a8a8381811061080957634e487b7160e01b600052603260045260246000fd5b9050602002013589898481811061083057634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610845919061154f565b88888581811061086557634e487b7160e01b600052603260045260246000fd5b905060200201602081019061087a9190611657565b611110565b8061088981611740565b9150506107de565b506000546001600160a01b038481169116146108b0576108b083611271565b50506008805460ff19166001908117909155979650505050505050565b6108e16000546001600160a01b0316331490565b6108fd5760405162461bcd60e51b81526004016103f7906116f1565b808061093e5760405162461bcd60e51b815260206004820152601060248201526f4b65797320617272617920656d70747960801b60448201526064016103f7565b60005b8181101561098a5761097884848381811061096c57634e487b7160e01b600052603260045260246000fd5b90506020020135611056565b8061098281611740565b915050610941565b50505050565b6109a46000546001600160a01b0316331490565b6109c05760405162461bcd60e51b81526004016103f7906116f1565b6000818152600760205260409020546109d890611322565b610a155760405162461bcd60e51b815260206004820152600e60248201526d2232b630bc903737ba1037bb32b960911b60448201526064016103f7565b6000818152600460209081526040808320805460ff60a01b1916600160a01b17905560079091528082208290555182917f097d0a4360ac95150faf267a7b4a999756a69238c2c7023cac729d81f0b733a391a250565b610a7f6000546001600160a01b0316331490565b610a9b5760405162461bcd60e51b81526004016103f7906116f1565b6000600355610aa8611349565b565b60008115801590610ad157506000828152600460205260409020546001600160a01b031615155b15610ade57506001610ae2565b5060005b919050565b610afb6000546001600160a01b0316331490565b610b175760405162461bcd60e51b81526004016103f7906116f1565b610b2081610aaa565b610b605760405162461bcd60e51b8152602060048201526011602482015270135bd91d5b19481b5d5cdd08195e1a5cdd607a1b60448201526064016103f7565b600081815260046020526040902054600160a01b900460ff1615610b965760405162461bcd60e51b81526004016103f7906116ba565b60008181526007602052604090205415610bea5760405162461bcd60e51b8152602060048201526015602482015274131bd8dac8185b1c9958591e481c1c9bdc1bdcd959605a1b60448201526064016103f7565b600081815260076020526040908190204290819055905182917f57456e8dc47899fbd8a75be3129514a3e4cca602e26b766d4bbb821975c4375891610c3191815260200190565b60405180910390a250565b6001546001600160a01b03163314610c965760405162461bcd60e51b815260206004820152601f60248201527f53656e646572206973206e6f742070726f706f73656420676f7665726e6f720060448201526064016103f7565b600254600354610ca69190611728565b421015610ce65760405162461bcd60e51b815260206004820152600e60248201526d2232b630bc903737ba1037bb32b960911b60448201526064016103f7565b610cee611436565b6000600355565b610d096000546001600160a01b0316331490565b610d255760405162461bcd60e51b81526004016103f7906116f1565b60008181526006602052604090206001015480610d845760405162461bcd60e51b815260206004820152601960248201527f50726f706f736564206d6f64756c65206e6f7420666f756e640000000000000060448201526064016103f7565b60008281526006602052604080822080546001600160a01b03191681556001018290555183917f4dd889c845f5a942b8304764283938168000b8f4903940690beb685ca2fc16cc91a25050565b610de56000546001600160a01b0316331490565b610e015760405162461bcd60e51b81526004016103f7906116f1565b60405162461bcd60e51b815260206004820152601960248201527f446972656374206368616e6765206e6f7420616c6c6f7765640000000000000060448201526064016103f7565b610e5d6000546001600160a01b0316331490565b610e795760405162461bcd60e51b81526004016103f7906116f1565b600081815260076020526040902054610ed45760405162461bcd60e51b815260206004820152601d60248201527f4d6f64756c65206c6f636b2072657175657374206e6f7420666f756e6400000060448201526064016103f7565b6000818152600760205260408082208290555182917f3d670309414f84151711e0ac2795a2b1686580ad9faca995492166a486255db391a250565b610f236000546001600160a01b0316331490565b610f3f5760405162461bcd60e51b81526004016103f7906116f1565b6001600160a01b038116610f955760405162461bcd60e51b815260206004820152601f60248201527f50726f706f73656420676f7665726e6f7220697320616464726573732830290060448201526064016103f7565b6001546001600160a01b031615610fee5760405162461bcd60e51b815260206004820152601d60248201527f50726f706f73656420676f7665726e6f7220616c72656164792073657400000060448201526064016103f7565b600180546001600160a01b0319166001600160a01b03831690811790915561101e6000546001600160a01b031690565b6001600160a01b03167fa48c163cc46eb28aba8bdb525da18f15a83020cc18f439c933d79ea3ad9b50bb60405160405180910390a350565b600081815260066020908152604091829020825180840190935280546001600160a01b031683526001015490820181905261109090611322565b6110dc5760405162461bcd60e51b815260206004820152601d60248201527f4d6f64756c6520757067726164652064656c6179206e6f74206f76657200000060448201526064016103f7565b600082815260066020526040812080546001600160a01b0319168155600101819055815161110c91849190611110565b5050565b6001600160a01b038216600090815260056020526040902054156111765760405162461bcd60e51b815260206004820152601d60248201527f4d6f64756c6573206d757374206861766520756e69717565206164647200000060448201526064016103f7565b600083815260046020526040902054600160a01b900460ff16156111ac5760405162461bcd60e51b81526004016103f7906116ba565b6000838152600460205260409020546001600160a01b031680156111e4576001600160a01b0381166000908152600560205260408120555b60008481526004602090815260408083208054861515600160a01b810260ff60a01b196001600160a01b038b166001600160a01b031990941684171617909255808552600584529382902088905581519384529183019190915285917f7bf901a62d0edd068a4e74518eb8241133713d384171c7d0a3b7f6eb5c04095d910160405180910390a250505050565b6001600160a01b0381166112c75760405162461bcd60e51b815260206004820152601f60248201527f474f563a206e657720476f7665726e6f7220697320616464726573732830290060448201526064016103f7565b600080546040516001600160a01b03808516939216917fde4b3f61490b74c0ed6237523974fe299126bbbf8a8a7482fd220104c59b0c8491a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008082118015610ad1575061133b62093a8083611728565b4210610ade57506001610ae2565b61135d6000546001600160a01b0316331490565b6113795760405162461bcd60e51b81526004016103f7906116f1565b6001546001600160a01b03166113d15760405162461bcd60e51b815260206004820152601960248201527f50726f706f73656420476f7665726e6f72206e6f74207365740000000000000060448201526064016103f7565b6001546001600160a01b03166113ef6000546001600160a01b031690565b6001600160a01b03167f2f7bb10f75b8694ea78291d7ca4c9f2a75bc45f0f97046164ad3ee984bdf4bba60405160405180910390a3600180546001600160a01b0319169055565b6001546001600160a01b031633146114905760405162461bcd60e51b815260206004820152601f60248201527f53656e646572206973206e6f742070726f706f73656420676f7665726e6f720060448201526064016103f7565b6001546114a5906001600160a01b0316611271565b6001546040516001600160a01b03909116907f0ad714cb5607f3b529b5d3292190925ae992a77b291e39ec09c390d4787896ba90600090a2600180546001600160a01b0319169055565b80356001600160a01b0381168114610ae257600080fd5b60008083601f840112611517578182fd5b50813567ffffffffffffffff81111561152e578182fd5b602083019150836020808302850101111561154857600080fd5b9250929050565b600060208284031215611560578081fd5b611569826114ef565b9392505050565b60008060208385031215611582578081fd5b823567ffffffffffffffff811115611598578182fd5b6115a485828601611506565b90969095509350505050565b60008060008060008060006080888a0312156115ca578283fd5b873567ffffffffffffffff808211156115e1578485fd5b6115ed8b838c01611506565b909950975060208a0135915080821115611605578485fd5b6116118b838c01611506565b909750955060408a0135915080821115611629578485fd5b506116368a828b01611506565b90945092506116499050606089016114ef565b905092959891949750929550565b600060208284031215611668578081fd5b81358015158114611569578182fd5b600060208284031215611688578081fd5b5035919050565b600080604083850312156116a1578182fd5b823591506116b1602084016114ef565b90509250929050565b60208082526017908201527f4d6f64756c65206d75737420626520756e6c6f636b6564000000000000000000604082015260600190565b6020808252601f908201527f474f563a2063616c6c6572206973206e6f742074686520476f7665726e6f7200604082015260600190565b6000821982111561173b5761173b61175b565b500190565b60006000198214156117545761175461175b565b5060010190565b634e487b7160e01b600052601160045260246000fdfea26469706673582212207ea1b7000c16354a344db47b85fa57e1e51f4bc2519ebb35a5bea3fbf244b06664736f6c63430008020033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000002f2db75c5276481e2b018ac03e968af7763ed118

-----Decoded View---------------
Arg [0] : _governorAddr (address): 0x2f2Db75C5276481E2B018Ac03e968af7763Ed118

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000002f2db75c5276481e2b018ac03e968af7763ed118


Deployed Bytecode Sourcemap

6131:9209:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4960:192;;;;;;:::i;:::-;;:::i;:::-;;9798:627;;;;;;:::i;:::-;;:::i;8137:121::-;8207:7;1139:9;-1:-1:-1;;;;;1139:9:0;8137:121;;;-1:-1:-1;;;;;3389:32:1;;;3371:51;;3359:2;3344:18;8137:121:0;;;;;;;;7536:31;;;;;;;;;;;;4166:14:1;;4159:22;4141:41;;4129:2;4114:18;7536:31:0;4096:92:1;7395:54:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;12840:25:1;;;12828:2;12813:18;7395:54:0;12795:76:1;10943:121:0;;;;;;:::i;:::-;;:::i;8790:721::-;;;;;;:::i;:::-;;:::i;7023:47::-;;7063:7;7023:47;;11194:284;;;;;;:::i;:::-;;:::i;4377:24::-;;;;;;7282:51;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7282:51:0;;;;;;;;;;-1:-1:-1;;;;;3914:32:1;;;3896:51;;3978:2;3963:18;;3956:34;;;;3869:18;7282:51:0;3851:145:1;13919:274:0;;;;;;:::i;:::-;;:::i;14825:123::-;;;;;;:::i;:::-;14890:12;14922:13;;;:7;:13;;;;;:18;-1:-1:-1;;;;;14922:18:0;;14825:123;2594:44;;;;;-1:-1:-1;;;;;2594:44:0;;;5264:134;;;:::i;14503:167::-;;;;;;:::i;:::-;;:::i;13033:398::-;;;;;;:::i;:::-;;:::i;5504:218::-;;;:::i;7108:41::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;7108:41:0;;;-1:-1:-1;;;7108:41:0;;;;;;;;;;-1:-1:-1;;;;;3619:32:1;;;3601:51;;3695:14;;3688:22;3683:2;3668:18;;3661:50;3574:18;7108:41:0;3556:161:1;1454:98:0;;1497:4;1535:9;-1:-1:-1;;;;;1535:9:0;1521:10;:23;;1454:98;10535:285;;;;;;:::i;:::-;;:::i;4408:30::-;;;;;;2999:123;;;;;;:::i;:::-;;:::i;13537:247::-;;;;;;:::i;:::-;;:::i;4960:192::-;1295:12;1497:4;1535:9;-1:-1:-1;;;;;1535:9:0;1521:10;:23;;1454:98;1295:12;1287:56;;;;-1:-1:-1;;;1287:56:0;;;;;;;:::i;:::-;;;;;;;;;5072:15:::1;5058:11;:29:::0;5098:46:::1;5126:17:::0;5098:27:::1;:46::i;:::-;4960:192:::0;:::o;9798:627::-;1295:12;1497:4;1535:9;-1:-1:-1;;;;;1535:9:0;1521:10;:23;;1454:98;1295:12;1287:56;;;;-1:-1:-1;;;1287:56:0;;;;;;;:::i;:::-;9900:20;9892:53:::1;;;::::0;-1:-1:-1;;;9892:53:0;;12547:2:1;9892:53:0::1;::::0;::::1;12529:21:1::0;12586:2;12566:18;;;12559:30;-1:-1:-1;;;12605:18:1;;;12598:50;12665:18;;9892:53:0::1;12519:170:1::0;9892:53:0::1;-1:-1:-1::0;;;;;9964:19:0;::::1;9956:60;;;::::0;-1:-1:-1;;;9956:60:0;;4740:2:1;9956:60:0::1;::::0;::::1;4722:21:1::0;4779:2;4759:18;;;4752:30;4818;4798:18;;;4791:58;4866:18;;9956:60:0::1;4712:178:1::0;9956:60:0::1;10036:13;::::0;;;:7:::1;:13;::::0;;;;:22;-1:-1:-1;;;10036:22:0;::::1;;;10035:23;10027:59;;;;-1:-1:-1::0;;;10027:59:0::1;;;;;;;:::i;:::-;10105:13;::::0;;;:7:::1;:13;::::0;;;;:18;-1:-1:-1;;;;;10105:27:0;;::::1;:18:::0;::::1;:27;;10097:71;;;::::0;-1:-1:-1;;;10097:71:0;;8990:2:1;10097:71:0::1;::::0;::::1;8972:21:1::0;9029:2;9009:18;;;9002:30;9068:33;9048:18;;;9041:61;9119:18;;10097:71:0::1;8962:181:1::0;10097:71:0::1;10179:18;10200:21:::0;;;:15:::1;:21;::::0;;;;10240:11:::1;::::0;::::1;::::0;:16;10232:52:::1;;;::::0;-1:-1:-1;;;10232:52:0;;6520:2:1;10232:52:0::1;::::0;::::1;6502:21:1::0;6559:2;6539:18;;;6532:30;6598:25;6578:18;;;6571:53;6641:18;;10232:52:0::1;6492:173:1::0;10232:52:0::1;10297:20:::0;;-1:-1:-1;;;;;;10297:20:0::1;-1:-1:-1::0;;;;;10297:20:0;::::1;::::0;;::::1;::::0;;10342:15:::1;-1:-1:-1::0;10328:11:0;::::1;:29:::0;;;10373:44:::1;::::0;;3896:51:1;;;3978:2;3963:18;;3956:34;;;;10388:4:0;;10373:44:::1;::::0;3869:18:1;10373:44:0::1;;;;;;;1354:1;9798:627:::0;;:::o;10943:121::-;1295:12;1497:4;1535:9;-1:-1:-1;;;;;1535:9:0;1521:10;:23;;1454:98;1295:12;1287:56;;;;-1:-1:-1;;;1287:56:0;;;;;;;:::i;:::-;11029:27:::1;11051:4;11029:21;:27::i;8790:721::-:0;9010:4;1295:12;1497:4;1535:9;-1:-1:-1;;;;;1535:9:0;1521:10;:23;;1454:98;1295:12;1287:56;;;;-1:-1:-1;;;1287:56:0;;;;;;;:::i;:::-;7728:11:::1;::::0;::::1;;7727:12;7719:53;;;::::0;-1:-1:-1;;;7719:53:0;;8281:2:1;7719:53:0::1;::::0;::::1;8263:21:1::0;8320:2;8300:18;;;8293:30;8359;8339:18;;;8332:58;8407:18;;7719:53:0::1;8253:178:1::0;7719:53:0::1;9041:5:::0;9072:7;9064:36:::2;;;::::0;-1:-1:-1;;;9064:36:0;;7936:2:1;9064:36:0::2;::::0;::::2;7918:21:1::0;7975:2;7955:18;;;7948:30;-1:-1:-1;;;7994:18:1;;;7987:46;8050:18;;9064:36:0::2;7908:166:1::0;9064:36:0::2;9119:24:::0;;::::2;9111:62;;;::::0;-1:-1:-1;;;9111:62:0;;11835:2:1;9111:62:0::2;::::0;::::2;11817:21:1::0;11874:2;11854:18;;;11847:30;11913:27;11893:18;;;11886:55;11958:18;;9111:62:0::2;11807:175:1::0;9111:62:0::2;9192:23:::0;;::::2;9184:64;;;::::0;-1:-1:-1;;;9184:64:0;;5097:2:1;9184:64:0::2;::::0;::::2;5079:21:1::0;5136:2;5116:18;;;5109:30;5175;5155:18;;;5148:58;5223:18;;9184:64:0::2;5069:178:1::0;9184:64:0::2;9266:9;9261:114;9285:3;9281:1;:7;9261:114;;;9310:53;9325:5;;9331:1;9325:8;;;;;-1:-1:-1::0;;;9325:8:0::2;;;;;;;;;;;;;;;9335:10;;9346:1;9335:13;;;;;-1:-1:-1::0;;;9335:13:0::2;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9350:9;;9360:1;9350:12;;;;;-1:-1:-1::0;;;9350:12:0::2;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9310:14;:53::i;:::-;9290:3:::0;::::2;::::0;::::2;:::i;:::-;;;;9261:114;;;-1:-1:-1::0;8207:7:0;1139:9;-1:-1:-1;;;;;9391:27:0;;::::2;1139:9:::0;;9391:27:::2;9387:63;;9420:30;9436:13;9420:15;:30::i;:::-;-1:-1:-1::0;;9463:11:0::2;:18:::0;;-1:-1:-1;;9463:18:0::2;9477:4;9463:18:::0;;::::2;::::0;;;8790:721;;;;;;;;;:::o;11194:284::-;1295:12;1497:4;1535:9;-1:-1:-1;;;;;1535:9:0;1521:10;:23;;1454:98;1295:12;1287:56;;;;-1:-1:-1;;;1287:56:0;;;;;;;:::i;:::-;11307:5;11338:7;11330:36:::1;;;::::0;-1:-1:-1;;;11330:36:0;;4395:2:1;11330:36:0::1;::::0;::::1;4377:21:1::0;4434:2;4414:18;;;4407:30;-1:-1:-1;;;4453:18:1;;;4446:46;4509:18;;11330:36:0::1;4367:166:1::0;11330:36:0::1;11384:9;11379:92;11403:3;11399:1;:7;11379:92;;;11428:31;11450:5;;11456:1;11450:8;;;;;-1:-1:-1::0;;;11450:8:0::1;;;;;;;;;;;;;;;11428:21;:31::i;:::-;11408:3:::0;::::1;::::0;::::1;:::i;:::-;;;;11379:92;;;;1354:1;11194:284:::0;;:::o;13919:274::-;1295:12;1497:4;1535:9;-1:-1:-1;;;;;1535:9:0;1521:10;:23;;1454:98;1295:12;1287:56;;;;-1:-1:-1;;;1287:56:0;;;;;;;:::i;:::-;14016:25:::1;::::0;;;:19:::1;:25;::::0;;;;;14003:39:::1;::::0;:12:::1;:39::i;:::-;13995:66;;;::::0;-1:-1:-1;;;13995:66:0;;10780:2:1;13995:66:0::1;::::0;::::1;10762:21:1::0;10819:2;10799:18;;;10792:30;-1:-1:-1;;;10838:18:1;;;10831:44;10892:18;;13995:66:0::1;10752:164:1::0;13995:66:0::1;14074:13;::::0;;;:7:::1;:13;::::0;;;;;;;:29;;-1:-1:-1;;;;14074:29:0::1;-1:-1:-1::0;;;14074:29:0::1;::::0;;14121:19:::1;:25:::0;;;;;;14114:32;;;14162:23;14082:4;;14162:23:::1;::::0;::::1;13919:274:::0;:::o;5264:134::-;1295:12;1497:4;1535:9;-1:-1:-1;;;;;1535:9:0;1521:10;:23;;1454:98;1295:12;1287:56;;;;-1:-1:-1;;;1287:56:0;;;;;;;:::i;:::-;5350:1:::1;5336:11;:15:::0;5362:28:::1;:26;:28::i;:::-;5264:134::o:0;14503:167::-;14560:4;14581:9;;;;;:45;;-1:-1:-1;14624:1:0;14594:13;;;:7;:13;;;;;:18;-1:-1:-1;;;;;14594:18:0;:32;;14581:45;14577:62;;;-1:-1:-1;14635:4:0;14628:11;;14577:62;-1:-1:-1;14657:5:0;14503:167;;;;:::o;13033:398::-;1295:12;1497:4;1535:9;-1:-1:-1;;;;;1535:9:0;1521:10;:23;;1454:98;1295:12;1287:56;;;;-1:-1:-1;;;1287:56:0;;;;;;;:::i;:::-;13124:18:::1;13137:4;13124:12;:18::i;:::-;13116:48;;;::::0;-1:-1:-1;;;13116:48:0;;7590:2:1;13116:48:0::1;::::0;::::1;7572:21:1::0;7629:2;7609:18;;;7602:30;-1:-1:-1;;;7648:18:1;;;7641:47;7705:18;;13116:48:0::1;7562:167:1::0;13116:48:0::1;13184:13;::::0;;;:7:::1;:13;::::0;;;;:22;-1:-1:-1;;;13184:22:0;::::1;;;13183:23;13175:59;;;;-1:-1:-1::0;;;13175:59:0::1;;;;;;;:::i;:::-;13253:25;::::0;;;:19:::1;:25;::::0;;;;;:30;13245:64:::1;;;::::0;-1:-1:-1;;;13245:64:0;;10430:2:1;13245:64:0::1;::::0;::::1;10412:21:1::0;10469:2;10449:18;;;10442:30;-1:-1:-1;;;10488:18:1;;;10481:51;10549:18;;13245:64:0::1;10402:171:1::0;13245:64:0::1;13322:25;::::0;;;:19:::1;:25;::::0;;;;;;13350:15:::1;13322:43:::0;;;;13381:42;;13342:4;;13381:42:::1;::::0;::::1;::::0;12840:25:1;;12828:2;12813:18;;12795:76;13381:42:0::1;;;;;;;;13033:398:::0;:::o;5504:218::-;2809:16;;-1:-1:-1;;;;;2809:16:0;2795:10;:30;2787:74;;;;-1:-1:-1;;;2787:74:0;;9710:2:1;2787:74:0;;;9692:21:1;9749:2;9729:18;;;9722:30;9788:33;9768:18;;;9761:61;9839:18;;2787:74:0;9682:181:1;2787:74:0;5625:5:::1;;5611:11;;:19;;;;:::i;:::-;5591:15;:40;;5583:67;;;::::0;-1:-1:-1;;;5583:67:0;;10780:2:1;5583:67:0::1;::::0;::::1;10762:21:1::0;10819:2;10799:18;;;10792:30;-1:-1:-1;;;10838:18:1;;;10831:44;10892:18;;5583:67:0::1;10752:164:1::0;5583:67:0::1;5661:27;:25;:27::i;:::-;5713:1;5699:11;:15:::0;5504:218::o;10535:285::-;1295:12;1497:4;1535:9;-1:-1:-1;;;;;1535:9:0;1521:10;:23;;1454:98;1295:12;1287:56;;;;-1:-1:-1;;;1287:56:0;;;;;;;:::i;:::-;10621:17:::1;10641:21:::0;;;:15:::1;:21;::::0;;;;:31:::1;;::::0;10691:13;10683:51:::1;;;::::0;-1:-1:-1;;;10683:51:0;;11481:2:1;10683:51:0::1;::::0;::::1;11463:21:1::0;11520:2;11500:18;;;11493:30;11559:27;11539:18;;;11532:55;11604:18;;10683:51:0::1;11453:175:1::0;10683:51:0::1;10754:21;::::0;;;:15:::1;:21;::::0;;;;;10747:28;;-1:-1:-1;;;;;;10747:28:0::1;::::0;;;::::1;::::0;;;10791:21;10770:4;;10791:21:::1;::::0;::::1;1354:1;10535:285:::0;:::o;2999:123::-;1295:12;1497:4;1535:9;-1:-1:-1;;;;;1535:9:0;1521:10;:23;;1454:98;1295:12;1287:56;;;;-1:-1:-1;;;1287:56:0;;;;;;;:::i;:::-;3079:35:::1;::::0;-1:-1:-1;;;3079:35:0;;6166:2:1;3079:35:0::1;::::0;::::1;6148:21:1::0;6205:2;6185:18;;;6178:30;6244:27;6224:18;;;6217:55;6289:18;;3079:35:0::1;6138:175:1::0;13537:247:0;1295:12;1497:4;1535:9;-1:-1:-1;;;;;1535:9:0;1521:10;:23;;1454:98;1295:12;1287:56;;;;-1:-1:-1;;;1287:56:0;;;;;;;:::i;:::-;13655:1:::1;13627:25:::0;;;:19:::1;:25;::::0;;;;;13619:71:::1;;;::::0;-1:-1:-1;;;13619:71:0;;6872:2:1;13619:71:0::1;::::0;::::1;6854:21:1::0;6911:2;6891:18;;;6884:30;6950:31;6930:18;;;6923:59;6999:18;;13619:71:0::1;6844:179:1::0;13619:71:0::1;13710:25;::::0;;;:19:::1;:25;::::0;;;;;13703:32;;;13751:25;13730:4;;13751:25:::1;::::0;::::1;13537:247:::0;:::o;3279:382::-;1295:12;1497:4;1535:9;-1:-1:-1;;;;;1535:9:0;1521:10;:23;;1454:98;1295:12;1287:56;;;;-1:-1:-1;;;1287:56:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3384:31:0;::::1;3376:75;;;::::0;-1:-1:-1;;;3376:75:0;;7230:2:1;3376:75:0::1;::::0;::::1;7212:21:1::0;7269:2;7249:18;;;7242:30;7308:33;7288:18;;;7281:61;7359:18;;3376:75:0::1;7202:181:1::0;3376:75:0::1;3470:16;::::0;-1:-1:-1;;;;;3470:16:0::1;:30:::0;3462:72:::1;;;::::0;-1:-1:-1;;;3462:72:0;;5808:2:1;3462:72:0::1;::::0;::::1;5790:21:1::0;5847:2;5827:18;;;5820:30;5886:31;5866:18;;;5859:59;5935:18;;3462:72:0::1;5780:179:1::0;3462:72:0::1;3547:16;:36:::0;;-1:-1:-1;;;;;;3547:36:0::1;-1:-1:-1::0;;;;;3547:36:0;::::1;::::0;;::::1;::::0;;;3623:10:::1;8207:7:::0;1139:9;-1:-1:-1;;;;;1139:9:0;;8137:121;3623:10:::1;-1:-1:-1::0;;;;;3599:54:0::1;;;;;;;;;;;3279:382:::0;:::o;11580:285::-;11645:17;11665:21;;;:15;:21;;;;;;;;;11645:41;;;;;;;;;;-1:-1:-1;;;;;11645:41:0;;;;;;;;;;;;11705:25;;:12;:25::i;:::-;11697:67;;;;-1:-1:-1;;;11697:67:0;;12189:2:1;11697:67:0;;;12171:21:1;12228:2;12208:18;;;12201:30;12267:31;12247:18;;;12240:59;12316:18;;11697:67:0;12161:179:1;11697:67:0;11784:21;;;;:15;:21;;;;;11777:28;;-1:-1:-1;;;;;;11777:28:0;;;;;;;;11837:12;;11816:41;;11800:4;;11837:12;11816:14;:41::i;:::-;11580:285;;:::o;12118:676::-;-1:-1:-1;;;;;12249:22:0;;12283:3;12249:22;;;:15;:22;;;;;;:38;12241:80;;;;-1:-1:-1;;;12241:80:0;;11123:2:1;12241:80:0;;;11105:21:1;11162:2;11142:18;;;11135:30;11201:31;11181:18;;;11174:59;11250:18;;12241:80:0;11095:179:1;12241:80:0;12341:13;;;;:7;:13;;;;;:22;-1:-1:-1;;;12341:22:0;;;;12340:23;12332:59;;;;-1:-1:-1;;;12332:59:0;;;;;;;:::i;:::-;12454:21;12478:13;;;:7;:13;;;;;:18;-1:-1:-1;;;;;12478:18:0;12511:29;;12507:107;;-1:-1:-1;;;;;12557:30:0;;12598:3;12557:30;;;:15;:30;;;;;:45;12507:107;12624:13;;;;:7;:13;;;;;;;;:26;;12661:34;;;-1:-1:-1;;;12661:34:0;;-1:-1:-1;;;;;;;;;12624:26:0;;-1:-1:-1;;;;;;12624:26:0;;;;;12661:34;;;;;12706:22;;;:15;:22;;;;;;:29;;;12751:35;;3601:51:1;;;3668:18;;;3661:50;;;;12624:13:0;;12751:35;;3574:18:1;12751:35:0;;;;;;;12118:676;;;;:::o;2057:236::-;-1:-1:-1;;;;;2132:26:0;;2124:70;;;;-1:-1:-1;;;2124:70:0;;9350:2:1;2124:70:0;;;9332:21:1;9389:2;9369:18;;;9362:30;9428:33;9408:18;;;9401:61;9479:18;;2124:70:0;9322:181:1;2124:70:0;2226:9;;;2210:40;;-1:-1:-1;;;;;2210:40:0;;;;2226:9;;;2210:40;;;2261:9;:24;;-1:-1:-1;;;;;;2261:24:0;-1:-1:-1;;;;;2261:24:0;;;;;;;;;;2057:236::o;15145:192::-;15209:4;15243:1;15230:10;:14;:63;;;;-1:-1:-1;15267:26:0;7063:7;15267:10;:26;:::i;:::-;15248:15;:45;15226:80;;-1:-1:-1;15302:4:0;15295:11;;3748:258;1295:12;1497:4;1535:9;-1:-1:-1;;;;;1535:9:0;1521:10;:23;;1454:98;1295:12;1287:56;;;;-1:-1:-1;;;1287:56:0;;;;;;;:::i;:::-;3827:16:::1;::::0;-1:-1:-1;;;;;3827:16:0::1;3819:68;;;::::0;-1:-1:-1;;;3819:68:0;;5454:2:1;3819:68:0::1;::::0;::::1;5436:21:1::0;5493:2;5473:18;;;5466:30;5532:27;5512:18;;;5505:55;5577:18;;3819:68:0::1;5426:175:1::0;3819:68:0::1;3941:16;::::0;-1:-1:-1;;;;;3941:16:0::1;3929:10;8207:7:::0;1139:9;-1:-1:-1;;;;;1139:9:0;;8137:121;3929:10:::1;-1:-1:-1::0;;;;;3905:53:0::1;;;;;;;;;;;3969:16;:29:::0;;-1:-1:-1;;;;;;3969:29:0::1;::::0;;3748:258::o;4094:214::-;2809:16;;-1:-1:-1;;;;;2809:16:0;2795:10;:30;2787:74;;;;-1:-1:-1;;;2787:74:0;;9710:2:1;2787:74:0;;;9692:21:1;9749:2;9729:18;;;9722:30;9788:33;9768:18;;;9761:61;9839:18;;2787:74:0;9682:181:1;2787:74:0;4188:16:::1;::::0;4172:33:::1;::::0;-1:-1:-1;;;;;4188:16:0::1;4172:15;:33::i;:::-;4243:16;::::0;4221:39:::1;::::0;-1:-1:-1;;;;;4243:16:0;;::::1;::::0;4221:39:::1;::::0;4243:16:::1;::::0;4221:39:::1;4271:16;:29:::0;;-1:-1:-1;;;;;;4271:29:0::1;::::0;;4094:214::o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;192:398;;;319:3;312:4;304:6;300:17;296:27;286:2;;344:8;334;327:26;286:2;-1:-1:-1;374:20:1;;417:18;406:30;;403:2;;;456:8;446;439:26;403:2;500:4;492:6;488:17;476:29;;563:3;556:4;548;540:6;536:17;528:6;524:30;520:41;517:50;514:2;;;580:1;577;570:12;514:2;276:314;;;;;:::o;595:196::-;;707:2;695:9;686:7;682:23;678:32;675:2;;;728:6;720;713:22;675:2;756:29;775:9;756:29;:::i;:::-;746:39;665:126;-1:-1:-1;;;665:126:1:o;796:457::-;;;943:2;931:9;922:7;918:23;914:32;911:2;;;964:6;956;949:22;911:2;1009:9;996:23;1042:18;1034:6;1031:30;1028:2;;;1079:6;1071;1064:22;1028:2;1123:70;1185:7;1176:6;1165:9;1161:22;1123:70;:::i;:::-;1212:8;;1097:96;;-1:-1:-1;901:352:1;-1:-1:-1;;;;901:352:1:o;1258:1200::-;;;;;;;;1523:3;1511:9;1502:7;1498:23;1494:33;1491:2;;;1545:6;1537;1530:22;1491:2;1590:9;1577:23;1619:18;1660:2;1652:6;1649:14;1646:2;;;1681:6;1673;1666:22;1646:2;1725:70;1787:7;1778:6;1767:9;1763:22;1725:70;:::i;:::-;1814:8;;-1:-1:-1;1699:96:1;-1:-1:-1;1902:2:1;1887:18;;1874:32;;-1:-1:-1;1918:16:1;;;1915:2;;;1952:6;1944;1937:22;1915:2;1996:72;2060:7;2049:8;2038:9;2034:24;1996:72;:::i;:::-;2087:8;;-1:-1:-1;1970:98:1;-1:-1:-1;2175:2:1;2160:18;;2147:32;;-1:-1:-1;2191:16:1;;;2188:2;;;2225:6;2217;2210:22;2188:2;;2269:72;2333:7;2322:8;2311:9;2307:24;2269:72;:::i;:::-;2360:8;;-1:-1:-1;2243:98:1;-1:-1:-1;2414:38:1;;-1:-1:-1;2448:2:1;2433:18;;2414:38;:::i;:::-;2404:48;;1481:977;;;;;;;;;;:::o;2463:293::-;;2572:2;2560:9;2551:7;2547:23;2543:32;2540:2;;;2593:6;2585;2578:22;2540:2;2637:9;2624:23;2690:5;2683:13;2676:21;2669:5;2666:32;2656:2;;2717:6;2709;2702:22;2761:190;;2873:2;2861:9;2852:7;2848:23;2844:32;2841:2;;;2894:6;2886;2879:22;2841:2;-1:-1:-1;2922:23:1;;2831:120;-1:-1:-1;2831:120:1:o;2956:264::-;;;3085:2;3073:9;3064:7;3060:23;3056:32;3053:2;;;3106:6;3098;3091:22;3053:2;3147:9;3134:23;3124:33;;3176:38;3210:2;3199:9;3195:18;3176:38;:::i;:::-;3166:48;;3043:177;;;;;:::o;8436:347::-;8638:2;8620:21;;;8677:2;8657:18;;;8650:30;8716:25;8711:2;8696:18;;8689:53;8774:2;8759:18;;8610:173::o;9868:355::-;10070:2;10052:21;;;10109:2;10089:18;;;10082:30;10148:33;10143:2;10128:18;;10121:61;10214:2;10199:18;;10042:181::o;12876:128::-;;12947:1;12943:6;12940:1;12937:13;12934:2;;;12953:18;;:::i;:::-;-1:-1:-1;12989:9:1;;12924:80::o;13009:135::-;;-1:-1:-1;;13069:17:1;;13066:2;;;13089:18;;:::i;:::-;-1:-1:-1;13136:1:1;13125:13;;13056:88::o;13149:127::-;13210:10;13205:3;13201:20;13198:1;13191:31;13241:4;13238:1;13231:15;13265:4;13262:1;13255:15

Swarm Source

ipfs://7ea1b7000c16354a344db47b85fa57e1e51f4bc2519ebb35a5bea3fbf244b066

Block Transaction Gas Used Reward
view all blocks produced

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

OVERVIEW

mStable address registry. eg governor, keeper and modules like SavingsManager.

Loading...
Loading

Validator Index Block Amount
View All Withdrawals

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

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