More Info
Private Name Tags
Latest 25 from a total of 2,275 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Return Asset Own... | 14441157 | 994 days ago | IN | 0 ETH | 0.00082294 | ||||
Mint | 14393038 | 1002 days ago | IN | 0.21 ETH | 0.00165055 | ||||
Mint | 14357542 | 1007 days ago | IN | 0.21 ETH | 0.00053392 | ||||
Claim Balance | 14332777 | 1011 days ago | IN | 0 ETH | 0.00088771 | ||||
Mint | 14319773 | 1013 days ago | IN | 0.21 ETH | 0.00439172 | ||||
Add White List | 14319769 | 1013 days ago | IN | 0 ETH | 0.00068599 | ||||
Mint | 14319754 | 1013 days ago | IN | 0.21 ETH | 0.00556344 | ||||
Mint | 14319749 | 1013 days ago | IN | 0.21 ETH | 0.00540493 | ||||
Mint | 14319721 | 1013 days ago | IN | 0.21 ETH | 0.00515881 | ||||
Mint | 14319671 | 1013 days ago | IN | 0.21 ETH | 0.00457611 | ||||
Mint | 14319649 | 1013 days ago | IN | 0.21 ETH | 0.00534703 | ||||
Mint | 14319649 | 1013 days ago | IN | 0.21 ETH | 0.00534703 | ||||
Mint | 14319643 | 1013 days ago | IN | 0.21 ETH | 0.00565962 | ||||
Mint | 14319610 | 1013 days ago | IN | 0.21 ETH | 0.00559863 | ||||
Mint | 14319599 | 1013 days ago | IN | 0.21 ETH | 0.00639107 | ||||
Mint | 14319598 | 1013 days ago | IN | 0.21 ETH | 0.00571633 | ||||
Mint | 14319580 | 1013 days ago | IN | 0.21 ETH | 0.00555538 | ||||
Mint | 14319572 | 1013 days ago | IN | 0.21 ETH | 0.00596294 | ||||
Team Mint | 14319549 | 1013 days ago | IN | 0 ETH | 0.02966636 | ||||
Team Mint | 14319542 | 1013 days ago | IN | 0 ETH | 0.22454782 | ||||
Add White List | 14319541 | 1013 days ago | IN | 0 ETH | 0.00793985 | ||||
Mint | 14319539 | 1013 days ago | IN | 0.21 ETH | 0.00525282 | ||||
Mint | 14319479 | 1013 days ago | IN | 0.21 ETH | 0.00658839 | ||||
Mint | 14319445 | 1013 days ago | IN | 0.21 ETH | 0.00501018 | ||||
Mint | 14319422 | 1013 days ago | IN | 0.21 ETH | 0.0056228 |
Loading...
Loading
Contract Name:
SecondSkinMinter
Compiler Version
v0.8.6+commit.11564f7e
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.6; import './ERC721.sol'; /* ************************************************************** ************************************************************** * ______ __ __________ ______ __ __ ______ * *../ _ |.| |.(___ ___)./ _ |.| |...| |.../ _ |* *./ /.| |.| |.....| |... / /.| |.| |...| |../ /.| |* *| (__| |.| |.....| |...| (__| |.| \.../ |.| (__| |* *| __ |.| |___ .| |...| __ |..\ \_/ /..| __ |* *|__(..(__|.|______|.|__|...|__(..(__|...\_____/...|__(..(__|* * * ************************************************************** * _ _ * * | | | | * * __ _| |_| |_ __ _ __ __ __ _ * * / _` | |_ _|/ _` |\ \ / // _` |* * | (_| | | | | | (_| | \ \/ /| (_| |* * \__,_|_| |_| \__,_| \__/ \__,_|* ************************************************************** ************************************************************** */ contract SecondSkinMinter is Ownable { SecondSkinERC721 private asset; address private assetAddress; uint256 private arrayIndex = 0; uint256 private startTime = 1646042400; uint256 private endTime = 1646215200; uint256 private mintPrice = 210000000000000000; uint256 private teamMinted = 0; string metadata = ""; mapping (address => bool) public Wallets; function uint2str(uint _i) internal pure returns (string memory _uintAsString) { if (_i == 0) { return "0"; } uint j = _i; uint len; while (j != 0) { len++; j /= 10; } bytes memory bstr = new bytes(len); uint k = len; while (_i != 0) { k = k-1; uint8 temp = (48 + uint8(_i - _i / 10 * 10)); bytes1 b1 = bytes1(temp); bstr[k] = b1; _i /= 10; } return string(bstr); } function strConcat(string memory _a, string memory _b, string memory _c) internal pure returns (string memory){ bytes memory _ba = bytes(_a); bytes memory _bb = bytes(_b); bytes memory _bc = bytes(_c); string memory abc = new string(_ba.length + _bb.length + _bc.length); bytes memory babc = bytes(abc); uint256 k = 0; for (uint256 i = 0; i < _ba.length; i++) babc[k++] = _ba[i]; for (uint256 i = 0; i < _bb.length; i++) babc[k++] = _bb[i]; for (uint256 i = 0; i < _bc.length; i++) babc[k++] = _bc[i]; return string(babc); } function Mint() public payable returns (bool) { require(block.timestamp >= startTime && block.timestamp < endTime , "Not minting time"); require(Wallets[msg.sender] || msg.sender == owner, "Not whitelisted wallet"); require(msg.value >= mintPrice || (msg.sender == owner && teamMinted < 184), "Not right value"); require(arrayIndex + 184 - teamMinted < 2584, "Sold Out"); asset = SecondSkinERC721(assetAddress); asset.mint(msg.sender, arrayIndex+1, strConcat(metadata, uint2str(arrayIndex+1), ".json")); if (msg.sender == owner) { teamMinted++; } arrayIndex++; Wallets[msg.sender] = false; return true; } function TeamMint(uint256 amount) public onlyOwner payable { require(teamMinted + amount < 185); asset = SecondSkinERC721(assetAddress); for (uint256 i = 0; i < amount; i++) { asset.mint(msg.sender, arrayIndex+1, strConcat(metadata, uint2str(arrayIndex+1), ".json")); teamMinted++; arrayIndex++; } } function getIndexCursor() public view returns (uint256) { return arrayIndex; } function getLeftTime() public view returns (uint256){ return startTime - block.timestamp; } function getNowTime() public view returns (uint256) { return block.timestamp; } function getLeftAmount() public view returns (uint256) { return 2584 - arrayIndex; } function setStartTime(uint256 _time) public onlyOwner returns (bool) { startTime = _time; return true; } function setEndTime(uint256 _time) public onlyOwner returns (bool) { endTime = _time; return true; } function addWhiteList(address[] memory _wallets) public onlyOwner { for (uint256 i = 0; i < _wallets.length; i++) { Wallets[_wallets[i]] = true; } } function setPrice(uint256 _price) public onlyOwner returns (bool) { mintPrice = _price; return true; } function getTeamMintedAmount() public onlyOwner view returns (uint256) { return teamMinted; } function getMetadata() public view returns (string memory) { return metadata; } function setMetadata(string memory _metadata) public onlyOwner { metadata = _metadata; } function getAssetAddress() public view returns (address) { return assetAddress; } function setAssetAddress(address _assetAddress) public onlyOwner { assetAddress = _assetAddress; } function returnAssetOwnership() public onlyOwner { asset = SecondSkinERC721(assetAddress); asset.transferOwnership(msg.sender); } function claimBalance(uint256 amount) public onlyOwner { payable(msg.sender).transfer(amount); } function isWL() view public returns (bool) { return Wallets[msg.sender]; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "https://github.com/nibbstack/erc721/src/contracts/tokens/nf-token-metadata.sol"; import "https://github.com/nibbstack/erc721/src/contracts/ownership/ownable.sol"; /** * @dev This is an example contract implementation of NFToken with metadata extension. */ contract SecondSkinERC721 is NFTokenMetadata, Ownable { /** * @dev Contract constructor. Sets metadata extension `name` and `symbol`. */ constructor() { nftName = "ALTAVA Second Skin : Metamorphosis"; nftSymbol = "ASSM"; } /** * @dev Mints a new NFT. * @param _to The address that will own the minted NFT. * @param _tokenId of the NFT to be minted by the msg.sender. * @param _uri String representing RFC 3986 URI. */ function mint( address _to, uint256 _tokenId, string calldata _uri ) external onlyOwner { super._mint(_to, _tokenId); super._setTokenUri(_tokenId, _uri); } function burn( uint256 _tokenId ) external onlyOwner { super._burn(_tokenId); } function setTokenUri( uint256 _tokenId, string calldata _uri ) external onlyOwner { super._setTokenUri(_tokenId, _uri); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev The contract has an owner address, and provides basic authorization control whitch * simplifies the implementation of user permissions. This contract is based on the source code at: * https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/Ownable.sol */ contract Ownable { /** * @dev Error constants. */ string public constant NOT_CURRENT_OWNER = "018001"; string public constant CANNOT_TRANSFER_TO_ZERO_ADDRESS = "018002"; /** * @dev Current owner address. */ address public owner; /** * @dev An event which is triggered when the owner is changed. * @param previousOwner The address of the previous owner. * @param newOwner The address of the new owner. */ event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev The constructor sets the original `owner` of the contract to the sender account. */ constructor() { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner, NOT_CURRENT_OWNER); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function transferOwnership( address _newOwner ) public onlyOwner { require(_newOwner != address(0), CANNOT_TRANSFER_TO_ZERO_ADDRESS); emit OwnershipTransferred(owner, _newOwner); owner = _newOwner; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./nf-token.sol"; import "./erc721-metadata.sol"; /** * @dev Optional metadata implementation for ERC-721 non-fungible token standard. */ contract NFTokenMetadata is NFToken, ERC721Metadata { /** * @dev A descriptive name for a collection of NFTs. */ string internal nftName; /** * @dev An abbreviated name for NFTokens. */ string internal nftSymbol; /** * @dev Mapping from NFT ID to metadata uri. */ mapping (uint256 => string) internal idToUri; /** * @notice When implementing this contract don't forget to set nftName and nftSymbol. * @dev Contract constructor. */ constructor() { supportedInterfaces[0x5b5e139f] = true; // ERC721Metadata } /** * @dev Returns a descriptive name for a collection of NFTokens. * @return _name Representing name. */ function name() external override view returns (string memory _name) { _name = nftName; } /** * @dev Returns an abbreviated name for NFTokens. * @return _symbol Representing symbol. */ function symbol() external override view returns (string memory _symbol) { _symbol = nftSymbol; } /** * @dev A distinct URI (RFC 3986) for a given NFT. * @param _tokenId Id for which we want uri. * @return URI of _tokenId. */ function tokenURI( uint256 _tokenId ) external override view validNFToken(_tokenId) returns (string memory) { return _tokenURI(_tokenId); } /** * @notice This is an internal function that can be overriden if you want to implement a different * way to generate token URI. * @param _tokenId Id for which we want uri. * @return URI of _tokenId. */ function _tokenURI( uint256 _tokenId ) internal virtual view returns (string memory) { return idToUri[_tokenId]; } /** * @notice This is an internal function which should be called from user-implemented external * burn function. Its purpose is to show and properly initialize data structures when using this * implementation. Also, note that this burn implementation allows the minter to re-mint a burned * NFT. * @dev Burns a NFT. * @param _tokenId ID of the NFT to be burned. */ function _burn( uint256 _tokenId ) internal override virtual { super._burn(_tokenId); delete idToUri[_tokenId]; } /** * @notice This is an internal function which should be called from user-implemented external * function. Its purpose is to show and properly initialize data structures when using this * implementation. * @dev Set a distinct URI (RFC 3986) for a given NFT ID. * @param _tokenId Id for which we want URI. * @param _uri String representing RFC 3986 URI. */ function _setTokenUri( uint256 _tokenId, string memory _uri ) internal validNFToken(_tokenId) { idToUri[_tokenId] = _uri; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Optional metadata extension for ERC-721 non-fungible token standard. * See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md. */ interface ERC721Metadata { /** * @dev Returns a descriptive name for a collection of NFTs in this contract. * @return _name Representing name. */ function name() external view returns (string memory _name); /** * @dev Returns a abbreviated name for a collection of NFTs in this contract. * @return _symbol Representing symbol. */ function symbol() external view returns (string memory _symbol); /** * @dev Returns a distinct Uniform Resource Identifier (URI) for a given asset. It Throws if * `_tokenId` is not a valid NFT. URIs are defined in RFC3986. The URI may point to a JSON file * that conforms to the "ERC721 Metadata JSON Schema". * @return URI of _tokenId. */ function tokenURI(uint256 _tokenId) external view returns (string memory); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./erc721.sol"; import "./erc721-token-receiver.sol"; import "../utils/supports-interface.sol"; import "../utils/address-utils.sol"; /** * @dev Implementation of ERC-721 non-fungible token standard. */ contract NFToken is ERC721, SupportsInterface { using AddressUtils for address; /** * @dev List of revert message codes. Implementing dApp should handle showing the correct message. * Based on 0xcert framework error codes. */ string constant ZERO_ADDRESS = "003001"; string constant NOT_VALID_NFT = "003002"; string constant NOT_OWNER_OR_OPERATOR = "003003"; string constant NOT_OWNER_APPROVED_OR_OPERATOR = "003004"; string constant NOT_ABLE_TO_RECEIVE_NFT = "003005"; string constant NFT_ALREADY_EXISTS = "003006"; string constant NOT_OWNER = "003007"; string constant IS_OWNER = "003008"; /** * @dev Magic value of a smart contract that can receive NFT. * Equal to: bytes4(keccak256("onERC721Received(address,address,uint256,bytes)")). */ bytes4 internal constant MAGIC_ON_ERC721_RECEIVED = 0x150b7a02; /** * @dev A mapping from NFT ID to the address that owns it. */ mapping (uint256 => address) internal idToOwner; /** * @dev Mapping from NFT ID to approved address. */ mapping (uint256 => address) internal idToApproval; /** * @dev Mapping from owner address to count of their tokens. */ mapping (address => uint256) private ownerToNFTokenCount; /** * @dev Mapping from owner address to mapping of operator addresses. */ mapping (address => mapping (address => bool)) internal ownerToOperators; /** * @dev Guarantees that the msg.sender is an owner or operator of the given NFT. * @param _tokenId ID of the NFT to validate. */ modifier canOperate( uint256 _tokenId ) { address tokenOwner = idToOwner[_tokenId]; require( tokenOwner == msg.sender || ownerToOperators[tokenOwner][msg.sender], NOT_OWNER_OR_OPERATOR ); _; } /** * @dev Guarantees that the msg.sender is allowed to transfer NFT. * @param _tokenId ID of the NFT to transfer. */ modifier canTransfer( uint256 _tokenId ) { address tokenOwner = idToOwner[_tokenId]; require( tokenOwner == msg.sender || idToApproval[_tokenId] == msg.sender || ownerToOperators[tokenOwner][msg.sender], NOT_OWNER_APPROVED_OR_OPERATOR ); _; } /** * @dev Guarantees that _tokenId is a valid Token. * @param _tokenId ID of the NFT to validate. */ modifier validNFToken( uint256 _tokenId ) { require(idToOwner[_tokenId] != address(0), NOT_VALID_NFT); _; } /** * @dev Contract constructor. */ constructor() { supportedInterfaces[0x80ac58cd] = true; // ERC721 } /** * @notice Throws unless `msg.sender` is the current owner, an authorized operator, or the * approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is * the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this * function checks if `_to` is a smart contract (code size > 0). If so, it calls * `onERC721Received` on `_to` and throws if the return value is not * `bytes4(keccak256("onERC721Received(address,uint256,bytes)"))`. * @dev Transfers the ownership of an NFT from one address to another address. This function can * be changed to payable. * @param _from The current owner of the NFT. * @param _to The new owner. * @param _tokenId The NFT to transfer. * @param _data Additional data with no specified format, sent in call to `_to`. */ function safeTransferFrom( address _from, address _to, uint256 _tokenId, bytes calldata _data ) external override { _safeTransferFrom(_from, _to, _tokenId, _data); } /** * @notice This works identically to the other function with an extra data parameter, except this * function just sets data to "". * @dev Transfers the ownership of an NFT from one address to another address. This function can * be changed to payable. * @param _from The current owner of the NFT. * @param _to The new owner. * @param _tokenId The NFT to transfer. */ function safeTransferFrom( address _from, address _to, uint256 _tokenId ) external override { _safeTransferFrom(_from, _to, _tokenId, ""); } /** * @notice The caller is responsible to confirm that `_to` is capable of receiving NFTs or else * they may be permanently lost. * @dev Throws unless `msg.sender` is the current owner, an authorized operator, or the approved * address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero * address. Throws if `_tokenId` is not a valid NFT. This function can be changed to payable. * @param _from The current owner of the NFT. * @param _to The new owner. * @param _tokenId The NFT to transfer. */ function transferFrom( address _from, address _to, uint256 _tokenId ) external override canTransfer(_tokenId) validNFToken(_tokenId) { address tokenOwner = idToOwner[_tokenId]; require(tokenOwner == _from, NOT_OWNER); require(_to != address(0), ZERO_ADDRESS); _transfer(_to, _tokenId); } /** * @notice The zero address indicates there is no approved address. Throws unless `msg.sender` is * the current NFT owner, or an authorized operator of the current owner. * @dev Set or reaffirm the approved address for an NFT. This function can be changed to payable. * @param _approved Address to be approved for the given NFT ID. * @param _tokenId ID of the token to be approved. */ function approve( address _approved, uint256 _tokenId ) external override canOperate(_tokenId) validNFToken(_tokenId) { address tokenOwner = idToOwner[_tokenId]; require(_approved != tokenOwner, IS_OWNER); idToApproval[_tokenId] = _approved; emit Approval(tokenOwner, _approved, _tokenId); } /** * @notice This works even if sender doesn't own any tokens at the time. * @dev Enables or disables approval for a third party ("operator") to manage all of * `msg.sender`'s assets. It also emits the ApprovalForAll event. * @param _operator Address to add to the set of authorized operators. * @param _approved True if the operators is approved, false to revoke approval. */ function setApprovalForAll( address _operator, bool _approved ) external override { ownerToOperators[msg.sender][_operator] = _approved; emit ApprovalForAll(msg.sender, _operator, _approved); } /** * @dev Returns the number of NFTs owned by `_owner`. NFTs assigned to the zero address are * considered invalid, and this function throws for queries about the zero address. * @param _owner Address for whom to query the balance. * @return Balance of _owner. */ function balanceOf( address _owner ) external override view returns (uint256) { require(_owner != address(0), ZERO_ADDRESS); return _getOwnerNFTCount(_owner); } /** * @dev Returns the address of the owner of the NFT. NFTs assigned to the zero address are * considered invalid, and queries about them do throw. * @param _tokenId The identifier for an NFT. * @return _owner Address of _tokenId owner. */ function ownerOf( uint256 _tokenId ) external override view returns (address _owner) { _owner = idToOwner[_tokenId]; require(_owner != address(0), NOT_VALID_NFT); } /** * @notice Throws if `_tokenId` is not a valid NFT. * @dev Get the approved address for a single NFT. * @param _tokenId ID of the NFT to query the approval of. * @return Address that _tokenId is approved for. */ function getApproved( uint256 _tokenId ) external override view validNFToken(_tokenId) returns (address) { return idToApproval[_tokenId]; } /** * @dev Checks if `_operator` is an approved operator for `_owner`. * @param _owner The address that owns the NFTs. * @param _operator The address that acts on behalf of the owner. * @return True if approved for all, false otherwise. */ function isApprovedForAll( address _owner, address _operator ) external override view returns (bool) { return ownerToOperators[_owner][_operator]; } /** * @notice Does NO checks. * @dev Actually performs the transfer. * @param _to Address of a new owner. * @param _tokenId The NFT that is being transferred. */ function _transfer( address _to, uint256 _tokenId ) internal virtual { address from = idToOwner[_tokenId]; _clearApproval(_tokenId); _removeNFToken(from, _tokenId); _addNFToken(_to, _tokenId); emit Transfer(from, _to, _tokenId); } /** * @notice This is an internal function which should be called from user-implemented external * mint function. Its purpose is to show and properly initialize data structures when using this * implementation. * @dev Mints a new NFT. * @param _to The address that will own the minted NFT. * @param _tokenId of the NFT to be minted by the msg.sender. */ function _mint( address _to, uint256 _tokenId ) internal virtual { require(_to != address(0), ZERO_ADDRESS); require(idToOwner[_tokenId] == address(0), NFT_ALREADY_EXISTS); _addNFToken(_to, _tokenId); emit Transfer(address(0), _to, _tokenId); } /** * @notice This is an internal function which should be called from user-implemented external burn * function. Its purpose is to show and properly initialize data structures when using this * implementation. Also, note that this burn implementation allows the minter to re-mint a burned * NFT. * @dev Burns a NFT. * @param _tokenId ID of the NFT to be burned. */ function _burn( uint256 _tokenId ) internal virtual validNFToken(_tokenId) { address tokenOwner = idToOwner[_tokenId]; _clearApproval(_tokenId); _removeNFToken(tokenOwner, _tokenId); emit Transfer(tokenOwner, address(0), _tokenId); } /** * @notice Use and override this function with caution. Wrong usage can have serious consequences. * @dev Removes a NFT from owner. * @param _from Address from which we want to remove the NFT. * @param _tokenId Which NFT we want to remove. */ function _removeNFToken( address _from, uint256 _tokenId ) internal virtual { require(idToOwner[_tokenId] == _from, NOT_OWNER); ownerToNFTokenCount[_from] -= 1; delete idToOwner[_tokenId]; } /** * @notice Use and override this function with caution. Wrong usage can have serious consequences. * @dev Assigns a new NFT to owner. * @param _to Address to which we want to add the NFT. * @param _tokenId Which NFT we want to add. */ function _addNFToken( address _to, uint256 _tokenId ) internal virtual { require(idToOwner[_tokenId] == address(0), NFT_ALREADY_EXISTS); idToOwner[_tokenId] = _to; ownerToNFTokenCount[_to] += 1; } /** * @dev Helper function that gets NFT count of owner. This is needed for overriding in enumerable * extension to remove double storage (gas optimization) of owner NFT count. * @param _owner Address for whom to query the count. * @return Number of _owner NFTs. */ function _getOwnerNFTCount( address _owner ) internal virtual view returns (uint256) { return ownerToNFTokenCount[_owner]; } /** * @dev Actually perform the safeTransferFrom. * @param _from The current owner of the NFT. * @param _to The new owner. * @param _tokenId The NFT to transfer. * @param _data Additional data with no specified format, sent in call to `_to`. */ function _safeTransferFrom( address _from, address _to, uint256 _tokenId, bytes memory _data ) private canTransfer(_tokenId) validNFToken(_tokenId) { address tokenOwner = idToOwner[_tokenId]; require(tokenOwner == _from, NOT_OWNER); require(_to != address(0), ZERO_ADDRESS); _transfer(_to, _tokenId); if (_to.isContract()) { bytes4 retval = ERC721TokenReceiver(_to).onERC721Received(msg.sender, _from, _tokenId, _data); require(retval == MAGIC_ON_ERC721_RECEIVED, NOT_ABLE_TO_RECEIVE_NFT); } } /** * @dev Clears the current approval of a given NFT ID. * @param _tokenId ID of the NFT to be transferred. */ function _clearApproval( uint256 _tokenId ) private { delete idToApproval[_tokenId]; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @notice Based on: * https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Address.sol * Requires EIP-1052. * @dev Utility library of inline functions on addresses. */ library AddressUtils { /** * @dev Returns whether the target address is a contract. * @param _addr Address to check. * @return addressCheck True if _addr is a contract, false if not. */ function isContract( address _addr ) internal view returns (bool addressCheck) { // This method relies in extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; assembly { codehash := extcodehash(_addr) } // solhint-disable-line addressCheck = (codehash != 0x0 && codehash != accountHash); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./erc165.sol"; /** * @dev Implementation of standard for detect smart contract interfaces. */ contract SupportsInterface is ERC165 { /** * @dev Mapping of supported intefraces. You must not set element 0xffffffff to true. */ mapping(bytes4 => bool) internal supportedInterfaces; /** * @dev Contract constructor. */ constructor() { supportedInterfaces[0x01ffc9a7] = true; // ERC165 } /** * @dev Function to check which interfaces are suported by this contract. * @param _interfaceID Id of the interface. * @return True if _interfaceID is supported, false otherwise. */ function supportsInterface( bytes4 _interfaceID ) external override view returns (bool) { return supportedInterfaces[_interfaceID]; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev ERC-721 interface for accepting safe transfers. * See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md. */ interface ERC721TokenReceiver { /** * @notice The contract address is always the message sender. A wallet/broker/auction application * MUST implement the wallet interface if it will accept safe transfers. * @dev Handle the receipt of a NFT. The ERC721 smart contract calls this function on the * recipient after a `transfer`. This function MAY throw to revert and reject the transfer. Return * of other than the magic value MUST result in the transaction being reverted. * Returns `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` unless throwing. * @param _operator The address which called `safeTransferFrom` function. * @param _from The address which previously owned the token. * @param _tokenId The NFT identifier which is being transferred. * @param _data Additional data with no specified format. * @return Returns `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`. */ function onERC721Received( address _operator, address _from, uint256 _tokenId, bytes calldata _data ) external returns(bytes4); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev ERC-721 non-fungible token standard. * See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md. */ interface ERC721 { /** * @dev Emits when ownership of any NFT changes by any mechanism. This event emits when NFTs are * created (`from` == 0) and destroyed (`to` == 0). Exception: during contract creation, any * number of NFTs may be created and assigned without emitting Transfer. At the time of any * transfer, the approved address for that NFT (if any) is reset to none. */ event Transfer( address indexed _from, address indexed _to, uint256 indexed _tokenId ); /** * @dev This emits when the approved address for an NFT is changed or reaffirmed. The zero * address indicates there is no approved address. When a Transfer event emits, this also * indicates that the approved address for that NFT (if any) is reset to none. */ event Approval( address indexed _owner, address indexed _approved, uint256 indexed _tokenId ); /** * @dev This emits when an operator is enabled or disabled for an owner. The operator can manage * all NFTs of the owner. */ event ApprovalForAll( address indexed _owner, address indexed _operator, bool _approved ); /** * @notice Throws unless `msg.sender` is the current owner, an authorized operator, or the * approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is * the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this * function checks if `_to` is a smart contract (code size > 0). If so, it calls * `onERC721Received` on `_to` and throws if the return value is not * `bytes4(keccak256("onERC721Received(address,uint256,bytes)"))`. * @dev Transfers the ownership of an NFT from one address to another address. This function can * be changed to payable. * @param _from The current owner of the NFT. * @param _to The new owner. * @param _tokenId The NFT to transfer. * @param _data Additional data with no specified format, sent in call to `_to`. */ function safeTransferFrom( address _from, address _to, uint256 _tokenId, bytes calldata _data ) external; /** * @notice This works identically to the other function with an extra data parameter, except this * function just sets data to "" * @dev Transfers the ownership of an NFT from one address to another address. This function can * be changed to payable. * @param _from The current owner of the NFT. * @param _to The new owner. * @param _tokenId The NFT to transfer. */ function safeTransferFrom( address _from, address _to, uint256 _tokenId ) external; /** * @notice The caller is responsible to confirm that `_to` is capable of receiving NFTs or else * they may be permanently lost. * @dev Throws unless `msg.sender` is the current owner, an authorized operator, or the approved * address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero * address. Throws if `_tokenId` is not a valid NFT. This function can be changed to payable. * @param _from The current owner of the NFT. * @param _to The new owner. * @param _tokenId The NFT to transfer. */ function transferFrom( address _from, address _to, uint256 _tokenId ) external; /** * @notice The zero address indicates there is no approved address. Throws unless `msg.sender` is * the current NFT owner, or an authorized operator of the current owner. * @param _approved The new approved NFT controller. * @dev Set or reaffirm the approved address for an NFT. This function can be changed to payable. * @param _tokenId The NFT to approve. */ function approve( address _approved, uint256 _tokenId ) external; /** * @notice The contract MUST allow multiple operators per owner. * @dev Enables or disables approval for a third party ("operator") to manage all of * `msg.sender`'s assets. It also emits the ApprovalForAll event. * @param _operator Address to add to the set of authorized operators. * @param _approved True if the operators is approved, false to revoke approval. */ function setApprovalForAll( address _operator, bool _approved ) external; /** * @dev Returns the number of NFTs owned by `_owner`. NFTs assigned to the zero address are * considered invalid, and this function throws for queries about the zero address. * @notice Count all NFTs assigned to an owner. * @param _owner Address for whom to query the balance. * @return Balance of _owner. */ function balanceOf( address _owner ) external view returns (uint256); /** * @notice Find the owner of an NFT. * @dev Returns the address of the owner of the NFT. NFTs assigned to the zero address are * considered invalid, and queries about them do throw. * @param _tokenId The identifier for an NFT. * @return Address of _tokenId owner. */ function ownerOf( uint256 _tokenId ) external view returns (address); /** * @notice Throws if `_tokenId` is not a valid NFT. * @dev Get the approved address for a single NFT. * @param _tokenId The NFT to find the approved address for. * @return Address that _tokenId is approved for. */ function getApproved( uint256 _tokenId ) external view returns (address); /** * @notice Query if an address is an authorized operator for another address. * @dev Returns true if `_operator` is an approved operator for `_owner`, false otherwise. * @param _owner The address that owns the NFTs. * @param _operator The address that acts on behalf of the owner. * @return True if approved for all, false otherwise. */ function isApprovedForAll( address _owner, address _operator ) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev A standard for detecting smart contract interfaces. * See: https://eips.ethereum.org/EIPS/eip-165. */ interface ERC165 { /** * @dev Checks if the smart contract includes a specific interface. * This function uses less than 30,000 gas. * @param _interfaceID The interface identifier, as specified in ERC-165. * @return True if _interfaceID is supported, false otherwise. */ function supportsInterface( bytes4 _interfaceID ) external view returns (bool); }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"CANNOT_TRANSFER_TO_ZERO_ADDRESS","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"NOT_CURRENT_OWNER","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TeamMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"Wallets","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_wallets","type":"address[]"}],"name":"addWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claimBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAssetAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getIndexCursor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLeftAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLeftTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMetadata","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNowTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTeamMintedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isWL","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"returnAssetOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_assetAddress","type":"address"}],"name":"setAssetAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"setEndTime","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_metadata","type":"string"}],"name":"setMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"setPrice","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"setStartTime","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600060035563621c9d2060045563621f40206005556702ea11e32ad500006006556000600755604051806020016040528060008152506008908051906020019062000051929190620000a6565b503480156200005f57600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001bb565b828054620000b49062000156565b90600052602060002090601f016020900481019282620000d8576000855562000124565b82601f10620000f357805160ff191683800117855562000124565b8280016001018555821562000124579182015b828111156200012357825182559160200191906001019062000106565b5b50905062000133919062000137565b5090565b5b808211156200015257600081600090555060010162000138565b5090565b600060028204905060018216806200016f57607f821691505b602082108114156200018657620001856200018c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6128dc80620001cb6000396000f3fe6080604052600436106101405760003560e01c8063860d248a116100b6578063ccb98ffc1161006f578063ccb98ffc14610434578063deb3334214610471578063e9fad3961461049c578063f2fde38b146104c5578063f3fe3bc3146104ee578063f99b920e1461051957610140565b8063860d248a146103105780638da5cb5b1461033b57806391b7f5ed146103665780639b819d38146103a3578063a49a1e7d146103ce578063af154011146103f757610140565b8063670ab5e911610108578063670ab5e91461021f5780636710c1611461024a578063770e09fd146102755780637a5b4f591461029e5780637c610a7a146102c95780637e0c7fc5146102f457610140565b806301f730b4146101455780632f2898e01461017057806334c738841461019b5780633e0a322d146101b95780635e1045ec146101f6575b600080fd5b34801561015157600080fd5b5061015a610530565b6040516101679190612377565b60405180910390f35b34801561017c57600080fd5b5061018561053a565b6040516101929190612377565b60405180910390f35b6101a3610551565b6040516101b091906122ba565b60405180910390f35b3480156101c557600080fd5b506101e060048036038101906101db9190612142565b610a54565b6040516101ed91906122ba565b60405180910390f35b34801561020257600080fd5b5061021d600480360381019061021891906120b0565b610b2e565b005b34801561022b57600080fd5b50610234610c8a565b6040516102419190612261565b60405180910390f35b34801561025657600080fd5b5061025f610cb4565b60405161026c9190612377565b60405180910390f35b34801561028157600080fd5b5061029c60048036038101906102979190612083565b610d86565b005b3480156102aa57600080fd5b506102b3610e91565b6040516102c091906122d5565b60405180910390f35b3480156102d557600080fd5b506102de610f23565b6040516102eb9190612377565b60405180910390f35b61030e60048036038101906103099190612142565b610f38565b005b34801561031c57600080fd5b5061032561124c565b60405161033291906122d5565b60405180910390f35b34801561034757600080fd5b50610350611285565b60405161035d9190612261565b60405180910390f35b34801561037257600080fd5b5061038d60048036038101906103889190612142565b6112a9565b60405161039a91906122ba565b60405180910390f35b3480156103af57600080fd5b506103b8611383565b6040516103c59190612377565b60405180910390f35b3480156103da57600080fd5b506103f560048036038101906103f091906120f9565b61138b565b005b34801561040357600080fd5b5061041e60048036038101906104199190612083565b61146c565b60405161042b91906122ba565b60405180910390f35b34801561044057600080fd5b5061045b60048036038101906104569190612142565b61148c565b60405161046891906122ba565b60405180910390f35b34801561047d57600080fd5b50610486611566565b60405161049391906122ba565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be9190612142565b6115ba565b005b3480156104d157600080fd5b506104ec60048036038101906104e79190612083565b6116cb565b005b3480156104fa57600080fd5b506105036118f8565b60405161051091906122d5565b60405180910390f35b34801561052557600080fd5b5061052e611931565b005b6000600354905090565b6000600354610a1861054c9190612548565b905090565b60006004544210158015610566575060055442105b6105a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059c90612317565b60405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610648575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067e90612357565b60405180910390fd5b600654341015806106f1575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480156106f0575060b8600754105b5b610730576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072790612337565b60405180910390fd5b610a1860075460b86003546107459190612430565b61074f9190612548565b1061078f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610786906122f7565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d3fc98643360016003546108409190612430565b6109206008805461085090612613565b80601f016020809104026020016040519081016040528092919081815260200182805461087c90612613565b80156108c95780601f1061089e576101008083540402835291602001916108c9565b820191906000526020600020905b8154815290600101906020018083116108ac57829003601f168201915b50505050506108e560016003546108e09190612430565b611aea565b6040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250611c73565b6040518463ffffffff1660e01b815260040161093e9392919061227c565b600060405180830381600087803b15801561095857600080fd5b505af115801561096c573d6000803e3d6000fd5b5050505060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156109dd57600760008154809291906109d790612676565b91905055505b600360008154809291906109f090612676565b91905055506000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303138303031000000000000000000000000000000000000000000000000000081525090610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1491906122d5565b60405180910390fd5b508160048190555060019050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303138303031000000000000000000000000000000000000000000000000000081525090610bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610beb91906122d5565b60405180910390fd5b5060005b8151811015610c8657600160096000848481518110610c1a57610c1961274c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610c7e90612676565b915050610bf8565b5050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303138303031000000000000000000000000000000000000000000000000000081525090610d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7491906122d5565b60405180910390fd5b50600754905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303138303031000000000000000000000000000000000000000000000000000081525090610e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4391906122d5565b60405180910390fd5b5080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060088054610ea090612613565b80601f0160208091040260200160405190810160405280929190818152602001828054610ecc90612613565b8015610f195780601f10610eee57610100808354040283529160200191610f19565b820191906000526020600020905b815481529060010190602001808311610efc57829003601f168201915b5050505050905090565b600042600454610f339190612548565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303138303031000000000000000000000000000000000000000000000000000081525090610ffe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff591906122d5565b60405180910390fd5b5060b98160075461100f9190612430565b1061101957600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060005b8181101561124857600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d3fc98643360016003546110d59190612430565b6111b5600880546110e590612613565b80601f016020809104026020016040519081016040528092919081815260200182805461111190612613565b801561115e5780601f106111335761010080835404028352916020019161115e565b820191906000526020600020905b81548152906001019060200180831161114157829003601f168201915b505050505061117a60016003546111759190612430565b611aea565b6040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250611c73565b6040518463ffffffff1660e01b81526004016111d39392919061227c565b600060405180830381600087803b1580156111ed57600080fd5b505af1158015611201573d6000803e3d6000fd5b505050506007600081548092919061121890612676565b91905055506003600081548092919061123090612676565b9190505550808061124090612676565b91505061107f565b5050565b6040518060400160405280600681526020017f303138303032000000000000000000000000000000000000000000000000000081525081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303138303031000000000000000000000000000000000000000000000000000081525090611372576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136991906122d5565b60405180910390fd5b508160068190555060019050919050565b600042905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303138303031000000000000000000000000000000000000000000000000000081525090611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144891906122d5565b60405180910390fd5b508060089080519060200190611468929190611ea8565b5050565b60096020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303138303031000000000000000000000000000000000000000000000000000081525090611555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154c91906122d5565b60405180910390fd5b508160058190555060019050919050565b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303138303031000000000000000000000000000000000000000000000000000081525090611680576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167791906122d5565b60405180910390fd5b503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156116c7573d6000803e3d6000fd5b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303138303031000000000000000000000000000000000000000000000000000081525090611791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178891906122d5565b60405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600681526020017f30313830303200000000000000000000000000000000000000000000000000008152509061183a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183191906122d5565b60405180910390fd5b508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040518060400160405280600681526020017f303138303031000000000000000000000000000000000000000000000000000081525081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f3031383030310000000000000000000000000000000000000000000000000000815250906119f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ee91906122d5565b60405180910390fd5b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2fde38b336040518263ffffffff1660e01b8152600401611ab69190612261565b600060405180830381600087803b158015611ad057600080fd5b505af1158015611ae4573d6000803e3d6000fd5b50505050565b60606000821415611b32576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611c6e565b600082905060005b60008214611b64578080611b4d90612676565b915050600a82611b5d91906124bd565b9150611b3a565b60008167ffffffffffffffff811115611b8057611b7f61277b565b5b6040519080825280601f01601f191660200182016040528015611bb25781602001600182028036833780820191505090505b50905060008290505b60008614611c6657600181611bd09190612548565b90506000600a8088611be291906124bd565b611bec91906124ee565b87611bf79190612548565b6030611c039190612486565b905060008160f81b905080848481518110611c2157611c2061274c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a88611c5d91906124bd565b97505050611bbb565b819450505050505b919050565b60606000849050600084905060008490506000815183518551611c969190612430565b611ca09190612430565b67ffffffffffffffff811115611cb957611cb861277b565b5b6040519080825280601f01601f191660200182016040528015611ceb5781602001600182028036833780820191505090505b50905060008190506000805b8651811015611d7f57868181518110611d1357611d1261274c565b5b602001015160f81c60f81b838380611d2a90612676565b945081518110611d3d57611d3c61274c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080611d7790612676565b915050611cf7565b5060005b8551811015611e0b57858181518110611d9f57611d9e61274c565b5b602001015160f81c60f81b838380611db690612676565b945081518110611dc957611dc861274c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080611e0390612676565b915050611d83565b5060005b8451811015611e9757848181518110611e2b57611e2a61274c565b5b602001015160f81c60f81b838380611e4290612676565b945081518110611e5557611e5461274c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080611e8f90612676565b915050611e0f565b508196505050505050509392505050565b828054611eb490612613565b90600052602060002090601f016020900481019282611ed65760008555611f1d565b82601f10611eef57805160ff1916838001178555611f1d565b82800160010185558215611f1d579182015b82811115611f1c578251825591602001919060010190611f01565b5b509050611f2a9190611f2e565b5090565b5b80821115611f47576000816000905550600101611f2f565b5090565b6000611f5e611f59846123b7565b612392565b90508083825260208201905082856020860282011115611f8157611f806127af565b5b60005b85811015611fb15781611f978882611ffd565b845260208401935060208301925050600181019050611f84565b5050509392505050565b6000611fce611fc9846123e3565b612392565b905082815260208101848484011115611fea57611fe96127b4565b5b611ff58482856125d1565b509392505050565b60008135905061200c81612878565b92915050565b600082601f830112612027576120266127aa565b5b8135612037848260208601611f4b565b91505092915050565b600082601f830112612055576120546127aa565b5b8135612065848260208601611fbb565b91505092915050565b60008135905061207d8161288f565b92915050565b600060208284031215612099576120986127be565b5b60006120a784828501611ffd565b91505092915050565b6000602082840312156120c6576120c56127be565b5b600082013567ffffffffffffffff8111156120e4576120e36127b9565b5b6120f084828501612012565b91505092915050565b60006020828403121561210f5761210e6127be565b5b600082013567ffffffffffffffff81111561212d5761212c6127b9565b5b61213984828501612040565b91505092915050565b600060208284031215612158576121576127be565b5b60006121668482850161206e565b91505092915050565b6121788161257c565b82525050565b6121878161258e565b82525050565b600061219882612414565b6121a2818561241f565b93506121b28185602086016125e0565b6121bb816127c3565b840191505092915050565b60006121d360088361241f565b91506121de826127d4565b602082019050919050565b60006121f660108361241f565b9150612201826127fd565b602082019050919050565b6000612219600f8361241f565b915061222482612826565b602082019050919050565b600061223c60168361241f565b91506122478261284f565b602082019050919050565b61225b816125ba565b82525050565b6000602082019050612276600083018461216f565b92915050565b6000606082019050612291600083018661216f565b61229e6020830185612252565b81810360408301526122b0818461218d565b9050949350505050565b60006020820190506122cf600083018461217e565b92915050565b600060208201905081810360008301526122ef818461218d565b905092915050565b60006020820190508181036000830152612310816121c6565b9050919050565b60006020820190508181036000830152612330816121e9565b9050919050565b600060208201905081810360008301526123508161220c565b9050919050565b600060208201905081810360008301526123708161222f565b9050919050565b600060208201905061238c6000830184612252565b92915050565b600061239c6123ad565b90506123a88282612645565b919050565b6000604051905090565b600067ffffffffffffffff8211156123d2576123d161277b565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156123fe576123fd61277b565b5b612407826127c3565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600061243b826125ba565b9150612446836125ba565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561247b5761247a6126bf565b5b828201905092915050565b6000612491826125c4565b915061249c836125c4565b92508260ff038211156124b2576124b16126bf565b5b828201905092915050565b60006124c8826125ba565b91506124d3836125ba565b9250826124e3576124e26126ee565b5b828204905092915050565b60006124f9826125ba565b9150612504836125ba565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561253d5761253c6126bf565b5b828202905092915050565b6000612553826125ba565b915061255e836125ba565b925082821015612571576125706126bf565b5b828203905092915050565b60006125878261259a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156125fe5780820151818401526020810190506125e3565b8381111561260d576000848401525b50505050565b6000600282049050600182168061262b57607f821691505b6020821081141561263f5761263e61271d565b5b50919050565b61264e826127c3565b810181811067ffffffffffffffff8211171561266d5761266c61277b565b5b80604052505050565b6000612681826125ba565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156126b4576126b36126bf565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f536f6c64204f7574000000000000000000000000000000000000000000000000600082015250565b7f4e6f74206d696e74696e672074696d6500000000000000000000000000000000600082015250565b7f4e6f742072696768742076616c75650000000000000000000000000000000000600082015250565b7f4e6f742077686974656c69737465642077616c6c657400000000000000000000600082015250565b6128818161257c565b811461288c57600080fd5b50565b612898816125ba565b81146128a357600080fd5b5056fea26469706673582212204453b17bad01278a65cb1521e1b9bdb504114f5795625b45d9b01e9420ebcf3864736f6c63430008060033
Deployed Bytecode
0x6080604052600436106101405760003560e01c8063860d248a116100b6578063ccb98ffc1161006f578063ccb98ffc14610434578063deb3334214610471578063e9fad3961461049c578063f2fde38b146104c5578063f3fe3bc3146104ee578063f99b920e1461051957610140565b8063860d248a146103105780638da5cb5b1461033b57806391b7f5ed146103665780639b819d38146103a3578063a49a1e7d146103ce578063af154011146103f757610140565b8063670ab5e911610108578063670ab5e91461021f5780636710c1611461024a578063770e09fd146102755780637a5b4f591461029e5780637c610a7a146102c95780637e0c7fc5146102f457610140565b806301f730b4146101455780632f2898e01461017057806334c738841461019b5780633e0a322d146101b95780635e1045ec146101f6575b600080fd5b34801561015157600080fd5b5061015a610530565b6040516101679190612377565b60405180910390f35b34801561017c57600080fd5b5061018561053a565b6040516101929190612377565b60405180910390f35b6101a3610551565b6040516101b091906122ba565b60405180910390f35b3480156101c557600080fd5b506101e060048036038101906101db9190612142565b610a54565b6040516101ed91906122ba565b60405180910390f35b34801561020257600080fd5b5061021d600480360381019061021891906120b0565b610b2e565b005b34801561022b57600080fd5b50610234610c8a565b6040516102419190612261565b60405180910390f35b34801561025657600080fd5b5061025f610cb4565b60405161026c9190612377565b60405180910390f35b34801561028157600080fd5b5061029c60048036038101906102979190612083565b610d86565b005b3480156102aa57600080fd5b506102b3610e91565b6040516102c091906122d5565b60405180910390f35b3480156102d557600080fd5b506102de610f23565b6040516102eb9190612377565b60405180910390f35b61030e60048036038101906103099190612142565b610f38565b005b34801561031c57600080fd5b5061032561124c565b60405161033291906122d5565b60405180910390f35b34801561034757600080fd5b50610350611285565b60405161035d9190612261565b60405180910390f35b34801561037257600080fd5b5061038d60048036038101906103889190612142565b6112a9565b60405161039a91906122ba565b60405180910390f35b3480156103af57600080fd5b506103b8611383565b6040516103c59190612377565b60405180910390f35b3480156103da57600080fd5b506103f560048036038101906103f091906120f9565b61138b565b005b34801561040357600080fd5b5061041e60048036038101906104199190612083565b61146c565b60405161042b91906122ba565b60405180910390f35b34801561044057600080fd5b5061045b60048036038101906104569190612142565b61148c565b60405161046891906122ba565b60405180910390f35b34801561047d57600080fd5b50610486611566565b60405161049391906122ba565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be9190612142565b6115ba565b005b3480156104d157600080fd5b506104ec60048036038101906104e79190612083565b6116cb565b005b3480156104fa57600080fd5b506105036118f8565b60405161051091906122d5565b60405180910390f35b34801561052557600080fd5b5061052e611931565b005b6000600354905090565b6000600354610a1861054c9190612548565b905090565b60006004544210158015610566575060055442105b6105a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059c90612317565b60405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610648575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067e90612357565b60405180910390fd5b600654341015806106f1575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480156106f0575060b8600754105b5b610730576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072790612337565b60405180910390fd5b610a1860075460b86003546107459190612430565b61074f9190612548565b1061078f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610786906122f7565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d3fc98643360016003546108409190612430565b6109206008805461085090612613565b80601f016020809104026020016040519081016040528092919081815260200182805461087c90612613565b80156108c95780601f1061089e576101008083540402835291602001916108c9565b820191906000526020600020905b8154815290600101906020018083116108ac57829003601f168201915b50505050506108e560016003546108e09190612430565b611aea565b6040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250611c73565b6040518463ffffffff1660e01b815260040161093e9392919061227c565b600060405180830381600087803b15801561095857600080fd5b505af115801561096c573d6000803e3d6000fd5b5050505060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156109dd57600760008154809291906109d790612676565b91905055505b600360008154809291906109f090612676565b91905055506000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303138303031000000000000000000000000000000000000000000000000000081525090610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1491906122d5565b60405180910390fd5b508160048190555060019050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303138303031000000000000000000000000000000000000000000000000000081525090610bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610beb91906122d5565b60405180910390fd5b5060005b8151811015610c8657600160096000848481518110610c1a57610c1961274c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610c7e90612676565b915050610bf8565b5050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303138303031000000000000000000000000000000000000000000000000000081525090610d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7491906122d5565b60405180910390fd5b50600754905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303138303031000000000000000000000000000000000000000000000000000081525090610e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4391906122d5565b60405180910390fd5b5080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060088054610ea090612613565b80601f0160208091040260200160405190810160405280929190818152602001828054610ecc90612613565b8015610f195780601f10610eee57610100808354040283529160200191610f19565b820191906000526020600020905b815481529060010190602001808311610efc57829003601f168201915b5050505050905090565b600042600454610f339190612548565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303138303031000000000000000000000000000000000000000000000000000081525090610ffe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff591906122d5565b60405180910390fd5b5060b98160075461100f9190612430565b1061101957600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060005b8181101561124857600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d3fc98643360016003546110d59190612430565b6111b5600880546110e590612613565b80601f016020809104026020016040519081016040528092919081815260200182805461111190612613565b801561115e5780601f106111335761010080835404028352916020019161115e565b820191906000526020600020905b81548152906001019060200180831161114157829003601f168201915b505050505061117a60016003546111759190612430565b611aea565b6040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250611c73565b6040518463ffffffff1660e01b81526004016111d39392919061227c565b600060405180830381600087803b1580156111ed57600080fd5b505af1158015611201573d6000803e3d6000fd5b505050506007600081548092919061121890612676565b91905055506003600081548092919061123090612676565b9190505550808061124090612676565b91505061107f565b5050565b6040518060400160405280600681526020017f303138303032000000000000000000000000000000000000000000000000000081525081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303138303031000000000000000000000000000000000000000000000000000081525090611372576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136991906122d5565b60405180910390fd5b508160068190555060019050919050565b600042905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303138303031000000000000000000000000000000000000000000000000000081525090611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144891906122d5565b60405180910390fd5b508060089080519060200190611468929190611ea8565b5050565b60096020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303138303031000000000000000000000000000000000000000000000000000081525090611555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154c91906122d5565b60405180910390fd5b508160058190555060019050919050565b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303138303031000000000000000000000000000000000000000000000000000081525090611680576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167791906122d5565b60405180910390fd5b503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156116c7573d6000803e3d6000fd5b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f303138303031000000000000000000000000000000000000000000000000000081525090611791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178891906122d5565b60405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600681526020017f30313830303200000000000000000000000000000000000000000000000000008152509061183a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183191906122d5565b60405180910390fd5b508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040518060400160405280600681526020017f303138303031000000000000000000000000000000000000000000000000000081525081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600681526020017f3031383030310000000000000000000000000000000000000000000000000000815250906119f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ee91906122d5565b60405180910390fd5b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2fde38b336040518263ffffffff1660e01b8152600401611ab69190612261565b600060405180830381600087803b158015611ad057600080fd5b505af1158015611ae4573d6000803e3d6000fd5b50505050565b60606000821415611b32576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611c6e565b600082905060005b60008214611b64578080611b4d90612676565b915050600a82611b5d91906124bd565b9150611b3a565b60008167ffffffffffffffff811115611b8057611b7f61277b565b5b6040519080825280601f01601f191660200182016040528015611bb25781602001600182028036833780820191505090505b50905060008290505b60008614611c6657600181611bd09190612548565b90506000600a8088611be291906124bd565b611bec91906124ee565b87611bf79190612548565b6030611c039190612486565b905060008160f81b905080848481518110611c2157611c2061274c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a88611c5d91906124bd565b97505050611bbb565b819450505050505b919050565b60606000849050600084905060008490506000815183518551611c969190612430565b611ca09190612430565b67ffffffffffffffff811115611cb957611cb861277b565b5b6040519080825280601f01601f191660200182016040528015611ceb5781602001600182028036833780820191505090505b50905060008190506000805b8651811015611d7f57868181518110611d1357611d1261274c565b5b602001015160f81c60f81b838380611d2a90612676565b945081518110611d3d57611d3c61274c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080611d7790612676565b915050611cf7565b5060005b8551811015611e0b57858181518110611d9f57611d9e61274c565b5b602001015160f81c60f81b838380611db690612676565b945081518110611dc957611dc861274c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080611e0390612676565b915050611d83565b5060005b8451811015611e9757848181518110611e2b57611e2a61274c565b5b602001015160f81c60f81b838380611e4290612676565b945081518110611e5557611e5461274c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080611e8f90612676565b915050611e0f565b508196505050505050509392505050565b828054611eb490612613565b90600052602060002090601f016020900481019282611ed65760008555611f1d565b82601f10611eef57805160ff1916838001178555611f1d565b82800160010185558215611f1d579182015b82811115611f1c578251825591602001919060010190611f01565b5b509050611f2a9190611f2e565b5090565b5b80821115611f47576000816000905550600101611f2f565b5090565b6000611f5e611f59846123b7565b612392565b90508083825260208201905082856020860282011115611f8157611f806127af565b5b60005b85811015611fb15781611f978882611ffd565b845260208401935060208301925050600181019050611f84565b5050509392505050565b6000611fce611fc9846123e3565b612392565b905082815260208101848484011115611fea57611fe96127b4565b5b611ff58482856125d1565b509392505050565b60008135905061200c81612878565b92915050565b600082601f830112612027576120266127aa565b5b8135612037848260208601611f4b565b91505092915050565b600082601f830112612055576120546127aa565b5b8135612065848260208601611fbb565b91505092915050565b60008135905061207d8161288f565b92915050565b600060208284031215612099576120986127be565b5b60006120a784828501611ffd565b91505092915050565b6000602082840312156120c6576120c56127be565b5b600082013567ffffffffffffffff8111156120e4576120e36127b9565b5b6120f084828501612012565b91505092915050565b60006020828403121561210f5761210e6127be565b5b600082013567ffffffffffffffff81111561212d5761212c6127b9565b5b61213984828501612040565b91505092915050565b600060208284031215612158576121576127be565b5b60006121668482850161206e565b91505092915050565b6121788161257c565b82525050565b6121878161258e565b82525050565b600061219882612414565b6121a2818561241f565b93506121b28185602086016125e0565b6121bb816127c3565b840191505092915050565b60006121d360088361241f565b91506121de826127d4565b602082019050919050565b60006121f660108361241f565b9150612201826127fd565b602082019050919050565b6000612219600f8361241f565b915061222482612826565b602082019050919050565b600061223c60168361241f565b91506122478261284f565b602082019050919050565b61225b816125ba565b82525050565b6000602082019050612276600083018461216f565b92915050565b6000606082019050612291600083018661216f565b61229e6020830185612252565b81810360408301526122b0818461218d565b9050949350505050565b60006020820190506122cf600083018461217e565b92915050565b600060208201905081810360008301526122ef818461218d565b905092915050565b60006020820190508181036000830152612310816121c6565b9050919050565b60006020820190508181036000830152612330816121e9565b9050919050565b600060208201905081810360008301526123508161220c565b9050919050565b600060208201905081810360008301526123708161222f565b9050919050565b600060208201905061238c6000830184612252565b92915050565b600061239c6123ad565b90506123a88282612645565b919050565b6000604051905090565b600067ffffffffffffffff8211156123d2576123d161277b565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156123fe576123fd61277b565b5b612407826127c3565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600061243b826125ba565b9150612446836125ba565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561247b5761247a6126bf565b5b828201905092915050565b6000612491826125c4565b915061249c836125c4565b92508260ff038211156124b2576124b16126bf565b5b828201905092915050565b60006124c8826125ba565b91506124d3836125ba565b9250826124e3576124e26126ee565b5b828204905092915050565b60006124f9826125ba565b9150612504836125ba565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561253d5761253c6126bf565b5b828202905092915050565b6000612553826125ba565b915061255e836125ba565b925082821015612571576125706126bf565b5b828203905092915050565b60006125878261259a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156125fe5780820151818401526020810190506125e3565b8381111561260d576000848401525b50505050565b6000600282049050600182168061262b57607f821691505b6020821081141561263f5761263e61271d565b5b50919050565b61264e826127c3565b810181811067ffffffffffffffff8211171561266d5761266c61277b565b5b80604052505050565b6000612681826125ba565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156126b4576126b36126bf565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f536f6c64204f7574000000000000000000000000000000000000000000000000600082015250565b7f4e6f74206d696e74696e672074696d6500000000000000000000000000000000600082015250565b7f4e6f742072696768742076616c75650000000000000000000000000000000000600082015250565b7f4e6f742077686974656c69737465642077616c6c657400000000000000000000600082015250565b6128818161257c565b811461288c57600080fd5b50565b612898816125ba565b81146128a357600080fd5b5056fea26469706673582212204453b17bad01278a65cb1521e1b9bdb504114f5795625b45d9b01e9420ebcf3864736f6c63430008060033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.025805 | 104,781 | $2,703.89 |
Loading...
Loading
[ 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.