Contract
0x9503d502435f8e228b874ba0f792301d4401b523
4
Contract Overview
Balance:
0 CRO
CRO Value:
$0.00
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Contract Name:
StdReferenceBasic
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2022-07-26 */ // SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.13; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } /** * @dev External interface of AccessControl declared to support ERC165 detection. */ interface IAccessControl { /** * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` * * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite * {RoleAdminChanged} not being emitted signaling this. * * _Available since v3.1._ */ event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); /** * @dev Emitted when `account` is granted `role`. * * `sender` is the account that originated the contract call, an admin role * bearer except when using {AccessControl-_setupRole}. */ event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Emitted when `account` is revoked `role`. * * `sender` is the account that originated the contract call: * - if using `revokeRole`, it is the admin role bearer * - if using `renounceRole`, it is the role bearer (i.e. `account`) */ event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) external view returns (bool); /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {AccessControl-_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) external view returns (bytes32); /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) external; /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) external; /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been granted `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) external; } /** * @dev Contract module that allows children to implement role-based access * control mechanisms. This is a lightweight version that doesn't allow enumerating role * members except through off-chain means by accessing the contract event logs. Some * applications may benefit from on-chain enumerability, for those cases see * {AccessControlEnumerable}. * * Roles are referred to by their `bytes32` identifier. These should be exposed * in the external API and be unique. The best way to achieve this is by * using `public constant` hash digests: * * ``` * bytes32 public constant MY_ROLE = keccak256("MY_ROLE"); * ``` * * Roles can be used to represent a set of permissions. To restrict access to a * function call, use {hasRole}: * * ``` * function foo() public { * require(hasRole(MY_ROLE, msg.sender)); * ... * } * ``` * * Roles can be granted and revoked dynamically via the {grantRole} and * {revokeRole} functions. Each role has an associated admin role, and only * accounts that have a role's admin role can call {grantRole} and {revokeRole}. * * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means * that only accounts with this role will be able to grant or revoke other * roles. More complex role relationships can be created by using * {_setRoleAdmin}. * * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to * grant and revoke this role. Extra precautions should be taken to secure * accounts that have been granted it. */ abstract contract AccessControl is Context, IAccessControl, ERC165 { struct RoleData { mapping(address => bool) members; bytes32 adminRole; } mapping(bytes32 => RoleData) private _roles; bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; /** * @dev Modifier that checks that an account has a specific role. Reverts * with a standardized message including the required role. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ * * _Available since v4.1._ */ modifier onlyRole(bytes32 role) { _checkRole(role, _msgSender()); _; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId); } /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) public view virtual override returns (bool) { return _roles[role].members[account]; } /** * @dev Revert with a standard message if `account` is missing `role`. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ */ function _checkRole(bytes32 role, address account) internal view virtual { if (!hasRole(role, account)) { revert( string( abi.encodePacked( "AccessControl: account ", Strings.toHexString(uint160(account), 20), " is missing role ", Strings.toHexString(uint256(role), 32) ) ) ); } } /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) { return _roles[role].adminRole; } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _grantRole(role, account); } /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _revokeRole(role, account); } /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been revoked `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) public virtual override { require(account == _msgSender(), "AccessControl: can only renounce roles for self"); _revokeRole(role, account); } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. Note that unlike {grantRole}, this function doesn't perform any * checks on the calling account. * * [WARNING] * ==== * This function should only be called from the constructor when setting * up the initial roles for the system. * * Using this function in any other way is effectively circumventing the admin * system imposed by {AccessControl}. * ==== * * NOTE: This function is deprecated in favor of {_grantRole}. */ function _setupRole(bytes32 role, address account) internal virtual { _grantRole(role, account); } /** * @dev Sets `adminRole` as ``role``'s admin role. * * Emits a {RoleAdminChanged} event. */ function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { bytes32 previousAdminRole = getRoleAdmin(role); _roles[role].adminRole = adminRole; emit RoleAdminChanged(role, previousAdminRole, adminRole); } /** * @dev Grants `role` to `account`. * * Internal function without access restriction. */ function _grantRole(bytes32 role, address account) internal virtual { if (!hasRole(role, account)) { _roles[role].members[account] = true; emit RoleGranted(role, account, _msgSender()); } } /** * @dev Revokes `role` from `account`. * * Internal function without access restriction. */ function _revokeRole(bytes32 role, address account) internal virtual { if (hasRole(role, account)) { _roles[role].members[account] = false; emit RoleRevoked(role, account, _msgSender()); } } } interface IStdReference { /// A structure returned whenever someone requests for standard reference data. struct ReferenceData { uint256 rate; // base/quote exchange rate, multiplied by 1e18. uint256 lastUpdatedBase; // UNIX epoch of the last time when base price gets updated. uint256 lastUpdatedQuote; // UNIX epoch of the last time when quote price gets updated. } /// Returns the price data for the given base/quote pair. Revert if not available. function getReferenceData(string memory _base, string memory _quote) external view returns (ReferenceData memory); /// Similar to getReferenceData, but with multiple base/quote pairs at once. function getReferenceDataBulk(string[] memory _bases, string[] memory _quotes) external view returns (ReferenceData[] memory); } abstract contract StdReferenceBase is IStdReference { function getReferenceData(string memory _base, string memory _quote) public view virtual override returns (ReferenceData memory); function getReferenceDataBulk(string[] memory _bases, string[] memory _quotes) public view override returns (ReferenceData[] memory) { require(_bases.length == _quotes.length, "BAD_INPUT_LENGTH"); uint256 len = _bases.length; ReferenceData[] memory results = new ReferenceData[](len); for (uint256 idx = 0; idx < len; idx++) { results[idx] = getReferenceData(_bases[idx], _quotes[idx]); } return results; } } /// @title BandChain StdReferenceBasic /// @author Band Protocol Team contract StdReferenceBasic is AccessControl, StdReferenceBase { struct RefData { uint64 rate; // USD-rate, multiplied by 1e9. uint64 resolveTime; // UNIX epoch when data is last resolved. uint64 requestID; // BandChain request identifier for this data. } /// Mapping from token symbol to ref data mapping(string => RefData) public refs; bytes32 public constant RELAYER_ROLE = keccak256("RELAYER_ROLE"); constructor() { _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); _grantRole(RELAYER_ROLE, msg.sender); } /** * @dev Grants `RELAYER_ROLE` to `accounts`. * * If each `account` had not been already granted `RELAYER_ROLE`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``RELAYER_ROLE``'s admin role. */ function grantRelayers(address[] calldata accounts) external onlyRole(getRoleAdmin(RELAYER_ROLE)) { for (uint256 idx = 0; idx < accounts.length; idx++) { _grantRole(RELAYER_ROLE, accounts[idx]); } } /** * @dev Revokes `RELAYER_ROLE` from `accounts`. * * If each `account` had already granted `RELAYER_ROLE`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must have ``RELAYER_ROLE``'s admin role. */ function revokeRelayers(address[] calldata accounts) external onlyRole(getRoleAdmin(RELAYER_ROLE)) { for (uint256 idx = 0; idx < accounts.length; idx++) { _revokeRole(RELAYER_ROLE, accounts[idx]); } } /// @notice Relay and save a set of price data to the contract only if resolveTime is newer /// @dev All of the lists must be of equal length /// @param symbols A list of symbols whose data is being relayed in this function call /// @param rates A list of the rates associated with each symbol /// @param resolveTime A timestamp of when the rate data was retrieved /// @param requestID A BandChain request ID in which the rate data was retrieved function relay( string[] calldata symbols, uint64[] calldata rates, uint64 resolveTime, uint64 requestID ) external { require(hasRole(RELAYER_ROLE, msg.sender), "NOTARELAYER"); require(rates.length == symbols.length, "BADRATESLENGTH"); for (uint256 idx = 0; idx < symbols.length; idx++) { RefData storage ref = refs[symbols[idx]]; if (resolveTime > ref.resolveTime) { refs[symbols[idx]] = RefData({rate: rates[idx], resolveTime: resolveTime, requestID: requestID}); } } } /// @notice Relay and save a set of price data to the contract /// @dev All of the lists must be of equal length /// @param symbols A list of symbols whose data is being relayed in this function call /// @param rates A list of the rates associated with each symbol /// @param resolveTime A timestamp of when the rate data was retrieved /// @param requestID A BandChain request ID in which the rate data was retrieved function forceRelay( string[] calldata symbols, uint64[] calldata rates, uint64 resolveTime, uint64 requestID ) external { require(hasRole(RELAYER_ROLE, msg.sender), "NOTARELAYER"); require(rates.length == symbols.length, "BADRATESLENGTH"); for (uint256 idx = 0; idx < symbols.length; idx++) { refs[symbols[idx]] = RefData({rate: rates[idx], resolveTime: resolveTime, requestID: requestID}); } } /// @notice Returns the price data for the given base/quote pair. Revert if not available. /// @param base the base symbol of the token pair to query /// @param quote the quote symbol of the token pair to query function getReferenceData(string memory base, string memory quote) public view override returns (ReferenceData memory) { (uint256 baseRate, uint256 baseLastUpdate) = _getRefData(base); (uint256 quoteRate, uint256 quoteLastUpdate) = _getRefData(quote); return ReferenceData({rate: (baseRate * 1e18) / quoteRate, lastUpdatedBase: baseLastUpdate, lastUpdatedQuote: quoteLastUpdate}); } /// @notice Get the price data of a token /// @param symbol the symbol of the token whose price to query function _getRefData(string memory symbol) internal view returns (uint256 rate, uint256 lastUpdate) { if (keccak256(bytes(symbol)) == keccak256(bytes("USD"))) { return (1e9, block.timestamp); } RefData storage refData = refs[symbol]; require(refData.resolveTime > 0, "REFDATANOTAVAILABLE"); return (uint256(refData.rate), uint256(refData.resolveTime)); } }
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RELAYER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string[]","name":"symbols","type":"string[]"},{"internalType":"uint64[]","name":"rates","type":"uint64[]"},{"internalType":"uint64","name":"resolveTime","type":"uint64"},{"internalType":"uint64","name":"requestID","type":"uint64"}],"name":"forceRelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"base","type":"string"},{"internalType":"string","name":"quote","type":"string"}],"name":"getReferenceData","outputs":[{"components":[{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"lastUpdatedBase","type":"uint256"},{"internalType":"uint256","name":"lastUpdatedQuote","type":"uint256"}],"internalType":"struct IStdReference.ReferenceData","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string[]","name":"_bases","type":"string[]"},{"internalType":"string[]","name":"_quotes","type":"string[]"}],"name":"getReferenceDataBulk","outputs":[{"components":[{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"lastUpdatedBase","type":"uint256"},{"internalType":"uint256","name":"lastUpdatedQuote","type":"uint256"}],"internalType":"struct IStdReference.ReferenceData[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"grantRelayers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"refs","outputs":[{"internalType":"uint64","name":"rate","type":"uint64"},{"internalType":"uint64","name":"resolveTime","type":"uint64"},{"internalType":"uint64","name":"requestID","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string[]","name":"symbols","type":"string[]"},{"internalType":"uint64[]","name":"rates","type":"uint64[]"},{"internalType":"uint64","name":"resolveTime","type":"uint64"},{"internalType":"uint64","name":"requestID","type":"uint64"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"revokeRelayers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5061001c60003361004b565b6100467fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc43361004b565b6100ea565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166100e6576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556100a53390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b61159c806100f96000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806391d1485411610097578063d547741f11610066578063d547741f14610265578063e42a071b14610278578063eca6ac9e14610298578063efbf2160146102ab57600080fd5b806391d14854146101c1578063926d7d7f146101d4578063a217fddf146101e9578063ab480741146101f157600080fd5b806336568abe116100d357806336568abe146101685780633798c7f21461017b57806365555bcc1461018e57806386814d06146101ae57600080fd5b806301ffc9a7146100fa578063248a9ca3146101225780632f2ff15d14610153575b600080fd5b61010d610108366004610e8a565b6102be565b60405190151581526020015b60405180910390f35b610145610130366004610eb4565b60009081526020819052604090206001015490565b604051908152602001610119565b610166610161366004610ee9565b6102f5565b005b610166610176366004610ee9565b610320565b610166610189366004610f77565b6103a3565b6101a161019c3660046110bb565b6105b6565b604051610119919061111e565b6101666101bc366004610f77565b61063d565b61010d6101cf366004610ee9565b6107e0565b61014560008051602061154783398151915281565b610145600081565b61023b6101ff36600461113f565b80516020818301810180516001825292820191909301209152546001600160401b0380821691600160401b8104821691600160801b9091041683565b604080516001600160401b0394851681529284166020840152921691810191909152606001610119565b610166610273366004610ee9565b610809565b61028b610286366004611219565b61082f565b6040516101199190611272565b6101666102a63660046112d4565b610969565b6101666102b93660046112d4565b610a0d565b60006001600160e01b03198216637965db0b60e01b14806102ef57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000828152602081905260409020600101546103118133610aab565b61031b8383610b0f565b505050565b6001600160a01b03811633146103955760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61039f8282610b93565b5050565b6103bb600080516020611547833981519152336107e0565b6103f55760405162461bcd60e51b815260206004820152600b60248201526a2727aa20a922a620aca2a960a91b604482015260640161038c565b8285146104355760405162461bcd60e51b815260206004820152600e60248201526d0848288a482a88aa6988a9c8ea8960931b604482015260640161038c565b60005b858110156105ad576000600188888481811061045657610456611315565b9050602002810190610468919061132b565b604051610476929190611371565b90815260405190819003602001902080549091506001600160401b03600160401b9091048116908516111561059a5760405180606001604052808787858181106104c2576104c2611315565b90506020020160208101906104d79190611381565b6001600160401b03168152602001856001600160401b03168152602001846001600160401b0316815250600189898581811061051557610515611315565b9050602002810190610527919061132b565b604051610535929190611371565b9081526040805160209281900383019020835181549385015194909201516001600160401b039283166001600160801b031990941693909317600160401b948316949094029390931767ffffffffffffffff60801b1916600160801b91909216021790555b50806105a5816113b2565b915050610438565b50505050505050565b6105da60405180606001604052806000815260200160008152602001600081525090565b6000806105e685610bf8565b915091506000806105f686610bf8565b9150915060405180606001604052808386670de0b6b3a764000061061a91906113cb565b61062491906113ea565b8152602081019490945260409093015250949350505050565b610655600080516020611547833981519152336107e0565b61068f5760405162461bcd60e51b815260206004820152600b60248201526a2727aa20a922a620aca2a960a91b604482015260640161038c565b8285146106cf5760405162461bcd60e51b815260206004820152600e60248201526d0848288a482a88aa6988a9c8ea8960931b604482015260640161038c565b60005b858110156105ad5760405180606001604052808686848181106106f7576106f7611315565b905060200201602081019061070c9190611381565b6001600160401b03168152602001846001600160401b03168152602001836001600160401b0316815250600188888481811061074a5761074a611315565b905060200281019061075c919061132b565b60405161076a929190611371565b9081526040805160209281900383019020835181549385015194909201516001600160401b039283166001600160801b031990941693909317600160401b948316949094029390931767ffffffffffffffff60801b1916600160801b9190921602179055806107d8816113b2565b9150506106d2565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6000828152602081905260409020600101546108258133610aab565b61031b8383610b93565b606081518351146108755760405162461bcd60e51b815260206004820152601060248201526f0848288be929ca0aaa8be988a9c8ea8960831b604482015260640161038c565b82516000816001600160401b0381111561089157610891611006565b6040519080825280602002602001820160405280156108e657816020015b6108d360405180606001604052806000815260200160008152602001600081525090565b8152602001906001900390816108af5790505b50905060005b828110156109605761093086828151811061090957610909611315565b602002602001015186838151811061092357610923611315565b60200260200101516105b6565b82828151811061094257610942611315565b60200260200101819052508080610958906113b2565b9150506108ec565b50949350505050565b60008051602061154783398151915260009081526020527ffaf93c3d007e112089dc8351e013e6685ef67703975d0224b26fc45941d4f1f6546109ac8133610aab565b60005b82811015610a07576109f56000805160206115478339815191528585848181106109db576109db611315565b90506020020160208101906109f0919061140c565b610b93565b806109ff816113b2565b9150506109af565b50505050565b60008051602061154783398151915260009081526020527ffaf93c3d007e112089dc8351e013e6685ef67703975d0224b26fc45941d4f1f654610a508133610aab565b60005b82811015610a0757610a99600080516020611547833981519152858584818110610a7f57610a7f611315565b9050602002016020810190610a94919061140c565b610b0f565b80610aa3816113b2565b915050610a53565b610ab582826107e0565b61039f57610acd816001600160a01b03166014610ce8565b610ad8836020610ce8565b604051602001610ae9929190611453565b60408051601f198184030181529082905262461bcd60e51b825261038c916004016114c8565b610b1982826107e0565b61039f576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610b4f3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610b9d82826107e0565b1561039f576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6040805180820190915260038152621554d160ea1b60209182015281519082012060009081907f3b51de553f39ab628e2269fca481f424938614245776e4999eea436892e95d6201610c525750633b9aca00924292509050565b6000600184604051610c6491906114fb565b90815260405190819003602001902080549091506001600160401b03600160401b90910416610ccb5760405162461bcd60e51b8152602060048201526013602482015272524546444154414e4f54415641494c41424c4560681b604482015260640161038c565b546001600160401b0380821695600160401b909204169350915050565b60606000610cf78360026113cb565b610d02906002611517565b6001600160401b03811115610d1957610d19611006565b6040519080825280601f01601f191660200182016040528015610d43576020820181803683370190505b509050600360fc1b81600081518110610d5e57610d5e611315565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610d8d57610d8d611315565b60200101906001600160f81b031916908160001a9053506000610db18460026113cb565b610dbc906001611517565b90505b6001811115610e34576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110610df057610df0611315565b1a60f81b828281518110610e0657610e06611315565b60200101906001600160f81b031916908160001a90535060049490941c93610e2d8161152f565b9050610dbf565b508315610e835760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161038c565b9392505050565b600060208284031215610e9c57600080fd5b81356001600160e01b031981168114610e8357600080fd5b600060208284031215610ec657600080fd5b5035919050565b80356001600160a01b0381168114610ee457600080fd5b919050565b60008060408385031215610efc57600080fd5b82359150610f0c60208401610ecd565b90509250929050565b60008083601f840112610f2757600080fd5b5081356001600160401b03811115610f3e57600080fd5b6020830191508360208260051b8501011115610f5957600080fd5b9250929050565b80356001600160401b0381168114610ee457600080fd5b60008060008060008060808789031215610f9057600080fd5b86356001600160401b0380821115610fa757600080fd5b610fb38a838b01610f15565b90985096506020890135915080821115610fcc57600080fd5b50610fd989828a01610f15565b9095509350610fec905060408801610f60565b9150610ffa60608801610f60565b90509295509295509295565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561104457611044611006565b604052919050565b600082601f83011261105d57600080fd5b81356001600160401b0381111561107657611076611006565b611089601f8201601f191660200161101c565b81815284602083860101111561109e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156110ce57600080fd5b82356001600160401b03808211156110e557600080fd5b6110f18683870161104c565b9350602085013591508082111561110757600080fd5b506111148582860161104c565b9150509250929050565b815181526020808301519082015260408083015190820152606081016102ef565b60006020828403121561115157600080fd5b81356001600160401b0381111561116757600080fd5b6111738482850161104c565b949350505050565b600082601f83011261118c57600080fd5b813560206001600160401b03808311156111a8576111a8611006565b8260051b6111b783820161101c565b93845285810183019383810190888611156111d157600080fd5b84880192505b8583101561120d578235848111156111ef5760008081fd5b6111fd8a87838c010161104c565b83525091840191908401906111d7565b98975050505050505050565b6000806040838503121561122c57600080fd5b82356001600160401b038082111561124357600080fd5b61124f8683870161117b565b9350602085013591508082111561126557600080fd5b506111148582860161117b565b6020808252825182820181905260009190848201906040850190845b818110156112c8576112b58385518051825260208082015190830152604090810151910152565b928401926060929092019160010161128e565b50909695505050505050565b600080602083850312156112e757600080fd5b82356001600160401b038111156112fd57600080fd5b61130985828601610f15565b90969095509350505050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261134257600080fd5b8301803591506001600160401b0382111561135c57600080fd5b602001915036819003821315610f5957600080fd5b8183823760009101908152919050565b60006020828403121561139357600080fd5b610e8382610f60565b634e487b7160e01b600052601160045260246000fd5b6000600182016113c4576113c461139c565b5060010190565b60008160001904831182151516156113e5576113e561139c565b500290565b60008261140757634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561141e57600080fd5b610e8382610ecd565b60005b8381101561144257818101518382015260200161142a565b83811115610a075750506000910152565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161148b816017850160208801611427565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516114bc816028840160208801611427565b01602801949350505050565b60208152600082518060208401526114e7816040850160208701611427565b601f01601f19169190910160400192915050565b6000825161150d818460208701611427565b9190910192915050565b6000821982111561152a5761152a61139c565b500190565b60008161153e5761153e61139c565b50600019019056fee2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc4a26469706673582212205b1cd5a35ff020d97837715b009131411b4caaf80a8f92a91d09ef6441e50f3964736f6c634300080d0033
Deployed ByteCode Sourcemap
16309:4865:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9727:204;;;;;;:::i;:::-;;:::i;:::-;;;470:14:1;;463:22;445:41;;433:2;418:18;9727:204:0;;;;;;;;11154:131;;;;;;:::i;:::-;11228:7;11255:12;;;;;;;;;;:22;;;;11154:131;;;;828:25:1;;;816:2;801:18;11154:131:0;682:177:1;11547:147:0;;;;;;:::i;:::-;;:::i;:::-;;12595:218;;;;;;:::i;:::-;;:::i;18429:609::-;;;;;;:::i;:::-;;:::i;20217:414::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;19493:490::-;;;;;;:::i;:::-;;:::i;10023:147::-;;;;;;:::i;:::-;;:::i;16702:64::-;;-1:-1:-1;;;;;;;;;;;16702:64:0;;9114:49;;9159:4;9114:49;;16655:38;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16655:38:0;;;;-1:-1:-1;;;16655:38:0;;;;;-1:-1:-1;;;16655:38:0;;;;;;;;;;-1:-1:-1;;;;;5363:15:1;;;5345:34;;5415:15;;;5410:2;5395:18;;5388:43;5467:15;;5447:18;;;5440:43;;;;5296:2;5281:18;16655:38:0;5112:377:1;11939:149:0;;;;;;:::i;:::-;;:::i;15750:478::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;17709:236::-;;;;;;:::i;:::-;;:::i;17189:234::-;;;;;;:::i;:::-;;:::i;9727:204::-;9812:4;-1:-1:-1;;;;;;9836:47:0;;-1:-1:-1;;;9836:47:0;;:87;;-1:-1:-1;;;;;;;;;;4369:40:0;;;9887:36;9829:94;9727:204;-1:-1:-1;;9727:204:0:o;11547:147::-;11228:7;11255:12;;;;;;;;;;:22;;;9605:30;9616:4;689:10;9605;:30::i;:::-;11661:25:::1;11672:4;11678:7;11661:10;:25::i;:::-;11547:147:::0;;;:::o;12595:218::-;-1:-1:-1;;;;;12691:23:0;;689:10;12691:23;12683:83;;;;-1:-1:-1;;;12683:83:0;;8436:2:1;12683:83:0;;;8418:21:1;8475:2;8455:18;;;8448:30;8514:34;8494:18;;;8487:62;-1:-1:-1;;;8565:18:1;;;8558:45;8620:19;;12683:83:0;;;;;;;;;12779:26;12791:4;12797:7;12779:11;:26::i;:::-;12595:218;;:::o;18429:609::-;18605:33;-1:-1:-1;;;;;;;;;;;18627:10:0;18605:7;:33::i;:::-;18597:57;;;;-1:-1:-1;;;18597:57:0;;8852:2:1;18597:57:0;;;8834:21:1;8891:2;8871:18;;;8864:30;-1:-1:-1;;;8910:18:1;;;8903:41;8961:18;;18597:57:0;8650:335:1;18597:57:0;18673:30;;;18665:57;;;;-1:-1:-1;;;18665:57:0;;9192:2:1;18665:57:0;;;9174:21:1;9231:2;9211:18;;;9204:30;-1:-1:-1;;;9250:18:1;;;9243:44;9304:18;;18665:57:0;8990:338:1;18665:57:0;18738:11;18733:298;18755:20;;;18733:298;;;18799:19;18821:4;18826:7;;18834:3;18826:12;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;18821:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;18872:15;;18821:18;;-1:-1:-1;;;;;;;;;18872:15:0;;;;;18858:29;;;;18854:166;;;18929:75;;;;;;;;18944:5;;18950:3;18944:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18929:75:0;;;;;18969:11;-1:-1:-1;;;;;18929:75:0;;;;;18993:9;-1:-1:-1;;;;;18929:75:0;;;;18908:4;18913:7;;18921:3;18913:12;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;18908:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:96;;;;;;;;;;;;;-1:-1:-1;;;;;18908:96:0;;;-1:-1:-1;;;;;;18908:96:0;;;;;;;-1:-1:-1;;;18908:96:0;;;;;;;;;;;-1:-1:-1;;;;18908:96:0;-1:-1:-1;;;18908:96:0;;;;;;;;18854:166;-1:-1:-1;18777:5:0;;;;:::i;:::-;;;;18733:298;;;;18429:609;;;;;;:::o;20217:414::-;20314:20;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;20314:20:0;20348:16;20366:22;20392:17;20404:4;20392:11;:17::i;:::-;20347:62;;;;20421:17;20440:23;20467:18;20479:5;20467:11;:18::i;:::-;20420:65;;;;20503:120;;;;;;;;20544:9;20525:8;20536:4;20525:15;;;;:::i;:::-;20524:29;;;;:::i;:::-;20503:120;;;;;;;;;;;;;;-1:-1:-1;20503:120:0;20217:414;-1:-1:-1;;;;20217:414:0:o;19493:490::-;19674:33;-1:-1:-1;;;;;;;;;;;19696:10:0;19674:7;:33::i;:::-;19666:57;;;;-1:-1:-1;;;19666:57:0;;8852:2:1;19666:57:0;;;8834:21:1;8891:2;8871:18;;;8864:30;-1:-1:-1;;;8910:18:1;;;8903:41;8961:18;;19666:57:0;8650:335:1;19666:57:0;19742:30;;;19734:57;;;;-1:-1:-1;;;19734:57:0;;9192:2:1;19734:57:0;;;9174:21:1;9231:2;9211:18;;;9204:30;-1:-1:-1;;;9250:18:1;;;9243:44;9304:18;;19734:57:0;8990:338:1;19734:57:0;19807:11;19802:174;19824:20;;;19802:174;;;19889:75;;;;;;;;19904:5;;19910:3;19904:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19889:75:0;;;;;19929:11;-1:-1:-1;;;;;19889:75:0;;;;;19953:9;-1:-1:-1;;;;;19889:75:0;;;;19868:4;19873:7;;19881:3;19873:12;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;19868:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:96;;;;;;;;;;;;;-1:-1:-1;;;;;19868:96:0;;;-1:-1:-1;;;;;;19868:96:0;;;;;;;-1:-1:-1;;;19868:96:0;;;;;;;;;;;-1:-1:-1;;;;19868:96:0;-1:-1:-1;;;19868:96:0;;;;;;;;19846:5;;;;:::i;:::-;;;;19802:174;;10023:147;10109:4;10133:12;;;;;;;;;;;-1:-1:-1;;;;;10133:29:0;;;;;;;;;;;;;;;10023:147::o;11939:149::-;11228:7;11255:12;;;;;;;;;;:22;;;9605:30;9616:4;689:10;9605;:30::i;:::-;12054:26:::1;12066:4;12072:7;12054:11;:26::i;15750:478::-:0;15859:22;15919:7;:14;15902:6;:13;:31;15894:60;;;;-1:-1:-1;;;15894:60:0;;11328:2:1;15894:60:0;;;11310:21:1;11367:2;11347:18;;;11340:30;-1:-1:-1;;;11386:18:1;;;11379:46;11442:18;;15894:60:0;11126:340:1;15894:60:0;15979:13;;15965:11;15979:13;-1:-1:-1;;;;;16036:24:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;16036:24:0;;;;;;;;;;;;;;;;;16003:57;;16076:11;16071:125;16099:3;16093;:9;16071:125;;;16141:43;16158:6;16165:3;16158:11;;;;;;;;:::i;:::-;;;;;;;16171:7;16179:3;16171:12;;;;;;;;:::i;:::-;;;;;;;16141:16;:43::i;:::-;16126:7;16134:3;16126:12;;;;;;;;:::i;:::-;;;;;;:58;;;;16104:5;;;;;:::i;:::-;;;;16071:125;;;-1:-1:-1;16213:7:0;15750:478;-1:-1:-1;;;;15750:478:0:o;17709:236::-;-1:-1:-1;;;;;;;;;;;11228:7:0;11255:12;;;;;:22;;9605:30;9616:4;689:10;9605;:30::i;:::-;17824:11:::1;17819:119;17841:21:::0;;::::1;17819:119;;;17886:40;-1:-1:-1::0;;;;;;;;;;;17912:8:0::1;;17921:3;17912:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;17886:11;:40::i;:::-;17864:5:::0;::::1;::::0;::::1;:::i;:::-;;;;17819:119;;;;17709:236:::0;;;:::o;17189:234::-;-1:-1:-1;;;;;;;;;;;11228:7:0;11255:12;;;;;:22;;9605:30;9616:4;689:10;9605;:30::i;:::-;17303:11:::1;17298:118;17320:21:::0;;::::1;17298:118;;;17365:39;-1:-1:-1::0;;;;;;;;;;;17390:8:0::1;;17399:3;17390:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;17365:10;:39::i;:::-;17343:5:::0;::::1;::::0;::::1;:::i;:::-;;;;17298:118;;10460:505:::0;10549:22;10557:4;10563:7;10549;:22::i;:::-;10544:414;;10737:41;10765:7;-1:-1:-1;;;;;10737:41:0;10775:2;10737:19;:41::i;:::-;10851:38;10879:4;10886:2;10851:19;:38::i;:::-;10642:270;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;10642:270:0;;;;;;;;;;-1:-1:-1;;;10588:358:0;;;;;;;:::i;14096:238::-;14180:22;14188:4;14194:7;14180;:22::i;:::-;14175:152;;14219:6;:12;;;;;;;;;;;-1:-1:-1;;;;;14219:29:0;;;;;;;;;:36;;-1:-1:-1;;14219:36:0;14251:4;14219:36;;;14302:12;689:10;;609:98;14302:12;-1:-1:-1;;;;;14275:40:0;14293:7;-1:-1:-1;;;;;14275:40:0;14287:4;14275:40;;;;;;;;;;14096:238;;:::o;14466:239::-;14550:22;14558:4;14564:7;14550;:22::i;:::-;14546:152;;;14621:5;14589:12;;;;;;;;;;;-1:-1:-1;;;;;14589:29:0;;;;;;;;;;:37;;-1:-1:-1;;14589:37:0;;;14646:40;689:10;;14589:12;;14646:40;;14621:5;14646:40;14466:239;;:::o;20754:417::-;20907:12;;;;;;;;;;;;-1:-1:-1;;;20907:12:0;;;;;20869:24;;;;;;20820:12;;;;20869:51;;20865:113;;-1:-1:-1;20945:3:0;;20950:15;;-1:-1:-1;20754:417:0;-1:-1:-1;20754:417:0:o;20865:113::-;20988:23;21014:4;21019:6;21014:12;;;;;;:::i;:::-;;;;;;;;;;;;;;21045:19;;21014:12;;-1:-1:-1;;;;;;;;;21045:19:0;;;;21037:55;;;;-1:-1:-1;;;21037:55:0;;13587:2:1;21037:55:0;;;13569:21:1;13626:2;13606:18;;;13599:30;-1:-1:-1;;;13645:18:1;;;13638:49;13704:18;;21037:55:0;13385:343:1;21037:55:0;21119:12;-1:-1:-1;;;;;21119:12:0;;;;-1:-1:-1;;;21142:19:0;;;;;-1:-1:-1;20754:417:0;-1:-1:-1;;20754:417:0:o;2352:451::-;2427:13;2453:19;2485:10;2489:6;2485:1;:10;:::i;:::-;:14;;2498:1;2485:14;:::i;:::-;-1:-1:-1;;;;;2475:25:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2475:25:0;;2453:47;;-1:-1:-1;;;2511:6:0;2518:1;2511:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;2511:15:0;;;;;;;;;-1:-1:-1;;;2537:6:0;2544:1;2537:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;2537:15:0;;;;;;;;-1:-1:-1;2568:9:0;2580:10;2584:6;2580:1;:10;:::i;:::-;:14;;2593:1;2580:14;:::i;:::-;2568:26;;2563:135;2600:1;2596;:5;2563:135;;;-1:-1:-1;;;2648:5:0;2656:3;2648:11;2635:25;;;;;;;:::i;:::-;;;;2623:6;2630:1;2623:9;;;;;;;;:::i;:::-;;;;:37;-1:-1:-1;;;;;2623:37:0;;;;;;;;-1:-1:-1;2685:1:0;2675:11;;;;;2603:3;;;:::i;:::-;;;2563:135;;;-1:-1:-1;2716:10:0;;2708:55;;;;-1:-1:-1;;;2708:55:0;;14209:2:1;2708:55:0;;;14191:21:1;;;14228:18;;;14221:30;14287:34;14267:18;;;14260:62;14339:18;;2708:55:0;14007:356:1;2708:55:0;2788:6;2352:451;-1:-1:-1;;;2352:451:0:o;14:286:1:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:1;;209:43;;199:71;;266:1;263;256:12;497:180;556:6;609:2;597:9;588:7;584:23;580:32;577:52;;;625:1;622;615:12;577:52;-1:-1:-1;648:23:1;;497:180;-1:-1:-1;497:180:1:o;864:173::-;932:20;;-1:-1:-1;;;;;981:31:1;;971:42;;961:70;;1027:1;1024;1017:12;961:70;864:173;;;:::o;1042:254::-;1110:6;1118;1171:2;1159:9;1150:7;1146:23;1142:32;1139:52;;;1187:1;1184;1177:12;1139:52;1223:9;1210:23;1200:33;;1252:38;1286:2;1275:9;1271:18;1252:38;:::i;:::-;1242:48;;1042:254;;;;;:::o;1301:375::-;1372:8;1382:6;1436:3;1429:4;1421:6;1417:17;1413:27;1403:55;;1454:1;1451;1444:12;1403:55;-1:-1:-1;1477:20:1;;-1:-1:-1;;;;;1509:30:1;;1506:50;;;1552:1;1549;1542:12;1506:50;1589:4;1581:6;1577:17;1565:29;;1649:3;1642:4;1632:6;1629:1;1625:14;1617:6;1613:27;1609:38;1606:47;1603:67;;;1666:1;1663;1656:12;1603:67;1301:375;;;;;:::o;1681:171::-;1748:20;;-1:-1:-1;;;;;1797:30:1;;1787:41;;1777:69;;1842:1;1839;1832:12;1857:945;2006:6;2014;2022;2030;2038;2046;2099:3;2087:9;2078:7;2074:23;2070:33;2067:53;;;2116:1;2113;2106:12;2067:53;2156:9;2143:23;-1:-1:-1;;;;;2226:2:1;2218:6;2215:14;2212:34;;;2242:1;2239;2232:12;2212:34;2281:78;2351:7;2342:6;2331:9;2327:22;2281:78;:::i;:::-;2378:8;;-1:-1:-1;2255:104:1;-1:-1:-1;2466:2:1;2451:18;;2438:32;;-1:-1:-1;2482:16:1;;;2479:36;;;2511:1;2508;2501:12;2479:36;;2550:80;2622:7;2611:8;2600:9;2596:24;2550:80;:::i;:::-;2649:8;;-1:-1:-1;2524:106:1;-1:-1:-1;2703:37:1;;-1:-1:-1;2736:2:1;2721:18;;2703:37;:::i;:::-;2693:47;;2759:37;2792:2;2781:9;2777:18;2759:37;:::i;:::-;2749:47;;1857:945;;;;;;;;:::o;2807:127::-;2868:10;2863:3;2859:20;2856:1;2849:31;2899:4;2896:1;2889:15;2923:4;2920:1;2913:15;2939:275;3010:2;3004:9;3075:2;3056:13;;-1:-1:-1;;3052:27:1;3040:40;;-1:-1:-1;;;;;3095:34:1;;3131:22;;;3092:62;3089:88;;;3157:18;;:::i;:::-;3193:2;3186:22;2939:275;;-1:-1:-1;2939:275:1:o;3219:531::-;3262:5;3315:3;3308:4;3300:6;3296:17;3292:27;3282:55;;3333:1;3330;3323:12;3282:55;3369:6;3356:20;-1:-1:-1;;;;;3391:2:1;3388:26;3385:52;;;3417:18;;:::i;:::-;3461:55;3504:2;3485:13;;-1:-1:-1;;3481:27:1;3510:4;3477:38;3461:55;:::i;:::-;3541:2;3532:7;3525:19;3587:3;3580:4;3575:2;3567:6;3563:15;3559:26;3556:35;3553:55;;;3604:1;3601;3594:12;3553:55;3669:2;3662:4;3654:6;3650:17;3643:4;3634:7;3630:18;3617:55;3717:1;3692:16;;;3710:4;3688:27;3681:38;;;;3696:7;3219:531;-1:-1:-1;;;3219:531:1:o;3755:543::-;3843:6;3851;3904:2;3892:9;3883:7;3879:23;3875:32;3872:52;;;3920:1;3917;3910:12;3872:52;3960:9;3947:23;-1:-1:-1;;;;;4030:2:1;4022:6;4019:14;4016:34;;;4046:1;4043;4036:12;4016:34;4069:50;4111:7;4102:6;4091:9;4087:22;4069:50;:::i;:::-;4059:60;;4172:2;4161:9;4157:18;4144:32;4128:48;;4201:2;4191:8;4188:16;4185:36;;;4217:1;4214;4207:12;4185:36;;4240:52;4284:7;4273:8;4262:9;4258:24;4240:52;:::i;:::-;4230:62;;;3755:543;;;;;:::o;4518:262::-;4382:12;;4370:25;;4444:4;4433:16;;;4427:23;4411:14;;;4404:47;4500:4;4489:16;;;4483:23;4467:14;;;4460:47;4712:2;4697:18;;4724:50;4303:210;4785:322;4854:6;4907:2;4895:9;4886:7;4882:23;4878:32;4875:52;;;4923:1;4920;4913:12;4875:52;4963:9;4950:23;-1:-1:-1;;;;;4988:6:1;4985:30;4982:50;;;5028:1;5025;5018:12;4982:50;5051;5093:7;5084:6;5073:9;5069:22;5051:50;:::i;:::-;5041:60;4785:322;-1:-1:-1;;;;4785:322:1:o;5494:943::-;5547:5;5600:3;5593:4;5585:6;5581:17;5577:27;5567:55;;5618:1;5615;5608:12;5567:55;5654:6;5641:20;5680:4;-1:-1:-1;;;;;5740:2:1;5736;5733:10;5730:36;;;5746:18;;:::i;:::-;5792:2;5789:1;5785:10;5815:28;5839:2;5835;5831:11;5815:28;:::i;:::-;5877:15;;;5947;;;5943:24;;;5908:12;;;;5979:15;;;5976:35;;;6007:1;6004;5997:12;5976:35;6043:2;6035:6;6031:15;6020:26;;6055:353;6071:6;6066:3;6063:15;6055:353;;;6157:3;6144:17;6193:2;6180:11;6177:19;6174:109;;;6237:1;6266:2;6262;6255:14;6174:109;6308:57;6361:3;6356:2;6342:11;6334:6;6330:24;6326:33;6308:57;:::i;:::-;6296:70;;-1:-1:-1;6088:12:1;;;;6386;;;;6055:353;;;6426:5;5494:943;-1:-1:-1;;;;;;;;5494:943:1:o;6442:613::-;6580:6;6588;6641:2;6629:9;6620:7;6616:23;6612:32;6609:52;;;6657:1;6654;6647:12;6609:52;6697:9;6684:23;-1:-1:-1;;;;;6767:2:1;6759:6;6756:14;6753:34;;;6783:1;6780;6773:12;6753:34;6806:60;6858:7;6849:6;6838:9;6834:22;6806:60;:::i;:::-;6796:70;;6919:2;6908:9;6904:18;6891:32;6875:48;;6948:2;6938:8;6935:16;6932:36;;;6964:1;6961;6954:12;6932:36;;6987:62;7041:7;7030:8;7019:9;7015:24;6987:62;:::i;7060:719::-;7291:2;7343:21;;;7413:13;;7316:18;;;7435:22;;;7262:4;;7291:2;7514:15;;;;7488:2;7473:18;;;7262:4;7557:196;7571:6;7568:1;7565:13;7557:196;;;7620:51;7667:3;7658:6;7652:13;4382:12;;4370:25;;4444:4;4433:16;;;4427:23;4411:14;;;4404:47;4500:4;4489:16;;;4483:23;4467:14;;4460:47;4303:210;7620:51;7728:15;;;;7700:4;7691:14;;;;;7593:1;7586:9;7557:196;;;-1:-1:-1;7770:3:1;;7060:719;-1:-1:-1;;;;;;7060:719:1:o;7784:445::-;7870:6;7878;7931:2;7919:9;7910:7;7906:23;7902:32;7899:52;;;7947:1;7944;7937:12;7899:52;7987:9;7974:23;-1:-1:-1;;;;;8012:6:1;8009:30;8006:50;;;8052:1;8049;8042:12;8006:50;8091:78;8161:7;8152:6;8141:9;8137:22;8091:78;:::i;:::-;8188:8;;8065:104;;-1:-1:-1;7784:445:1;-1:-1:-1;;;;7784:445:1:o;9333:127::-;9394:10;9389:3;9385:20;9382:1;9375:31;9425:4;9422:1;9415:15;9449:4;9446:1;9439:15;9465:522;9543:4;9549:6;9609:11;9596:25;9703:2;9699:7;9688:8;9672:14;9668:29;9664:43;9644:18;9640:68;9630:96;;9722:1;9719;9712:12;9630:96;9749:33;;9801:20;;;-1:-1:-1;;;;;;9833:30:1;;9830:50;;;9876:1;9873;9866:12;9830:50;9909:4;9897:17;;-1:-1:-1;9940:14:1;9936:27;;;9926:38;;9923:58;;;9977:1;9974;9967:12;9992:273;10177:6;10169;10164:3;10151:33;10133:3;10203:16;;10228:13;;;10203:16;9992:273;-1:-1:-1;9992:273:1:o;10270:184::-;10328:6;10381:2;10369:9;10360:7;10356:23;10352:32;10349:52;;;10397:1;10394;10387:12;10349:52;10420:28;10438:9;10420:28;:::i;10459:127::-;10520:10;10515:3;10511:20;10508:1;10501:31;10551:4;10548:1;10541:15;10575:4;10572:1;10565:15;10591:135;10630:3;10651:17;;;10648:43;;10671:18;;:::i;:::-;-1:-1:-1;10718:1:1;10707:13;;10591:135::o;10731:168::-;10771:7;10837:1;10833;10829:6;10825:14;10822:1;10819:21;10814:1;10807:9;10800:17;10796:45;10793:71;;;10844:18;;:::i;:::-;-1:-1:-1;10884:9:1;;10731:168::o;10904:217::-;10944:1;10970;10960:132;;11014:10;11009:3;11005:20;11002:1;10995:31;11049:4;11046:1;11039:15;11077:4;11074:1;11067:15;10960:132;-1:-1:-1;11106:9:1;;10904:217::o;11471:186::-;11530:6;11583:2;11571:9;11562:7;11558:23;11554:32;11551:52;;;11599:1;11596;11589:12;11551:52;11622:29;11641:9;11622:29;:::i;11662:258::-;11734:1;11744:113;11758:6;11755:1;11752:13;11744:113;;;11834:11;;;11828:18;11815:11;;;11808:39;11780:2;11773:10;11744:113;;;11875:6;11872:1;11869:13;11866:48;;;-1:-1:-1;;11910:1:1;11892:16;;11885:27;11662:258::o;11925:786::-;12336:25;12331:3;12324:38;12306:3;12391:6;12385:13;12407:62;12462:6;12457:2;12452:3;12448:12;12441:4;12433:6;12429:17;12407:62;:::i;:::-;-1:-1:-1;;;12528:2:1;12488:16;;;12520:11;;;12513:40;12578:13;;12600:63;12578:13;12649:2;12641:11;;12634:4;12622:17;;12600:63;:::i;:::-;12683:17;12702:2;12679:26;;11925:786;-1:-1:-1;;;;11925:786:1:o;12716:383::-;12865:2;12854:9;12847:21;12828:4;12897:6;12891:13;12940:6;12935:2;12924:9;12920:18;12913:34;12956:66;13015:6;13010:2;12999:9;12995:18;12990:2;12982:6;12978:15;12956:66;:::i;:::-;13083:2;13062:15;-1:-1:-1;;13058:29:1;13043:45;;;;13090:2;13039:54;;12716:383;-1:-1:-1;;12716:383:1:o;13104:276::-;13235:3;13273:6;13267:13;13289:53;13335:6;13330:3;13323:4;13315:6;13311:17;13289:53;:::i;:::-;13358:16;;;;;13104:276;-1:-1:-1;;13104:276:1:o;13733:128::-;13773:3;13804:1;13800:6;13797:1;13794:13;13791:39;;;13810:18;;:::i;:::-;-1:-1:-1;13846:9:1;;13733:128::o;13866:136::-;13905:3;13933:5;13923:39;;13942:18;;:::i;:::-;-1:-1:-1;;;13978:18:1;;13866:136::o
Swarm Source
ipfs://5b1cd5a35ff020d97837715b009131411b4caaf80a8f92a91d09ef6441e50f39
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.