More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 2,089 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim Rewards | 11675331 | 273 days ago | IN | 0 CRO | 0.74821799 | ||||
Claim Rewards | 11612302 | 277 days ago | IN | 0 CRO | 0.7484403 | ||||
Claim Rewards | 11560400 | 280 days ago | IN | 0 CRO | 0.34118421 | ||||
Claim Rewards | 11560374 | 280 days ago | IN | 0 CRO | 0.3411843 | ||||
Claim Rewards | 11560328 | 280 days ago | IN | 0 CRO | 0.41991614 | ||||
Unstake Phoenix | 11555525 | 280 days ago | IN | 0 CRO | 2.83170762 | ||||
Unstake Phoenix | 11540276 | 281 days ago | IN | 0 CRO | 2.8439238 | ||||
Claim Rewards | 11538731 | 281 days ago | IN | 0 CRO | 0.34125436 | ||||
Claim Rewards | 11532338 | 282 days ago | IN | 0 CRO | 0.34127534 | ||||
Claim Rewards | 11530254 | 282 days ago | IN | 0 CRO | 0.34128212 | ||||
Claim Rewards | 11530211 | 282 days ago | IN | 0 CRO | 0.34128225 | ||||
Claim Rewards | 11530185 | 282 days ago | IN | 0 CRO | 0.34128234 | ||||
Stake Phoenix | 11467719 | 286 days ago | IN | 0 CRO | 0.81249899 | ||||
Unstake Phoenix | 11467705 | 286 days ago | IN | 0 CRO | 2.84495153 | ||||
Claim Rewards | 11467340 | 286 days ago | IN | 0 CRO | 0.34137601 | ||||
Claim Rewards | 11459843 | 287 days ago | IN | 0 CRO | 0.34153632 | ||||
Claim Rewards | 11459834 | 287 days ago | IN | 0 CRO | 0.3414005 | ||||
Claim Rewards | 11459822 | 287 days ago | IN | 0 CRO | 0.38264028 | ||||
Claim Rewards | 11459787 | 287 days ago | IN | 0 CRO | 0.35440948 | ||||
Claim Rewards | 11450791 | 287 days ago | IN | 0 CRO | 0.42035537 | ||||
Claim Rewards | 11450738 | 287 days ago | IN | 0 CRO | 0.3415415 | ||||
Claim Rewards | 11448976 | 287 days ago | IN | 0 CRO | 0.34154725 | ||||
Claim Rewards | 11448651 | 287 days ago | IN | 0 CRO | 0.34154832 | ||||
Claim Rewards | 11438212 | 288 days ago | IN | 0 CRO | 0.341471 | ||||
Claim Rewards | 11437549 | 288 days ago | IN | 0 CRO | 0.34158432 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
11675331 | 273 days ago | 10.36752489 CRO | ||||
11612302 | 277 days ago | 5.91123902 CRO | ||||
11560400 | 280 days ago | 23.34427126 CRO | ||||
11560374 | 280 days ago | 23.34427126 CRO | ||||
11560328 | 280 days ago | 23.34427126 CRO | ||||
11538731 | 281 days ago | 2.83545973 CRO | ||||
11532338 | 282 days ago | 1.3182359 CRO | ||||
11530254 | 282 days ago | 3.39282184 CRO | ||||
11530211 | 282 days ago | 3.39282184 CRO | ||||
11530185 | 282 days ago | 3.87090179 CRO | ||||
11467340 | 286 days ago | 2.83545973 CRO | ||||
11459843 | 287 days ago | 19.79188962 CRO | ||||
11459834 | 287 days ago | 17.28547943 CRO | ||||
11459822 | 287 days ago | 19.79188962 CRO | ||||
11459787 | 287 days ago | 19.79188962 CRO | ||||
11450791 | 287 days ago | 6.55580093 CRO | ||||
11450738 | 287 days ago | 1.54994988 CRO | ||||
11448976 | 287 days ago | 2.29506222 CRO | ||||
11448651 | 287 days ago | 2.29506222 CRO | ||||
11438212 | 288 days ago | 19.93036472 CRO | ||||
11437549 | 288 days ago | 3.39282184 CRO | ||||
11437452 | 288 days ago | 3.87090179 CRO | ||||
11436566 | 288 days ago | 15.74095353 CRO | ||||
11432118 | 288 days ago | 3.87090179 CRO | ||||
11432099 | 288 days ago | 3.39282184 CRO |
Loading...
Loading
Contract Name:
EliteMageFarm
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2022-09-08 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; /** * @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 Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @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://diligence.consensys.net/posts/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.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @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, it is bubbled up by this * function (like regular Solidity function calls). * * 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. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @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`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // 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 assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } /** * @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); _; } /** * @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 `_msgSender()` is missing `role`. * Overriding this function changes the behavior of the {onlyRole} modifier. * * Format of the revert message is described in {_checkRole}. * * _Available since v4.6._ */ function _checkRole(bytes32 role) internal view virtual { _checkRole(role, _msgSender()); } /** * @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()); } } } /** * @dev Required interface of an ERC1155 compliant contract, as defined in the * https://eips.ethereum.org/EIPS/eip-1155[EIP]. * * _Available since v3.1._ */ interface IERC1155 is IERC165 { /** * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`. */ event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); /** * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all * transfers. */ event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values ); /** * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to * `approved`. */ event ApprovalForAll(address indexed account, address indexed operator, bool approved); /** * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. * * If an {URI} event was emitted for `id`, the standard * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value * returned by {IERC1155MetadataURI-uri}. */ event URI(string value, uint256 indexed id); /** * @dev Returns the amount of tokens of token type `id` owned by `account`. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) external view returns (uint256); /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory); /** * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, * * Emits an {ApprovalForAll} event. * * Requirements: * * - `operator` cannot be the caller. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns true if `operator` is approved to transfer ``account``'s tokens. * * See {setApprovalForAll}. */ function isApprovedForAll(address account, address operator) external view returns (bool); /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) external; /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) external; } /** * @dev _Available since v3.1._ */ interface IERC1155Receiver is IERC165 { /** * @dev Handles the receipt of a single ERC1155 token type. This function is * called at the end of a `safeTransferFrom` after the balance has been updated. * * NOTE: To accept the transfer, this must return * `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` * (i.e. 0xf23a6e61, or its own function selector). * * @param operator The address which initiated the transfer (i.e. msg.sender) * @param from The address which previously owned the token * @param id The ID of the token being transferred * @param value The amount of tokens being transferred * @param data Additional data with no specified format * @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed */ function onERC1155Received( address operator, address from, uint256 id, uint256 value, bytes calldata data ) external returns (bytes4); /** * @dev Handles the receipt of a multiple ERC1155 token types. This function * is called at the end of a `safeBatchTransferFrom` after the balances have * been updated. * * NOTE: To accept the transfer(s), this must return * `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` * (i.e. 0xbc197c81, or its own function selector). * * @param operator The address which initiated the batch transfer (i.e. msg.sender) * @param from The address which previously owned the token * @param ids An array containing ids of each token being transferred (order and length must match values array) * @param values An array containing amounts of each token being transferred (order and length must match ids array) * @param data Additional data with no specified format * @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed */ function onERC1155BatchReceived( address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data ) external returns (bytes4); } contract EliteMageFarm is AccessControl,ReentrancyGuard { bytes32 public constant ELEMENTAL_ROLE = keccak256("ELEMENTAL_ROLE"); IERC1155 public ElementalPhoenixesNFT; constructor(address _ElementalPhoenixesNFT) { _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); _grantRole(ELEMENTAL_ROLE, msg.sender); ElementalPhoenixesNFT = IERC1155(_ElementalPhoenixesNFT); } receive() external payable{} uint256 public AccumulatedRewardsPerShareFire; uint256 public AccumulatedRewardsPerShareIce; uint256 public TotalRewardsHarvested; uint256 public OldBalance; uint public FirePhoenixes; uint public IcePhoenixes; uint public TotalPhoenixes; uint256 public TotalIceRewards; uint256 public TotalFireRewards; uint public FireMultiplier = 50; uint public IceMultiplier = 50; uint public Totalmultiplier = 100; struct Staker { bool Staked; uint FirePhoenix; uint IcePhoenix; uint256 totalRewards; uint256 rewardDebt; uint256 RewardsToHarvest; } mapping (address => Staker) public Stakers; address[] public EliteMagicians; function set_Elemental_Role(address account) public onlyRole(DEFAULT_ADMIN_ROLE) { _grantRole(ELEMENTAL_ROLE, account); } function ChangeElementalState (uint FirePercentage, uint IcePercentage) public onlyRole(ELEMENTAL_ROLE) { uint totalPercentage = FirePercentage+IcePercentage; require (totalPercentage == 100); FireMultiplier = FirePercentage; IceMultiplier = IcePercentage; Totalmultiplier = totalPercentage; } function stakePhoenix(address _Staker,uint256 _id) public nonReentrant{ require (ElementalPhoenixesNFT.balanceOf(_Staker,_id)>0); require (_id<2,"Only Fire and Ice Elements"); Staker storage staker = Stakers[_Staker]; require (!staker.Staked, "Already staked"); ClaimRewards(); if (_id == 0) { staker.FirePhoenix = 1; FirePhoenixes = FirePhoenixes + 1; } if (_id == 1) { staker.IcePhoenix = 1; IcePhoenixes = IcePhoenixes + 1; } TotalPhoenixes = TotalPhoenixes + 1; staker.Staked = true; EliteMagicians.push(msg.sender); staker.rewardDebt = (staker.FirePhoenix*AccumulatedRewardsPerShareFire) + (staker.IcePhoenix*AccumulatedRewardsPerShareIce); ElementalPhoenixesNFT.safeTransferFrom(msg.sender, address(this), _id, 1, ""); } function unstakePhoenix(address _Staker,uint256 _id) public nonReentrant{ require (_id<2,"Only Fire and Ice Elements"); Staker storage staker = Stakers[_Staker]; require (staker.Staked, "No staked NFTs"); ClaimRewards(); if (_id == 0) { require (staker.FirePhoenix>0, "No Fire Phoenix Staked"); staker.FirePhoenix = 0; FirePhoenixes = FirePhoenixes - 1; } if (_id == 1) { require (staker.IcePhoenix>0, "No Ice Phoenix Staked"); staker.IcePhoenix = 0; IcePhoenixes = IcePhoenixes - 1; } TotalPhoenixes = TotalPhoenixes - 1; staker.Staked = false; uint index = CheckUserMagician(); EliteMagicians[index] = EliteMagicians[EliteMagicians.length-1] ; EliteMagicians.pop(); staker.rewardDebt = (staker.FirePhoenix*AccumulatedRewardsPerShareFire) + (staker.IcePhoenix*AccumulatedRewardsPerShareIce); ElementalPhoenixesNFT.safeTransferFrom(address(this), msg.sender, _id, 1, ""); } //User can claim his rewards function ClaimRewards() public payable { updatepoolbalance(); Staker storage staker = Stakers[msg.sender]; uint256 RewardsToHarvest = (staker.FirePhoenix*AccumulatedRewardsPerShareFire) + (staker.IcePhoenix*AccumulatedRewardsPerShareIce) - staker.rewardDebt; if (RewardsToHarvest == 0) { staker.rewardDebt = (staker.FirePhoenix*AccumulatedRewardsPerShareFire) + (staker.IcePhoenix*AccumulatedRewardsPerShareIce); return; } staker.rewardDebt = (staker.FirePhoenix*AccumulatedRewardsPerShareFire) + (staker.IcePhoenix*AccumulatedRewardsPerShareIce); TotalRewardsHarvested = TotalRewardsHarvested + RewardsToHarvest; staker.totalRewards = staker.totalRewards + RewardsToHarvest; payable(msg.sender).transfer(RewardsToHarvest); } //checking caller's rewards function CheckRewards() public view returns(uint256) { Staker storage staker = Stakers[msg.sender]; uint256 RewardsToHarvest = (staker.FirePhoenix*AccumulatedRewardsPerShareFire) + (staker.IcePhoenix*AccumulatedRewardsPerShareIce) - staker.rewardDebt; return RewardsToHarvest; } //updates the pool prize balance and adds the claimable rewards function updatepoolbalance() public { if (TotalPhoenixes<1){ return; } uint256 newrewards = address(this).balance + TotalRewardsHarvested - OldBalance; uint256 fire_rewards = newrewards*FireMultiplier/Totalmultiplier; uint256 ice_rewards = newrewards*IceMultiplier/Totalmultiplier; if(FirePhoenixes<1) { ice_rewards = newrewards; fire_rewards = 0; TotalIceRewards = TotalIceRewards + ice_rewards; AccumulatedRewardsPerShareIce = AccumulatedRewardsPerShareIce + (ice_rewards/IcePhoenixes); OldBalance= OldBalance + newrewards; return; } if(IcePhoenixes<1) { fire_rewards = newrewards; ice_rewards = 0; TotalFireRewards = TotalFireRewards + fire_rewards; AccumulatedRewardsPerShareFire = AccumulatedRewardsPerShareFire + (fire_rewards/FirePhoenixes); OldBalance= OldBalance + newrewards; return; } AccumulatedRewardsPerShareFire = AccumulatedRewardsPerShareFire + (fire_rewards/FirePhoenixes); TotalFireRewards = TotalFireRewards + fire_rewards; AccumulatedRewardsPerShareIce = AccumulatedRewardsPerShareIce + (ice_rewards/IcePhoenixes); TotalIceRewards = TotalIceRewards+ ice_rewards; OldBalance = OldBalance + newrewards; } function CheckUserMagician() public view returns (uint) { uint index; for (uint i = 0; i < EliteMagicians.length; i++) { if (EliteMagicians[i] == msg.sender){ index = i; } } return index; } function GetMagicianByIndex (uint256 _index) external view returns (address) { address Magician; Magician = EliteMagicians[_index]; return Magician; } function GetMagicianStats (address Magician) external view returns (Staker memory) { Staker memory staker = Stakers[Magician]; return staker; } function GetNumberOfTotalMagicians () external view returns(uint) { return TotalPhoenixes; } function GetNumberOfFireMagicians () external view returns(uint) { return FirePhoenixes; } function GetNumberOfIceMagicians () external view returns(uint) { return IcePhoenixes; } function onERC1155Received( address operator, address from, uint256 id, uint256 value, bytes calldata data ) external returns (bytes4) { return bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)")); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_ElementalPhoenixesNFT","type":"address"}],"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":"AccumulatedRewardsPerShareFire","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AccumulatedRewardsPerShareIce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"FirePercentage","type":"uint256"},{"internalType":"uint256","name":"IcePercentage","type":"uint256"}],"name":"ChangeElementalState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"CheckRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CheckUserMagician","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ClaimRewards","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ELEMENTAL_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ElementalPhoenixesNFT","outputs":[{"internalType":"contract IERC1155","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"EliteMagicians","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FireMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FirePhoenixes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"GetMagicianByIndex","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"Magician","type":"address"}],"name":"GetMagicianStats","outputs":[{"components":[{"internalType":"bool","name":"Staked","type":"bool"},{"internalType":"uint256","name":"FirePhoenix","type":"uint256"},{"internalType":"uint256","name":"IcePhoenix","type":"uint256"},{"internalType":"uint256","name":"totalRewards","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"},{"internalType":"uint256","name":"RewardsToHarvest","type":"uint256"}],"internalType":"struct EliteMageFarm.Staker","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetNumberOfFireMagicians","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetNumberOfIceMagicians","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetNumberOfTotalMagicians","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"IceMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"IcePhoenixes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OldBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"Stakers","outputs":[{"internalType":"bool","name":"Staked","type":"bool"},{"internalType":"uint256","name":"FirePhoenix","type":"uint256"},{"internalType":"uint256","name":"IcePhoenix","type":"uint256"},{"internalType":"uint256","name":"totalRewards","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"},{"internalType":"uint256","name":"RewardsToHarvest","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TotalFireRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TotalIceRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TotalPhoenixes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TotalRewardsHarvested","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Totalmultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"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":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"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":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"set_Elemental_Role","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_Staker","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"stakePhoenix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_Staker","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"unstakePhoenix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updatepoolbalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526032600c556032600d556064600e553480156200002057600080fd5b5060405162001c2938038062001c29833981016040819052620000439162000147565b6001805562000054600033620000a6565b620000807f3d4cc00db4b4a296261e2c5a0439eca61251af8134901f45454a803bf09f60f933620000a6565b600280546001600160a01b0319166001600160a01b039290921691909117905562000177565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000143576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001023390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006020828403121562000159578081fd5b81516001600160a01b038116811462000170578182fd5b9392505050565b611aa280620001876000396000f3fe60806040526004361061021d5760003560e01c80636dceaa9d11610123578063affde47a116100ab578063d76710a01161006f578063d76710a014610601578063da8bcf1b14610621578063e8d0c81914610637578063ede85eb714610657578063f23a6e61146106da57600080fd5b8063affde47a1461057f578063c5d5d59214610595578063cbf08373146105ab578063d1043395146105c1578063d547741f146105e157600080fd5b80639a3e10d3116100f25780639a3e10d3146104f4578063a17410c814610528578063a217fddf1461053e578063a323aedd14610553578063ad3bc2151461056957600080fd5b80636dceaa9d1461049357806376eb8cac146104a85780637e3e238f146104be57806391d14854146104d457600080fd5b806335358e03116101a6578063481590401161017557806348159040146103c45780635143e5da1461043257806355db3cdf1461044757806355e2721f1461045d57806361c09da11461047d57600080fd5b806335358e031461034f57806336568abe1461036f5780633da94a471461038f57806347b3f5a1146103af57600080fd5b806319e619a1116101ed57806319e619a11461029c5780631c9618a9146102d4578063248a9ca3146102ea5780632f2ff15d1461031a578063319c33f91461033a57600080fd5b8062a9a3bc1461022957806301ffc9a71461024d578063127989721461027d57806318bd1bd91461028757600080fd5b3661022457005b600080fd5b34801561023557600080fd5b506007545b6040519081526020015b60405180910390f35b34801561025957600080fd5b5061026d610268366004611845565b610739565b6040519015158152602001610244565b610285610770565b005b34801561029357600080fd5b5060095461023a565b3480156102a857600080fd5b506102bc6102b7366004611802565b610893565b6040516001600160a01b039091168152602001610244565b3480156102e057600080fd5b5061023a60055481565b3480156102f657600080fd5b5061023a610305366004611802565b60009081526020819052604090206001015490565b34801561032657600080fd5b5061028561033536600461181a565b6108bd565b34801561034657600080fd5b5061023a6108e2565b34801561035b57600080fd5b506002546102bc906001600160a01b031681565b34801561037b57600080fd5b5061028561038a36600461181a565b610954565b34801561039b57600080fd5b506102856103aa3660046117d9565b6109d7565b3480156103bb57600080fd5b50610285610d66565b3480156103d057600080fd5b506103e46103df36600461171e565b610ede565b6040516102449190600060c0820190508251151582526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b34801561043e57600080fd5b5061023a610f80565b34801561045357600080fd5b5061023a60075481565b34801561046957600080fd5b506102bc610478366004611802565b610fd5565b34801561048957600080fd5b5061023a60035481565b34801561049f57600080fd5b5060085461023a565b3480156104b457600080fd5b5061023a60095481565b3480156104ca57600080fd5b5061023a600a5481565b3480156104e057600080fd5b5061026d6104ef36600461181a565b611015565b34801561050057600080fd5b5061023a7f3d4cc00db4b4a296261e2c5a0439eca61251af8134901f45454a803bf09f60f981565b34801561053457600080fd5b5061023a600d5481565b34801561054a57600080fd5b5061023a600081565b34801561055f57600080fd5b5061023a600b5481565b34801561057557600080fd5b5061023a60045481565b34801561058b57600080fd5b5061023a60085481565b3480156105a157600080fd5b5061023a60065481565b3480156105b757600080fd5b5061023a600e5481565b3480156105cd57600080fd5b506102856105dc366004611885565b61103e565b3480156105ed57600080fd5b506102856105fc36600461181a565b611092565b34801561060d57600080fd5b5061028561061c36600461171e565b6110b7565b34801561062d57600080fd5b5061023a600c5481565b34801561064357600080fd5b506102856106523660046117d9565b6110ec565b34801561066357600080fd5b506106ab61067236600461171e565b600f6020526000908152604090208054600182015460028301546003840154600485015460059095015460ff9094169492939192909186565b6040805196151587526020870195909552938501929092526060840152608083015260a082015260c001610244565b3480156106e657600080fd5b506107206106f5366004611738565b7ff23a6e612e1ff4830e658fe43f4e3cb4a5f8170bd5d9e69fb5d7a7fa9e4fdf979695505050505050565b6040516001600160e01b03199091168152602001610244565b60006001600160e01b03198216637965db0b60e01b148061076a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610778610d66565b336000908152600f60205260408120600480820154905460028301549293926107a191906119be565b60035484600101546107b391906119be565b6107bd9190611986565b6107c791906119dd565b9050806108085760045482600201546107e091906119be565b60035483600101546107f291906119be565b6107fc9190611986565b82600401819055505050565b600454826002015461081a91906119be565b600354836001015461082c91906119be565b6108369190611986565b6004830155600554610849908290611986565b600555600382015461085c908290611986565b6003830155604051339082156108fc029083906000818181858888f1935050505015801561088e573d6000803e3d6000fd5b505050565b601081815481106108a357600080fd5b6000918252602090912001546001600160a01b0316905081565b6000828152602081905260409020600101546108d8816113c6565b61088e83836113d3565b60008060005b60105481101561094e57336001600160a01b03166010828154811061091d57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561093c578091505b8061094681611a3b565b9150506108e8565b50919050565b6001600160a01b03811633146109c95760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6109d38282611457565b5050565b60026001541415610a2a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109c0565b600260018190558110610a7f5760405162461bcd60e51b815260206004820152601a60248201527f4f6e6c79204669726520616e642049636520456c656d656e747300000000000060448201526064016109c0565b6001600160a01b0382166000908152600f60205260409020805460ff16610ad95760405162461bcd60e51b815260206004820152600e60248201526d4e6f207374616b6564204e46547360901b60448201526064016109c0565b610ae1610770565b81610b50576000816001015411610b335760405162461bcd60e51b8152602060048201526016602482015275139bc8119a5c9948141a1bd95b9a5e0814dd185ad95960521b60448201526064016109c0565b600081600101819055506001600754610b4c91906119dd565b6007555b8160011415610bbf576000816002015411610ba55760405162461bcd60e51b8152602060048201526015602482015274139bc81258d948141a1bd95b9a5e0814dd185ad959605a1b60448201526064016109c0565b60006002820155600854610bbb906001906119dd565b6008555b6001600954610bce91906119dd565b600955805460ff191681556000610be36108e2565b6010805491925090610bf7906001906119dd565b81548110610c1557634e487b7160e01b600052603260045260246000fd5b600091825260209091200154601080546001600160a01b039092169183908110610c4f57634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506010805480610c9c57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190556004546002830154610cd091906119be565b6003548360010154610ce291906119be565b610cec9190611986565b600480840191909155600254604051637921219560e11b81526001600160a01b039091169163f242432a91610d2a913091339189916001910161191b565b600060405180830381600087803b158015610d4457600080fd5b505af1158015610d58573d6000803e3d6000fd5b505060018055505050505050565b60016009541015610d7357565b600060065460055447610d869190611986565b610d9091906119dd565b90506000600e54600c5483610da591906119be565b610daf919061199e565b90506000600e54600d5484610dc491906119be565b610dce919061199e565b905060016007541015610e26578290506000915080600a54610df09190611986565b600a55600854610e00908261199e565b600454610e0d9190611986565b600455600654610e1e908490611986565b600655505050565b60016008541015610e74578291506000905081600b54610e469190611986565b600b55600754610e56908361199e565b600354610e639190611986565b600355600654610e1e908490611986565b600754610e81908361199e565b600354610e8e9190611986565b600355600b54610e9f908390611986565b600b55600854610eaf908261199e565b600454610ebc9190611986565b600455600a54610ecd908290611986565b600a55600654610e1e908490611986565b610f196040518060c0016040528060001515815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03166000908152600f6020908152604091829020825160c081018452815460ff1615158152600182015492810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a082015290565b336000908152600f6020526040812060048082015490546002830154849291610fa8916119be565b6003548460010154610fba91906119be565b610fc49190611986565b610fce91906119dd565b9392505050565b60008060108381548110610ff957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03169392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b7f3d4cc00db4b4a296261e2c5a0439eca61251af8134901f45454a803bf09f60f9611068816113c6565b60006110748385611986565b90508060641461108357600080fd5b600c9390935550600d55600e55565b6000828152602081905260409020600101546110ad816113c6565b61088e8383611457565b60006110c2816113c6565b6109d37f3d4cc00db4b4a296261e2c5a0439eca61251af8134901f45454a803bf09f60f9836113d3565b6002600154141561113f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109c0565b6002600181905554604051627eeac760e11b81526001600160a01b03848116600483015260248201849052600092169062fdd58e9060440160206040518083038186803b15801561118f57600080fd5b505afa1580156111a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c7919061186d565b116111d157600080fd5b600281106112215760405162461bcd60e51b815260206004820152601a60248201527f4f6e6c79204669726520616e642049636520456c656d656e747300000000000060448201526064016109c0565b6001600160a01b0382166000908152600f60205260409020805460ff161561127c5760405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481cdd185ad95960921b60448201526064016109c0565b611284610770565b816112a157600181810181905560075461129d91611986565b6007555b81600114156112c3576001600282018190556008546112bf91611986565b6008555b6009546112d1906001611986565b600955805460ff1916600190811782556010805491820181556000527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6720180546001600160a01b03191633179055600454600282015461133191906119be565b600354826001015461134391906119be565b61134d9190611986565b600480830191909155600254604051637921219560e11b81526001600160a01b039091169163f242432a9161138b913391309188916001910161191b565b600060405180830381600087803b1580156113a557600080fd5b505af11580156113b9573d6000803e3d6000fd5b5050600180555050505050565b6113d081336114bc565b50565b6113dd8282611015565b6109d3576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556114133390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6114618282611015565b156109d3576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6114c68282611015565b6109d3576114de816001600160a01b03166014611520565b6114e9836020611520565b6040516020016114fa9291906118a6565b60408051601f198184030181529082905262461bcd60e51b82526109c091600401611953565b6060600061152f8360026119be565b61153a906002611986565b67ffffffffffffffff81111561156057634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561158a576020820181803683370190505b509050600360fc1b816000815181106115b357634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106115f057634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060006116148460026119be565b61161f906001611986565b90505b60018111156116b3576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061166157634e487b7160e01b600052603260045260246000fd5b1a60f81b82828151811061168557634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c936116ac81611a24565b9050611622565b508315610fce5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016109c0565b80356001600160a01b038116811461171957600080fd5b919050565b60006020828403121561172f578081fd5b610fce82611702565b60008060008060008060a08789031215611750578182fd5b61175987611702565b955061176760208801611702565b94506040870135935060608701359250608087013567ffffffffffffffff80821115611791578384fd5b818901915089601f8301126117a4578384fd5b8135818111156117b2578485fd5b8a60208285010111156117c3578485fd5b6020830194508093505050509295509295509295565b600080604083850312156117eb578182fd5b6117f483611702565b946020939093013593505050565b600060208284031215611813578081fd5b5035919050565b6000806040838503121561182c578182fd5b8235915061183c60208401611702565b90509250929050565b600060208284031215611856578081fd5b81356001600160e01b031981168114610fce578182fd5b60006020828403121561187e578081fd5b5051919050565b60008060408385031215611897578182fd5b50508035926020909101359150565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516118de8160178501602088016119f4565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161190f8160288401602088016119f4565b01602801949350505050565b6001600160a01b0394851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b60208152600082518060208401526119728160408501602087016119f4565b601f01601f19169190910160400192915050565b6000821982111561199957611999611a56565b500190565b6000826119b957634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156119d8576119d8611a56565b500290565b6000828210156119ef576119ef611a56565b500390565b60005b83811015611a0f5781810151838201526020016119f7565b83811115611a1e576000848401525b50505050565b600081611a3357611a33611a56565b506000190190565b6000600019821415611a4f57611a4f611a56565b5060010190565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220137e584faa8203c3e283d6d6498bc6c505e799e6058eec8b5b38d0f352e053c764736f6c634300080400330000000000000000000000002c6aba55348ed078b6deb2c22cd33da297bf3f0f
Deployed Bytecode
0x60806040526004361061021d5760003560e01c80636dceaa9d11610123578063affde47a116100ab578063d76710a01161006f578063d76710a014610601578063da8bcf1b14610621578063e8d0c81914610637578063ede85eb714610657578063f23a6e61146106da57600080fd5b8063affde47a1461057f578063c5d5d59214610595578063cbf08373146105ab578063d1043395146105c1578063d547741f146105e157600080fd5b80639a3e10d3116100f25780639a3e10d3146104f4578063a17410c814610528578063a217fddf1461053e578063a323aedd14610553578063ad3bc2151461056957600080fd5b80636dceaa9d1461049357806376eb8cac146104a85780637e3e238f146104be57806391d14854146104d457600080fd5b806335358e03116101a6578063481590401161017557806348159040146103c45780635143e5da1461043257806355db3cdf1461044757806355e2721f1461045d57806361c09da11461047d57600080fd5b806335358e031461034f57806336568abe1461036f5780633da94a471461038f57806347b3f5a1146103af57600080fd5b806319e619a1116101ed57806319e619a11461029c5780631c9618a9146102d4578063248a9ca3146102ea5780632f2ff15d1461031a578063319c33f91461033a57600080fd5b8062a9a3bc1461022957806301ffc9a71461024d578063127989721461027d57806318bd1bd91461028757600080fd5b3661022457005b600080fd5b34801561023557600080fd5b506007545b6040519081526020015b60405180910390f35b34801561025957600080fd5b5061026d610268366004611845565b610739565b6040519015158152602001610244565b610285610770565b005b34801561029357600080fd5b5060095461023a565b3480156102a857600080fd5b506102bc6102b7366004611802565b610893565b6040516001600160a01b039091168152602001610244565b3480156102e057600080fd5b5061023a60055481565b3480156102f657600080fd5b5061023a610305366004611802565b60009081526020819052604090206001015490565b34801561032657600080fd5b5061028561033536600461181a565b6108bd565b34801561034657600080fd5b5061023a6108e2565b34801561035b57600080fd5b506002546102bc906001600160a01b031681565b34801561037b57600080fd5b5061028561038a36600461181a565b610954565b34801561039b57600080fd5b506102856103aa3660046117d9565b6109d7565b3480156103bb57600080fd5b50610285610d66565b3480156103d057600080fd5b506103e46103df36600461171e565b610ede565b6040516102449190600060c0820190508251151582526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b34801561043e57600080fd5b5061023a610f80565b34801561045357600080fd5b5061023a60075481565b34801561046957600080fd5b506102bc610478366004611802565b610fd5565b34801561048957600080fd5b5061023a60035481565b34801561049f57600080fd5b5060085461023a565b3480156104b457600080fd5b5061023a60095481565b3480156104ca57600080fd5b5061023a600a5481565b3480156104e057600080fd5b5061026d6104ef36600461181a565b611015565b34801561050057600080fd5b5061023a7f3d4cc00db4b4a296261e2c5a0439eca61251af8134901f45454a803bf09f60f981565b34801561053457600080fd5b5061023a600d5481565b34801561054a57600080fd5b5061023a600081565b34801561055f57600080fd5b5061023a600b5481565b34801561057557600080fd5b5061023a60045481565b34801561058b57600080fd5b5061023a60085481565b3480156105a157600080fd5b5061023a60065481565b3480156105b757600080fd5b5061023a600e5481565b3480156105cd57600080fd5b506102856105dc366004611885565b61103e565b3480156105ed57600080fd5b506102856105fc36600461181a565b611092565b34801561060d57600080fd5b5061028561061c36600461171e565b6110b7565b34801561062d57600080fd5b5061023a600c5481565b34801561064357600080fd5b506102856106523660046117d9565b6110ec565b34801561066357600080fd5b506106ab61067236600461171e565b600f6020526000908152604090208054600182015460028301546003840154600485015460059095015460ff9094169492939192909186565b6040805196151587526020870195909552938501929092526060840152608083015260a082015260c001610244565b3480156106e657600080fd5b506107206106f5366004611738565b7ff23a6e612e1ff4830e658fe43f4e3cb4a5f8170bd5d9e69fb5d7a7fa9e4fdf979695505050505050565b6040516001600160e01b03199091168152602001610244565b60006001600160e01b03198216637965db0b60e01b148061076a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610778610d66565b336000908152600f60205260408120600480820154905460028301549293926107a191906119be565b60035484600101546107b391906119be565b6107bd9190611986565b6107c791906119dd565b9050806108085760045482600201546107e091906119be565b60035483600101546107f291906119be565b6107fc9190611986565b82600401819055505050565b600454826002015461081a91906119be565b600354836001015461082c91906119be565b6108369190611986565b6004830155600554610849908290611986565b600555600382015461085c908290611986565b6003830155604051339082156108fc029083906000818181858888f1935050505015801561088e573d6000803e3d6000fd5b505050565b601081815481106108a357600080fd5b6000918252602090912001546001600160a01b0316905081565b6000828152602081905260409020600101546108d8816113c6565b61088e83836113d3565b60008060005b60105481101561094e57336001600160a01b03166010828154811061091d57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561093c578091505b8061094681611a3b565b9150506108e8565b50919050565b6001600160a01b03811633146109c95760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6109d38282611457565b5050565b60026001541415610a2a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109c0565b600260018190558110610a7f5760405162461bcd60e51b815260206004820152601a60248201527f4f6e6c79204669726520616e642049636520456c656d656e747300000000000060448201526064016109c0565b6001600160a01b0382166000908152600f60205260409020805460ff16610ad95760405162461bcd60e51b815260206004820152600e60248201526d4e6f207374616b6564204e46547360901b60448201526064016109c0565b610ae1610770565b81610b50576000816001015411610b335760405162461bcd60e51b8152602060048201526016602482015275139bc8119a5c9948141a1bd95b9a5e0814dd185ad95960521b60448201526064016109c0565b600081600101819055506001600754610b4c91906119dd565b6007555b8160011415610bbf576000816002015411610ba55760405162461bcd60e51b8152602060048201526015602482015274139bc81258d948141a1bd95b9a5e0814dd185ad959605a1b60448201526064016109c0565b60006002820155600854610bbb906001906119dd565b6008555b6001600954610bce91906119dd565b600955805460ff191681556000610be36108e2565b6010805491925090610bf7906001906119dd565b81548110610c1557634e487b7160e01b600052603260045260246000fd5b600091825260209091200154601080546001600160a01b039092169183908110610c4f57634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506010805480610c9c57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190556004546002830154610cd091906119be565b6003548360010154610ce291906119be565b610cec9190611986565b600480840191909155600254604051637921219560e11b81526001600160a01b039091169163f242432a91610d2a913091339189916001910161191b565b600060405180830381600087803b158015610d4457600080fd5b505af1158015610d58573d6000803e3d6000fd5b505060018055505050505050565b60016009541015610d7357565b600060065460055447610d869190611986565b610d9091906119dd565b90506000600e54600c5483610da591906119be565b610daf919061199e565b90506000600e54600d5484610dc491906119be565b610dce919061199e565b905060016007541015610e26578290506000915080600a54610df09190611986565b600a55600854610e00908261199e565b600454610e0d9190611986565b600455600654610e1e908490611986565b600655505050565b60016008541015610e74578291506000905081600b54610e469190611986565b600b55600754610e56908361199e565b600354610e639190611986565b600355600654610e1e908490611986565b600754610e81908361199e565b600354610e8e9190611986565b600355600b54610e9f908390611986565b600b55600854610eaf908261199e565b600454610ebc9190611986565b600455600a54610ecd908290611986565b600a55600654610e1e908490611986565b610f196040518060c0016040528060001515815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03166000908152600f6020908152604091829020825160c081018452815460ff1615158152600182015492810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a082015290565b336000908152600f6020526040812060048082015490546002830154849291610fa8916119be565b6003548460010154610fba91906119be565b610fc49190611986565b610fce91906119dd565b9392505050565b60008060108381548110610ff957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03169392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b7f3d4cc00db4b4a296261e2c5a0439eca61251af8134901f45454a803bf09f60f9611068816113c6565b60006110748385611986565b90508060641461108357600080fd5b600c9390935550600d55600e55565b6000828152602081905260409020600101546110ad816113c6565b61088e8383611457565b60006110c2816113c6565b6109d37f3d4cc00db4b4a296261e2c5a0439eca61251af8134901f45454a803bf09f60f9836113d3565b6002600154141561113f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109c0565b6002600181905554604051627eeac760e11b81526001600160a01b03848116600483015260248201849052600092169062fdd58e9060440160206040518083038186803b15801561118f57600080fd5b505afa1580156111a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c7919061186d565b116111d157600080fd5b600281106112215760405162461bcd60e51b815260206004820152601a60248201527f4f6e6c79204669726520616e642049636520456c656d656e747300000000000060448201526064016109c0565b6001600160a01b0382166000908152600f60205260409020805460ff161561127c5760405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481cdd185ad95960921b60448201526064016109c0565b611284610770565b816112a157600181810181905560075461129d91611986565b6007555b81600114156112c3576001600282018190556008546112bf91611986565b6008555b6009546112d1906001611986565b600955805460ff1916600190811782556010805491820181556000527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6720180546001600160a01b03191633179055600454600282015461133191906119be565b600354826001015461134391906119be565b61134d9190611986565b600480830191909155600254604051637921219560e11b81526001600160a01b039091169163f242432a9161138b913391309188916001910161191b565b600060405180830381600087803b1580156113a557600080fd5b505af11580156113b9573d6000803e3d6000fd5b5050600180555050505050565b6113d081336114bc565b50565b6113dd8282611015565b6109d3576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556114133390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6114618282611015565b156109d3576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6114c68282611015565b6109d3576114de816001600160a01b03166014611520565b6114e9836020611520565b6040516020016114fa9291906118a6565b60408051601f198184030181529082905262461bcd60e51b82526109c091600401611953565b6060600061152f8360026119be565b61153a906002611986565b67ffffffffffffffff81111561156057634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561158a576020820181803683370190505b509050600360fc1b816000815181106115b357634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106115f057634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060006116148460026119be565b61161f906001611986565b90505b60018111156116b3576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061166157634e487b7160e01b600052603260045260246000fd5b1a60f81b82828151811061168557634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c936116ac81611a24565b9050611622565b508315610fce5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016109c0565b80356001600160a01b038116811461171957600080fd5b919050565b60006020828403121561172f578081fd5b610fce82611702565b60008060008060008060a08789031215611750578182fd5b61175987611702565b955061176760208801611702565b94506040870135935060608701359250608087013567ffffffffffffffff80821115611791578384fd5b818901915089601f8301126117a4578384fd5b8135818111156117b2578485fd5b8a60208285010111156117c3578485fd5b6020830194508093505050509295509295509295565b600080604083850312156117eb578182fd5b6117f483611702565b946020939093013593505050565b600060208284031215611813578081fd5b5035919050565b6000806040838503121561182c578182fd5b8235915061183c60208401611702565b90509250929050565b600060208284031215611856578081fd5b81356001600160e01b031981168114610fce578182fd5b60006020828403121561187e578081fd5b5051919050565b60008060408385031215611897578182fd5b50508035926020909101359150565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516118de8160178501602088016119f4565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161190f8160288401602088016119f4565b01602801949350505050565b6001600160a01b0394851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b60208152600082518060208401526119728160408501602087016119f4565b601f01601f19169190910160400192915050565b6000821982111561199957611999611a56565b500190565b6000826119b957634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156119d8576119d8611a56565b500290565b6000828210156119ef576119ef611a56565b500390565b60005b83811015611a0f5781810151838201526020016119f7565b83811115611a1e576000848401525b50505050565b600081611a3357611a33611a56565b506000190190565b6000600019821415611a4f57611a4f611a56565b5060010190565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220137e584faa8203c3e283d6d6498bc6c505e799e6058eec8b5b38d0f352e053c764736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002c6aba55348ed078b6deb2c22cd33da297bf3f0f
-----Decoded View---------------
Arg [0] : _ElementalPhoenixesNFT (address): 0x2C6aba55348ED078B6dEb2c22cD33Da297BF3F0F
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000002c6aba55348ed078b6deb2c22cd33da297bf3f0f
Deployed Bytecode Sourcemap
38367:7763:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45591:114;;;;;;;;;;-1:-1:-1;45680:13:0;;45591:114;;;5835:25:1;;;5823:2;5808:18;45591:114:0;;;;;;;;26598:204;;;;;;;;;;-1:-1:-1;26598:204:0;;;;;:::i;:::-;;:::i;:::-;;;5112:14:1;;5105:22;5087:41;;5075:2;5060:18;26598:204:0;5042:92:1;42094:827:0;;;:::i;:::-;;45466:116;;;;;;;;;;-1:-1:-1;45556:14:0;;45466:116;;39475:31;;;;;;;;;;-1:-1:-1;39475:31:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;3981:32:1;;;3963:51;;3951:2;3936:18;39475:31:0;3918:102:1;38895:36:0;;;;;;;;;;;;;;;;28434:131;;;;;;;;;;-1:-1:-1;28434:131:0;;;;;:::i;:::-;28508:7;28535:12;;;;;;;;;;:22;;;;28434:131;28827:147;;;;;;;;;;-1:-1:-1;28827:147:0;;;;;:::i;:::-;;:::i;44802:278::-;;;;;;;;;;;;;:::i;38501:37::-;;;;;;;;;;-1:-1:-1;38501:37:0;;;;-1:-1:-1;;;;;38501:37:0;;;29875:218;;;;;;;;;;-1:-1:-1;29875:218:0;;;;;:::i;:::-;;:::i;40949:1103::-;;;;;;;;;;-1:-1:-1;40949:1103:0;;;;;:::i;:::-;;:::i;43344:1446::-;;;;;;;;;;;;;:::i;45287:171::-;;;;;;;;;;-1:-1:-1;45287:171:0;;;;;:::i;:::-;;:::i;:::-;;;;;;9710:4:1;9752:3;9741:9;9737:19;9729:27;;9803:6;9797:13;9790:21;9783:29;9772:9;9765:48;9869:4;9861:6;9857:17;9851:24;9844:4;9833:9;9829:20;9822:54;9932:4;9924:6;9920:17;9914:24;9907:4;9896:9;9892:20;9885:54;9995:4;9987:6;9983:17;9977:24;9970:4;9959:9;9955:20;9948:54;10058:4;10050:6;10046:17;10040:24;10033:4;10022:9;10018:20;10011:54;10121:4;10113:6;10109:17;10103:24;10096:4;10085:9;10081:20;10074:54;9719:415;;;;;42960:308:0;;;;;;;;;;;;;:::i;38966:25::-;;;;;;;;;;;;;;;;45087:192;;;;;;;;;;-1:-1:-1;45087:192:0;;;;;:::i;:::-;;:::i;38796:45::-;;;;;;;;;;;;;;;;45714:112;;;;;;;;;;-1:-1:-1;45802:12:0;;45714:112;;39025:26;;;;;;;;;;;;;;;;39056:30;;;;;;;;;;;;;;;;26894:147;;;;;;;;;;-1:-1:-1;26894:147:0;;;;;:::i;:::-;;:::i;38428:68::-;;;;;;;;;;;;38469:27;38428:68;;39163:30;;;;;;;;;;;;;;;;25999:49;;;;;;;;;;-1:-1:-1;25999:49:0;26044:4;25999:49;;39091:31;;;;;;;;;;;;;;;;38846:44;;;;;;;;;;;;;;;;38996:24;;;;;;;;;;;;;;;;38936:25;;;;;;;;;;;;;;;;39198:33;;;;;;;;;;;;;;;;39658:332;;;;;;;;;;-1:-1:-1;39658:332:0;;;;;:::i;:::-;;:::i;29219:149::-;;;;;;;;;;-1:-1:-1;29219:149:0;;;;;:::i;:::-;;:::i;39517:134::-;;;;;;;;;;-1:-1:-1;39517:134:0;;;;;:::i;:::-;;:::i;39127:31::-;;;;;;;;;;;;;;;;39997:942;;;;;;;;;;-1:-1:-1;39997:942:0;;;;;:::i;:::-;;:::i;39425:42::-;;;;;;;;;;-1:-1:-1;39425:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5445:14:1;;5438:22;5420:41;;5492:2;5477:18;;5470:34;;;;5520:18;;;5513:34;;;;5578:2;5563:18;;5556:34;5621:3;5606:19;;5599:35;5665:3;5650:19;;5643:35;5407:3;5392:19;39425:42:0;5374:310:1;45834:288:0;;;;;;;;;;-1:-1:-1;45834:288:0;;;;;:::i;:::-;46044:69;45834:288;;;;;;;;;;;;-1:-1:-1;;;;;;6033:33:1;;;6015:52;;6003:2;5988:18;45834:288:0;5970:103:1;26598:204:0;26683:4;-1:-1:-1;;;;;;26707:47:0;;-1:-1:-1;;;26707:47:0;;:87;;-1:-1:-1;;;;;;;;;;21258:40:0;;;26758:36;26700:94;26598:204;-1:-1:-1;;26598:204:0:o;42094:827::-;42142:19;:17;:19::i;:::-;42202:10;42170:21;42194:19;;;:7;:19;;;;;42355:17;;;;;42322:29;;42304:17;;;;42194:19;;42170:21;42304:47;;42322:29;42304:47;:::i;:::-;42269:30;;42250:6;:18;;;:49;;;;:::i;:::-;42249:103;;;;:::i;:::-;:123;;;;:::i;:::-;42222:150;-1:-1:-1;42386:21:0;42382:200;;42517:29;;42499:6;:17;;;:47;;;;:::i;:::-;42464:30;;42445:6;:18;;;:49;;;;:::i;:::-;42444:103;;;;:::i;:::-;42424:6;:17;;:123;;;;42564:7;;42094:827::o;42382:200::-;42683:29;;42665:6;:17;;;:47;;;;:::i;:::-;42630:30;;42611:6;:18;;;:49;;;;:::i;:::-;42610:103;;;;:::i;:::-;42590:17;;;:123;42750:21;;:40;;42774:16;;42750:40;:::i;:::-;42726:21;:64;42821:19;;;;:38;;42843:16;;42821:38;:::i;:::-;42799:19;;;:60;42868:46;;42876:10;;42868:46;;;;;42897:16;;42868:46;;;;42897:16;42876:10;42868:46;;;;;;;;;;;;;;;;;;;;;42094:827;;:::o;39475:31::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;39475:31:0;;-1:-1:-1;39475:31:0;:::o;28827:147::-;28508:7;28535:12;;;;;;;;;;:22;;;26490:16;26501:4;26490:10;:16::i;:::-;28941:25:::1;28952:4;28958:7;28941:10;:25::i;44802:278::-:0;44852:4;44870:10;44896:6;44891:162;44912:14;:21;44908:25;;44891:162;;;44980:10;-1:-1:-1;;;;;44959:31:0;:14;44974:1;44959:17;;;;;;-1:-1:-1;;;44959:17:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;44959:17:0;:31;44955:80;;;45018:1;45010:9;;44955:80;44935:3;;;;:::i;:::-;;;;44891:162;;;-1:-1:-1;45068:5:0;44802:278;-1:-1:-1;44802:278:0:o;29875:218::-;-1:-1:-1;;;;;29971:23:0;;680:10;29971:23;29963:83;;;;-1:-1:-1;;;29963:83:0;;9013:2:1;29963:83:0;;;8995:21:1;9052:2;9032:18;;;9025:30;9091:34;9071:18;;;9064:62;-1:-1:-1;;;9142:18:1;;;9135:45;9197:19;;29963:83:0;;;;;;;;;30059:26;30071:4;30077:7;30059:11;:26::i;:::-;29875:218;;:::o;40949:1103::-;18750:1;19348:7;;:19;;19340:63;;;;-1:-1:-1;;;19340:63:0;;8303:2:1;19340:63:0;;;8285:21:1;8342:2;8322:18;;;8315:30;8381:33;8361:18;;;8354:61;8432:18;;19340:63:0;8275:181:1;19340:63:0;18750:1;19481:7;:18;;;41041:5;::::1;41032:44;;;::::0;-1:-1:-1;;;41032:44:0;;7254:2:1;41032:44:0::1;::::0;::::1;7236:21:1::0;7293:2;7273:18;;;7266:30;7332:28;7312:18;;;7305:56;7378:18;;41032:44:0::1;7226:176:1::0;41032:44:0::1;-1:-1:-1::0;;;;;41113:16:0;::::1;41089:21;41113:16:::0;;;:7:::1;:16;::::0;;;;41149:13;;::::1;;41140:41;;;::::0;-1:-1:-1;;;41140:41:0;;9429:2:1;41140:41:0::1;::::0;::::1;9411:21:1::0;9468:2;9448:18;;;9441:30;-1:-1:-1;;;9487:18:1;;;9480:44;9541:18;;41140:41:0::1;9401:164:1::0;41140:41:0::1;41194:14;:12;:14::i;:::-;41227:8:::0;41223:173:::1;;41276:1;41257:6;:18;;;:20;41248:56;;;::::0;-1:-1:-1;;;41248:56:0;;7952:2:1;41248:56:0::1;::::0;::::1;7934:21:1::0;7991:2;7971:18;;;7964:30;-1:-1:-1;;;8010:18:1;;;8003:52;8072:18;;41248:56:0::1;7924:172:1::0;41248:56:0::1;41339:1;41318:6;:18;;:22;;;;41383:1;41367:13;;:17;;;;:::i;:::-;41351:13;:33:::0;41223:173:::1;41412:3;41419:1;41412:8;41408:167;;;41460:1;41442:6;:17;;;:19;41433:54;;;::::0;-1:-1:-1;;;41433:54:0;;8663:2:1;41433:54:0::1;::::0;::::1;8645:21:1::0;8702:2;8682:18;;;8675:30;-1:-1:-1;;;8721:18:1;;;8714:51;8782:18;;41433:54:0::1;8635:171:1::0;41433:54:0::1;41520:1;41500:17;::::0;::::1;:21:::0;41547:12:::1;::::0;:16:::1;::::0;41562:1:::1;::::0;41547:16:::1;:::i;:::-;41532:12;:31:::0;41408:167:::1;41621:1;41604:14;;:18;;;;:::i;:::-;41587:14;:35:::0;41643:21;;-1:-1:-1;;41643:21:0::1;::::0;;41659:5:::1;41690:19;:17;:19::i;:::-;41744:14;41759:21:::0;;41677:32;;-1:-1:-1;41744:14:0;41759:23:::1;::::0;41781:1:::1;::::0;41759:23:::1;:::i;:::-;41744:39;;;;;;-1:-1:-1::0;;;41744:39:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;41720:14:::1;:21:::0;;-1:-1:-1;;;;;41744:39:0;;::::1;::::0;41735:5;;41720:21;::::1;;;-1:-1:-1::0;;;41720:21:0::1;;;;;;;;;;;;;;;;;:63;;;;;-1:-1:-1::0;;;;;41720:63:0::1;;;;;-1:-1:-1::0;;;;;41720:63:0::1;;;;;;41796:14;:20;;;;;-1:-1:-1::0;;;41796:20:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;41796:20:0;;;;;-1:-1:-1;;;;;;41796:20:0::1;::::0;;;;;41923:29:::1;::::0;41905:17:::1;::::0;::::1;::::0;:47:::1;::::0;41923:29;41905:47:::1;:::i;:::-;41870:30;;41851:6;:18;;;:49;;;;:::i;:::-;41850:103;;;;:::i;:::-;41830:17;::::0;;::::1;:123:::0;;;;41968:21:::1;::::0;:77:::1;::::0;-1:-1:-1;;;41968:77:0;;-1:-1:-1;;;;;41968:21:0;;::::1;::::0;:38:::1;::::0;:77:::1;::::0;42015:4:::1;::::0;42022:10:::1;::::0;42034:3;;41968:21;;:77:::1;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;18706:1:0;19660:22;;-1:-1:-1;;;;;;40949:1103:0:o;43344:1446::-;43411:1;43396:14;;:16;43392:61;;;43344:1446::o;43392:61::-;43466:18;43535:10;;43511:21;;43487;:45;;;;:::i;:::-;:58;;;;:::i;:::-;43466:79;;43557:20;43606:15;;43591:14;;43580:10;:25;;;;:::i;:::-;:41;;;;:::i;:::-;43557:64;;43633:19;43680:15;;43666:13;;43655:10;:24;;;;:::i;:::-;:40;;;;:::i;:::-;43633:62;;43726:1;43712:13;;:15;43709:337;;;43757:10;43743:24;;43796:1;43781:16;;43847:11;43829:15;;:29;;;;:::i;:::-;43811:15;:47;43949:12;;43937:24;;:11;:24;:::i;:::-;43904:29;;:58;;;;:::i;:::-;43872:29;:90;43988:10;;:23;;44001:10;;43988:23;:::i;:::-;43976:10;:35;-1:-1:-1;;;43344:1446:0:o;43709:337::-;44075:1;44062:12;;:14;44059:343;;;44107:10;44092:25;;44145:1;44131:15;;44198:12;44179:16;;:31;;;;:::i;:::-;44160:16;:50;44304:13;;44291:26;;:12;:26;:::i;:::-;44257:30;;:61;;;;:::i;:::-;44224:30;:94;44344:10;;:23;;44357:10;;44344:23;:::i;44059:343::-;44495:13;;44482:26;;:12;:26;:::i;:::-;44448:30;;:61;;;;:::i;:::-;44415:30;:94;44540:16;;:31;;44559:12;;44540:31;:::i;:::-;44521:16;:50;44660:12;;44648:24;;:11;:24;:::i;:::-;44615:29;;:58;;;;:::i;:::-;44583:29;:90;44703:15;;:28;;44720:11;;44703:28;:::i;:::-;44685:15;:46;44756:10;;:23;;44769:10;;44756:23;:::i;45287:171::-;45355:13;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45355:13:0;-1:-1:-1;;;;;;45406:17:0;45383:20;45406:17;;;:7;:17;;;;;;;;;45383:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45287:171::o;42960:308::-;43054:10;43004:7;43046:19;;;:7;:19;;;;;43207:17;;;;;43174:29;;43156:17;;;;43004:7;;43207:17;43156:47;;;:::i;:::-;43121:30;;43102:6;:18;;;:49;;;;:::i;:::-;43101:103;;;;:::i;:::-;:123;;;;:::i;:::-;43074:150;42960:308;-1:-1:-1;;;42960:308:0:o;45087:192::-;45155:7;45177:16;45213:14;45228:6;45213:22;;;;;;-1:-1:-1;;;45213:22:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;45213:22:0;;45087:192;-1:-1:-1;;;45087:192:0:o;26894:147::-;26980:4;27004:12;;;;;;;;;;;-1:-1:-1;;;;;27004:29:0;;;;;;;;;;;;;;;26894:147::o;39658:332::-;38469:27;26490:16;26501:4;26490:10;:16::i;:::-;39771:20:::1;39794:28;39809:13:::0;39794:14;:28:::1;:::i;:::-;39771:51;;39840:15;39859:3;39840:22;39831:32;;;::::0;::::1;;39872:14;:31:::0;;;;-1:-1:-1;39912:13:0::1;:29:::0;39950:15:::1;:33:::0;39658:332::o;29219:149::-;28508:7;28535:12;;;;;;;;;;:22;;;26490:16;26501:4;26490:10;:16::i;:::-;29334:26:::1;29346:4;29352:7;29334:11;:26::i;39517:134::-:0;26044:4;26490:16;26044:4;26490:10;:16::i;:::-;39608:35:::1;38469:27;39635:7;39608:10;:35::i;39997:942::-:0;18750:1;19348:7;;:19;;19340:63;;;;-1:-1:-1;;;19340:63:0;;8303:2:1;19340:63:0;;;8285:21:1;8342:2;8322:18;;;8315:30;8381:33;8361:18;;;8354:61;8432:18;;19340:63:0;8275:181:1;19340:63:0;18750:1;19481:7;:18;;;40087:21;:44:::1;::::0;-1:-1:-1;;;40087:44:0;;-1:-1:-1;;;;;4860:32:1;;;40087:44:0::1;::::0;::::1;4842:51:1::0;4909:18;;;4902:34;;;40132:1:0::1;::::0;40087:21:::1;::::0;:31:::1;::::0;4815:18:1;;40087:44:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;40078:56;;;::::0;::::1;;40158:1;40154:3;:5;40145:44;;;::::0;-1:-1:-1;;;40145:44:0;;7254:2:1;40145:44:0::1;::::0;::::1;7236:21:1::0;7293:2;7273:18;;;7266:30;7332:28;7312:18;;;7305:56;7378:18;;40145:44:0::1;7226:176:1::0;40145:44:0::1;-1:-1:-1::0;;;;;40226:16:0;::::1;40202:21;40226:16:::0;;;:7:::1;:16;::::0;;;;40263:13;;::::1;;40262:14;40253:42;;;::::0;-1:-1:-1;;;40253:42:0;;7609:2:1;40253:42:0::1;::::0;::::1;7591:21:1::0;7648:2;7628:18;;;7621:30;-1:-1:-1;;;7667:18:1;;;7660:44;7721:18;;40253:42:0::1;7581:164:1::0;40253:42:0::1;40308:14;:12;:14::i;:::-;40341:8:::0;40337:103:::1;;40383:1;40362:18:::0;;::::1;:22:::0;;;40411:13:::1;::::0;:17:::1;::::0;::::1;:::i;:::-;40395:13;:33:::0;40337:103:::1;40456:3;40463:1;40456:8;40452:100;;;40497:1;40477:17;::::0;::::1;:21:::0;;;40524:12:::1;::::0;:16:::1;::::0;::::1;:::i;:::-;40509:12;:31:::0;40452:100:::1;40581:14;::::0;:18:::1;::::0;40598:1:::1;40581:18;:::i;:::-;40564:14;:35:::0;40620:20;;-1:-1:-1;;40620:20:0::1;40636:4;40620:20:::0;;::::1;::::0;;40663:14:::1;:31:::0;;;;::::1;::::0;;40620:13:::1;40663:31:::0;;::::1;::::0;;-1:-1:-1;;;;;;40663:31:0::1;40683:10;40663:31;::::0;;40810:29:::1;::::0;40792:17:::1;::::0;::::1;::::0;:47:::1;::::0;40810:29;40792:47:::1;:::i;:::-;40757:30;;40738:6;:18;;;:49;;;;:::i;:::-;40737:103;;;;:::i;:::-;40717:17;::::0;;::::1;:123:::0;;;;40855:21:::1;::::0;:77:::1;::::0;-1:-1:-1;;;40855:77:0;;-1:-1:-1;;;;;40855:21:0;;::::1;::::0;:38:::1;::::0;:77:::1;::::0;40894:10:::1;::::0;40914:4:::1;::::0;40921:3;;40855:21;;:77:::1;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;18706:1:0;19660:22;;-1:-1:-1;;;;;39997:942:0:o;27345:105::-;27412:30;27423:4;680:10;27412;:30::i;:::-;27345:105;:::o;31376:238::-;31460:22;31468:4;31474:7;31460;:22::i;:::-;31455:152;;31499:6;:12;;;;;;;;;;;-1:-1:-1;;;;;31499:29:0;;;;;;;;;:36;;-1:-1:-1;;31499:36:0;31531:4;31499:36;;;31582:12;680:10;;600:98;31582:12;-1:-1:-1;;;;;31555:40:0;31573:7;-1:-1:-1;;;;;31555:40:0;31567:4;31555:40;;;;;;;;;;31376:238;;:::o;31746:239::-;31830:22;31838:4;31844:7;31830;:22::i;:::-;31826:152;;;31901:5;31869:12;;;;;;;;;;;-1:-1:-1;;;;;31869:29:0;;;;;;;;;;:37;;-1:-1:-1;;31869:37:0;;;31926:40;680:10;;31869:12;;31926:40;;31901:5;31926:40;31746:239;;:::o;27740:505::-;27829:22;27837:4;27843:7;27829;:22::i;:::-;27824:414;;28017:41;28045:7;-1:-1:-1;;;;;28017:41:0;28055:2;28017:19;:41::i;:::-;28131:38;28159:4;28166:2;28131:19;:38::i;:::-;27922:270;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;27922:270:0;;;;;;;;;;-1:-1:-1;;;27868:358:0;;;;;;;:::i;2341:451::-;2416:13;2442:19;2474:10;2478:6;2474:1;:10;:::i;:::-;:14;;2487:1;2474:14;:::i;:::-;2464:25;;;;;;-1:-1:-1;;;2464:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2464:25:0;;2442:47;;-1:-1:-1;;;2500:6:0;2507:1;2500:9;;;;;;-1:-1:-1;;;2500:9:0;;;;;;;;;;;;:15;-1:-1:-1;;;;;2500:15:0;;;;;;;;;-1:-1:-1;;;2526:6:0;2533:1;2526:9;;;;;;-1:-1:-1;;;2526:9:0;;;;;;;;;;;;:15;-1:-1:-1;;;;;2526:15:0;;;;;;;;-1:-1:-1;2557:9:0;2569:10;2573:6;2569:1;:10;:::i;:::-;:14;;2582:1;2569:14;:::i;:::-;2557:26;;2552:135;2589:1;2585;:5;2552:135;;;-1:-1:-1;;;2637:5:0;2645:3;2637:11;2624:25;;;;;-1:-1:-1;;;2624:25:0;;;;;;;;;;;;2612:6;2619:1;2612:9;;;;;;-1:-1:-1;;;2612:9:0;;;;;;;;;;;;:37;-1:-1:-1;;;;;2612:37:0;;;;;;;;-1:-1:-1;2674:1:0;2664:11;;;;;2592:3;;;:::i;:::-;;;2552:135;;;-1:-1:-1;2705:10:0;;2697:55;;;;-1:-1:-1;;;2697:55:0;;6893:2:1;2697:55:0;;;6875:21:1;;;6912:18;;;6905:30;6971:34;6951:18;;;6944:62;7023:18;;2697:55:0;6865:182:1;14:173;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:196::-;251:6;304:2;292:9;283:7;279:23;275:32;272:2;;;325:6;317;310:22;272:2;353:29;372:9;353:29;:::i;393:927::-;499:6;507;515;523;531;539;592:3;580:9;571:7;567:23;563:33;560:2;;;614:6;606;599:22;560:2;642:29;661:9;642:29;:::i;:::-;632:39;;690:38;724:2;713:9;709:18;690:38;:::i;:::-;680:48;;775:2;764:9;760:18;747:32;737:42;;826:2;815:9;811:18;798:32;788:42;;881:3;870:9;866:19;853:33;905:18;946:2;938:6;935:14;932:2;;;967:6;959;952:22;932:2;1010:6;999:9;995:22;985:32;;1055:7;1048:4;1044:2;1040:13;1036:27;1026:2;;1082:6;1074;1067:22;1026:2;1127;1114:16;1153:2;1145:6;1142:14;1139:2;;;1174:6;1166;1159:22;1139:2;1224:7;1219:2;1210:6;1206:2;1202:15;1198:24;1195:37;1192:2;;;1250:6;1242;1235:22;1192:2;1286;1282;1278:11;1268:21;;1308:6;1298:16;;;;;550:770;;;;;;;;:::o;1325:264::-;1393:6;1401;1454:2;1442:9;1433:7;1429:23;1425:32;1422:2;;;1475:6;1467;1460:22;1422:2;1503:29;1522:9;1503:29;:::i;:::-;1493:39;1579:2;1564:18;;;;1551:32;;-1:-1:-1;;;1412:177:1:o;1594:190::-;1653:6;1706:2;1694:9;1685:7;1681:23;1677:32;1674:2;;;1727:6;1719;1712:22;1674:2;-1:-1:-1;1755:23:1;;1664:120;-1:-1:-1;1664:120:1:o;1789:264::-;1857:6;1865;1918:2;1906:9;1897:7;1893:23;1889:32;1886:2;;;1939:6;1931;1924:22;1886:2;1980:9;1967:23;1957:33;;2009:38;2043:2;2032:9;2028:18;2009:38;:::i;:::-;1999:48;;1876:177;;;;;:::o;2058:306::-;2116:6;2169:2;2157:9;2148:7;2144:23;2140:32;2137:2;;;2190:6;2182;2175:22;2137:2;2221:23;;-1:-1:-1;;;;;;2273:32:1;;2263:43;;2253:2;;2325:6;2317;2310:22;2564:194;2634:6;2687:2;2675:9;2666:7;2662:23;2658:32;2655:2;;;2708:6;2700;2693:22;2655:2;-1:-1:-1;2736:16:1;;2645:113;-1:-1:-1;2645:113:1:o;2763:258::-;2831:6;2839;2892:2;2880:9;2871:7;2867:23;2863:32;2860:2;;;2913:6;2905;2898:22;2860:2;-1:-1:-1;;2941:23:1;;;3011:2;2996:18;;;2983:32;;-1:-1:-1;2850:171:1:o;3026:786::-;3437:25;3432:3;3425:38;3407:3;3492:6;3486:13;3508:62;3563:6;3558:2;3553:3;3549:12;3542:4;3534:6;3530:17;3508:62;:::i;:::-;-1:-1:-1;;;3629:2:1;3589:16;;;3621:11;;;3614:40;3679:13;;3701:63;3679:13;3750:2;3742:11;;3735:4;3723:17;;3701:63;:::i;:::-;3784:17;3803:2;3780:26;;3415:397;-1:-1:-1;;;;3415:397:1:o;4025:638::-;-1:-1:-1;;;;;4384:15:1;;;4366:34;;4436:15;;;;4431:2;4416:18;;4409:43;4483:2;4468:18;;4461:34;4526:2;4511:18;;4504:34;;;;4346:3;4569;4554:19;;4547:32;;;4309:4;4595:19;;;4588:33;4653:3;4638:19;;4318:345::o;6303:383::-;6452:2;6441:9;6434:21;6415:4;6484:6;6478:13;6527:6;6522:2;6511:9;6507:18;6500:34;6543:66;6602:6;6597:2;6586:9;6582:18;6577:2;6569:6;6565:15;6543:66;:::i;:::-;6670:2;6649:15;-1:-1:-1;;6645:29:1;6630:45;;;;6677:2;6626:54;;6424:262;-1:-1:-1;;6424:262:1:o;10321:128::-;10361:3;10392:1;10388:6;10385:1;10382:13;10379:2;;;10398:18;;:::i;:::-;-1:-1:-1;10434:9:1;;10369:80::o;10454:217::-;10494:1;10520;10510:2;;-1:-1:-1;;;10545:31:1;;10599:4;10596:1;10589:15;10627:4;10552:1;10617:15;10510:2;-1:-1:-1;10656:9:1;;10500:171::o;10676:168::-;10716:7;10782:1;10778;10774:6;10770:14;10767:1;10764:21;10759:1;10752:9;10745:17;10741:45;10738:2;;;10789:18;;:::i;:::-;-1:-1:-1;10829:9:1;;10728:116::o;10849:125::-;10889:4;10917:1;10914;10911:8;10908:2;;;10922:18;;:::i;:::-;-1:-1:-1;10959:9:1;;10898:76::o;10979:258::-;11051:1;11061:113;11075:6;11072:1;11069:13;11061:113;;;11151:11;;;11145:18;11132:11;;;11125:39;11097:2;11090:10;11061:113;;;11192:6;11189:1;11186:13;11183:2;;;11227:1;11218:6;11213:3;11209:16;11202:27;11183:2;;11032:205;;;:::o;11242:136::-;11281:3;11309:5;11299:2;;11318:18;;:::i;:::-;-1:-1:-1;;;11354:18:1;;11289:89::o;11383:135::-;11422:3;-1:-1:-1;;11443:17:1;;11440:2;;;11463:18;;:::i;:::-;-1:-1:-1;11510:1:1;11499:13;;11430:88::o;11523:127::-;11584:10;11579:3;11575:20;11572:1;11565:31;11615:4;11612:1;11605:15;11639:4;11636:1;11629:15
Swarm Source
ipfs://137e584faa8203c3e283d6d6498bc6c505e799e6058eec8b5b38d0f352e053c7
Loading...
Loading
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
CRONOS | Cronos (CRO) | 100.00% | $0.079882 | 612.8149 | $48.95 |
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.