More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Initialize | 13630711 | 1323 days ago | IN | 0 POL | 0.00019647 |
Loading...
Loading
Contract Name:
Nexus
Compiler Version
v0.8.2+commit.661d1103
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
- No Contract Security Audit Submitted- Submit Audit Here
[{"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"}]
Contract Creation Code
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
Loading...
Loading
OVERVIEW
mStable address registry. eg governor, keeper and modules like SavingsManager.Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.