ERC-20
Overview
Max Total Supply
7,537,584,424.032926645682440707 DRIFT
Holders
927 (0.00%)
Market
Price
$0.00 @ 0.000000 ETH (-2.73%)
Onchain Market Cap
$616,800.53
Circulating Supply Market Cap
$219,542.00
Other Info
Token Contract (WITH 18 Decimals)
Balance
3,561,199 DRIFTValue
$291.41 ( ~0.0869190140541427 Eth) [0.0472%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
DriftProxy
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-04-15 */ // File: @openzeppelin/contracts/utils/StorageSlot.sol // OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol) // This file was procedurally generated from scripts/generate/templates/StorageSlot.js. pragma solidity ^0.8.20; /** * @dev Library for reading and writing primitive types to specific storage slots. * * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. * This library helps with reading and writing to such slots without the need for inline assembly. * * The functions in this library return Slot structs that contain a `value` member that can be used to read or write. * * Example usage to set ERC1967 implementation slot: * ```solidity * contract ERC1967 { * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; * * function _getImplementation() internal view returns (address) { * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; * } * * function _setImplementation(address newImplementation) internal { * require(newImplementation.code.length > 0); * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; * } * } * ``` */ library StorageSlot { struct AddressSlot { address value; } struct BooleanSlot { bool value; } struct Bytes32Slot { bytes32 value; } struct Uint256Slot { uint256 value; } struct StringSlot { string value; } struct BytesSlot { bytes value; } /** * @dev Returns an `AddressSlot` with member `value` located at `slot`. */ function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := slot } } /** * @dev Returns an `BooleanSlot` with member `value` located at `slot`. */ function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := slot } } /** * @dev Returns an `Bytes32Slot` with member `value` located at `slot`. */ function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := slot } } /** * @dev Returns an `Uint256Slot` with member `value` located at `slot`. */ function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := slot } } /** * @dev Returns an `StringSlot` with member `value` located at `slot`. */ function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := slot } } /** * @dev Returns an `StringSlot` representation of the string storage pointer `store`. */ function getStringSlot(string storage store) internal pure returns (StringSlot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := store.slot } } /** * @dev Returns an `BytesSlot` with member `value` located at `slot`. */ function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := slot } } /** * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`. */ function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := store.slot } } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol) pragma solidity ^0.8.20; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev The ETH balance of the account is not enough to perform the operation. */ error AddressInsufficientBalance(address account); /** * @dev There's no code at `target` (it is not a contract). */ error AddressEmptyCode(address target); /** * @dev A call to an address target failed. The target may have reverted. */ error FailedInnerCall(); /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { if (address(this).balance < amount) { revert AddressInsufficientBalance(address(this)); } (bool success, ) = recipient.call{value: amount}(""); if (!success) { revert FailedInnerCall(); } } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason or custom error, it is bubbled * up by this function (like regular Solidity function calls). However, if * the call reverted with no returned reason, this function reverts with a * {FailedInnerCall} error. * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { if (address(this).balance < value) { revert AddressInsufficientBalance(address(this)); } (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an * unsuccessful call. */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata ) internal view returns (bytes memory) { if (!success) { _revert(returndata); } else { // only check if target is a contract if the call was successful and the return data is empty // otherwise we already know that it was a contract if (returndata.length == 0 && target.code.length == 0) { revert AddressEmptyCode(target); } return returndata; } } /** * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the * revert reason or with a default {FailedInnerCall} error. */ function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) { if (!success) { _revert(returndata); } else { return returndata; } } /** * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}. */ function _revert(bytes memory returndata) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert FailedInnerCall(); } } } // File: DriftProxy.sol pragma solidity ^0.8.20; /** * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to * be specified by overriding the virtual {_implementation} function. * * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a * different contract through the {_delegate} function. * * The success and return data of the delegated call will be returned back to the caller of the proxy. */ abstract contract Proxy { /** * @dev Delegates the current call to `implementation`. * * This function does not return to its internal call site, it will return directly to the external caller. */ function _delegate(address implementation) internal { assembly { // Copy msg.data. We take full control of memory in this inline assembly // block because it will not return to Solidity code. We overwrite the // Solidity scratch pad at memory position 0. calldatacopy(0, 0, calldatasize()) // Call the implementation. // out and outsize are 0 because we don't know the size yet. let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0) // Copy the returned data. returndatacopy(0, 0, returndatasize()) switch result // delegatecall returns 0 on error. case 0 { revert(0, returndatasize()) } default { return(0, returndatasize()) } } } /** * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function * and {_fallback} should delegate. */ function _implementation() internal view virtual returns (address); /** * @dev Delegates the current call to the address returned by `_implementation()`. * * This function does not return to its internal call site, it will return directly to the external caller. */ function _fallback() internal { _beforeFallback(); _delegate(_implementation()); } /** * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other * function in the contract matches the call data. */ fallback() external payable { _fallback(); } /** * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data * is empty. */ receive() external payable { _fallback(); } /** * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback` * call, or as part of the Solidity `fallback` or `receive` functions. * * If overridden should call `super._beforeFallback()`. */ function _beforeFallback() internal {} } /** * @dev This abstract contract provides getters and event emitting update functions for * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. */ abstract contract ERC1967Upgrade { // This is the keccak-256 hash of "drift.token.proxy.rollback" subtracted by 1 bytes32 private constant _ROLLBACK_SLOT = 0x9843adc2ce1ee58312ba81786d469e32c03edf6b0879757a3b7f4a49a98bfbc7; /** * @dev Storage slot with the address of the current implementation. * This is the keccak-256 hash of "drift.token.proxy.implementation" subtracted by 1, and is * validated in the constructor. */ bytes32 internal constant _IMPLEMENTATION_SLOT = 0x20882e7e0b3c1661dc1474ff6a22afb8e557e42e9ade77c07c8ee84ac37bea1b; /** * @dev Emitted when the implementation is upgraded. */ event Upgraded(address indexed implementation); /** * @dev Returns the current implementation address. */ function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } /** * @dev Stores a new address in the EIP1967 implementation slot. */ function _setImplementation(address newImplementation) private { if (newImplementation.code.length == 0) { revert("not contract"); } StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } /** * @dev Perform implementation upgrade * * Emits an {Upgraded} event. */ function _upgradeTo(address newImplementation) internal { _setImplementation(newImplementation); emit Upgraded(newImplementation); } /** * @dev Perform implementation upgrade with additional setup call. * * Emits an {Upgraded} event. */ function _upgradeToAndCall( address newImplementation, bytes memory data, bool forceCall ) internal { _upgradeTo(newImplementation); if (data.length > 0 || forceCall) { Address.functionDelegateCall(newImplementation, data); } } /** * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call. * * Emits an {Upgraded} event. */ function _upgradeToAndCallSecure( address newImplementation, bytes memory data, bool forceCall ) internal { address oldImplementation = _getImplementation(); // Initial upgrade and setup call _setImplementation(newImplementation); if (data.length > 0 || forceCall) { Address.functionDelegateCall(newImplementation, data); } // Perform rollback test if not already in progress StorageSlot.BooleanSlot storage rollbackTesting = StorageSlot.getBooleanSlot( _ROLLBACK_SLOT ); if (!rollbackTesting.value) { // Trigger rollback using upgradeTo from the new implementation rollbackTesting.value = true; Address.functionDelegateCall( newImplementation, abi.encodeWithSignature("upgradeTo(address)", oldImplementation) ); rollbackTesting.value = false; // Check rollback was effective require( oldImplementation == _getImplementation(), "ERC1967Upgrade: upgrade breaks further upgrades" ); // Finally reset to the new implementation and log the upgrade _upgradeTo(newImplementation); } } /** * @dev Storage slot with the admin of the contract. * This is the keccak-256 hash of "drift.token.proxy.admin" subtracted by 1, and is * validated in the constructor. */ bytes32 internal constant _ADMIN_SLOT = 0x444d5549c1b0fc679fe1d30daefb9b9e9d70ad980174932fc88b58cd57e10211; /** * @dev Emitted when the admin account has changed. */ event AdminChanged(address previousAdmin, address newAdmin); /** * @dev Returns the current admin. */ function _getAdmin() internal view returns (address) { return StorageSlot.getAddressSlot(_ADMIN_SLOT).value; } /** * @dev Stores a new address in the EIP1967 admin slot. */ function _setAdmin(address newAdmin) private { require(newAdmin != address(0), "ERC1967: new admin is the zero address"); StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin; } /** * @dev Changes the admin of the proxy. * * Emits an {AdminChanged} event. */ function _changeAdmin(address newAdmin) internal { emit AdminChanged(_getAdmin(), newAdmin); _setAdmin(newAdmin); } } contract DriftProxy is Proxy, ERC1967Upgrade { constructor(address _logic, bytes memory _data) payable { assert( _IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("drift.token.proxy.implementation")) - 1) && _ADMIN_SLOT == bytes32(uint256(keccak256("drift.token.proxy.admin")) - 1) ); _upgradeToAndCall(_logic, _data, false); _changeAdmin(msg.sender); } modifier isProxyAdmin() { if (msg.sender == _getAdmin()) { _; } } modifier isProxyAdminWithFallback() { if (msg.sender == _getAdmin()) { _; } else { _fallback(); } } /** * @dev Returns the current implementation address. */ function _implementation() internal view virtual override returns (address impl) { return ERC1967Upgrade._getImplementation(); } /** * @return impl The address of the implementation. */ function implementation() external view isProxyAdmin returns (address impl) { return _implementation(); } /** * @return adm The address of the proxy admin. */ function admin() external view isProxyAdmin returns (address adm) { return _getAdmin(); } /** * @dev Changes the admin of the proxy. * Only the current admin can call this function. * @param newAdmin Address to transfer proxy administration to. */ function changeAdmin(address newAdmin) external isProxyAdminWithFallback { _changeAdmin(newAdmin); } /** * @dev Upgrade the backing implementation of the proxy. * Only the admin can call this function. * @param newImplementation Address of the new implementation. */ function upgradeTo(address newImplementation) external isProxyAdminWithFallback { _upgradeTo(newImplementation); } /** * @dev Upgrade the backing implementation of the proxy and call a function * on the new implementation. * This is useful to initialize the proxied contract. * @param newImplementation Address of the new implementation. * @param data Data to send as msg.data in the low level call. * @param forceCall Boolean check to force call. * It should include the signature and the parameters of the function to be * called, as described in * https://solidity.readthedocs.io/en/develop/abi-spec.html#function-selector-and-argument-encoding. */ function upgradeToAndCall( address newImplementation, bytes memory data, bool forceCall ) external payable isProxyAdminWithFallback { _upgradeToAndCall(newImplementation, data, forceCall); } /** * @dev Upgrade the backing implementation of the proxy and call a function * on the new implementation. * This is useful to initialize the proxied contract. * @param newImplementation Address of the new implementation. * @param data Data to send as msg.data in the low level call. * @param forceCall Boolean check to force call. * It should include the signature and the parameters of the function to be * called, as described in * https://solidity.readthedocs.io/en/develop/abi-spec.html#function-selector-and-argument-encoding. */ function upgradeToAndCallSecure( address newImplementation, bytes memory data, bool forceCall ) external payable isProxyAdminWithFallback { _upgradeToAndCallSecure(newImplementation, data, forceCall); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"adm","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"impl","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bool","name":"forceCall","type":"bool"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bool","name":"forceCall","type":"bool"}],"name":"upgradeToAndCallSecure","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526040516200191e3803806200191e83398181016040528101906200002991906200077e565b60017f20882e7e0b3c1661dc1474ff6a22afb8e557e42e9ade77c07c8ee84ac37bea1c5f1c6200005a919062000818565b5f1b7f20882e7e0b3c1661dc1474ff6a22afb8e557e42e9ade77c07c8ee84ac37bea1b5f1b148015620000e0575060017f444d5549c1b0fc679fe1d30daefb9b9e9d70ad980174932fc88b58cd57e102125f1c620000b9919062000818565b5f1b7f444d5549c1b0fc679fe1d30daefb9b9e9d70ad980174932fc88b58cd57e102115f1b145b620000f057620000ef62000852565b5b6200010382825f6200011c60201b60201c565b62000114336200015960201b60201c565b505062000a4a565b6200012d83620001b760201b60201c565b5f825111806200013a5750805b1562000154576200015283836200020e60201b60201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200018a6200029a60201b60201c565b826040516200019b92919062000890565b60405180910390a1620001b481620002f560201b60201c565b50565b620001c881620003dc60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60605f808473ffffffffffffffffffffffffffffffffffffffff168460405162000239919062000905565b5f60405180830381855af49150503d805f811462000273576040519150601f19603f3d011682016040523d82523d5f602084013e62000278565b606091505b509150915062000290858383620004ae60201b60201c565b9250505092915050565b5f620002ce7f444d5549c1b0fc679fe1d30daefb9b9e9d70ad980174932fc88b58cd57e102115f1b6200054a60201b60201c565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000366576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200035d90620009a1565b60405180910390fd5b806200039a7f444d5549c1b0fc679fe1d30daefb9b9e9d70ad980174932fc88b58cd57e102115f1b6200054a60201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b0362000438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200042f9062000a0f565b60405180910390fd5b806200046c7f20882e7e0b3c1661dc1474ff6a22afb8e557e42e9ade77c07c8ee84ac37bea1b5f1b6200054a60201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606082620004cd57620004c7826200055360201b60201c565b62000542565b5f8251148015620004f457505f8473ffffffffffffffffffffffffffffffffffffffff163b145b156200053957836040517f9996b31500000000000000000000000000000000000000000000000000000000815260040162000530919062000a2f565b60405180910390fd5b81905062000543565b5b9392505050565b5f819050919050565b5f81511115620005665780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620005d482620005a9565b9050919050565b620005e681620005c8565b8114620005f1575f80fd5b50565b5f815190506200060481620005db565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6200065a8262000612565b810181811067ffffffffffffffff821117156200067c576200067b62000622565b5b80604052505050565b5f6200069062000598565b90506200069e82826200064f565b919050565b5f67ffffffffffffffff821115620006c057620006bf62000622565b5b620006cb8262000612565b9050602081019050919050565b5f5b83811015620006f7578082015181840152602081019050620006da565b5f8484015250505050565b5f620007186200071284620006a3565b62000685565b9050828152602081018484840111156200073757620007366200060e565b5b62000744848285620006d8565b509392505050565b5f82601f8301126200076357620007626200060a565b5b81516200077584826020860162000702565b91505092915050565b5f8060408385031215620007975762000796620005a1565b5b5f620007a685828601620005f4565b925050602083015167ffffffffffffffff811115620007ca57620007c9620005a5565b5b620007d8858286016200074c565b9150509250929050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200082482620007e2565b91506200083183620007e2565b92508282039050818111156200084c576200084b620007eb565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b6200088a81620005c8565b82525050565b5f604082019050620008a55f8301856200087f565b620008b460208301846200087f565b9392505050565b5f81519050919050565b5f81905092915050565b5f620008db82620008bb565b620008e78185620008c5565b9350620008f9818560208601620006d8565b80840191505092915050565b5f620009128284620008cf565b915081905092915050565b5f82825260208201905092915050565b7f455243313936373a206e65772061646d696e20697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f620009896026836200091d565b915062000996826200092d565b604082019050919050565b5f6020820190508181035f830152620009ba816200097b565b9050919050565b7f6e6f7420636f6e747261637400000000000000000000000000000000000000005f82015250565b5f620009f7600c836200091d565b915062000a0482620009c1565b602082019050919050565b5f6020820190508181035f83015262000a2881620009e9565b9050919050565b5f60208201905062000a445f8301846200087f565b92915050565b610ec68062000a585f395ff3fe608060405260043610610058575f3560e01c806306d2e426146100715780633659cfe61461008d578063559e0e03146100b55780635c60da1b146100d15780638f283970146100fb578063f851a4401461012357610067565b366100675761006561014d565b005b61006f61014d565b005b61008b60048036038101906100869190610b94565b610167565b005b348015610098575f80fd5b506100b360048036038101906100ae9190610c00565b6101bf565b005b6100cf60048036038101906100ca9190610b94565b610213565b005b3480156100dc575f80fd5b506100e561026b565b6040516100f29190610c3a565b60405180910390f35b348015610106575f80fd5b50610121600480360381019061011c9190610c00565b6102b4565b005b34801561012e575f80fd5b50610137610308565b6040516101449190610c3a565b60405180910390f35b610155610351565b610165610160610353565b610361565b565b61016f610380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036101b1576101ac8383836103d3565b6101ba565b6101b961014d565b5b505050565b6101c7610380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361020757610202816103fe565b610210565b61020f61014d565b5b50565b61021b610380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361025d5761025883838361044d565b610266565b61026561014d565b5b505050565b5f610274610380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036102b1576102ae610353565b90505b90565b6102bc610380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036102fc576102f781610613565b610305565b61030461014d565b5b50565b5f610311610380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361034e5761034b610380565b90505b90565b565b5f61035c61065f565b905090565b365f80375f80365f845af43d5f803e805f811461037c573d5ff35b3d5ffd5b5f6103ac7f444d5549c1b0fc679fe1d30daefb9b9e9d70ad980174932fc88b58cd57e102115f1b6106b2565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6103dc836103fe565b5f825111806103e85750805b156103f9576103f783836106bb565b505b505050565b6104078161073b565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b5f61045661065f565b90506104618461073b565b5f8351118061046d5750815b1561047e5761047c84846106bb565b505b5f6104aa7f9843adc2ce1ee58312ba81786d469e32c03edf6b0879757a3b7f4a49a98bfbc75f1b610802565b9050805f015f9054906101000a900460ff1661060c576001815f015f6101000a81548160ff02191690831515021790555061057285836040516024016104f09190610c3a565b6040516020818303038152906040527f3659cfe6000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506106bb565b505f815f015f6101000a81548160ff02191690831515021790555061059561065f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f990610cd3565b60405180910390fd5b61060b856103fe565b5b5050505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61063c610380565b8260405161064b929190610cf1565b60405180910390a161065c8161080b565b50565b5f61068b7f20882e7e0b3c1661dc1474ff6a22afb8e557e42e9ade77c07c8ee84ac37bea1b5f1b6106b2565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b60605f808473ffffffffffffffffffffffffffffffffffffffff16846040516106e49190610d84565b5f60405180830381855af49150503d805f811461071c576040519150601f19603f3d011682016040523d82523d5f602084013e610721565b606091505b50915091506107318583836108e7565b9250505092915050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b03610794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078b90610de4565b60405180910390fd5b806107c07f20882e7e0b3c1661dc1474ff6a22afb8e557e42e9ade77c07c8ee84ac37bea1b5f1b6106b2565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f819050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087090610e72565b60405180910390fd5b806108a57f444d5549c1b0fc679fe1d30daefb9b9e9d70ad980174932fc88b58cd57e102115f1b6106b2565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060826108fc576108f782610974565b61096c565b5f825114801561092257505f8473ffffffffffffffffffffffffffffffffffffffff163b145b1561096457836040517f9996b31500000000000000000000000000000000000000000000000000000000815260040161095b9190610c3a565b60405180910390fd5b81905061096d565b5b9392505050565b5f815111156109865780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6109f2826109c9565b9050919050565b610a02816109e8565b8114610a0c575f80fd5b50565b5f81359050610a1d816109f9565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610a7182610a2b565b810181811067ffffffffffffffff82111715610a9057610a8f610a3b565b5b80604052505050565b5f610aa26109b8565b9050610aae8282610a68565b919050565b5f67ffffffffffffffff821115610acd57610acc610a3b565b5b610ad682610a2b565b9050602081019050919050565b828183375f83830152505050565b5f610b03610afe84610ab3565b610a99565b905082815260208101848484011115610b1f57610b1e610a27565b5b610b2a848285610ae3565b509392505050565b5f82601f830112610b4657610b45610a23565b5b8135610b56848260208601610af1565b91505092915050565b5f8115159050919050565b610b7381610b5f565b8114610b7d575f80fd5b50565b5f81359050610b8e81610b6a565b92915050565b5f805f60608486031215610bab57610baa6109c1565b5b5f610bb886828701610a0f565b935050602084013567ffffffffffffffff811115610bd957610bd86109c5565b5b610be586828701610b32565b9250506040610bf686828701610b80565b9150509250925092565b5f60208284031215610c1557610c146109c1565b5b5f610c2284828501610a0f565b91505092915050565b610c34816109e8565b82525050565b5f602082019050610c4d5f830184610c2b565b92915050565b5f82825260208201905092915050565b7f45524331393637557067726164653a207570677261646520627265616b7320665f8201527f7572746865722075706772616465730000000000000000000000000000000000602082015250565b5f610cbd602f83610c53565b9150610cc882610c63565b604082019050919050565b5f6020820190508181035f830152610cea81610cb1565b9050919050565b5f604082019050610d045f830185610c2b565b610d116020830184610c2b565b9392505050565b5f81519050919050565b5f81905092915050565b5f5b83811015610d49578082015181840152602081019050610d2e565b5f8484015250505050565b5f610d5e82610d18565b610d688185610d22565b9350610d78818560208601610d2c565b80840191505092915050565b5f610d8f8284610d54565b915081905092915050565b7f6e6f7420636f6e747261637400000000000000000000000000000000000000005f82015250565b5f610dce600c83610c53565b9150610dd982610d9a565b602082019050919050565b5f6020820190508181035f830152610dfb81610dc2565b9050919050565b7f455243313936373a206e65772061646d696e20697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f610e5c602683610c53565b9150610e6782610e02565b604082019050919050565b5f6020820190508181035f830152610e8981610e50565b905091905056fea2646970667358221220bab8df286ae2f47729fa3b4dcd54d83c3cb075f82e803b02fef510ae7e74192c64736f6c6343000814003300000000000000000000000038dd843cbd178fd68622018dd17585e13c8b1d30000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a433e1a223000000000000000000000000c2a47c9bd6b75832c6ec74be4338158b43ebad13000000000000000000000000c2a47c9bd6b75832c6ec74be4338158b43ebad1300000000000000000000000000000000000000001b29d4fa5108a361833c0000000000000000000000000000127a8e43ab4bb879f55841a2ea0e8d0198768aa3000000000000000000000000135fb1822b774013a993a400301eb60a7a1e33d400000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405260043610610058575f3560e01c806306d2e426146100715780633659cfe61461008d578063559e0e03146100b55780635c60da1b146100d15780638f283970146100fb578063f851a4401461012357610067565b366100675761006561014d565b005b61006f61014d565b005b61008b60048036038101906100869190610b94565b610167565b005b348015610098575f80fd5b506100b360048036038101906100ae9190610c00565b6101bf565b005b6100cf60048036038101906100ca9190610b94565b610213565b005b3480156100dc575f80fd5b506100e561026b565b6040516100f29190610c3a565b60405180910390f35b348015610106575f80fd5b50610121600480360381019061011c9190610c00565b6102b4565b005b34801561012e575f80fd5b50610137610308565b6040516101449190610c3a565b60405180910390f35b610155610351565b610165610160610353565b610361565b565b61016f610380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036101b1576101ac8383836103d3565b6101ba565b6101b961014d565b5b505050565b6101c7610380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361020757610202816103fe565b610210565b61020f61014d565b5b50565b61021b610380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361025d5761025883838361044d565b610266565b61026561014d565b5b505050565b5f610274610380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036102b1576102ae610353565b90505b90565b6102bc610380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036102fc576102f781610613565b610305565b61030461014d565b5b50565b5f610311610380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361034e5761034b610380565b90505b90565b565b5f61035c61065f565b905090565b365f80375f80365f845af43d5f803e805f811461037c573d5ff35b3d5ffd5b5f6103ac7f444d5549c1b0fc679fe1d30daefb9b9e9d70ad980174932fc88b58cd57e102115f1b6106b2565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6103dc836103fe565b5f825111806103e85750805b156103f9576103f783836106bb565b505b505050565b6104078161073b565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b5f61045661065f565b90506104618461073b565b5f8351118061046d5750815b1561047e5761047c84846106bb565b505b5f6104aa7f9843adc2ce1ee58312ba81786d469e32c03edf6b0879757a3b7f4a49a98bfbc75f1b610802565b9050805f015f9054906101000a900460ff1661060c576001815f015f6101000a81548160ff02191690831515021790555061057285836040516024016104f09190610c3a565b6040516020818303038152906040527f3659cfe6000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506106bb565b505f815f015f6101000a81548160ff02191690831515021790555061059561065f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f990610cd3565b60405180910390fd5b61060b856103fe565b5b5050505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61063c610380565b8260405161064b929190610cf1565b60405180910390a161065c8161080b565b50565b5f61068b7f20882e7e0b3c1661dc1474ff6a22afb8e557e42e9ade77c07c8ee84ac37bea1b5f1b6106b2565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b60605f808473ffffffffffffffffffffffffffffffffffffffff16846040516106e49190610d84565b5f60405180830381855af49150503d805f811461071c576040519150601f19603f3d011682016040523d82523d5f602084013e610721565b606091505b50915091506107318583836108e7565b9250505092915050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b03610794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078b90610de4565b60405180910390fd5b806107c07f20882e7e0b3c1661dc1474ff6a22afb8e557e42e9ade77c07c8ee84ac37bea1b5f1b6106b2565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f819050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087090610e72565b60405180910390fd5b806108a57f444d5549c1b0fc679fe1d30daefb9b9e9d70ad980174932fc88b58cd57e102115f1b6106b2565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060826108fc576108f782610974565b61096c565b5f825114801561092257505f8473ffffffffffffffffffffffffffffffffffffffff163b145b1561096457836040517f9996b31500000000000000000000000000000000000000000000000000000000815260040161095b9190610c3a565b60405180910390fd5b81905061096d565b5b9392505050565b5f815111156109865780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6109f2826109c9565b9050919050565b610a02816109e8565b8114610a0c575f80fd5b50565b5f81359050610a1d816109f9565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610a7182610a2b565b810181811067ffffffffffffffff82111715610a9057610a8f610a3b565b5b80604052505050565b5f610aa26109b8565b9050610aae8282610a68565b919050565b5f67ffffffffffffffff821115610acd57610acc610a3b565b5b610ad682610a2b565b9050602081019050919050565b828183375f83830152505050565b5f610b03610afe84610ab3565b610a99565b905082815260208101848484011115610b1f57610b1e610a27565b5b610b2a848285610ae3565b509392505050565b5f82601f830112610b4657610b45610a23565b5b8135610b56848260208601610af1565b91505092915050565b5f8115159050919050565b610b7381610b5f565b8114610b7d575f80fd5b50565b5f81359050610b8e81610b6a565b92915050565b5f805f60608486031215610bab57610baa6109c1565b5b5f610bb886828701610a0f565b935050602084013567ffffffffffffffff811115610bd957610bd86109c5565b5b610be586828701610b32565b9250506040610bf686828701610b80565b9150509250925092565b5f60208284031215610c1557610c146109c1565b5b5f610c2284828501610a0f565b91505092915050565b610c34816109e8565b82525050565b5f602082019050610c4d5f830184610c2b565b92915050565b5f82825260208201905092915050565b7f45524331393637557067726164653a207570677261646520627265616b7320665f8201527f7572746865722075706772616465730000000000000000000000000000000000602082015250565b5f610cbd602f83610c53565b9150610cc882610c63565b604082019050919050565b5f6020820190508181035f830152610cea81610cb1565b9050919050565b5f604082019050610d045f830185610c2b565b610d116020830184610c2b565b9392505050565b5f81519050919050565b5f81905092915050565b5f5b83811015610d49578082015181840152602081019050610d2e565b5f8484015250505050565b5f610d5e82610d18565b610d688185610d22565b9350610d78818560208601610d2c565b80840191505092915050565b5f610d8f8284610d54565b915081905092915050565b7f6e6f7420636f6e747261637400000000000000000000000000000000000000005f82015250565b5f610dce600c83610c53565b9150610dd982610d9a565b602082019050919050565b5f6020820190508181035f830152610dfb81610dc2565b9050919050565b7f455243313936373a206e65772061646d696e20697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f610e5c602683610c53565b9150610e6782610e02565b604082019050919050565b5f6020820190508181035f830152610e8981610e50565b905091905056fea2646970667358221220bab8df286ae2f47729fa3b4dcd54d83c3cb075f82e803b02fef510ae7e74192c64736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000038dd843cbd178fd68622018dd17585e13c8b1d30000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a433e1a223000000000000000000000000c2a47c9bd6b75832c6ec74be4338158b43ebad13000000000000000000000000c2a47c9bd6b75832c6ec74be4338158b43ebad1300000000000000000000000000000000000000001b29d4fa5108a361833c0000000000000000000000000000127a8e43ab4bb879f55841a2ea0e8d0198768aa3000000000000000000000000135fb1822b774013a993a400301eb60a7a1e33d400000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _logic (address): 0x38DD843cBd178fd68622018DD17585E13C8b1d30
Arg [1] : _data (bytes): 0x33e1a223000000000000000000000000c2a47c9bd6b75832c6ec74be4338158b43ebad13000000000000000000000000c2a47c9bd6b75832c6ec74be4338158b43ebad1300000000000000000000000000000000000000001b29d4fa5108a361833c0000000000000000000000000000127a8e43ab4bb879f55841a2ea0e8d0198768aa3000000000000000000000000135fb1822b774013a993a400301eb60a7a1e33d4
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000038dd843cbd178fd68622018dd17585e13c8b1d30
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000a4
Arg [3] : 33e1a223000000000000000000000000c2a47c9bd6b75832c6ec74be4338158b
Arg [4] : 43ebad13000000000000000000000000c2a47c9bd6b75832c6ec74be4338158b
Arg [5] : 43ebad1300000000000000000000000000000000000000001b29d4fa5108a361
Arg [6] : 833c0000000000000000000000000000127a8e43ab4bb879f55841a2ea0e8d01
Arg [7] : 98768aa3000000000000000000000000135fb1822b774013a993a400301eb60a
Arg [8] : 7a1e33d400000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
18676:3674:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13414:11;:9;:11::i;:::-;18676:3674;;13191:11;:9;:11::i;:::-;18676:3674;21253:236;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20515:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22099:248;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19703:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20198:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19900:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12844:105;12885:17;:15;:17::i;:::-;12913:28;12923:17;:15;:17::i;:::-;12913:9;:28::i;:::-;12844:105::o;21253:236::-;19304:11;:9;:11::i;:::-;19290:25;;:10;:25;;;19286:103;;21428:53:::1;21446:17;21465:4;21471:9;21428:17;:53::i;:::-;19286:103:::0;;;19366:11;:9;:11::i;:::-;19286:103;21253:236;;;:::o;20515:128::-;19304:11;:9;:11::i;:::-;19290:25;;:10;:25;;;19286:103;;20606:29:::1;20617:17;20606:10;:29::i;:::-;19286:103:::0;;;19366:11;:9;:11::i;:::-;19286:103;20515:128;:::o;22099:248::-;19304:11;:9;:11::i;:::-;19290:25;;:10;:25;;;19286:103;;22280:59:::1;22304:17;22323:4;22329:9;22280:23;:59::i;:::-;19286:103:::0;;;19366:11;:9;:11::i;:::-;19286:103;22099:248;;;:::o;19703:119::-;19765:12;19183:11;:9;:11::i;:::-;19169:25;;:10;:25;;;19165:59;;19797:17:::1;:15;:17::i;:::-;19790:24;;19165:59:::0;19703:119;:::o;20198:114::-;19304:11;:9;:11::i;:::-;19290:25;;:10;:25;;;19286:103;;20282:22:::1;20295:8;20282:12;:22::i;:::-;19286:103:::0;;;19366:11;:9;:11::i;:::-;19286:103;20198:114;:::o;19900:103::-;19953:11;19183;:9;:11::i;:::-;19169:25;;:10;:25;;;19165:59;;19984:11:::1;:9;:11::i;:::-;19977:18;;19165:59:::0;19900:103;:::o;13723:38::-;:::o;19479:142::-;19546:12;19578:35;:33;:35::i;:::-;19571:42;;19479:142;:::o;11442:910::-;11777:14;11774:1;11771;11758:34;11995:1;11992;11976:14;11973:1;11957:14;11950:5;11937:60;12074:16;12071:1;12068;12053:38;12114:6;12188:1;12183:68;;;;12302:16;12299:1;12292:27;12183:68;12219:16;12216:1;12209:27;17998:124;18042:7;18069:39;17722:66;18096:11;;18069:26;:39::i;:::-;:45;;;;;;;;;;;;18062:52;;17998:124;:::o;15646:304::-;15789:29;15800:17;15789:10;:29::i;:::-;15847:1;15833:4;:11;:15;:28;;;;15852:9;15833:28;15829:114;;;15878:53;15907:17;15926:4;15878:28;:53::i;:::-;;15829:114;15646:304;;;:::o;15350:155::-;15417:37;15436:17;15417:18;:37::i;:::-;15479:17;15470:27;;;;;;;;;;;;15350:155;:::o;16129:1333::-;16278:25;16306:20;:18;:20::i;:::-;16278:48;;16382:37;16401:17;16382:18;:37::i;:::-;16448:1;16434:4;:11;:15;:28;;;;16453:9;16434:28;16430:114;;;16479:53;16508:17;16527:4;16479:28;:53::i;:::-;;16430:114;16617:47;16667:66;14102;16708:14;;16667:26;:66::i;:::-;16617:116;;16749:15;:21;;;;;;;;;;;;16744:711;;16888:4;16864:15;:21;;;:28;;;;;;;;;;;;;;;;;;16907:162;16954:17;17036;16990:64;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16907:28;:162::i;:::-;;17108:5;17084:15;:21;;;:29;;;;;;;;;;;;;;;;;;17220:20;:18;:20::i;:::-;17199:41;;:17;:41;;;17173:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;17414:29;17425:17;17414:10;:29::i;:::-;16744:711;16267:1195;;16129:1333;;;:::o;18531:138::-;18596:35;18609:11;:9;:11::i;:::-;18622:8;18596:35;;;;;;;:::i;:::-;;;;;;;;18642:19;18652:8;18642:9;:19::i;:::-;18531:138;:::o;14744:142::-;14797:7;14824:48;14463:66;14851:20;;14824:26;:48::i;:::-;:54;;;;;;;;;;;;14817:61;;14744:142;:::o;1769:195::-;1830:21;1942:4;1932:14;;1769:195;;;:::o;8327:256::-;8410:12;8436;8450:23;8477:6;:19;;8497:4;8477:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8435:67;;;;8520:55;8547:6;8555:7;8564:10;8520:26;:55::i;:::-;8513:62;;;;8327:256;;;;:::o;14982:255::-;15093:1;15060:17;:29;;;:34;15056:89;;15111:22;;;;;;;;;;:::i;:::-;;;;;;;;15056:89;15212:17;15155:48;14463:66;15182:20;;15155:26;:48::i;:::-;:54;;;:74;;;;;;;;;;;;;;;;;;14982:255;:::o;2067:195::-;2128:21;2240:4;2230:14;;2067:195;;;:::o;18209:204::-;18293:1;18273:22;;:8;:22;;;18265:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;18397:8;18349:39;17722:66;18376:11;;18349:26;:39::i;:::-;:45;;;:56;;;;;;;;;;;;;;;;;;18209:204;:::o;8856:597::-;9004:12;9034:7;9029:417;;9058:19;9066:10;9058:7;:19::i;:::-;9029:417;;;9307:1;9286:10;:17;:22;:49;;;;;9334:1;9312:6;:18;;;:23;9286:49;9282:121;;;9380:6;9363:24;;;;;;;;;;;:::i;:::-;;;;;;;;9282:121;9424:10;9417:17;;;;9029:417;8856:597;;;;;;:::o;10006:528::-;10159:1;10139:10;:17;:21;10135:392;;;10371:10;10365:17;10428:15;10415:10;10411:2;10407:19;10400:44;10135:392;10498:17;;;;;;;;;;;;;;7:75:1;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:117::-;950:1;947;940:12;964:117;1073:1;1070;1063:12;1087:102;1128:6;1179:2;1175:7;1170:2;1163:5;1159:14;1155:28;1145:38;;1087:102;;;:::o;1195:180::-;1243:77;1240:1;1233:88;1340:4;1337:1;1330:15;1364:4;1361:1;1354:15;1381:281;1464:27;1486:4;1464:27;:::i;:::-;1456:6;1452:40;1594:6;1582:10;1579:22;1558:18;1546:10;1543:34;1540:62;1537:88;;;1605:18;;:::i;:::-;1537:88;1645:10;1641:2;1634:22;1424:238;1381:281;;:::o;1668:129::-;1702:6;1729:20;;:::i;:::-;1719:30;;1758:33;1786:4;1778:6;1758:33;:::i;:::-;1668:129;;;:::o;1803:307::-;1864:4;1954:18;1946:6;1943:30;1940:56;;;1976:18;;:::i;:::-;1940:56;2014:29;2036:6;2014:29;:::i;:::-;2006:37;;2098:4;2092;2088:15;2080:23;;1803:307;;;:::o;2116:146::-;2213:6;2208:3;2203;2190:30;2254:1;2245:6;2240:3;2236:16;2229:27;2116:146;;;:::o;2268:423::-;2345:5;2370:65;2386:48;2427:6;2386:48;:::i;:::-;2370:65;:::i;:::-;2361:74;;2458:6;2451:5;2444:21;2496:4;2489:5;2485:16;2534:3;2525:6;2520:3;2516:16;2513:25;2510:112;;;2541:79;;:::i;:::-;2510:112;2631:54;2678:6;2673:3;2668;2631:54;:::i;:::-;2351:340;2268:423;;;;;:::o;2710:338::-;2765:5;2814:3;2807:4;2799:6;2795:17;2791:27;2781:122;;2822:79;;:::i;:::-;2781:122;2939:6;2926:20;2964:78;3038:3;3030:6;3023:4;3015:6;3011:17;2964:78;:::i;:::-;2955:87;;2771:277;2710:338;;;;:::o;3054:90::-;3088:7;3131:5;3124:13;3117:21;3106:32;;3054:90;;;:::o;3150:116::-;3220:21;3235:5;3220:21;:::i;:::-;3213:5;3210:32;3200:60;;3256:1;3253;3246:12;3200:60;3150:116;:::o;3272:133::-;3315:5;3353:6;3340:20;3331:29;;3369:30;3393:5;3369:30;:::i;:::-;3272:133;;;;:::o;3411:791::-;3494:6;3502;3510;3559:2;3547:9;3538:7;3534:23;3530:32;3527:119;;;3565:79;;:::i;:::-;3527:119;3685:1;3710:53;3755:7;3746:6;3735:9;3731:22;3710:53;:::i;:::-;3700:63;;3656:117;3840:2;3829:9;3825:18;3812:32;3871:18;3863:6;3860:30;3857:117;;;3893:79;;:::i;:::-;3857:117;3998:62;4052:7;4043:6;4032:9;4028:22;3998:62;:::i;:::-;3988:72;;3783:287;4109:2;4135:50;4177:7;4168:6;4157:9;4153:22;4135:50;:::i;:::-;4125:60;;4080:115;3411:791;;;;;:::o;4208:329::-;4267:6;4316:2;4304:9;4295:7;4291:23;4287:32;4284:119;;;4322:79;;:::i;:::-;4284:119;4442:1;4467:53;4512:7;4503:6;4492:9;4488:22;4467:53;:::i;:::-;4457:63;;4413:117;4208:329;;;;:::o;4543:118::-;4630:24;4648:5;4630:24;:::i;:::-;4625:3;4618:37;4543:118;;:::o;4667:222::-;4760:4;4798:2;4787:9;4783:18;4775:26;;4811:71;4879:1;4868:9;4864:17;4855:6;4811:71;:::i;:::-;4667:222;;;;:::o;4895:169::-;4979:11;5013:6;5008:3;5001:19;5053:4;5048:3;5044:14;5029:29;;4895:169;;;;:::o;5070:234::-;5210:34;5206:1;5198:6;5194:14;5187:58;5279:17;5274:2;5266:6;5262:15;5255:42;5070:234;:::o;5310:366::-;5452:3;5473:67;5537:2;5532:3;5473:67;:::i;:::-;5466:74;;5549:93;5638:3;5549:93;:::i;:::-;5667:2;5662:3;5658:12;5651:19;;5310:366;;;:::o;5682:419::-;5848:4;5886:2;5875:9;5871:18;5863:26;;5935:9;5929:4;5925:20;5921:1;5910:9;5906:17;5899:47;5963:131;6089:4;5963:131;:::i;:::-;5955:139;;5682:419;;;:::o;6107:332::-;6228:4;6266:2;6255:9;6251:18;6243:26;;6279:71;6347:1;6336:9;6332:17;6323:6;6279:71;:::i;:::-;6360:72;6428:2;6417:9;6413:18;6404:6;6360:72;:::i;:::-;6107:332;;;;;:::o;6445:98::-;6496:6;6530:5;6524:12;6514:22;;6445:98;;;:::o;6549:147::-;6650:11;6687:3;6672:18;;6549:147;;;;:::o;6702:246::-;6783:1;6793:113;6807:6;6804:1;6801:13;6793:113;;;6892:1;6887:3;6883:11;6877:18;6873:1;6868:3;6864:11;6857:39;6829:2;6826:1;6822:10;6817:15;;6793:113;;;6940:1;6931:6;6926:3;6922:16;6915:27;6764:184;6702:246;;;:::o;6954:386::-;7058:3;7086:38;7118:5;7086:38;:::i;:::-;7140:88;7221:6;7216:3;7140:88;:::i;:::-;7133:95;;7237:65;7295:6;7290:3;7283:4;7276:5;7272:16;7237:65;:::i;:::-;7327:6;7322:3;7318:16;7311:23;;7062:278;6954:386;;;;:::o;7346:271::-;7476:3;7498:93;7587:3;7578:6;7498:93;:::i;:::-;7491:100;;7608:3;7601:10;;7346:271;;;;:::o;7623:162::-;7763:14;7759:1;7751:6;7747:14;7740:38;7623:162;:::o;7791:366::-;7933:3;7954:67;8018:2;8013:3;7954:67;:::i;:::-;7947:74;;8030:93;8119:3;8030:93;:::i;:::-;8148:2;8143:3;8139:12;8132:19;;7791:366;;;:::o;8163:419::-;8329:4;8367:2;8356:9;8352:18;8344:26;;8416:9;8410:4;8406:20;8402:1;8391:9;8387:17;8380:47;8444:131;8570:4;8444:131;:::i;:::-;8436:139;;8163:419;;;:::o;8588:225::-;8728:34;8724:1;8716:6;8712:14;8705:58;8797:8;8792:2;8784:6;8780:15;8773:33;8588:225;:::o;8819:366::-;8961:3;8982:67;9046:2;9041:3;8982:67;:::i;:::-;8975:74;;9058:93;9147:3;9058:93;:::i;:::-;9176:2;9171:3;9167:12;9160:19;;8819:366;;;:::o;9191:419::-;9357:4;9395:2;9384:9;9380:18;9372:26;;9444:9;9438:4;9434:20;9430:1;9419:9;9415:17;9408:47;9472:131;9598:4;9472:131;:::i;:::-;9464:139;;9191:419;;;:::o
Swarm Source
ipfs://bab8df286ae2f47729fa3b4dcd54d83c3cb075f82e803b02fef510ae7e74192c
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.